Bug fix in event_trade export, exported augments too. Also need to fix overloads

This commit is contained in:
KimLS 2013-05-26 15:56:55 -07:00
parent 850fa5aecc
commit 1e7c5bb9b7
8 changed files with 128 additions and 20 deletions

View File

@ -61,7 +61,20 @@ public:
virtual void ReloadQuests() { }
virtual uint32 GetIdentifier() = 0;
virtual void GetErrors(std::list<std::string> &err) { }
//TODO: Set maximum quest errors instead of hard coding it
virtual void GetErrors(std::list<std::string> &err) {
err.insert(err.end(), errors_.begin(), errors_.end());
}
virtual void AddError(std::string error) {
errors_.push_back(error);
if(errors_.size() > 30) {
errors_.pop_front();
}
}
protected:
std::list<std::string> errors_;
};
#endif

View File

@ -211,7 +211,6 @@ public:
virtual Raid* GetRaid() { return entity_list.GetRaidByClient(this); }
virtual Group* GetGroup() { return entity_list.GetGroupByClient(this); }
// void Discipline(ClientDiscipline_Struct* disc_in, Mob* tar);
void AI_Init();
void AI_Start(uint32 iMoveDelay = 0);
void AI_Stop();

View File

@ -518,6 +518,47 @@ void Lua_Client::DeleteItemInInventory(int slot_id, int quantity, bool update_cl
self->DeleteItemInInventory(slot_id, quantity, update_client);
}
void Lua_Client::SummonItem(uint32 item_id) {
Lua_Safe_Call_Void();
self->SummonItem(item_id);
}
void Lua_Client::SummonItem(uint32 item_id, int charges) {
Lua_Safe_Call_Void();
self->SummonItem(item_id, charges);
}
void Lua_Client::SummonItem(uint32 item_id, int charges, uint32 aug1) {
Lua_Safe_Call_Void();
self->SummonItem(item_id, charges, aug1);
}
void Lua_Client::SummonItem(uint32 item_id, int charges, uint32 aug1, uint32 aug2) {
Lua_Safe_Call_Void();
self->SummonItem(item_id, charges, aug1, aug2);
}
void Lua_Client::SummonItem(uint32 item_id, int charges, uint32 aug1, uint32 aug2, uint32 aug3) {
Lua_Safe_Call_Void();
self->SummonItem(item_id, charges, aug1, aug2, aug3);
}
void Lua_Client::SummonItem(uint32 item_id, int charges, uint32 aug1, uint32 aug2, uint32 aug3, uint32 aug4) {
Lua_Safe_Call_Void();
self->SummonItem(item_id, charges, aug1, aug2, aug3, aug4);
}
void Lua_Client::SummonItem(uint32 item_id, int charges, uint32 aug1, uint32 aug2, uint32 aug3, uint32 aug4, uint32 aug5) {
Lua_Safe_Call_Void();
self->SummonItem(item_id, charges, aug1, aug2, aug3, aug4, aug5);
}
void Lua_Client::SummonItem(uint32 item_id, int charges, uint32 aug1, uint32 aug2, uint32 aug3, uint32 aug4, uint32 aug5,
bool attuned) {
Lua_Safe_Call_Void();
self->SummonItem(item_id, charges, aug1, aug2, aug3, aug4, aug5, attuned);
}
void Lua_Client::SummonItem(uint32 item_id, int charges, uint32 aug1, uint32 aug2, uint32 aug3, uint32 aug4, uint32 aug5,
bool attuned, int to_slot) {
Lua_Safe_Call_Void();

View File

@ -132,8 +132,17 @@ public:
int GetItemIDAt(int slot_id);
int GetAugmentIDAt(int slot_id, int aug_slot);
void DeleteItemInInventory(int slot_id, int quantity, bool update_client = true);
void SummonItem(uint32 item_id, int charges = 0, uint32 aug1 = 0, uint32 aug2 = 0, uint32 aug3 = 0, uint32 aug4 = 0,
uint32 aug5 = 0, bool attuned = false, int to_slot = 30);
void SummonItem(uint32 item_id);
void SummonItem(uint32 item_id, int charges);
void SummonItem(uint32 item_id, int charges, uint32 aug1);
void SummonItem(uint32 item_id, int charges, uint32 aug1, uint32 aug2);
void SummonItem(uint32 item_id, int charges, uint32 aug1, uint32 aug2, uint32 aug3);
void SummonItem(uint32 item_id, int charges, uint32 aug1, uint32 aug2, uint32 aug3, uint32 aug4);
void SummonItem(uint32 item_id, int charges, uint32 aug1, uint32 aug2, uint32 aug3, uint32 aug4, uint32 aug5);
void SummonItem(uint32 item_id, int charges, uint32 aug1, uint32 aug2, uint32 aug3, uint32 aug4, uint32 aug5,
bool attuned);
void SummonItem(uint32 item_id, int charges, uint32 aug1, uint32 aug2, uint32 aug3, uint32 aug4, uint32 aug5,
bool attuned, int to_slot);
void SetStats(int type, int value);
void IncStats(int type, int value);
void DropItem(int slot_id);

View File

@ -822,17 +822,6 @@ void LuaParser::MapFunctions(lua_State *L) {
}
}
void LuaParser::GetErrors(std::list<std::string> &err) {
err.insert(err.end(), errors_.begin(), errors_.end());
}
void LuaParser::AddError(std::string error) {
errors_.push_back(error);
if(errors_.size() > 30) {
errors_.pop_front();
}
}
void LuaParser::DispatchEventNPC(QuestEventID evt, NPC* npc, Mob *init, std::string data, uint32 extra_data) {
if(!npc)
return;

View File

@ -53,7 +53,6 @@ public:
virtual std::string GetVar(std::string name);
virtual void ReloadQuests();
virtual uint32 GetIdentifier() { return 0xb0712acc; }
virtual void GetErrors(std::list<std::string> &err);
virtual void DispatchEventNPC(QuestEventID evt, NPC* npc, Mob *init, std::string data, uint32 extra_data);
virtual void DispatchEventPlayer(QuestEventID evt, Client *client, std::string data, uint32 extra_data);
@ -75,13 +74,11 @@ private:
bool HasFunction(std::string function, std::string package_name);
void ClearStates();
void MapFunctions(lua_State *L);
void AddError(std::string error);
void ExportQGlobals(NPC *n, Client *c);
void ExportZoneVariables();
std::map<std::string, std::string> vars_;
std::map<std::string, bool> loaded_;
std::list<std::string> errors_;
lua_State *L;
NPCArgumentHandler NPCArgumentDispatch[_LargestEventID];

View File

@ -73,7 +73,7 @@ void handle_npc_event_trade(QuestInterface *parse, lua_State* L, NPC* npc, Mob *
lua_setfield(L, -2, "item1_attuned");
lua_pushboolean(L, std::stoul(parse->GetVar("item2.attuned." + ident.str())) != 0 ? true : false);
lua_setfield(L, -2, "item1_attuned");
lua_setfield(L, -2, "item2_attuned");
lua_pushboolean(L, std::stoul(parse->GetVar("item3.attuned." + ident.str())) != 0 ? true : false);
lua_setfield(L, -2, "item3_attuned");
@ -81,6 +81,66 @@ void handle_npc_event_trade(QuestInterface *parse, lua_State* L, NPC* npc, Mob *
lua_pushboolean(L, std::stoul(parse->GetVar("item4.attuned." + ident.str())) != 0 ? true : false);
lua_setfield(L, -2, "item4_attuned");
lua_pushinteger(L, std::stoul(parse->GetVar("item1.augment1." + ident.str())));
lua_setfield(L, -2, "item1_augment1");
lua_pushinteger(L, std::stoul(parse->GetVar("item1.augment2." + ident.str())));
lua_setfield(L, -2, "item1_augment2");
lua_pushinteger(L, std::stoul(parse->GetVar("item1.augment3." + ident.str())));
lua_setfield(L, -2, "item1_augment3");
lua_pushinteger(L, std::stoul(parse->GetVar("item1.augment4." + ident.str())));
lua_setfield(L, -2, "item1_augment4");
lua_pushinteger(L, std::stoul(parse->GetVar("item1.augment5." + ident.str())));
lua_setfield(L, -2, "item1_augment5");
lua_pushinteger(L, std::stoul(parse->GetVar("item2.augment1." + ident.str())));
lua_setfield(L, -2, "item2_augment1");
lua_pushinteger(L, std::stoul(parse->GetVar("item2.augment2." + ident.str())));
lua_setfield(L, -2, "item2_augment2");
lua_pushinteger(L, std::stoul(parse->GetVar("item2.augment3." + ident.str())));
lua_setfield(L, -2, "item2_augment3");
lua_pushinteger(L, std::stoul(parse->GetVar("item2.augment4." + ident.str())));
lua_setfield(L, -2, "item2_augment4");
lua_pushinteger(L, std::stoul(parse->GetVar("item2.augment5." + ident.str())));
lua_setfield(L, -2, "item2_augment5");
lua_pushinteger(L, std::stoul(parse->GetVar("item3.augment1." + ident.str())));
lua_setfield(L, -2, "item3_augment1");
lua_pushinteger(L, std::stoul(parse->GetVar("item3.augment2." + ident.str())));
lua_setfield(L, -2, "item3_augment2");
lua_pushinteger(L, std::stoul(parse->GetVar("item3.augment3." + ident.str())));
lua_setfield(L, -2, "item3_augment3");
lua_pushinteger(L, std::stoul(parse->GetVar("item3.augment4." + ident.str())));
lua_setfield(L, -2, "item3_augment4");
lua_pushinteger(L, std::stoul(parse->GetVar("item3.augment5." + ident.str())));
lua_setfield(L, -2, "item3_augment5");
lua_pushinteger(L, std::stoul(parse->GetVar("item4.augment1." + ident.str())));
lua_setfield(L, -2, "item4_augment1");
lua_pushinteger(L, std::stoul(parse->GetVar("item4.augment2." + ident.str())));
lua_setfield(L, -2, "item4_augment2");
lua_pushinteger(L, std::stoul(parse->GetVar("item4.augment3." + ident.str())));
lua_setfield(L, -2, "item4_augment3");
lua_pushinteger(L, std::stoul(parse->GetVar("item4.augment4." + ident.str())));
lua_setfield(L, -2, "item4_augment4");
lua_pushinteger(L, std::stoul(parse->GetVar("item4.augment5." + ident.str())));
lua_setfield(L, -2, "item4_augment5");
lua_pushinteger(L, std::stoul(parse->GetVar("platinum." + ident.str())));
lua_setfield(L, -2, "platinum");

View File

@ -647,7 +647,7 @@ void Client::FinishTrade(Mob* tradingWith, ServerPacket* qspack, bool finalizer)
parse->AddVar(temp1, temp2);
for(int y = 0; y < 5; y++) {
snprintf(temp1, 100, "item%d.augment.%d", z + 1, tradingWith->GetNPCTypeID());
snprintf(temp1, 100, "item%d.augment%d.%d", z + 1, y + 1, tradingWith->GetNPCTypeID());
snprintf(temp2, 100, "%d", augments[z][y]);
parse->AddVar(temp1, temp2);
}