В этом уроке мы научимся создавать мясо, при употреблении которого в пищу игрок будет толстеть.
Запустите редактор, создайте комнату для испытаний.
Откройте вкладку 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();
}