Npc раздающий ноблесс
2 ответов25 просмотровСейчас просматривают: 1
· 23.02.2010, 03:59
НПЦ который выдает статус ноблеса когда есть 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
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
· 23.02.2010, 06:38
Вот декомпилированный код ![]()
Код
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");
}
}
}
{
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
Войдите или зарегистрируйтесь чтобы ответить

