SA-MP Forums Archive
Need help with a dialog - 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: Need help with a dialog (/showthread.php?tid=307526)



Need help with a dialog - Face9000 - 30.12.2011

Ok so,i made a class dialog that show everytime a player spawns.But there is a problem,when a dialogbox appear,if i press ESC,no option where selected from the dialog and i got normal cj skin.

How to fix this problem?

here is the dialog:

pawn Код:
if(dialogid == 888)
    {
        if(response)
        {
            if(listitem == 0)  // Assault
            {
               SetPlayerArmour(playerid, 90.0);
               GivePlayerWeapon(playerid, 24, 75);
               GivePlayerWeapon(playerid, 27, 50);
               GivePlayerWeapon(playerid, 31, 120);
               SetPlayerSkin(playerid, 124);
            }
            if(listitem == 1)  // Demolition
            {
            if(GetPlayerScore(playerid) < 500)
            {
                 SendClientMessage(playerid,0xFF0000AA,"You need 500 score for Demolition class.");
                 ShowPlayerDialog(playerid, 888, DIALOG_STYLE_LIST, "******CLASS******", "Assault\nDemolition\nExpert\nSniper\nDamager", "Ok", "");
                 return 0;
            }
            else if(GetPlayerScore(playerid) > 500)
            {
               SetPlayerArmour(playerid, 90.0);
               GivePlayerWeapon(playerid, 35, 5);
               GivePlayerWeapon(playerid, 28, 150);
               GivePlayerWeapon(playerid, 16, 10);
               SetPlayerSkin(playerid, 179);
            }
            }
            if(listitem == 2)  // Expert
            {
            if(GetPlayerScore(playerid) < 1000)
            {
                 SendClientMessage(playerid,0xFF0000AA,"You need 1000 score for Expert class.");
                 ShowPlayerDialog(playerid, 888, DIALOG_STYLE_LIST, "******CLASS******", "Assault\nDemolition\nExpert\nSniper\nDamager", "Ok", "");
                 return 0;
            }
            else if(GetPlayerScore(playerid) > 1500)
            {
               SetPlayerArmour(playerid, 90.0);
               GivePlayerWeapon(playerid, 26, 240);
               GivePlayerWeapon(playerid, 24, 75);
               GivePlayerWeapon(playerid, 17, 20);
               GivePlayerWeapon(playerid, 37, 150);
               SetPlayerSkin(playerid, 272);
            }
            }
              if(listitem == 3)  // Sniper
            {
            if(GetPlayerScore(playerid) < 100)
            {
                 SendClientMessage(playerid,0xFF0000AA,"You need 100 score for Sniper class.");
                 ShowPlayerDialog(playerid, 888, DIALOG_STYLE_LIST, "******CLASS******", "Assault\nDemolition\nExpert\nSniper\nDamager", "Ok", "");
                 return 0;
            }
            else if(GetPlayerScore(playerid) > 100)
            {
               SetPlayerArmour(playerid, 90.0);
               GivePlayerWeapon(playerid, 34, 200);
               GivePlayerWeapon(playerid, 16, 20);
               SetPlayerSkin(playerid, 183);
            }
            }
                  if(listitem == 4)  // Damager
            {
            if(GetPlayerScore(playerid) < 100)
            {
                 SendClientMessage(playerid,0xFF0000AA,"You need 5000 score for Damager class.");
                 ShowPlayerDialog(playerid, 888, DIALOG_STYLE_LIST, "******CLASS******", "Assault\nDemolition\nExpert\nSniper\nDamager", "Ok", "");
                 return 0;
            }
            else if(GetPlayerScore(playerid) > 5000)
            {
               SetPlayerArmour(playerid, 90.0);
               GivePlayerWeapon(playerid, 35, 100);
               SetPlayerSkin(playerid, 33);
            }
            }
        }
      return 1;
    }
OnPlayerSpawn:

pawn Код:
ShowPlayerDialog(playerid, 888, DIALOG_STYLE_LIST, "******CLASS******", "Assault\nDemolition\nExpert\nSniper\nDamager", "Ok", "");
Thanks.


Re: Need help with a dialog - AstonDA-G - 30.12.2011

Im not gonna copy the code, but try after the if(response) close bracket, put return 0;
pawn Код:
if(response)
{
//Listitems and stuff
}
return 0;
Hope I helped (somewhat)


Re: Need help with a dialog - Face9000 - 30.12.2011

Emh nope...not helped


Re: Need help with a dialog - AstonDA-G - 30.12.2011

Well my last try to make use of myself, Instead of if(response) { }
My dialogs all have this;
pawn Код:
if(dialogid == 1337) {
if(!response) return 0; //I have this
if(listitem == 0) { //else carry on to listitems
SendClientMessageToAll(-1, "TROLL");
}
}
Seems to work for me, else i'm sorry for wasting time :S


Re: Need help with a dialog - Face9000 - 30.12.2011

Nope,i can still press ESC and get the CJ Skin


Re: Need help with a dialog - AstonDA-G - 30.12.2011

Sorry, I think I misread.
Maybe you should TogglePlayerSpectating or something until the player has chosen one of the listitems. Maybe don't include the if(response). If he presses esc then, it will just choose whichever item is selected.


Re: Need help with a dialog - AustinJ - 30.12.2011

Try This
pawn Код:
if(dialogid == 888)
{
    if(response)
    {
        if(listitem == 0)  // Assault
        {
            SetPlayerArmour(playerid, 90.0);
            GivePlayerWeapon(playerid, 24, 75);
            GivePlayerWeapon(playerid, 27, 50);
            GivePlayerWeapon(playerid, 31, 120);
            SetPlayerSkin(playerid, 124);
        }
        if(listitem == 1)  // Demolition
        {
            if(GetPlayerScore(playerid) < 500)
            {
                SendClientMessage(playerid,0xFF0000AA,"You need 500 score for Demolition class.");
                ShowPlayerDialog(playerid, 888, DIALOG_STYLE_LIST, "******CLASS******", "Assault\nDemolition\nExpert\nSniper\nDamager", "Ok", "");
            }
            else if(GetPlayerScore(playerid) > 500)
            {
                SetPlayerArmour(playerid, 90.0);
                GivePlayerWeapon(playerid, 35, 5);
                GivePlayerWeapon(playerid, 28, 150);
                GivePlayerWeapon(playerid, 16, 10);
                SetPlayerSkin(playerid, 179);
            }
        }
        if(listitem == 2)  // Expert
        {
            if(GetPlayerScore(playerid) < 1000)
            {
                SendClientMessage(playerid,0xFF0000AA,"You need 1000 score for Expert class.");
                ShowPlayerDialog(playerid, 888, DIALOG_STYLE_LIST, "******CLASS******", "Assault\nDemolition\nExpert\nSniper\nDamager", "Ok", "");
            }
            else if(GetPlayerScore(playerid) > 1500)
            {
                SetPlayerArmour(playerid, 90.0);
                GivePlayerWeapon(playerid, 26, 240);
                GivePlayerWeapon(playerid, 24, 75);
                GivePlayerWeapon(playerid, 17, 20);
                GivePlayerWeapon(playerid, 37, 150);
                SetPlayerSkin(playerid, 272);
            }
        }
        if(listitem == 3)  // Sniper
        {
            if(GetPlayerScore(playerid) < 100)
            {
                SendClientMessage(playerid,0xFF0000AA,"You need 100 score for Sniper class.");
                ShowPlayerDialog(playerid, 888, DIALOG_STYLE_LIST, "******CLASS******", "Assault\nDemolition\nExpert\nSniper\nDamager", "Ok", "");
            }
            else if(GetPlayerScore(playerid) > 100)
            {
                SetPlayerArmour(playerid, 90.0);
                GivePlayerWeapon(playerid, 34, 200);
                GivePlayerWeapon(playerid, 16, 20);
                SetPlayerSkin(playerid, 183);
            }
        }
        if(listitem == 4)  // Damager
        {
            if(GetPlayerScore(playerid) < 100)
            {
                SendClientMessage(playerid,0xFF0000AA,"You need 5000 score for Damager class.");
                ShowPlayerDialog(playerid, 888, DIALOG_STYLE_LIST, "******CLASS******", "Assault\nDemolition\nExpert\nSniper\nDamager", "Ok", "");
            }
            else if(GetPlayerScore(playerid) > 5000)
            {
                SetPlayerArmour(playerid, 90.0);
                GivePlayerWeapon(playerid, 35, 100);
                SetPlayerSkin(playerid, 33);
            }
        }
    }
    else
    {
        ShowPlayerDialog(playerid, 888, DIALOG_STYLE_LIST, "******CLASS******", "Assault\nDemolition\nExpert\nSniper\nDamager", "Ok", "");
    }
}



Re: Need help with a dialog - Face9000 - 30.12.2011

Thank you! It's working now!