Skip to content
La2Base
Home
DownloadsWikiForumFAQ
ruen
Sign up Login
HomeFilesWikiLogin
  • Home
  • Downloads
  • Wiki
  • FAQ
  • Contact Us
  • About
  • Rules
  • Privacy
  • Terms of Service

© 2026 la2base.com · All rights reserved

ruen
Forum/Серверные файлы/Npc раздающий ноблесс
Search

Npc раздающий ноблесс

2 replies53 viewsCurrently viewing: 1
M
Max4aters
· 02/23/2010, 03:59 AM

НПЦ который выдает статус ноблеса когда есть 3 итема, проверка чара на статус ПК, наличие сабкласса, определенный уровень (в данном случае 75), проверка на статус нублеса

Код
class 1 nobless_npc : default_npc
parameter_define_begin
     int Itemn 1870
     int Itemn1 1875
     int Itemn2 1874
     int Amount 1
     int Amount1 1
     int Amount2 1
parameter_define_end
handler 3 121    //  TALKED
     variable_begin
         "talker"
         "myself"
         "_choiceN"
         "_code"
         "_from_choice"
     variable_end

     push_event    //  talker
     push_const 40
     add
     fetch_i    //  karma
     push_const 468
     add
     fetch_i4
     push_const 0
     greater
     branch_false L2
L1
     push_event    //  myself
     push_const 704
     add
     fetch_i
     push_event    //  talker
     push_const 40
     add
     fetch_i
S881.    "nobless_002.htm"
     push_string S881
     func_call 184680516    //  func[ShowPage]
     shift_sp -2
     shift_sp -1
     jump L3
L2
     push_event    //  talker
     push_const 40
     add
     fetch_i    //  level
     push_const 1092
     add
     fetch_i4
     push_const 74
     less_equal
     branch_false L5
L4
     push_event    //  myself
     push_const 704
     add
     fetch_i
     push_event    //  talker
     push_const 40
     add
     fetch_i
S882.    "nobless_007.htm"
     push_string S882
     func_call 184680516    //  func[ShowPage]
     shift_sp -2
     shift_sp -1
     jump L6
L5
     push_event    //  talker
     push_const 40
     add
     fetch_i    //  subjob_id
     push_const 152
     add
     fetch_i4
     push_const 0
     equal
     branch_false L8
L7
     push_event    //  myself
     push_const 704
     add
     fetch_i
     push_event    //  talker
     push_const 40
     add
     fetch_i
S883.    "nobless_006.htm"
     push_string S883
     func_call 184680516    //  func[ShowPage]
     shift_sp -2
     shift_sp -1
     jump L9
L8
     push_event    //  talker
     push_const 40
     add
     fetch_i    //  nobless_type
     push_const 156
     add
     fetch_i4
     push_const 1
     equal
     branch_false L11
L10
     push_event    //  myself
     push_const 704
     add
     fetch_i
     push_event    //  talker
     push_const 40
     add
     fetch_i
S884.    "nobless_008.htm"
     push_string S884
     func_call 184680516    //  func[ShowPage]
     shift_sp -2
     shift_sp -1
     jump L12
L11
     push_event    //  myself
     push_const 704
     add
     fetch_i
     push_event    //  talker
     push_const 40
     add
     fetch_i
S885.    "nobless_001.htm"
     push_string S885
     func_call 184680516    //  func[ShowPage]
     shift_sp -2
     shift_sp -1
L12
L9
L6
L3
handler_end

handler 32 167    //  MENU_SELECTED
     variable_begin
         "talker"
         "ask"
         "myself"
         "_choiceN"
         "_code"
         "_from_choice"
     variable_end

     push_event    //  ask
     push_const 160
     add
     fetch_i4
     push_const 644
     equal
     push_reg_sp
     fetch_i
     branch_false L15
     push_event    //  myself
     push_const 704
     add
     fetch_i
     push_event    //  talker
     push_const 40
     add
     fetch_i
     push_parameter Itemn
     func_call 184680579    //  func[OwnItemCount]
     shift_sp -2
     push_parameter Amount
     greater_equal
     push_reg_sp
     fetch_i
     branch_false L16
     push_event    //  myself
     push_const 704
     add
     fetch_i
     push_event    //  talker
     push_const 40
     add
     fetch_i
     push_parameter Itemn1
     func_call 184680579    //  func[OwnItemCount]
     shift_sp -2
     push_parameter Amount1
     greater_equal
     push_reg_sp
     fetch_i
     branch_false L17
     push_event    //  myself
     push_const 704
     add
     fetch_i
     push_event    //  talker
     push_const 40
     add
     fetch_i
     push_parameter Itemn2
     func_call 184680579    //  func[OwnItemCount]
     shift_sp -2
     push_parameter Amount2
     greater_equal
     and
L17
     and
L16
     and
L15
     branch_false L14
L13
     push_event    //  myself
     push_const 704
     add
     fetch_i
     push_event    //  talker
     push_const 40
     add
     fetch_i
     push_parameter Itemn
     push_parameter Amount
     func_call 184746114    //  func[DeleteItem1]
     shift_sp -3
     shift_sp -1
     push_event    //  myself
     push_const 704
     add
     fetch_i
     push_event    //  talker
     push_const 40
     add
     fetch_i
     push_parameter Itemn1
     push_parameter Amount1
     func_call 184746114    //  func[DeleteItem1]
     shift_sp -3
     shift_sp -1
     push_event    //  myself
     push_const 704
     add
     fetch_i
     push_event    //  talker
     push_const 40
     add
     fetch_i
     push_parameter Itemn2
     push_parameter Amount2
     func_call 184746114    //  func[DeleteItem1]
     shift_sp -3
     shift_sp -1
     push_event    //  myself
     push_const 704
     add
     fetch_i
     push_event    //  talker
     push_const 40
     add
     fetch_i
     push_const 7694
     push_const 1
     func_call 184746111    //  func[GiveItem1]
     shift_sp -3
     shift_sp -1
     push_event    //  myself
     push_const 704
     add
     fetch_i
     push_event    //  talker
     push_const 40
     add
     fetch_i
S886.    "ItemSound.quest_finish"
     push_string S886
     func_call 184680685    //  func[SoundEffect]
     shift_sp -2
     shift_sp -1
     push_event    //  myself
     push_const 704
     add
     fetch_i
     push_event    //  talker
     push_const 40
     add
     fetch_i
     func_call 184615315    //  func[SetNobless]
     shift_sp -1
     shift_sp -1
     push_event    //  myself
     push_const 704
     add
     fetch_i
     push_event    //  talker
     push_const 40
     add
     fetch_i
S887.    "nobless_005.htm"
     push_string S887
     func_call 184680516    //  func[ShowPage]
     shift_sp -2
     shift_sp -1
     jump L18
L14
     push_event    //  myself
     push_const 704
     add
     fetch_i
     push_event    //  talker
     push_const 40
     add
     fetch_i
S888.    "nobless_003.htm"
     push_string S888
     func_call 184680516    //  func[ShowPage]
     shift_sp -2
     shift_sp -1
L18
handler_end

class_end


И для НПЦ нужно создать html:
nobless_001.htm - fnHi с ссылкой на выполнение команды setnoobless, ask == 644, пример ссылки:

Код
<a action="bypass -h menu_select?ask=644&reply=1">получить нублес</a>


nobless_002.htm - если чар ПК
nobless_003.htm - недостаточно итемов
nobless_005.htm - конечное диалоговое окно после удачного получения статуса нублеса
nobless_006.htm - отсутствие сабкласса
nobless_007.htm - недостаточно высокий уровень
nobless_008.htm - уже нублес

в npcdata.txt npc_ai={[nobless_npc];{[fnHi]=[nobless_001.htm]}

parameter_define_begin
int Itemn 1870 //необходимый итем 1
int Itemn1 1875 //необходимый итем 2
int Itemn2 1874 //необходимый итем 3
int Amount 1 //колчество итемов 1
int Amount1 1 //колчество итемов 2
int Amount2 1 //колчество итемов 3
parameter_define_end

0
Антоха
Антоха

User

Бывалый

Posts: 289

На форуме с: 11/24/2008

Репутация: +333

Рейтинг: 0

· 02/23/2010, 06:38 AM

Вот декомпилированный код to_become_senile.gif

Код
class nobless_npc : default_npc
{
parameter:
    int    Itemn = 1870;
    int    Itemn1 = 1875;
    int    Itemn2 = 1874;
    int    Amount = 1;
    int    Amount1 = 1;
    int    Amount2 = 1;

handler:
    EventHandler (talker)
    {
        if( talker.karma > 0 )
        {
            myself->ShowPage(talker,   "nobless_002.htm");
        }
        else if( talker.level <= 74 )
        {
            myself->ShowPage(talker,   "nobless_007.htm");
        }
        else if( talker.subjob_id == 0 )
        {
            myself->ShowPage(talker,   "nobless_006.htm");
        }
        else if( talker.nobless_type == 1 )
        {
            myself->ShowPage(talker,   "nobless_008.htm");
        }
        else
        {
            myself->ShowPage(talker,   "nobless_001.htm");
        }
    }

    EventHandler (talker,ask)
    {
        if( ask == 644 && ( myself->OwnItemCount(talker,Itemn) >= Amount && ( myself->OwnItemCount(talker,Itemn1) >= Amount1 && myself->OwnItemCount(talker,Itemn2) >= Amount2 ) ) )
        {
            myself->DeleteItem1(talker,Itemn,Amount);
            myself->DeleteItem1(talker,Itemn1,Amount1);
            myself->DeleteItem1(talker,Itemn2,Amount2);
            myself->GiveItem1(talker,7694,1);
            myself->SoundEffect(talker,   "ItemSound.quest_finish");
            myself->SetNobless(talker);
            myself->ShowPage(talker,   "nobless_005.htm");
        }
        else
        {
            myself->ShowPage(talker,   "nobless_003.htm");
        }
    }

}

0
Войдите или зарегистрируйтесь чтобы ответить