quests, player item load order

EQ2Emulator Development forum.

Moderator: Team Members

Post Reply
User avatar
Ememjr
Team Member
Posts: 975
Joined: Wed Mar 15, 2017 9:41 am
EQ2Emu Server: Perseverance

quests, player item load order

Post by Ememjr » Sun Sep 10, 2017 10:09 am

i am working on some quest journal thing, particularly the usable item icon displayed next to a quest that you click to use it so you dont have to find it in inventory and possibly move to a hot bar in order to use it

i have already fixed the struct for it
and i have modified the lua add queststep function to add an optional option at the end for the item numbet you wish to have in the quest journal
i have also add code for the quest step info to include that item number

the proplem is this, for the struct i need
the item number (given that is passed by the lua script and help in the addqueststep step info
unique item number
icon

the problem is it appears that quest and steps are loaded before character items are loaded
i am trying to find where a can switch the character load order and have inventory(player itemlist) loaded before quests are loaded

any idea where to look

User avatar
Ememjr
Team Member
Posts: 975
Joined: Wed Mar 15, 2017 9:41 am
EQ2Emu Server: Perseverance

Re: quests, player item load order

Post by Ememjr » Sun Sep 10, 2017 12:22 pm

ok i fixed this one, to insure player items are loaded before player quests

in client.cpp

i moved the following out of sendcharinfo

Code: Select all

database.LoadCharacterItemList(GetAccountID(), GetCharacterID(), player);
	if (firstlogin && player->item_list.GetNumberOfItems() == 0 && player->GetEquipmentList()->GetNumberOfItems() == 0) //re-add starting items if missing
	{
		LogWrite(CCLIENT__WARNING, 0, "Client", "Player has no items - reloading starting items: '%s' (%u)", player->GetName(), GetCharacterID());
		database.UpdateStartingItems(GetCharacterID(), player->GetAdventureClass(), player->GetRace());
		database.LoadCharacterItemList(GetAccountID(), GetCharacterID(), player);
	}
and placed it above database.LoadPlayerFactions(this);

Code: Select all

database.LoadCharacterItemList(GetAccountID(), GetCharacterID(), player);
	if (firstlogin && player->item_list.GetNumberOfItems() == 0 && player->GetEquipmentList()->GetNumberOfItems() == 0) //re-add starting items if missing
	{
		LogWrite(CCLIENT__WARNING, 0, "Client", "Player has no items - reloading starting items: '%s' (%u)", player->GetName(), GetCharacterID());
		database.UpdateStartingItems(GetCharacterID(), player->GetAdventureClass(), player->GetRace());
		database.LoadCharacterItemList(GetAccountID(), GetCharacterID(), player);
	}
	database.LoadPlayerFactions(this);
	database.LoadCharacterQuests(this);
	database.LoadPlayerMail(this);
I will post all the other changes to make this work in another post

Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests