24.02.2020, 19:27:22
Ну в циклическую функцию можно вот что добавить
func void B_CYCLE_FUNCTION()
{
if(hero.attribute[ATR_HITPOINTS_MAX] == 0) //Проверка, загружен ли ГГ в мир игры. Если игра еще не загрузила ГГ в игру, значение максимальной жизни ГГ будет равно 0 и вызов триггера будет происходить до выполнения своих нужных функций. Это проверка необходима, т.к. если ГГ еще не загружен в игру и функция начнет полную отработку, возможен вылет из игры.
{
Wld_SendTrigger("CYCLE_TRIGGER"); //Вызов триггера c именем CYCLE_TRIGGER для зацикливания всей функции.
return; //Выход из функции.
};
//Если ГГ уже загружен в игру, дальше идет полная отработка цикла, куда можно вставлять множество своих нужных функций...
//для примера проверим смерть волка
var C_NPC npc;
npc = Hlp_GetNpc(PEPES_YWolf1);
//если наш волк мертв
if(Npc_IsDead(npc))
{
//запускаем подъем ворот
Wld_SendTrigger("LEBEDKA");
};
Wld_SendTrigger("CYCLE_TRIGGER"); //Вызов триггера c именем CYCLE_TRIGGER для зацикливания всей функции.
};
Но я бы посоветовал сделать по-другому (не доверяю я функции Npc_IsDead)
В zs_dead.d добавить проверку
//если убитый монстр равен нашему монстру
if(Hlp_GetInstanceID(self) == Hlp_GetInstanceID(WolfMIS))
{
//он убит
K_WolfKilled= TRUE;
};
func void B_CYCLE_FUNCTION()
{
if(hero.attribute[ATR_HITPOINTS_MAX] == 0) //Проверка, загружен ли ГГ в мир игры. Если игра еще не загрузила ГГ в игру, значение максимальной жизни ГГ будет равно 0 и вызов триггера будет происходить до выполнения своих нужных функций. Это проверка необходима, т.к. если ГГ еще не загружен в игру и функция начнет полную отработку, возможен вылет из игры.
{
Wld_SendTrigger("CYCLE_TRIGGER"); //Вызов триггера c именем CYCLE_TRIGGER для зацикливания всей функции.
return; //Выход из функции.
};
//Если ГГ уже загружен в игру, дальше идет полная отработка цикла, куда можно вставлять множество своих нужных функций...
//для примера проверим смерть волка
//если наш НПС мертв
if(K_WolfKilled == TRUE)
{
//запускаем подъем ворот
Wld_SendTrigger("LEBEDKA");
};
Wld_SendTrigger("CYCLE_TRIGGER"); //Вызов триггера c именем CYCLE_TRIGGER для зацикливания всей функции.
};
func void B_CYCLE_FUNCTION()
{
if(hero.attribute[ATR_HITPOINTS_MAX] == 0) //Проверка, загружен ли ГГ в мир игры. Если игра еще не загрузила ГГ в игру, значение максимальной жизни ГГ будет равно 0 и вызов триггера будет происходить до выполнения своих нужных функций. Это проверка необходима, т.к. если ГГ еще не загружен в игру и функция начнет полную отработку, возможен вылет из игры.
{
Wld_SendTrigger("CYCLE_TRIGGER"); //Вызов триггера c именем CYCLE_TRIGGER для зацикливания всей функции.
return; //Выход из функции.
};
//Если ГГ уже загружен в игру, дальше идет полная отработка цикла, куда можно вставлять множество своих нужных функций...
//для примера проверим смерть волка
var C_NPC npc;
npc = Hlp_GetNpc(PEPES_YWolf1);
//если наш волк мертв
if(Npc_IsDead(npc))
{
//запускаем подъем ворот
Wld_SendTrigger("LEBEDKA");
};
Wld_SendTrigger("CYCLE_TRIGGER"); //Вызов триггера c именем CYCLE_TRIGGER для зацикливания всей функции.
};
Но я бы посоветовал сделать по-другому (не доверяю я функции Npc_IsDead)
В zs_dead.d добавить проверку
//если убитый монстр равен нашему монстру
if(Hlp_GetInstanceID(self) == Hlp_GetInstanceID(WolfMIS))
{
//он убит
K_WolfKilled= TRUE;
};
func void B_CYCLE_FUNCTION()
{
if(hero.attribute[ATR_HITPOINTS_MAX] == 0) //Проверка, загружен ли ГГ в мир игры. Если игра еще не загрузила ГГ в игру, значение максимальной жизни ГГ будет равно 0 и вызов триггера будет происходить до выполнения своих нужных функций. Это проверка необходима, т.к. если ГГ еще не загружен в игру и функция начнет полную отработку, возможен вылет из игры.
{
Wld_SendTrigger("CYCLE_TRIGGER"); //Вызов триггера c именем CYCLE_TRIGGER для зацикливания всей функции.
return; //Выход из функции.
};
//Если ГГ уже загружен в игру, дальше идет полная отработка цикла, куда можно вставлять множество своих нужных функций...
//для примера проверим смерть волка
//если наш НПС мертв
if(K_WolfKilled == TRUE)
{
//запускаем подъем ворот
Wld_SendTrigger("LEBEDKA");
};
Wld_SendTrigger("CYCLE_TRIGGER"); //Вызов триггера c именем CYCLE_TRIGGER для зацикливания всей функции.
};