Показать сообщение отдельно
Старый 17.01.2005, 19:50   #71
TycoooN
Строители Миртаны
  Аватар для TycoooN
 
 
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
TycoooN вне форума

По умолчанию Re: Уроки скриптологии

2Vam:
Я обеими руками "за"! :pivo: ;D
Имхо, было бы неплохо выкладывать здесь скрипты Готкик с собственными комментариями, объясняющими, что даннная строка скрипта значит. Было бы наглядно. у меня есть пример:

Функция ZS_Stand_WP - отвечает за выполнение TA_Stand_WP

func void ZS_Stand_WP() *//Функция подготовки к выполнению TA_Stand_WP
{
* Perception_Set_Normal();
* B_ResetAll(self);
* AI_SetWalkMode(self,NPC_WALK);
* AI_GotoWP(self,self.wp);
* AI_AlignToWP(self);
* self.aivar[AIV_TAPOSITION] = NOTINPOS;
};

func int ZS_Stand_WP_loop() *//Это функция выполняется циклически, пока НПС выполняет TA_Stand_WP
{
* var int random;
* if(self.aivar[AIV_TAPOSITION] == NOTINPOS) *//Блок для случая, если НПС не в "ISINPOS" (только в первый раз)
* {
* * *AI_PlayAni(self,"T_STAND_2_LGUARD"); *//Проигрывается анимация "T_STAND_2_LGUARD" (НПС примет "стойку")
* * *self.aivar[AIV_TAPOSITION] = ISINPOS;
* };
* if((Npc_GetStateTime(self) > 5) && (self.aivar[AIV_TAPOSITION] == ISINPOS)) *//После того, как НПС становится в "ISINPOS", каждые 5 секунд выполняется блок
* {
* * *random = Hlp_Random(10); *//Берется случайное число от 0 до 9
* * *if(random == 0) *//Если число было 0, проигрывается анимация "T_LGUARD_SCRATCH" (НПС "потянется")
* * *{
* * * * AI_PlayAni(self,"T_LGUARD_SCRATCH");
* * *}
* * *else if(random == 1) *//Если число было 1, проигрывается та же анимация, что и при 0
* * *{
* * * * AI_PlayAni(self,"T_LGUARD_STRETCH");
* * *}
* * *else if(random == 2) *//Если число было 2, проигрывается анимация "T_LGUARD_CHANGELEG" (НПС "меняет ногу")
* * *{
* * * * AI_PlayAni(self,"T_LGUARD_CHANGELEG");
* * *};
* * *Npc_SetStateTime(self,0); *//Время обнуляется, т.е. начинаются следующие 5 секунд
* }; *//Т.е. шанс, что НПС произведет какое-то действие раз в пять секунд - 3\10
* return LOOP_CONTINUE; *//Цикл замыкается, и функция "ZS_Stand_WP_loop" будет выполнена снова, и так будет пока НПС не получит команды прекритить выполнение "TA_Stand_WP"
};

func void ZS_Stand_WP_end()  //Функция завершения TA_Stand_WP
{
* AI_PlayAni(self,"T_LGUARD_2_STAND"); *//При получении НПС команды прекратить выполнение "TA_Stand_WP", проигрывается анимация "T_STAND_2_LGUARD" (НПС выйдет из "стойки")
};
Отправить личное сообщение для Ответить с цитированием