Dialog Help
#1

So i have made a dialog and every time i enter the checkpoint the dialog shows up but doesn't go away. Anyone know a fix to this?

Код:
new StoreBuyCP;
StoreBuyCP = CreateCheckpoint(-1,-22.5904,-55.3651,1003.5469,1.5,5.0);

if(CPiD == StoreBuyCP)
	{
	    ShowPlayerDialog(playerid,dStore,DIALOG_STYLE_LIST, "24/7 Menu", "Wallet - $3000\nCondom - $2500\nRadio Jammer - $2000\nRopes - $2500", "Select", "Cancel");
	    return 1;
	}
Btw i am using a self made checkpoint streamer because the streamer plugin doesn't work for me.
Reply
#2

Show OnDialogResponse
Reply
#3

Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == dStore)
{
	if(response)
	{
	    if(listitem == 0)
	    {
	        if(GetPlayerMoney(playerid) < 3000)
	        {
	            SendClientMessage(playerid, COLOR_RED, "[ElderBot]:You Don't Have Enough Money!");
	        }
	        else if(GetPlayerMoney(playerid) >= 3000)
	        {
				SendClientMessage(playerid, COLOR_PINK, "[ElderBot]:You Have Purchassed x2 Wallets from 24/7");
				Wallets[playerid] += 2;
				GivePlayerMoney(playerid, -3000);
			}
	    }
	    if(listitem == 1)
	    {
	        if(GetPlayerMoney(playerid) < 2500)
	        {
	            SendClientMessage(playerid, COLOR_RED, "[ElderBot]:You Don't Have Enough Money!");
	        }
	        else if(GetPlayerMoney(playerid) >= 2500)
	        {
	        	SendClientMessage(playerid, COLOR_PINK, "[ElderBot]:You Have Purchassed x2 Condoms from 24/7");
				Condoms[playerid] += 2;
				GivePlayerMoney(playerid, -2500);
			}
	    }
	    if(listitem == 2)
	    {
	        if(GetPlayerMoney(playerid) < 2000)
	        {
	            SendClientMessage(playerid, COLOR_RED, "[ElderBot]:You Don't Have Enough Money!");
	        }
	        else if(GetPlayerMoney(playerid) >= 2000)
	        {
	        	SendClientMessage(playerid, COLOR_PINK, "[ElderBot]:You Have Purchassed x1 Radio Jammer from 24/7");
				RADIO[playerid] += 1;
				GivePlayerMoney(playerid, -2000);
			}
	    }
	    if(listitem == 3)
	    {
	        if(GetPlayerMoney(playerid) < 2500)
	        {
	            SendClientMessage(playerid, COLOR_RED, "[ElderBot]:You Don't Have Enough Money!");
	        }
	        else if(GetPlayerMoney(playerid) >= 2500)
	        {
	        	SendClientMessage(playerid, COLOR_PINK, "[ElderBot]:You Have Purchassed x1 Rope from 24/7");
				Ropes[playerid] += 1;
				GivePlayerMoney(playerid, -2500);
			}
	    }
	}
}
return 1;
}
Reply
#4

Try
PHP код:
if(!response) return 0//before if(response) 
Reply
#5

doesn't work
Reply
#6

help?
Reply
#7

Make use of https://sampwiki.blast.hk/wiki/OnPlayerLeaveCheckpoint to remove/hide the dialog when the player exits the checkpoint.
Reply
#8

i don't know how to hide the dialog and the problem is that when i press cancel i shows up again you can't go away from the CP
Reply
#9

I think this problem is caused by the fact that you don't disable the checkpoint.

The following code should disable the checkpoint after the dialog is called.

PHP код:
if(dialogid == dStore)
{
    
DisablePlayerCheckpoint(playerid); // This will disable the checkpoint
    
if(response)
    {
        if(
listitem == 0)
        {
            if(
GetPlayerMoney(playerid) < 3000)
            {
                
SendClientMessage(playeridCOLOR_RED"[ElderBot]:You Don't Have Enough Money!");
            }
            else if(
GetPlayerMoney(playerid) >= 3000)
            {
                
SendClientMessage(playeridCOLOR_PINK"[ElderBot]:You Have Purchassed x2 Wallets from 24/7");
                
Wallets[playerid] += 2;
                
GivePlayerMoney(playerid, -3000);
            }
        }
        if(
listitem == 1)
        {
            if(
GetPlayerMoney(playerid) < 2500)
            {
                
SendClientMessage(playeridCOLOR_RED"[ElderBot]:You Don't Have Enough Money!");
            }
            else if(
GetPlayerMoney(playerid) >= 2500)
            {
                
SendClientMessage(playeridCOLOR_PINK"[ElderBot]:You Have Purchassed x2 Condoms from 24/7");
                
Condoms[playerid] += 2;
                
GivePlayerMoney(playerid, -2500);
            }
        }
        if(
listitem == 2)
        {
            if(
GetPlayerMoney(playerid) < 2000)
            {
                
SendClientMessage(playeridCOLOR_RED"[ElderBot]:You Don't Have Enough Money!");
            }
            else if(
GetPlayerMoney(playerid) >= 2000)
            {
                
SendClientMessage(playeridCOLOR_PINK"[ElderBot]:You Have Purchassed x1 Radio Jammer from 24/7");
                
RADIO[playerid] += 1;
                
GivePlayerMoney(playerid, -2000);
            }
        }
        if(
listitem == 3)
        {
            if(
GetPlayerMoney(playerid) < 2500)
            {
                
SendClientMessage(playeridCOLOR_RED"[ElderBot]:You Don't Have Enough Money!");
            }
            else if(
GetPlayerMoney(playerid) >= 2500)
            {
                
SendClientMessage(playeridCOLOR_PINK"[ElderBot]:You Have Purchassed x1 Rope from 24/7");
                
Ropes[playerid] += 1;
                
GivePlayerMoney(playerid, -2500);
            }
        }
    }
}
return 
1
Also, you could try to place DisablePlayerCheckpoint(playerid); under OnPlayerEnterCheckpoint as well.
Reply
#10

It shows up again because of your checkpoint system, your CP system still detects the player as being into the CP.
You can do something like this.Add a new variable,let's call it:
PHP код:
new bool:EnteredCP[MAX_PLAYERS]; 
Under OnPlayerConnect:
PHP код:
EnteredCP[playerid] = false
Then where you have this code replace it with this:
PHP код:
if(CPiD == StoreBuyCP)
{
    if(!
EnteredCP[playerid])
    {
        
EnteredCP[playerid] = true;
        
ShowPlayerDialog(playerid,dStore,DIALOG_STYLE_LIST"24/7 Menu""Wallet - $3000\nCondom - $2500\nRadio Jammer - $2000\nRopes - $2500""Select""Cancel");
        return 
1;
    }

And in the end when the player leaves that place make the variable false again:
PHP код:
EnteredCP[playerid] = false
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)