Регистрация | Вход
[ Обновленные темы · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Kirill, Chainka, Ghost  
Форум » RuneeD » Triggers, Events, UnrealScript » "Жирное" мясо (subclass)
"Жирное" мясо
rukaДата: Четверг, 06.08.2009, 17:31 | Сообщение # 1
Admin
Группа: Администраторы
Сообщений: 228
Репутация: 23
Статус: Offline
В этом уроке мы научимся создавать мясо, при употреблении которого в пищу игрок будет толстеть.
Запустите редактор, создайте комнату для испытаний.
Откройте вкладку Classes -> Inventory -> Pickpup -> Food.
Создайте новый класс (create new class below) под LegOMeat3.
Назовем его FatassMeat, package - MyLevel.
Щелкните два раза по новому классу, откроется окошко для скрипта.
По умолчанию, все съедобные объекты (мясо, фрукты), не имеют скриптов, так как они созданы под классом Food, в котором есть скрипт PickupFunction(), который они и используют.
Если мы сделаем для FatassMeat собственный скрипт PickupFunction(), то он перестанет обращаться к классу Food. Это нам и нужно.
Откройте окошко со скриптами для Food, найдите скрипт PickupFunction(), и скопируйте его целиком.
Скрипт начинается и заканчивается фигурной скобкой:
function pickupFunction (pawn other); - это название скрипта, pawn other - это указание того, что скрипт влияет на того кто есть мясо.
{
xxx - тут расположено тело скрипта
}
Вставьте этот скрипт в окошко FatassMeat, и нажмите F7 (скомпилировать все скрипты).
Закройте скрипт Food (не вздумайте изменять его!! можно запороть руну, т.к. food находится в пакете runei)
Так как FatassMeat лежит в пакете MyLevel, можно смело изменять его.
Первая часть скрипта:
Code
    local int i;
  local int adjNutrition;

  adjNutrition = Nutrition;

  switch(Level.Game.Difficulty)
  {
  case 0: // Easy mode, more health
   adjNutrition *= 1.5;
   break;
  case 2: // Hard mode, less health
   adjNutrition *= 0.75;
   break;
  }

  Other.Health += adjNutrition;
  if (Other.Health > Other.MaxHealth)
   Other.Health = Other.MaxHealth;

Отвечает за пополнение здоровья, ее мы оставим как есть.
Следующая часть:
Code
// Cure eater of any ailments
  if(Other.Fatness != 128)
   Other.DesiredFatness = 128;
  if(Other.ScaleGlow != 1.0)
   Other.ScaleGlow = 1.0;
  if(Other.BodyPartMissing(BODYPART_LARM1))
   Other.RestoreBodyPart(BODYPART_LARM1);
  if(Other.BodyPartMissing(BODYPART_RARM1))
   Other.RestoreBodyPart(BODYPART_RARM1);

Отвечает за восстановление оторванных рук, и "похудение" после еды (при игре с мутатором Fatboy игрок после еды снова становиться худым)
Нам это не нужно, поэтому удалим строчки:
Code
    if(Other.Fatness != 128)
   Other.DesiredFatness = 128;

Завершающая часть скрипта отвечает за восстановление здоровья частей тела, она тоже не нужна.
Остался один штрих - сделать так чтобы desiredfatness (параметр, отвечающий за степень толщины игрока) увеличивался.
Добавим одну строчку перед Destroy():
Other.DesiredFatness += 30;
Теперь нажмите F7, сохраните и тестируйте!
Вот весь скрипт:
Code
//=============================================================================
// FatassMeat.
//=============================================================================
class FatassMeat expands LegOMeat3;

function PickupFunction(Pawn Other)
{
  local int i;
  local int adjNutrition;

  adjNutrition = Nutrition;

  switch(Level.Game.Difficulty)
  {
  case 0: // Easy mode, more health
   adjNutrition *= 1.5;
   break;
  case 2: // Hard mode, less health
   adjNutrition *= 0.75;
   break;
  }

  Other.Health += adjNutrition;
  if (Other.Health > Other.MaxHealth)
   Other.Health = Other.MaxHealth;

  // Cure eater of any ailments
  if(Other.ScaleGlow != 1.0)
   Other.ScaleGlow = 1.0;
  if(Other.BodyPartMissing(BODYPART_LARM1))
   Other.RestoreBodyPart(BODYPART_LARM1);
  if(Other.BodyPartMissing(BODYPART_RARM1))
   Other.RestoreBodyPart(BODYPART_RARM1);

  // Restore health of bodyparts (must be after restoring limbs)
  for (i=0; i<NUM_BODYPARTS; i++)
   Other.BodyPartHealth[i] = Other.Default.BodyPartHealth[i];
   
  Other.DesiredFatness += 30;
   
  Destroy();
}
 
РагнарДата: Понедельник, 07.09.2009, 16:29 | Сообщение # 2
Новичок
Группа: Пользователи
Сообщений: 25
Репутация: 0
Статус: Offline
Quote (Kirill)
pawn other - это указание того, что скрипт влияет на того кто есть мясо.

всмысле на того кто ест мясо скин или ещё что?

 
rukaДата: Пятница, 18.09.2009, 21:01 | Сообщение # 3
Admin
Группа: Администраторы
Сообщений: 228
Репутация: 23
Статус: Offline
pawn owner в этом случае - это именно тот, кто жрет мясо
 
Форум » RuneeD » Triggers, Events, UnrealScript » "Жирное" мясо (subclass)
  • Страница 1 из 1
  • 1
Поиск: