[HELP]: Weapon Dialog
#1

Hello!

I have a new problem...

I made my weapons dialog, but when I go ingame to test it and type /weapons, It shows a weapon dialog, but when I click on one weapon to buy it, it's nothing happend...

CODE:

PHP код:
CMD:weapons(playeridparams[])
{
    
ShowPlayerDialog(playerid,WEAPON_DIALOG,DIALOG_STYLE_LIST,"Weapons","Silence $500\nAK-47 $2000\nM4 $3000\nDesert Eagle $500\n9mm $200\nMP5 $300\nMicro SMG $200\nCombat Shotgun $500\nShotgun $400\nSniper Rifle $1500\nSawnoff Shotgun $500","Ok","Exit");
    {
    switch(
WEAPON_DIALOG)
    {
    case 
0:
    {
    if(
GetPlayerMoney(playerid) > 500 )
    {
    
GivePlayerMoney(playerid,-500);
    
GivePlayerWeapon(playerid,23,500);
    
SendClientMessage(playerid,COLOR_GREEN,"You Bought a Silencer with 500 Ammo");
    }
    else 
SendClientMessage(playerid,COLOR_RED,"You do not have Enought Money");
    }
    case 
1:
    {
    if(
GetPlayerMoney(playerid) > 2000 )
    {
    
GivePlayerMoney(playerid,-2000);
    
GivePlayerWeapon(playerid,30,650);
    
SendClientMessage(playerid,COLOR_GREEN,"You Bought a AK-47 With 650 Ammo");
    }
    else 
SendClientMessage(playerid,COLOR_RED,"You do not have Enought Money");
    }
    case 
2:
    {
    if(
GetPlayerMoney(playerid) > 3000 )
    {
    
GivePlayerMoney(playerid,-3000);
    
GivePlayerWeapon(playerid,31,650);
    
SendClientMessage(playerid,COLOR_GREEN,"You Bought a M4 With 650 Ammo");
    }
    else 
SendClientMessage(playerid,COLOR_RED,"You do not have Enought Money");
    }
    case 
3:
    {
    if(
GetPlayerMoney(playerid) > 500 )
    {
    
GivePlayerMoney(playerid,-500);
    
GivePlayerWeapon(playerid,24,500);
    
SendClientMessage(playerid,COLOR_GREEN,"You Bought a Deagle With 500 Ammo");
    }
    else 
SendClientMessage(playerid,COLOR_RED,"You do not have Enought Money");
    }
    case 
4:
    {
    if(
GetPlayerMoney(playerid) > 200 )
    {
    
GivePlayerMoney(playerid,-200);
    
GivePlayerWeapon(playerid,22,500);
    
SendClientMessage(playerid,COLOR_GREEN,"You Bought a 9mm With 500 Ammo");
    }
    else 
SendClientMessage(playerid,COLOR_RED,"You do not have Enought Money");
    }
    case 
5:
    {
    if(
GetPlayerMoney(playerid) > 300 )
    {
    
GivePlayerMoney(playerid,-300);
    
GivePlayerWeapon(playerid,29,450);
    
SendClientMessage(playerid,COLOR_GREEN,"You Bought a SMG With 450 Ammo");
    }
    else 
SendClientMessage(playerid,COLOR_RED,"You do not have Enought Money");
    }
    case 
6:
    {
    if(
GetPlayerMoney(playerid) > 200 )
    {
    
GivePlayerMoney(playerid,-200);
    
GivePlayerWeapon(playerid,28,450);
    
SendClientMessage(playerid,COLOR_GREEN,"You Bought a Uzi With 450 Ammo");
    }
    else 
SendClientMessage(playerid,COLOR_RED,"You do not have Enought Money");
    }
    case 
7:
    {
    if(
GetPlayerMoney(playerid) > 500 )
    {
    
GivePlayerMoney(playerid,-500);
    
GivePlayerWeapon(playerid,27,550);
    
SendClientMessage(playerid,COLOR_GREEN,"You Bought a Combat Shotgun With 550 Ammo");
    }
    else 
SendClientMessage(playerid,COLOR_RED,"You do not have Enought Money");
    }
    case 
8:
    {
    if(
GetPlayerMoney(playerid) > 400 )
    {
    
GivePlayerMoney(playerid,-400);
    
GivePlayerWeapon(playerid,25,550);
    
SendClientMessage(playerid,COLOR_GREEN,"You Bought a Shotgun With 550 Ammo");
    }
    else 
SendClientMessage(playerid,COLOR_RED,"You do not have Enought Money");
    }
    case 
9:
    {
    if(
GetPlayerMoney(playerid) > 1500 )
    {
    
GivePlayerMoney(playerid,-1500);
    
GivePlayerWeapon(playerid,34,350);
    
SendClientMessage(playerid,COLOR_GREEN,"You Bought a Sniper Rifle With 50 Ammo");
    }
    else 
SendClientMessage(playerid,COLOR_RED,"You do not have Enought Money");
    }
    case 
10:
    {
    if(
GetPlayerMoney(playerid) > 500 )
    {
    
GivePlayerMoney(playerid,-500);
    
GivePlayerWeapon(playerid,26,550);
    
SendClientMessage(playerid,COLOR_GREEN,"You Bought a Sawnoff Shotgun With 550 Ammo");
    }
    else 
SendClientMessage(playerid,COLOR_RED,"You do not have Enought Money");
    }
    }
    }
    return 
1;
    } 
Thanks for your help
Reply
#2

Because your callback is getting called, I mean OnDialogResponse callback. When your dialog show's up OnDialogResponse is getting called, so go to this callback and test a dialogid (callback parameter) and check is it yours dialog, if yes, then test another parameter from callback which is: listitem, and put your code from command there, then.
Reply
#3

Quote:
Originally Posted by Riddick94
Посмотреть сообщение
Because your callback is getting called, I mean OnDialogResponse callback. When your dialog show's up OnDialogResponse is getting called, so go to this callback and test a dialogid (callback parameter) and check is it yours dialog, if yes, then test another parameter from callback which is: listitem, and put your code from command there, then.
Thanks for helping, but still don't work...
Reply
#4

post the code.
Reply
#5

Use OnDialogResponse to add an effect to the dialog :

pawn Код:
CMD:weapons(playerid, params[])
{
    ShowPlayerDialog(playerid,WEAPON_DIALOG,DIALOG_STYLE_LIST,"Weapons","Silence $500\nAK-47 $2000\nM4 $3000\nDesert Eagle $500\n9mm $200\nMP5 $300\nMicro SMG $200\nCombat Shotgun $500\nShotgun $400\nSniper Rifle $1500\nSawnoff Shotgun $500","Ok","Exit");
    return 1;
}
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == WEAPON_DIALOG)
    {
        if(response)
        {
            switch(listitem)
            {
                case 0:
                {
                    if(GetPlayerMoney(playerid) > 500 )
                    {
                        GivePlayerMoney(playerid,-500);
                        GivePlayerWeapon(playerid,23,500);
                        SendClientMessage(playerid,COLOR_GREEN,"You Bought a Silencer with 500 Ammo");
                    }
                    else SendClientMessage(playerid,COLOR_RED,"You do not have Enought Money");
                }
                case 1:
                {
                    if(GetPlayerMoney(playerid) > 2000 )
                    {
                        GivePlayerMoney(playerid,-2000);
                        GivePlayerWeapon(playerid,30,650);
                        SendClientMessage(playerid,COLOR_GREEN,"You Bought a AK-47 With 650 Ammo");
                    }
                    else SendClientMessage(playerid,COLOR_RED,"You do not have Enought Money");
                }
                case 2:
                {
                    if(GetPlayerMoney(playerid) > 3000 )
                    {
                        GivePlayerMoney(playerid,-3000);
                        GivePlayerWeapon(playerid,31,650);
                        SendClientMessage(playerid,COLOR_GREEN,"You Bought a M4 With 650 Ammo");
                    }
                    else SendClientMessage(playerid,COLOR_RED,"You do not have Enought Money");
                }
                case 3:
                {
                    if(GetPlayerMoney(playerid) > 500 )
                    {
                        GivePlayerMoney(playerid,-500);
                        GivePlayerWeapon(playerid,24,500);
                        SendClientMessage(playerid,COLOR_GREEN,"You Bought a Deagle With 500 Ammo");
                    }
                    else SendClientMessage(playerid,COLOR_RED,"You do not have Enought Money");
                }
                case 4:
                {
                    if(GetPlayerMoney(playerid) > 200 )
                    {
                        GivePlayerMoney(playerid,-200);
                        GivePlayerWeapon(playerid,22,500);
                        SendClientMessage(playerid,COLOR_GREEN,"You Bought a 9mm With 500 Ammo");
                    }
                    else SendClientMessage(playerid,COLOR_RED,"You do not have Enought Money");
                }
                case 5:
                {
                    if(GetPlayerMoney(playerid) > 300 )
                    {
                        GivePlayerMoney(playerid,-300);
                        GivePlayerWeapon(playerid,29,450);
                        SendClientMessage(playerid,COLOR_GREEN,"You Bought a SMG With 450 Ammo");
                    }
                    else SendClientMessage(playerid,COLOR_RED,"You do not have Enought Money");
                }
                case 6:
                {
                    if(GetPlayerMoney(playerid) > 200 )
                    {
                        GivePlayerMoney(playerid,-200);
                        GivePlayerWeapon(playerid,28,450);
                        SendClientMessage(playerid,COLOR_GREEN,"You Bought a Uzi With 450 Ammo");
                    }
                    else SendClientMessage(playerid,COLOR_RED,"You do not have Enought Money");
                }
                case 7:
                {
                    if(GetPlayerMoney(playerid) > 500 )
                    {
                        GivePlayerMoney(playerid,-500);
                        GivePlayerWeapon(playerid,27,550);
                        SendClientMessage(playerid,COLOR_GREEN,"You Bought a Combat Shotgun With 550 Ammo");
                    }
                    else SendClientMessage(playerid,COLOR_RED,"You do not have Enought Money");
                }
                case 8:
                {
                    if(GetPlayerMoney(playerid) > 400 )
                    {
                        GivePlayerMoney(playerid,-400);
                        GivePlayerWeapon(playerid,25,550);
                        SendClientMessage(playerid,COLOR_GREEN,"You Bought a Shotgun With 550 Ammo");
                    }
                    else SendClientMessage(playerid,COLOR_RED,"You do not have Enought Money");
                }
                case 9:
                {
                    if(GetPlayerMoney(playerid) > 1500 )
                    {
                        GivePlayerMoney(playerid,-1500);
                        GivePlayerWeapon(playerid,34,350);
                        SendClientMessage(playerid,COLOR_GREEN,"You Bought a Sniper Rifle With 50 Ammo");
                    }
                    else SendClientMessage(playerid,COLOR_RED,"You do not have Enought Money");
                }
                case 10:
                {
                    if(GetPlayerMoney(playerid) > 500 )
                    {
                        GivePlayerMoney(playerid,-500);
                        GivePlayerWeapon(playerid,26,550);
                        SendClientMessage(playerid,COLOR_GREEN,"You Bought a Sawnoff Shotgun With 550 Ammo");
                    }
                    else SendClientMessage(playerid,COLOR_RED,"You do not have Enought Money");
                }
            }
        }
        return 1;
    }
    return 0;
}
Should work fine
Reply
#6

You could also use

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == WEAPON_DIALOG)
    {
        if(!response) return 1;
       
        new wepid, ammo, price;
        switch(listitem)
        {
            case 0: { wepid=23; ammo=500; price=500; }
            case 1: { wepid=30; ammo=650; price=2000; }
            case 2: { wepid=31; ammo=650; price=3000; }
            case 3: { wepid=24; ammo=500; price=500; }
            case 4: { wepid=22; ammo=500; price=200; }
            case 5: { wepid=29; ammo=450; price=300; }
            case 6: { wepid=28; ammo=450; price=200; }
            case 7: { wepid=27; ammo=550; price=500; }
            case 8: { wepid=25; ammo=550; price=400; }
            case 9: { wepid=34; ammo=350; price=1500; }
            case 10: { wepid=26; ammo=550; price=500; }
        }
        if(GetPlayerMoney(playerid) < price) return SendClientMessage(playerid, 0xCC0000AA, "You don't have enough money!");

        new string[128];
        format(string, sizeof(string), "%s bought for $%d with %d ammo!", Weapon_Name(wepid), price, ammo);
        SendClientMessage(playerid, COLOR_GREEN, string);
        GivePlayerWeapon(playerid, wepid, ammo);
        GivePlayerMoney(playerid, -price);
        return 1;
    }
    return 0;
}
CMD:weapons(playerid, params[])
{
    ShowPlayerDialog(playerid,WEAPON_DIALOG,DIALOG_STYLE_LIST,"Weapons","Silence $500\nAK-47 $2000\nM4 $3000\nDesert Eagle $500\n9mm $200\nMP5 $300\nMicro SMG $200\nCombat Shotgun $500\nShotgun $400\nSniper Rifle $1500\nSawnoff Shotgun $500","Ok","Exit");
    return 1;
}
stock Weapon_Name(wepid)
{
    new string[35];
    switch(wepid)
    {
        case 18: format(string, sizeof(string), "Molotov");
        case 44: format(string, sizeof(string), "Night Vision Goggles");
        case 45: format(string, sizeof(string), "Thermal Goggles");
        default: GetWeaponName(wepid, string, sizeof(string));
    }
    return string;
}
It's not much different from what Silver posted, it's just a lot easier to edit
Reply
#7

Use the CallBack OnDialogResponse:


Код:
CMD:weapons(playerid, params[])
{
    ShowPlayerDialog(playerid,WEAPON_DIALOG,DIALOG_STYLE_LIST,"Weapons","Silence $500\nAK-47 $2000\nM4 $3000\nDesert Eagle $500\n9mm $200\nMP5 $300\nMicro SMG $200\nCombat Shotgun $500\nShotgun $400\nSniper Rifle $1500\nSawnoff Shotgun $500","Ok","Exit");
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == WEAPON_DIALOG)
       {
            if(response) // The First Button(OK)
           {
                if(dialoglist = 0) // The first on List: (Silence)
                {
                 return 1;
                 }
                  if(dialoglist = 1) // The second on List
                {
                 return 1;
                 }
             }
       }
    return 1;
}
i hope that i've helped you.
Reply
#8

I already have one dialog on OnDialogResponse and whene I type /weapons ingame it says ERROR: File in your password...It's mixed with login/register system and weapons system...
Reply
#9

Make sure both are separated like this:
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == WEAPON_DIALOG)
    {
        if(response) // The First Button(OK)
        {
            if(dialoglist = 0) // The first on List: (Silence)
            {
                return 1;
            }
            if(dialoglist = 1) // The second on List
            {
                return 1;
            }
        }
    }
    if(dialogid == DIALOG_LOGIN)//or watever
    {
        if(response)
        {
            //stuff
        }
    }
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)