The New Future :: FOnline, Half-life 2 :: Roleplay It!  

Вернуться   The New Future :: FOnline, Half-life 2 :: Roleplay It! > Прочее > FOmod > TNF

TNF сервер и частично документация

Ответ
 
Опции темы Опции просмотра
Старый 13.02.2015, 16:10   #1
PowerMagic
Lost Overseer
 
Аватар для PowerMagic
 
Специализация: ест детей.
Регистрация: 29.01.2010
Сообщений: 1,000
Вес репутации: 571
PowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond repute
По умолчанию [doc] Drugs.fos

По мере возможностей,
ужасный массив 

из сдкашного drus.fos был частично переписан. Тоже не самым лучшим образом, но стал чуть более редактируемым. По-пути постарались не растерять работоспособность оригинального кода.

И так, приступим
Немного об устройстве скрипта :
пойдем, что называется справа налево.
class EffectStat создан для хранения инфы об изменении статов. Посему имеет два члена :
Код:
int Stat;
int Amount;
что соответствует номеру стата и его дельте.

В свою очередь, class EffectStage, если заглянуть в него, имеет следущие внутренности :
Код:
EffectStat[]		EfStats;
uint8			StageType;
uint			Duration;
Это одна стадия эффекта.
как видно, здесь : массив статов, тип стадии, продолжительность стадии.

стадии также могут быть кастомными, с выполнением произвольного кода.
example 


class Effect же включает в себя :
Код:
EffectStage[]		Stages;
int			AddictionID;
int			AddictionPerc;
массив стадий, айди привыкания и шанс на привыкание при использовании.

Также прототипам было добавлено новое свойство EffectId
_defines.fos
Код:
# pragma bindfield "const uint	ProtoItem::EffectId   -> 324"
и в прототипах :
Код:
[Proto]
Pid=40
Type=2
PicMapName=art\items\stimx.frm
PicInvName=art\inven\stimx.frm
Flags=150994974
DisableEgg=1
Weight=150
SoundId=48
Cost=175
Material=1
EffectId=0
Теперь все необходимое мы знаем и можем перейти к созданию своего эффекта.
Для этого заведем новую константу и изменим максимальное кол-во эффектов :

Код:
#define EFFECT_HYPO			(29)
#define EFFECT_NOGIBATOR (30)
#define EFFECT_MAX			(31)
Далее в конце ф-ц void InitEffects() допишем :
Код:
//nogibator
	
	tempStage.resize(0);
	
	tempStage.insertLast(EffectStage(5, STAGE_INSTANT_EFFECT));
	tempStage.last().InsertStat(ST_STREIGHT, 5);
	
	tempStage.insertLast(EffectStage(0, STAGE_WITHDRAWAL));

	tempStage.insertLast(EffectStage(0, STAGE_NORMALIZE));
        tempStage.last().InsertStat(ST_STREIGHT, -5);

	tempStage.insertLast(EffectStage(0, STAGE_ADDICTION_BEGIN));
	tempStage.insertLast(EffectStage(0, STAGE_ADDICTION_END));
	
	effects[EFFECT_NOGIBATOR] = Effect(-1, 0, tempStage);
суть получаем 5 силы на 5 игровых часов, без привыкания. через 5 часов теряем их. В коде видно, что прописаны и другие стадии. Это обязательно.

у эффекта есть следущие стадии и все, кроме кастом обязательны к перечислению в массиве стадий:
Код:
#define STAGE_INSTANT_EFFECT		(0) //моментальный эффект. при наложении эффекта
#define STAGE_WITHDRAWAL		(1) //ломка
#define STAGE_NORMALIZE		(2) //возвращение значений
#define STAGE_ADDICTION_BEGIN		(3) //начало привыкания
#define STAGE_ADDICTION_END		(4) //конец привыкания
#define STAGE_CUSTOM			(5) // через данную стадию можно реализовывать произвольный код, пример см. выше
В общем и целом теперь Вы сможете добавить свой эффект используя данный код. К слово о возможности портирования - код мало зависим от тнф-плюшек, в основном требуется заменить GEM на TimeLoop и убрать вызовы обработки яда и радиации.
__________________
Jet Rock's

Последний раз редактировалось PowerMagic; 13.02.2015 в 18:40.
PowerMagic вне форума   Ответить с цитированием
4 Пользователей сказали спасибо PowerMagic За этот пост:
AnDE (20.02.2015), hi-jack (22.02.2015), kalda (15.02.2015), KindMan (13.02.2015)
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 00:57.


Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd. Перевод: zCarot
Для внутреннего пользования