LUA GiveQuestItem supports more than one item
Fix #295 - http://cutpon.com:3000/devn00b/EQ2EMu/issues/295 GiveQuestItem(Quest, Player, Description, ItemID1, ItemID2)
This commit is contained in:
parent
eccec9cf92
commit
321cd929b9
1 changed files with 33 additions and 9 deletions
|
@ -5615,21 +5615,45 @@ int EQ2Emu_lua_GiveQuestItem(lua_State* state)
|
|||
packet->setDataByName("name", quest->GetName());
|
||||
packet->setDataByName("description", description.c_str());
|
||||
packet->setDataByName("level", quest->GetLevel());
|
||||
packet->setArrayLengthByName("num_rewards", 1);
|
||||
packet->setArrayDataByName("reward_id", item->details.item_id);
|
||||
|
||||
// if there are any additional optional items to add we will verify them and append
|
||||
int8 num_args = (int8)lua_interface->GetNumberOfArgs(state);
|
||||
vector<Item*> additionalItems;
|
||||
if(num_args > 4)
|
||||
{
|
||||
for(int8 n=5;n<num_args+1;n++)
|
||||
{
|
||||
int32 new_item = lua_interface->GetInt32Value(state, n);
|
||||
Item* tmpItem = master_item_list.GetItem(new_item);
|
||||
if(tmpItem)
|
||||
additionalItems.push_back(tmpItem);
|
||||
}
|
||||
}
|
||||
|
||||
packet->setArrayLengthByName("num_rewards", 1+additionalItems.size());
|
||||
|
||||
sint8 offset = 2; // all new clients
|
||||
|
||||
if (client->GetVersion() < 860)
|
||||
packet->setItemArrayDataByName("item", item, (Player*)spawn, 0, 0, -1);
|
||||
offset = -1;
|
||||
else if (client->GetVersion() < 1193)
|
||||
packet->setItemArrayDataByName("item", item, (Player*)spawn);
|
||||
else
|
||||
packet->setItemArrayDataByName("item", item, (Player*)spawn, 0, 0, 2);
|
||||
|
||||
client->QueuePacket(packet->serialize());
|
||||
safe_delete(packet);
|
||||
offset = 0;
|
||||
|
||||
packet->setArrayDataByName("reward_id", item->details.item_id, 0);
|
||||
packet->setItemArrayDataByName("item", item, (Player*)spawn, 0, 0, offset);
|
||||
|
||||
lua_interface->SetBooleanValue(state, client->AddItem(item_id, 1));
|
||||
client->Message(CHANNEL_COLOR_YELLOW, "You receive %s.", item->CreateItemLink(client->GetVersion()).c_str());
|
||||
|
||||
for(int8 n=0;n<additionalItems.size();n++)
|
||||
{
|
||||
packet->setArrayDataByName("reward_id", additionalItems[n]->details.item_id, n+1);
|
||||
packet->setItemArrayDataByName("item", additionalItems[n], (Player*)spawn, n+1, 0, offset);
|
||||
lua_interface->SetBooleanValue(state, client->AddItem(additionalItems[n]->details.item_id, 1));
|
||||
client->Message(CHANNEL_COLOR_YELLOW, "You receive %s.", additionalItems[n]->CreateItemLink(client->GetVersion()).c_str());
|
||||
}
|
||||
client->QueuePacket(packet->serialize());
|
||||
safe_delete(packet);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue