Small query not working as its supposed to -
Stevee - 12.06.2012
I'm attempting to learn PAWN, and I've hit a wall.
Код:
if(ABusinessData[BusID][Owner] == APlayerData[playerid][PlayerName])
{
// do code if true
}
else
{
// do code if false
}
I've debugged the results of
ABusinessData[BusID][Owner] -- This returns "Dave"
APlayerData[playerid][PlayerName] -- This returns "Dave"
----
When I use the query, it always returns true, never false.
Re: Small query not working as its supposed to -
iggy1 - 12.06.2012
You need to use a function to compare strings in PAWN.
pawn Код:
if( !strcmp( ABusinessData[BusID][Owner], APlayerData[playerid][PlayerName]) )
{
//strings match if strcmp returns zero
}
https://sampwiki.blast.hk/wiki/Strcmp
Other useful string functions listed at bottom of that page.
Re: Small query not working as its supposed to -
Stevee - 12.06.2012
Sorry, I only posted a snippet of the code to save space, I'll post the full code instead.
Код:
COMMAND:busmenu(playerid, params[])
{
// Setup local variables
new OptionsList[200], DialogTitle[200], BusID;
// Check if the player has logged in
if (APlayerData[playerid][LoggedIn] == true)
{
BusID = APlayerData[playerid][CurrentBusiness];
if(ABusinessData[BusID][Owner] == APlayerData[playerid][PlayerName])
{
// Check if the player is inside a business
if (BusID != 0)
{
format(DialogTitle, sizeof(DialogTitle), "Select option for %s", ABusinessData[APlayerData[playerid][CurrentBusiness]][BusinessName]);
format(OptionsList, sizeof(OptionsList), "%sChange business-name\n", OptionsList);
format(OptionsList, sizeof(OptionsList), "%sUpgrade business\n", OptionsList);
format(OptionsList, sizeof(OptionsList), "%sRetrieve business earnings\n", OptionsList);
format(OptionsList, sizeof(OptionsList), "%sSell business\n", OptionsList);
format(OptionsList, sizeof(OptionsList), "%sExit business\n", OptionsList);
// Show the businessmenu
ShowPlayerDialog(playerid, DialogBusinessMenu, DIALOG_STYLE_LIST, DialogTitle, OptionsList, "Select", "Cancel");
}
else
{
SendClientMessage(playerid, 0xFF0000FF, "You're not inside a business");
}
}
else
{
return 0;
}
}
else
{
return 0;
}
// Let the server know that this was a valid command
return 1;
}
Re: Small query not working as its supposed to -
iggy1 - 12.06.2012
Swap
pawn Код:
if(ABusinessData[BusID][Owner] == APlayerData[playerid][PlayerName])
For
pawn Код:
if( !strcmp( ABusinessData[BusID][Owner], APlayerData[playerid][PlayerName]) )
Re: Small query not working as its supposed to -
Stevee - 12.06.2012
My bad, misread your original post, thanks for the help, much appreciated!
Re: Small query not working as its supposed to -
Stevee - 12.06.2012
Eek, double post..
I've still got the problem, no matter what, the dialogue always shows, even if the values are different, any idea why?
Код:
COMMAND:busmenu(playerid, params[])
{
// Setup local variables
new OptionsList[200], DialogTitle[200], BusID;
// Check if the player has logged in
if(APlayerData[playerid][LoggedIn] == true)
{
BusID = APlayerData[playerid][CurrentBusiness];
if(!strcmp(ABusinessData[BusID][Owner], APlayerData[playerid][PlayerName]))
{
// Check if the player is inside a business
if (BusID != 0)
{
format(DialogTitle, sizeof(DialogTitle), "Select option for %s", ABusinessData[APlayerData[playerid][CurrentBusiness]][BusinessName]);
format(OptionsList, sizeof(OptionsList), "%sChange business-name\n", OptionsList);
format(OptionsList, sizeof(OptionsList), "%sUpgrade business\n", OptionsList);
format(OptionsList, sizeof(OptionsList), "%sRetrieve business earnings\n", OptionsList);
format(OptionsList, sizeof(OptionsList), "%sSell business\n", OptionsList);
format(OptionsList, sizeof(OptionsList), "%sExit business\n", OptionsList);
// Show the businessmenu
ShowPlayerDialog(playerid, DialogBusinessMenu, DIALOG_STYLE_LIST, DialogTitle, OptionsList, "Select", "Cancel");
}
else
{
SendClientMessage(playerid, 0xFF0000FF, "You're not inside a business");
}
}
else
{
SendClientMessage(playerid, 0xFF0000FF, "You're not the owner of this business");
}
}
else
{
return 0;
}
// Let the server know that this was a valid command
return 1;
}
Re: Small query not working as its supposed to -
iggy1 - 12.06.2012
Add a print to see what value BusID is. Only if it is none zero the dialog will be shown.
pawn Код:
COMMAND:busmenu(playerid, params[])
{
// Setup local variables
new OptionsList[200], DialogTitle[200], BusID;
// Check if the player has logged in
if(APlayerData[playerid][LoggedIn] == true)
{
BusID = APlayerData[playerid][CurrentBusiness];
if(!strcmp(ABusinessData[BusID][Owner], APlayerData[playerid][PlayerName]))
{
// Check if the player is inside a business
printf("BusID == %d", BusID);
if (BusID != 0)
{
//if BusID is any number exept zero this will be executed.
format(DialogTitle, sizeof(DialogTitle), "Select option for %s", ABusinessData[APlayerData[playerid][CurrentBusiness]][BusinessName]);
format(OptionsList, sizeof(OptionsList), "%sChange business-name\n", OptionsList);
format(OptionsList, sizeof(OptionsList), "%sUpgrade business\n", OptionsList);
format(OptionsList, sizeof(OptionsList), "%sRetrieve business earnings\n", OptionsList);
format(OptionsList, sizeof(OptionsList), "%sSell business\n", OptionsList);
format(OptionsList, sizeof(OptionsList), "%sExit business\n", OptionsList);
// Show the businessmenu
ShowPlayerDialog(playerid, DialogBusinessMenu, DIALOG_STYLE_LIST, DialogTitle, OptionsList, "Select", "Cancel");
}
else
{
SendClientMessage(playerid, 0xFF0000FF, "You're not inside a business");
}
}
else
{
SendClientMessage(playerid, 0xFF0000FF, "You're not the owner of this business");
}
}
else
{
return 0;
}
// Let the server know that this was a valid command
return 1;
}
TIP: use [pawn] tags instead of [code].
Re: Small query not working as its supposed to -
Stevee - 12.06.2012
The ID that gets printed is "129"