krich
06-21-2003, 07:24 PM
This was a pain...
In client_process.cpp, Client::HandlePacket
FROM:
parse->Event(EVENT_ITEM, tmp->GetNPCTypeID(), 0, tmp, this->CastToMob());
TO:
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:
case EVENT_ITEM: {
SendCommands("event_item", qstID, npcmob, mob);
break;
}
TO:
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:
if (record == 1 && pch[i] != ')')
TO:
if (record == 1 && pch[i] != ')' && pch[i]!='\"')
That should do it...
Regards,
krich
In client_process.cpp, Client::HandlePacket
FROM:
parse->Event(EVENT_ITEM, tmp->GetNPCTypeID(), 0, tmp, this->CastToMob());
TO:
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:
case EVENT_ITEM: {
SendCommands("event_item", qstID, npcmob, mob);
break;
}
TO:
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:
if (record == 1 && pch[i] != ')')
TO:
if (record == 1 && pch[i] != ')' && pch[i]!='\"')
That should do it...
Regards,
krich