View Single Post
  #1  
Old 06-21-2003, 07:24 PM
krich
Hill Giant
 
Join Date: May 2003
Location: The Great Northwest
Posts: 150
Default Fixed Quest Item Turn-in using $ItemCount()

This was a pain...

In client_process.cpp, Client::HandlePacket

FROM:
Code:
parse->Event(EVENT_ITEM, tmp->GetNPCTypeID(), 0, tmp, this->CastToMob());
TO:
Code:
char tradeliststring[100];
memset(tradeliststring, 0, sizeof(tradeliststring));
for (int k = 0; k <=3; k++) {
	strncat(tradeliststring, itoa(TradeList[k]), sizeof(tradeliststring));
	strncat(tradeliststring, " ", sizeof(tradeliststring));
}
parse->Event(EVENT_ITEM, tmp->GetNPCTypeID(), tradeliststring, tmp, this->CastToMob());

Then, In parser.cpp, Parser::Event

FROM:
Code:
case EVENT_ITEM: {
                        SendCommands("event_item", qstID, npcmob, mob);
                        break;
                }
TO:
Code:
case EVENT_ITEM: {
                        char varname[20];
                        int token = 1;
                        char varvalue[10];
                        int v = 0;

                        memset(varname, 0, sizeof(varname));
                        memset(varvalue, 0, sizeof(varvalue));

                        for (int k=0; k<=strlen(data); k++) {
                                if (data[k] == ' ') {
                                        snprintf(varname, sizeof(varname), "item%d.%d", token, npcid);
                                        AddVar(varname, varvalue);
                                        memset(varvalue, 0, sizeof(varvalue));
                                        memset(varname, 0, sizeof(varname));
                                        token++;
                                        v=0;
                                }
                                else {
                                        varvalue[v] = data[k];
                                        v++;
                                }
                        }
                        SendCommands("event_item", qstID, npcmob, mob);
                        break;
                }

And finally, In parser.cpp, Parser:ParseVars

FROM:
Code:
 if (record == 1 && pch[i] != ')')

TO:
Code:
                        if (record == 1 && pch[i] != ')' && pch[i]!='\"')
That should do it...

Regards,

krich
Reply With Quote