/buy bug ZCMD + 1 rep?
#1

hello i have made a /buy cmd' with a dialog, the dialog show's up, but when i select what to buy.

it doesn't "buy" it, means doesn't take the money from me.. he's the cmd + the dialog.

CMD:
Код:
//==================================================================================================
CMD:buy(playerid, params[])
{
    if(!IsPlayerInRangeOfPoint(playerid, 15.0, 6.091179,-29.271898,1003.549438)) return SendClientMessage(playerid, COLOR_GREY, "You are not inside of a 24/7");
    ShowPlayerDialog(playerid, DIALOG_BUY, DIALOG_STYLE_LIST, "Store:", "Chips ($15)\nBurger($10)", "Purchase", "Cancel");
    return 1;
}
//==================================================================================================
DIALOG:
Код:
if(dialogid == DIALOG_BUY)
   	       {
	          if(response)
	          {
	               if(listitem == 0)
	               {
                        if(GetPlayerMoney(playerid) < 15) return SendClientMessage(playerid, 0xAFAFAFAA, "You don't have enough cash.");
        	            GivePlayerMoney(playerid, -15);
  	        		    SetPlayerHealth(playerid, -50);
  	        	        SendClientMessage(playerid, COLOR_GREENYELLOW, "You have bought a chips");
	               }
	               if(listitem == 1)
	               {
                        if(GetPlayerMoney(playerid) < 10) return SendClientMessage(playerid, 0xAFAFAFAA, "You don't have enough cash.");
    		            GivePlayerMoney(playerid, -10);
        		        SendClientMessage(playerid, COLOR_GREENYELLOW, "You have bought a burger");
	               }
	           }
			   return 1;
			}
I also definded it as my 6 dialog
Код:
#define DIALOG_BUY 			6
Reply
#2

Try to change

pawn Код:
if(response)
To:

pawn Код:
if(!response)
Reply
#3

Doesn't work.. ffs.. idk what's the problem.
Seems like the dialog doesn't respond
Reply
#4

Don't do it with "if" then! Do it with cases:

pawn Код:
case DIALOG_BUY:
{
    if(response)
    {
      case 0: // the first list-item
     //continue like this
Reply
#5

Quote:
Originally Posted by Twisted_Insane
Посмотреть сообщение
Don't do it with "if" then! Do it with cases:

pawn Код:
case DIALOG_BUY:
{
    if(response)
    {
      case 0: // the first list-item
     //continue like this
i have no idea how to place it.
Reply
#6

Shall look like that, untested, but if there are errors, you should be able to fix them, 'cause it's clear:

pawn Код:
case DIALOG_BUY:
        {
            if(!response) return 1;
            switch(listitem)
            {
            case 0: { // The first listitem
               
            if(GetPlayerMoney(playerid) < 15) return SendClientMessage(playerid, 0xAFAFAFAA, "You don't have enough cash.");
                    GivePlayerMoney(playerid, -15);
                SetPlayerHealth(playerid, -50);
                SendClientMessage(playerid, COLOR_GREENYELLOW, "You have bought a chips");
            }

        case 1: { //the second one

            if(GetPlayerMoney(playerid) < 10) return SendClientMessage(playerid, 0xAFAFAFAA, "You don't have enough cash.");
                    GivePlayerMoney(playerid, -10);
                SendClientMessage(playerid, COLOR_GREENYELLOW, "You have bought a burger");
                }
        }
        return 1;
}
Reply
#7

Ok i re-wrote it into my script got 4 errors, manage to fix 2. now i got these.
Код:
C:\Users\User\Desktop\Snoopy\gamemodes\Snoopy.pwn(1130) : error 014: invalid statement; not in switch
C:\Users\User\Desktop\Snoopy\gamemodes\Snoopy.pwn(1130) : warning 215: expression has no effect
Reply
#8

Show me your whole "OnDialogResponse", with the line of errors commented! You've probably forgot a bracket...
Reply
#9

At top of script somewhere

pawn Код:
#define DIALOG_BUY  6
Under "OnDialogResponse"

pawn Код:
if(dialogid == DIALOG_BUY)
{
    if(response)
    {
        switch(listitem)
        {
            case 0: // chips
            {
                if(GetPlayerMoney(playerid) < 15) return SendClientMessage(playerid, 0xAFAFAFAA, "You don't have enough cash.");
                GivePlayerMoney(playerid, -15);
                SetPlayerHealth(playerid, -50); // NOTE: This will kill the player. Might want to add 50?
                SendClientMessage(playerid, COLOR_GREENYELLOW, "You have bought a chips");
            }
            case 1: // burger
            {
                if(GetPlayerMoney(playerid) < 10) return SendClientMessage(playerid, 0xAFAFAFAA, "You don't have enough cash.");
                GivePlayerMoney(playerid, -10);
                SendClientMessage(playerid, COLOR_GREENYELLOW, "You have bought a burger");
            }
        }
     }
    return 1;
}
Reply
#10

Errors:
Код:
C:\Users\User\Desktop\Snoopy\gamemodes\Snoopy.pwn(1130) : error 014: invalid statement; not in switch
C:\Users\User\Desktop\Snoopy\gamemodes\Snoopy.pwn(1130) : warning 215: expression has no effect
C:\Users\User\Desktop\Snoopy\gamemodes\Snoopy.pwn(1130) : error 001: expected token: ";", but found ":"
C:\Users\User\Desktop\Snoopy\gamemodes\Snoopy.pwn(1130) : error 029: invalid expression, assumed zero
C:\Users\User\Desktop\Snoopy\gamemodes\Snoopy.pwn(1130) : fatal error 107: too many error messages on one line
Code:
Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	    if(dialogid == DIALOG_MUSICPLAYER)
	    {
	          if(response)
	          {
	               if(listitem == 0)
	               {
                        PlayAudioStreamForPlayer(playerid, "http://k004.kiwi6.com/hotlink/i6p9a47k3h/etho_the_godfather_theme_dubstep_remix.mp3"); // Play the song
	               }
	               if(listitem == 1)
	               {
	                       PlayAudioStreamForPlayer(playerid, "http://k004.kiwi6.com/hotlink/3525w3wdnb/dj_tapolsky_bass_resolution.mp3");
	               }
	               if(listitem == 2)
	               {
	                       PlayAudioStreamForPlayer(playerid, "http://k004.kiwi6.com/hotlink/ar02f3fgii/ice_cube_gangsta_rap_made_me_do_it.mp3");
	               }
	               if(listitem == 3)
	               {
	                       PlayAudioStreamForPlayer(playerid, "http://k004.kiwi6.com/hotlink/mniont2jn1/wiz_khalifa_on_my_level.mp3");
	               }
	               if(listitem == 4)
	               {
	                       PlayAudioStreamForPlayer(playerid, "http://k004.kiwi6.com/hotlink/5dj2xxfxz8/flux_pavilion_wobbleland_2011.mp3");
	               }
	               if(listitem == 5)
	               {
	                       PlayAudioStreamForPlayer(playerid, "None");
	               }
	           }
			   return 1;
	}
   	if(dialogid == DIALOG_AGE)
	{
	    if(!response)
       	{
         	Kick(playerid);
       	}
       	else
       	{
		    if(strlen(inputtext))
		    {
		        new age = strval(inputtext);
		        if(age > 100 || age < 16)
				{
                    ShowPlayerDialog(playerid, DIALOG_AGE, DIALOG_STYLE_INPUT, "- Age -","How old are you??\n{FF0000}(( 16 - 100 ))","Answer","Quit");
				}
				else
				{
					PlayerInfo[playerid][pAge] = age;
					new
						string[ 64 ]
					;
					format(string, sizeof(string), "INFO: You're {3BB9FF}%d years old.",age);
					SendClientMessage(playerid, -1, string);
     				GivePlayerCash(playerid, 600);
					SaveAccountStats(playerid);
					SpawnPlayer(playerid);
				}
			}
			else
			{
			    return 0;
			}
		}
	}
	if(dialogid == DIALOG_SEX)
	{
        if(response)
		{
  			PlayerInfo[playerid][pSex] = 1;
			SendClientMessage(playerid, -1, "INFO: You are {FF0000}male.");
			SetPlayerSkin(playerid, 60);
			PlayerInfo[playerid][pSkin] = 60;
			ShowPlayerDialog(playerid, DIALOG_AGE, DIALOG_STYLE_INPUT, "- Age -","How old are you??\n{FF0000}(( 16 - 100 ))","Answer","Quit");
		}
		else
		{
			PlayerInfo[playerid][pSex] = 2;
			SendClientMessage(playerid, -1, "INFO: You are {FF0000}female.");
			SetPlayerSkin(playerid, 233);
			PlayerInfo[playerid][pSkin] = 233;
			ShowPlayerDialog(playerid, DIALOG_AGE, DIALOG_STYLE_INPUT, "- Age -","How old are you??\n{FF0000}(( 16 - 100 ))","Answer","Quit");
		}
	}
    switch( dialogid )
    {
        case DIALOG_REGISTER:
        {
            if (!response) return Kick(playerid);
            if(response)
            {
                if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registering...","You have entered an invalid password.\nType your password below to register a new account.","Register","Quit");
                new INI:File = INI_Open(UserPath(playerid));
                INI_SetTag(File,"data");
                INI_WriteInt(File,"Password",udb_hash(inputtext));
                INI_WriteInt(File,"Cash",0);
                INI_WriteInt(File,"Admin",0);
                INI_WriteInt(File,"Sex",0);
                INI_WriteInt(File,"Age",0);
                INI_WriteInt(File,"Level",0);
                INI_WriteInt(File,"Skin",0);
   			 	INI_WriteInt(File,"Team",0);
   			 	INI_WriteInt(File,"Accent",0);
   			 	INI_WriteInt(File,"banned",0);
                INI_Close(File);

                ShowPlayerDialog(playerid, DIALOG_SEX, DIALOG_STYLE_MSGBOX, "- Sex -","What gender are you?","Male","Female");
            }
        }
        case DIALOG_LOGIN:
        {
            if ( !response ) return Kick ( playerid );
            if( response )
            {
                if(udb_hash(inputtext) == PlayerInfo[playerid][pPass])
                {
                    INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
                    new tmp2[ 256 ], playername2[ MAX_PLAYER_NAME ];
                    
	    			GetPlayerName(playerid, playername2, sizeof(playername2));
   					format(tmp2, sizeof(tmp2), "~w~Welcome ~n~~r~%s", playername2);
					GameTextForPlayer(playerid, tmp2, 5000, 1);
					SetTimerEx("UnsetFirstSpawn", 5000, false, "i", playerid);
                    GivePlayerCash(playerid, PlayerInfo[playerid][pCash]);
                    if(PlayerInfo[playerid][pBanned]==1)
                    {
                    new stringa[600];
                    format(stringa,sizeof(stringa),"{FF0000}[Admin] {FF6347}Server has kicked %s reason: Account Banned",RPName(playerid));
                    SendClientMessageToAll(COLOR_RED,stringa);
                    Kick(playerid);
                    }
   					SpawnPlayer(playerid);
				}
                else
                {
                    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,"Login","You have entered an incorrect password.\nType your password below to login.","Login","Quit");
                }
                return 1;
            }
            case DIALOG_BUY:
		        {
		            if(!response) return 1;
		            switch(listitem)
		            {
		            case 0: { // The first listitem

		            if(GetPlayerMoney(playerid) < 15) return SendClientMessage(playerid, 0xAFAFAFAA, "You don't have enough cash.");
		                    GivePlayerMoney(playerid, -15);
		                SetPlayerHealth(playerid, -50);
		                SendClientMessage(playerid, COLOR_GREENYELLOW, "You have bought a chips");
		            }

		        case 1: { //the second one

		            if(GetPlayerMoney(playerid) < 10) return SendClientMessage(playerid, 0xAFAFAFAA, "You don't have enough cash.");
		                    GivePlayerMoney(playerid, -10);
		                SendClientMessage(playerid, COLOR_GREENYELLOW, "You have bought a burger");
		                }
		        }
		        return 1;
		}
        }
    }
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)