SA-MP Forums Archive
Dialog Help - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: Dialog Help (/showthread.php?tid=590110)



[fixed]Dialog Help - TheKnown - 25.09.2015

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.


Re: Dialog Help - nezo2001 - 25.09.2015

Show OnDialogResponse


Re: Dialog Help - TheKnown - 25.09.2015

Код:
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;
}



Re: Dialog Help - nezo2001 - 25.09.2015

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



Re: Dialog Help - TheKnown - 25.09.2015

doesn't work


Re: Dialog Help - TheKnown - 26.09.2015

help?


Re: Dialog Help - rappy93 - 26.09.2015

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


Re: Dialog Help - TheKnown - 26.09.2015

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


Re: Dialog Help - rappy93 - 26.09.2015

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.


Re: Dialog Help - Aly - 26.09.2015

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