Всем привет, сборка AdvExt GFIL как в этой сборке добавить возможность в своего NPC
Мой NPC наследуется от merchant_for_chaotic чтобы можно было использовать функции кузнеца
Вопрос как сюда прокинуть еще функционал Deposit ?
Вот полностью NPC который работает в Giran))
<a action="bypass -h deposit">Deposit Item (Private Warehouse)</a>
<br>
<a action="bypass -h withdraw">Withdraw Item (Private Warehouse)</a>
<br>
<br>
<a action="bypass -h deposit_pledge">Deposit Item (Clan Warehouse)</a>
<br>
<a action="bypass -h withdraw_pledge">Withdraw Item (Clan Warehouse)</a>
Мой NPC наследуется от merchant_for_chaotic чтобы можно было использовать функции кузнеца
Код:
class gm_shop: merchant_for_chaotic
{
parameter:
string fnHi = "gm_shop001.htm";
handler:
EventHandler
TALKED(talker)
{
myself.ShowPage(talker, fnHi);
}
EventHandler
MENU_SELECTED(talker,ask,reply)
{
if(ask == -16)
{
if(reply == 1)
{
myself.OpenHennaItemListForEquip(talker);
}
else if(reply == 2)
{
myself.OpenHennaListForUnquip(talker);
}
}
if (ask == 1) {
myself.ShowMultisell(reply,talker);
}
if (ask == 2) {
if (reply == 1) {
if (talker.is_pledge_master != 0) {
myself.ShowPage(talker, "pl007.htm");
} else {
myself.ShowPage(talker, "pl008.htm");
}
}
}
super;
}
}
Вопрос как сюда прокинуть еще функционал Deposit ?
Вот полностью NPC который работает в Giran))
Код:
//***********************************************************************
//*| SauDecompiler | Ported to С# CjlaBuK, Keeper | Design Rage | ©2012*
//***********************************************************************
class warehouse_keeper : citizen
{
parameter:
string fnHi = "whi.htm";
string fnBye = "wbye.htm";
string fnYouAreChaotic = "wyac.htm";
string fnClassMismatch = "";
string fnEmpty = "we.htm";
string fnNowSiege = "";
string fnNotFourthClass = "skillenchant_notfourthclass.htm";
string fnLevelMismatch = "skillenchant_levelmismatch.htm";
handler:
EventHandler
NO_DESIRE()
{
myself.AddDoNothingDesire(-1, 9999);
}
EventHandler
TALKED(talker)
{
if(talker.karma > 0)
{
myself.ShowPage(talker, fnYouAreChaotic);
}
else
{
myself.ShowPage(talker, fnHi);
}
}
EventHandler
LEARN_SKILL_REQUESTED(talker)
{
if(myself.IsInCategory(59, talker.occupation))
{
myself.ShowSkillList(talker, "");
}
else
{
myself.ShowPage(talker, fnClassMismatch);
}
}
EventHandler
ONE_SKILL_SELECTED(talker, skill_name_id, need_quest)
{
myself.ShowGrowSkillMessage(talker, skill_name_id, "");
}
EventHandler
ENCHANT_SKILL_REQUESTED(talker, state)
{
if(myself.IsInCategory(59, talker.occupation))
{
if(myself.IsInCategory(9, talker.occupation))
{
if(talker.level > 75)
{
talker.ShowEnchantSkillList(state);
}
else
{
myself.ShowPage(talker, fnLevelMismatch);
}
}
else
{
myself.ShowPage(talker, fnNotFourthClass);
}
}
else
{
myself.ShowPage(talker, fnClassMismatch);
}
}
EventHandler
SHOW_ENCHANT_SKILL_DRAWER(talker, skill_name_id, action_id)
{
myself.ShowEnchantSkillListDrawer(talker, skill_name_id, action_id);
}
EventHandler
ONE_ENCHANT_SKILL_SELECTED(talker, skill_name_id, action_id)
{
talker.ShowEnchantSkillMessage(skill_name_id, action_id);
}
}
Код:
//***********************************************************************
//*| SauDecompiler | Ported to С# CjlaBuK, Keeper | Design Rage | ©2012*
//***********************************************************************
class valkon : warehouse_keeper
{
handler:
EventHandler
TALK_SELECTED(fhtml0, talker)
{
if(_from_choice == 0)
{
if(gg.HaveMemo(talker, @trial_of_guildsman) == 0 && myself.GetOneTimeQuestFlag(talker, @trial_of_guildsman) == 0)
{
_choiceN = (_choiceN + 1);
_code = 0;
myself.AddChoice(0, gg.MakeFString(21601, "", "", "", "", ""));
}
if(gg.HaveMemo(talker, @trial_of_guildsman) == 0 && myself.GetOneTimeQuestFlag(talker, @trial_of_guildsman) == 1)
{
_choiceN = (_choiceN + 1);
_code = 1;
myself.AddChoice(1, gg.MakeFString(21603, "", "", "", "", ""));
}
if(gg.HaveMemo(talker, @trial_of_guildsman) == 1 && gg.OwnItemCount(talker, @valkons_recommend) == 1)
{
_choiceN = (_choiceN + 1);
_code = 2;
myself.AddChoice(2, gg.MakeFString(21602, "", "", "", "", ""));
}
if(gg.HaveMemo(talker, @trial_of_guildsman) == 1 && gg.OwnItemCount(talker, @alltrans_instructions) == 1)
{
_choiceN = (_choiceN + 1);
_code = 3;
myself.AddChoice(3, gg.MakeFString(21602, "", "", "", "", ""));
}
if(gg.HaveMemo(talker, @trial_of_scholar) == 1 && gg.OwnItemCount(talker, @treafs_ring) == 1 && gg.OwnItemCount(talker, @valkons_request) == 0 && gg.OwnItemCount(talker, @crystal_of_purity2) == 0 && gg.OwnItemCount(talker, @scripture_chapter_2) == 0)
{
_choiceN = (_choiceN + 1);
_code = 4;
myself.AddChoice(4, gg.MakeFString(21402, "", "", "", "", ""));
}
if(gg.HaveMemo(talker, @trial_of_scholar) == 1 && gg.OwnItemCount(talker, @treafs_ring) == 1 && gg.OwnItemCount(talker, @valkons_request) == 1 && gg.OwnItemCount(talker, @crystal_of_purity2) == 0 && gg.OwnItemCount(talker, @scripture_chapter_2) == 0)
{
_choiceN = (_choiceN + 1);
_code = 5;
myself.AddChoice(5, gg.MakeFString(21402, "", "", "", "", ""));
}
if(gg.HaveMemo(talker, @trial_of_scholar) == 1 && gg.OwnItemCount(talker, @treafs_ring) == 1 && gg.OwnItemCount(talker, @valkons_request) == 0 && gg.OwnItemCount(talker, @crystal_of_purity2) == 1 && gg.OwnItemCount(talker, @scripture_chapter_2) == 0)
{
_choiceN = (_choiceN + 1);
_code = 6;
myself.AddChoice(6, gg.MakeFString(21402, "", "", "", "", ""));
}
if(gg.HaveMemo(talker, @trial_of_scholar) == 1 && gg.OwnItemCount(talker, @treafs_ring) == 1 && gg.OwnItemCount(talker, @valkons_request) == 0 && gg.OwnItemCount(talker, @crystal_of_purity2) == 0 && gg.OwnItemCount(talker, @scripture_chapter_2) == 1)
{
_choiceN = (_choiceN + 1);
_code = 7;
myself.AddChoice(7, gg.MakeFString(21402, "", "", "", "", ""));
}
if(_choiceN > 1)
{
myself.ShowChoicePage(talker, 1);
return;
}
}
if(_from_choice || _choiceN == 1)
{
if(myself.GetInventoryInfo(talker, 0) >= (myself.GetInventoryInfo(talker, 1) * 0.800000) || myself.GetInventoryInfo(talker, 2) >= (myself.GetInventoryInfo(talker, 3) * 0.800000))
{
myself.ShowSystemMessage(talker, 1118);
return;
}
select(_code)
{
case 0:
if(_from_choice == 0 || (gg.HaveMemo(talker, @trial_of_guildsman) == 0 && myself.GetOneTimeQuestFlag(talker, @trial_of_guildsman) == 0))
{
myself.SetCurrentQuestID(@trial_of_guildsman);
if(myself.GetMemoCount(talker) < 41)
{
if(talker.occupation == 56 || talker.occupation == 54)
{
if(talker.level < 35)
{
myself.ShowPage(talker, "valkon_q0216_02.htm");
}
else
{
myself.ShowPage(talker, "valkon_q0216_03.htm");
}
}
else
{
myself.ShowPage(talker, "valkon_q0216_01.htm");
}
}
else
{
myself.ShowPage(talker, "fullquest.htm");
}
}
break;
case 1:
if(_from_choice == 0 || (gg.HaveMemo(talker, @trial_of_guildsman) == 0 && myself.GetOneTimeQuestFlag(talker, @trial_of_guildsman) == 1))
{
myself.SetCurrentQuestID(@trial_of_guildsman);
myself.ShowPage(talker, "finishedquest.htm");
}
break;
case 2:
if(_from_choice == 0 || (gg.HaveMemo(talker, @trial_of_guildsman) == 1 && gg.OwnItemCount(talker, @valkons_recommend) == 1))
{
myself.SetCurrentQuestID(@trial_of_guildsman);
myself.ShowPage(talker, "valkon_q0216_07.htm");
myself.SetFlagJournal(talker, 216, 3);
myself.ShowQuestMark(talker, @trial_of_guildsman);
}
break;
case 3:
if(_from_choice == 0 || (gg.HaveMemo(talker, @trial_of_guildsman) == 1 && gg.OwnItemCount(talker, @alltrans_instructions) == 1))
{
myself.SetCurrentQuestID(@trial_of_guildsman);
if(gg.OwnItemCount(talker, @journeyman_ring) < 7)
{
myself.ShowPage(talker, "valkon_q0216_08.htm");
}
else
{
myself.ShowPage(talker, "valkon_q0216_09.htm");
}
}
break;
case 4:
if(_from_choice == 0 || (gg.HaveMemo(talker, @trial_of_scholar) == 1 && gg.OwnItemCount(talker, @treafs_ring) == 1 && gg.OwnItemCount(talker, @valkons_request) == 0 && gg.OwnItemCount(talker, @crystal_of_purity2) == 0 && gg.OwnItemCount(talker, @scripture_chapter_2) == 0))
{
myself.SetCurrentQuestID(@trial_of_scholar);
myself.ShowPage(talker, "valkon_q0214_01.htm");
}
break;
case 5:
if(_from_choice == 0 || (gg.HaveMemo(talker, @trial_of_scholar) == 1 && gg.OwnItemCount(talker, @treafs_ring) == 1 && gg.OwnItemCount(talker, @valkons_request) == 1 && gg.OwnItemCount(talker, @crystal_of_purity2) == 0 && gg.OwnItemCount(talker, @scripture_chapter_2) == 0))
{
myself.SetCurrentQuestID(@trial_of_scholar);
myself.ShowPage(talker, "valkon_q0214_05.htm");
}
break;
case 6:
if(_from_choice == 0 || (gg.HaveMemo(talker, @trial_of_scholar) == 1 && gg.OwnItemCount(talker, @treafs_ring) == 1 && gg.OwnItemCount(talker, @valkons_request) == 0 && gg.OwnItemCount(talker, @crystal_of_purity2) == 1 && gg.OwnItemCount(talker, @scripture_chapter_2) == 0))
{
myself.SetCurrentQuestID(@trial_of_scholar);
if((myself.GetCurrentTick() - talker.quest_last_reward_time) > 1)
{
talker.quest_last_reward_time = myself.GetCurrentTick();
myself.ShowPage(talker, "valkon_q0214_06.htm");
myself.DeleteItem1(talker, @crystal_of_purity2, 1);
myself.GiveItem1(talker, @scripture_chapter_2, 1);
}
}
break;
case 7:
if(_from_choice == 0 || (gg.HaveMemo(talker, @trial_of_scholar) == 1 && gg.OwnItemCount(talker, @treafs_ring) == 1 && gg.OwnItemCount(talker, @valkons_request) == 0 && gg.OwnItemCount(talker, @crystal_of_purity2) == 0 && gg.OwnItemCount(talker, @scripture_chapter_2) == 1))
{
myself.SetCurrentQuestID(@trial_of_scholar);
myself.ShowPage(talker, "valkon_q0214_07.htm");
}
break;
}
return;
}
super;
}
EventHandler
QUEST_ACCEPTED(quest_id, talker)
{
if(quest_id == 216)
{
myself.SetCurrentQuestID(@trial_of_guildsman);
if(myself.GetInventoryInfo(talker, 0) >= (myself.GetInventoryInfo(talker, 1) * 0.800000) || myself.GetInventoryInfo(talker, 2) >= (myself.GetInventoryInfo(talker, 3) * 0.800000))
{
myself.ShowSystemMessage(talker, 1118);
return;
}
if(gg.OwnItemCount(talker, @adena) >= 2000)
{
if((myself.GetCurrentTick() - talker.quest_last_reward_time) > 1)
{
talker.quest_last_reward_time = myself.GetCurrentTick();
myself.SetMemo(talker, quest_id);
myself.SoundEffect(talker, "ItemSound.quest_accept");
if(gg.OwnItemCount(talker, @valkons_recommend) == 0)
{
myself.GiveItem1(talker, @valkons_recommend, 1);
}
myself.ShowPage(talker, "valkon_q0216_06.htm");
myself.DeleteItem1(talker, @adena, 2000);
myself.SetFlagJournal(talker, 216, 1);
myself.ShowQuestMark(talker, @trial_of_guildsman);
}
}
else
{
myself.ShowPage(talker, "valkon_q0216_05b.htm");
}
return;
}
super;
}
EventHandler
MENU_SELECTED(ask, fhtml0, reply, talker)
{
if(ask == 216 || ask == 214)
{
if(myself.GetInventoryInfo(talker, 0) >= (myself.GetInventoryInfo(talker, 1) * 0.800000) || myself.GetInventoryInfo(talker, 2) >= (myself.GetInventoryInfo(talker, 3) * 0.800000))
{
myself.ShowSystemMessage(talker, 1118);
return;
}
if(ask == 216)
{
myself.SetCurrentQuestID(@trial_of_guildsman);
if(reply == 1)
{
myself.ShowPage(talker, "valkon_q0216_04.htm");
}
else if(reply == 2)
{
myself.FHTML_SetFileName(fhtml0, "valkon_q0216_05.htm");
myself.FHTML_SetInt(fhtml0, "quest_id", 216);
myself.ShowFHTML(talker, fhtml0);
}
else if(reply == 3)
{
if(gg.HaveMemo(talker, @trial_of_guildsman) == 1 && gg.OwnItemCount(talker, @alltrans_instructions) >= 1 && gg.OwnItemCount(talker, @journeyman_ring) >= 7)
{
if((myself.GetCurrentTick() - talker.quest_last_reward_time) > 1)
{
talker.quest_last_reward_time = myself.GetCurrentTick();
myself.ShowPage(talker, "valkon_q0216_09a.htm");
myself.RemoveMemo(talker, @trial_of_guildsman);
myself.SoundEffect(talker, "ItemSound.quest_finish");
myself.SetOneTimeQuestFlag(talker, @trial_of_guildsman, 1);
myself.IncrementParam(talker, 0, (80993 * QuestExpRate));
myself.IncrementParam(talker, 1, (12250 * QuestSpRate));
myself.GiveItem1(talker, @q_dimension_diamond, 8);
myself.DeleteItem1(talker, @journeyman_ring, gg.OwnItemCount(talker, 3139));
myself.DeleteItem1(talker, @alltrans_instructions, gg.OwnItemCount(talker, 3122));
myself.DeleteItem1(talker, @rp_journeyman_ring, gg.OwnItemCount(talker, 3024));
myself.GiveItem1(talker, @mark_of_guildsman, 1);
}
}
}
else if(reply == 4)
{
if(gg.HaveMemo(talker, @trial_of_guildsman) == 1 && gg.OwnItemCount(talker, @alltrans_instructions) >= 1 && gg.OwnItemCount(talker, @journeyman_ring) >= 7)
{
if((myself.GetCurrentTick() - talker.quest_last_reward_time) > 1)
{
talker.quest_last_reward_time = myself.GetCurrentTick();
myself.IncrementParam(talker, 0, (241321 * QuestExpRate));
myself.GiveItem1(talker, @q_dimension_diamond, 8);
myself.ShowPage(talker, "valkon_q0216_09b.htm");
myself.RemoveMemo(talker, @trial_of_guildsman);
myself.SoundEffect(talker, "ItemSound.quest_finish");
myself.SetOneTimeQuestFlag(talker, @trial_of_guildsman, 1);
myself.DeleteItem1(talker, @journeyman_ring, gg.OwnItemCount(talker, 3139));
myself.DeleteItem1(talker, @alltrans_instructions, gg.OwnItemCount(talker, 3122));
myself.DeleteItem1(talker, @rp_journeyman_ring, gg.OwnItemCount(talker, 3024));
myself.GiveItem1(talker, @mark_of_guildsman, 1);
}
}
}
}
else if(ask == 214)
{
myself.SetCurrentQuestID(@trial_of_scholar);
if(reply == 1)
{
myself.ShowPage(talker, "valkon_q0214_02.htm");
}
else if(reply == 2)
{
myself.ShowPage(talker, "valkon_q0214_03.htm");
}
else if(reply == 3)
{
if((myself.GetCurrentTick() - talker.quest_last_reward_time) > 1)
{
talker.quest_last_reward_time = myself.GetCurrentTick();
myself.ShowPage(talker, "valkon_q0214_04.htm");
myself.GiveItem1(talker, @valkons_request, 1);
}
}
}
}
super;
}
}
