02.05.2011, 13:21
I'm going to keep this simple, this is the code:
The problem is, it's listing the objects in the group I select, then it's getting called a second time and lists the objects in group 0. I have commented out the code in the /oglist command and put a sendclientmessage to show the parameters, and it shows one clientmessage with the number of the group I selected. Why then, when I uncomment the code, is it calling it twice the second time with 0 as a parameter?
If I change
return dcmd_oglist(playerid, string);
to
return dcmd_oglist(playerid, "8");
it works fine..
Thanks.
pawn Code:
// To show the dialog
new count[99], cnt;
for(new i=0; i<MAX_OBJ; i++)
{
if(objects[i][creator] == playerid && IsValidDynamicObject(objects[i][object_id])) count[objects[i][grp]]++;
}
for(new i=0; i<99; i++)
{
if(!count[i]) continue;
if(!cnt) format(string, sizeof(string), "GROUP %i: %i objects", i, count[i]);
else format(string, sizeof(string), "%s\nGROUP %i: %i objects", string, i, count[i]);
cnt++;
players[playerid][groupfindid][cnt-1] = i; // So I know which group is where in the dialog list
}
ShowPlayerDialog(playerid, DIALOG_OGROUPS, DIALOG_STYLE_LIST, "Your object groups", string, "Select", "Cancel");
pawn Code:
// To handle the dialog response
if(dialogid == DIALOG_OGROUPS && response)
{
format(string, sizeof(string), "%i", players[playerid][groupfindid][listitem]);
SendClientMessage(playerid, COLOR_GREEN, string);
return dcmd_oglist(playerid, string);
}
pawn Code:
// The /oglist command
dcmd_oglist(playerid, params[])
{
SendClientMessageToAll(COLOR_SUMO, params);
if(!pObjects[playerid]) return SendErrorMessage(playerid, "You have no objects.");
if(!strlen(params)) return ShowSyntax(playerid, "/OGLIST [GROUPID]", "List objects in a certain group.");
if(strlen(params) > 2) return SendErrorMessage(playerid, ERROR_INVALID_OBJECT_GROUP);
if(strval(params) < 0) return SendErrorMessage(playerid, ERROR_INVALID_OBJECT_GROUP);
new ocnt;
SendClientMessageEx(playerid, COLOR_GREEN, "[[ == Listing objects in group == ]]");
for(new i=0; i<MAX_OBJ; i++)
{
if(objects[i][creator] == playerid && IsValidDynamicObject(objects[i][object_id]) && objects[i][grp] == strval(params))
{
ocnt++;
if(ocnt == 99) return SendClientMessage(playerid, COLOR_RED, "Over 99 objects in this group, no more can be shown in chat.");
format(string, sizeof(string), "GROUP %i: MSEL %i (MODEL: %i)", strval(params), i, objects[i][modelid]);
SendClientMessage(playerid, COLOR_TEAL, string);
}
}
if(!ocnt) SendClientMessage(playerid, COLOR_RED, "No objects in that group.");
return 1;
}
If I change
return dcmd_oglist(playerid, string);
to
return dcmd_oglist(playerid, "8");
it works fine..
Thanks.