Нужна помощь по скиллу 2914

PrizraKZN

ЗаМШуТ
Проверенный
Неукротимое пламя
Знаток письма
Стратег Данных
Куратор Данных
За заслуги перед форумом
За веру и верность форуму
Сообщения
842
Розыгрыши
0
Решения
1
Репутация
1 663
Реакции
818
Баллы
1 678
Хроники
  1. Chaotic Throne: High Five
Сборка
LostWorld
Всем привет уважаемые знатоки ))
суд вопрос проблем в том что реализация в лосте нету данного скилла ,
если смотреть по птсу как делано то тут вот как

effect{i_summon_npc;[recom_class_cheker3];1}
operate_cond{op_check_class_list;{0;10;18;25;31;38;44;49;53;123;124};self;0}
op_check_list я делал а вот с i_summon_npc (ид сам нпс 13284) вот сам ай нпс recom_class_cheker3 (в скрипте в дискомпилерный ai_recom_class_cheker3)
вопрос в том в самом ai_recom_class_cheker3 есть некоторые нуаст вот код
Код:
class ai_recom_class_cheker3 : default_npc {
parameter:
    int knight_pack_90 = 16968;
    int magic_pack_90 = 16969;
    int warrior_pack_90 = 16970;
    int rogue_pack_90 = 16971;
    int kamael_pack_90 = 16972;
    int orcf_pack_90 = 16973;
    int orcm_pack_90 = 16974;
    int ticket_pack_90 = 16853;
    
handler:
    EventHandler CREATED(i0, c0) {
        c0 = GetCreatureFromID(myself.sm.summoner_id);

        if (IsNullCreature(c0) == 0) {
            if (IsInCategory(@recom_knight_group, c0.occupation) == 1) {
                DeleteItem1(c0, ticket_pack_90, 1);
                GiveItem1(c0, knight_pack_90, 1);
            } else if (IsInCategory(@recom_magic_group, c0.occupation) == 1) {
                DeleteItem1(c0, ticket_pack_90, 1);
                GiveItem1(c0, magic_pack_90, 1);
            } else if (IsInCategory(@recom_warrior_group, c0.occupation) == 1) {
                DeleteItem1(c0, ticket_pack_90, 1);
                GiveItem1(c0, warrior_pack_90, 1);
            } else if (IsInCategory(@recom_rogue_group, c0.occupation) == 1) {
                DeleteItem1(c0, ticket_pack_90, 1);
                GiveItem1(c0, rogue_pack_90, 1);
            } else if (IsInCategory(@recom_kamael_group, c0.occupation) == 1) {
                DeleteItem1(c0, ticket_pack_90, 1);
                GiveItem1(c0, kamael_pack_90, 1);
            } else if (IsInCategory(@recom_orcf_group, c0.occupation) == 1) {
                DeleteItem1(c0, ticket_pack_90, 1);
                GiveItem1(c0, orcf_pack_90, 1);
            } else if (IsInCategory(@recom_orcm_group, c0.occupation) == 1) {
                DeleteItem1(c0, ticket_pack_90, 1);
                GiveItem1(c0, orcm_pack_90, 1);
            }
        }

        AddTimerEx(2003, 30000);
    }

    EventHandler TIMER_FIRED_EX(timer_id, i0, c0) {
        if (timer_id == 2003) {
            Despawn();
        }
    }
}
вопрос что за recom_knight_group,recom_magic_group и т.д за что они отвечают я все понять не могу , и как понят вот эту( GetCreatureFromID(myself.sm.summoner_id) )
За ранние Спасибо
 
насколько понял это ай за выдачи итем по каждый класс вопрос можно без этого ай делать к пример в скилле ид 2914 (ну к пример проверка класс такой ид 1,2,3 потом берем ефект i_restoration 16968 и так по классу или лушее через ай
Сори за не русс
 
Код:
category_define_begin
name=[recom_knight_group]
category={@knight;@paladin;@dark_avenger;@elven_knight;@palus_knight;@temple_knight;@swordsinger;
    @shillien_knight;@bladedancer;@phoenix_knight;@hell_knight;@evas_templar;@sword_muse;@shillien_templar;@spectral_dancer}
category_define_end
Код:
category_define_begin
name=[recom_magic_group]
category={@wizard;@cleric;@elven_wizard;@oracle;@dark_wizard;@shillien_oracle;@sorcerer;@necromancer;
    @warlock;@bishop;@prophet;@spellsinger;@elemental_summoner;@elder;@spellhowler;@phantom_summoner;
    @shillien_elder;@archmage;@soultaker;@arcana_lord;@cardinal;@hierophant;@mystic_muse;
    @elemental_master;@evas_saint;@storm_screamer;@spectral_master;@shillien_saint}
category_define_end
Код:
category_define_begin
name=[recom_warrior_group]
category={@warrior;@gladiator;@warlord;@scavenger;@artisan;@bounty_hunter;@warsmith;@fortune_seeker;@maestro;@duelist;@dreadnought}
category_define_end
Код:
category_define_begin
name=[recom_rogue_group]
category={@rogue;@elven_scout;@assassin;@treasure_hunter;@hawkeye;@plains_walker;@silver_ranger;
    @abyss_walker;@phantom_ranger;@sagittarius;@adventurer;@wind_rider;@moonlight_sentinel;@ghost_hunter;@ghost_sentinel}
category_define_end
Код:
category_define_begin
name=[recom_kamael_group]
category={@trooper;@warder;@berserker;@m_soul_breaker;@f_soul_breaker;@arbalester;@inspector;@doombringer;
    @m_soul_hound;@f_soul_hound;@trickster;@judicator}
category_define_end
Код:
category_define_begin
name=[recom_orcf_group]
category={@orc_raider;@orc_monk;@destroyer;@tyrant;@titan;@grand_khavatari}
category_define_end
Код:
category_define_begin
name=[recom_orcm_group]
category={@orc_shaman;@overlord;@warcryer;@dominator;@doomcryer}
category_define_end
GetCreatureFromID - Получить creature из идентификатора
Пример: необходимо создать уникальный таймер, при срабатывании которого можно было бы выполнить определенные действия над конкретным чаром (грубо говоря тем, кто вызвал этот таймер).
Пример:
Код:
EventHandler MENU_SELECTED(ask,reply,talker)
{
  myself.AddTimerEx(( myself.GetIndexFromCreature(talker) + 1000000 ),10000);
}

EventHandler TIMER_FIRED_EX(talker,timer_id)
{
  if( timer_id <= 1000000 )
  {
    return;
  }
  talker = myself.GetCreatureFromIndex(( timer_id - 1000000 ));
  if( talker.alive == 0 || talker.is_pc == 0 )
  {
    ShowPage(talker,"timer_is_expired.htm");
    return;
  }
}
talker.alive - проверка жив ли на данный момент чар
talker.is_pc - проверка в игре ли находиться чар.
 
Код:
category_define_begin
name=[recom_knight_group]
category={@knight;@paladin;@dark_avenger;@elven_knight;@palus_knight;@temple_knight;@swordsinger;
    @shillien_knight;@bladedancer;@phoenix_knight;@hell_knight;@evas_templar;@sword_muse;@shillien_templar;@spectral_dancer}
category_define_end
Код:
category_define_begin
name=[recom_magic_group]
category={@wizard;@cleric;@elven_wizard;@oracle;@dark_wizard;@shillien_oracle;@sorcerer;@necromancer;
    @warlock;@bishop;@prophet;@spellsinger;@elemental_summoner;@elder;@spellhowler;@phantom_summoner;
    @shillien_elder;@archmage;@soultaker;@arcana_lord;@cardinal;@hierophant;@mystic_muse;
    @elemental_master;@evas_saint;@storm_screamer;@spectral_master;@shillien_saint}
category_define_end
Код:
category_define_begin
name=[recom_warrior_group]
category={@warrior;@gladiator;@warlord;@scavenger;@artisan;@bounty_hunter;@warsmith;@fortune_seeker;@maestro;@duelist;@dreadnought}
category_define_end
Код:
category_define_begin
name=[recom_rogue_group]
category={@rogue;@elven_scout;@assassin;@treasure_hunter;@hawkeye;@plains_walker;@silver_ranger;
    @abyss_walker;@phantom_ranger;@sagittarius;@adventurer;@wind_rider;@moonlight_sentinel;@ghost_hunter;@ghost_sentinel}
category_define_end
Код:
category_define_begin
name=[recom_kamael_group]
category={@trooper;@warder;@berserker;@m_soul_breaker;@f_soul_breaker;@arbalester;@inspector;@doombringer;
    @m_soul_hound;@f_soul_hound;@trickster;@judicator}
category_define_end
Код:
category_define_begin
name=[recom_orcf_group]
category={@orc_raider;@orc_monk;@destroyer;@tyrant;@titan;@grand_khavatari}
category_define_end
Код:
category_define_begin
name=[recom_orcm_group]
category={@orc_shaman;@overlord;@warcryer;@dominator;@doomcryer}
category_define_end
GetCreatureFromID - Получить creature из идентификатора
Пример: необходимо создать уникальный таймер, при срабатывании которого можно было бы выполнить определенные действия над конкретным чаром (грубо говоря тем, кто вызвал этот таймер).
Пример:
Код:
EventHandler MENU_SELECTED(ask,reply,talker)
{
  myself.AddTimerEx(( myself.GetIndexFromCreature(talker) + 1000000 ),10000);
}

EventHandler TIMER_FIRED_EX(talker,timer_id)
{
  if( timer_id <= 1000000 )
  {
    return;
  }
  talker = myself.GetCreatureFromIndex(( timer_id - 1000000 ));
  if( talker.alive == 0 || talker.is_pc == 0 )
  {
    ShowPage(talker,"timer_is_expired.htm");
    return;
  }
}
talker.alive - проверка жив ли на данный момент чар
talker.is_pc - проверка в игре ли находиться чар.
Искренно Спасибо тебе Киск
 
IsInCategory - проверка на категорию, все категории находятся categorydata.txt
 
И да, это - костыль реализации для птс, ничего не мешает тебе вызвать свой хандлер и сразу там выдать.
 
Ага, а то все подобные вещи с разными условиями по классу персонажа и т.п. в офф сервере распаковываются в таком вот извращенном виде - вызывается невидимый нпс, проверяет необходимые условия у того кто его вызвал и выдает нужное, после чего деспавнится.
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Ага, а то все подобные вещи с разными условиями по классу персонажа и т.п. в офф сервере распаковываются в таком вот извращенном виде - вызывается невидимый нпс, проверяет необходимые условия у того кто его вызвал и выдает нужное, после чего деспавнится.
А вот этот момент упустил из памяти (или не знал - хи))).


Пример был на оффе, мейн версия - в странах Азии (Убирали это на Ру - хз, на геймкосте было): стоял невидимый нпц при телепорте на 4-ю профу, персонаж всегда об него "стопорился".

П.с. епанутая проверка, но куда мне судить разработчиков.
 
А вот этот момент упустил из памяти (или не знал - хи))).


Пример был на оффе, мейн версия - в странах Азии (Убирали это на Ру - хз, на геймкосте было): стоял невидимый нпц при телепорте на 4-ю профу, персонаж всегда об него "стопорился".

П.с. епанутая проверка, но куда мне судить разработчиков.
Этот нпц до сих пор там стоит, их там даже 5 штук (after_awakening) и они не для шмоток, а просто запускают ролик
 
Назад
Сверху Снизу