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

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

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

Ответ
 
Опции темы Опции просмотра
Старый 13.01.2015, 17:36   #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] Система фермерства

система фермерства. версия 3(текущая. не залита на репу, сервер второй сессии)

основные отличия от предыдущей версии:
- стадии роста теперь одтельный класс;
- возможность задания неограниченого количества стадий;
- возможность выполнения произвольного кода для стадий роста;
- прототипы больше жестко не привязаны к стадиям роста;
- возможность на разных стадиях собирать разный урожай;
- убраны таимивенты;
- больше багов.

минусы реализации :
- вызов зарегистрирован через глобальный менеджер. происходит раз в игровой час. в цикле обрабатываются все растения. поэтому их обновление происходит в один момент, что смотрится немного странно. ну и черт с ним.

и так, что бы добавить новое растение, требуется :
- графика(кэп блин);
- прототипы(один для семеня, N для стадии роста - визуальное разделение + разные тексты, мертвое растение - !!важно!! айди прототипа должен быть PID_MY_PLANT+9);
- описаный класс растения и если требуется стадий роста;

обо всем по порядку :
- с графикой все ясно. оставим ее.

- прототипы - тип прото должен быть 15 (TYPE_PLANT), ScriptModule=plant , ScriptFunc=_InitPlant
это важно. т.к. в инициализации итема(если уже посажено, иначе при дропе) происходит добавление их в массив текущих растений.
для одного растения отведено 10 пидов. отсчет начинается с пида, кратного 10(семена). пид умерщего растения должен равняться пиду_семян+9. остальной диапозон занимают прототипы с визаульными стадийми роста.

- класс растения :
example 


перед описанием класса требуется обьявить пид и тип растения:
Код:
#define PLANT_RADCVET     ( 0 )
#define PID_RADCVET       ( 1600 )
добавит строчку в функцию
Код:
CPlant@ CPlantCreate(Item& item, uint time)
вида
Код:
if(pid >= PID_RADCVET && pid <= PID_RADCVET+9){
        @plant = CRadCvet(item.Id, time);
    }
после этого может описывать свой класс растения. он должен быть дочерним от CPlant

теперь о CPlantCycle или классе стадии роста.
конструктор
Код:
CPlantCycle(uint time, uint8 water, uint8 shit, uint8 collectCount, uint16 collectPid, bool collectable, uint16 proto)
перевод входных данных : время, указывается время через которое начнется следущая стадия, например 2 игровых часа. требуемое количество поливов \ удобрений на этой стадии. количество плодов. пид урожая. возможен ли сбор урожая на данном этапе. прототип растетния(будет изменен если предыдущая стадия и текущая расходятся в этом значении).

в общем-то в классе растения в ф-ц void InitCycles() просто пушим массив стадий роста новыми копиями класса. если требуется создать какую-то уникальную стадию роста, то описываем класс с наследием от CPlantCycle . код выполнения стадии описывается в bool Release()
example 


версия еще достаточно баговая, так что вероятно будут правки.
__________________
Jet Rock's
PowerMagic вне форума   Ответить с цитированием
4 Пользователей сказали спасибо PowerMagic За этот пост:
Покемон (08.09.2015), AnDE (21.01.2015), Hell (08.09.2015), Vovan228 (30.01.2015)
Ответ

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

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

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

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


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


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