Problem with dialogs
#1

I have now two dialogs in my .pwn file and the second one doesn't seem to be working and I can't spot the mistake.

Here's the code:

pawn Код:
if (dialogid == 1338 && response)
    {
    switch(listitem)
    {
    case 0:
    {
    ShowPlayerDialog(playerid , 1339 , DIALOG_STYLE_LIST , "Car Shop" , "Cadrona($20 000)\nBlista($60 000)" , "Buy" , "Exit");
    }
    }
    }
    if (dialogid == 1339 && response)
    {
    switch(listitem)
    {
    case 0:
    {
    if(GetPlayerMoney(playerid) < 20000) return SendClientMessage(playerid , 0xFFFFFFFF , "You don't have enough money");
    CreateVehicle(527 , 210.6137 , -8.0158 , 2.5338 , 1 , 1 , 500);
    GivePlayerMoney(playerid -20000);
    SendClientMessage(playerid , 0x489048FF , "-----------------------------------------------------");
    SendClientMessage(playerid , 0x489048FF , "You have bought Cadrona for $20 000!");
    }
    case 1:
    {
    if(GetPlayerMoney(playerid) < 60000) return SendClientMessage(playerid , 0xFFFFFFFF , "You don't have enough money");
    CreateVehicle(496 , 210.6137 , -8.0158 , 2.5338 , 1 , 1 , 500)
    GivePlayerMoney(playerid -60000)
    SendClientMessage(playerid , 0x489048FF , "-----------------------------------------------------");
    SendClientMessage(playerid , 0x489048FF , "You have bought Blista Compact for $60 000!");
    }
    }
    }
    return 1;
}
And here are the errors that I get:

pawn Код:
C:\Users\Sami\Desktop\SERVU\shit.pwn(327) : error 010: invalid function or declaration
C:\Users\Sami\Desktop\SERVU\shit.pwn(329) : error 010: invalid function or declaration
C:\Users\Sami\Desktop\SERVU\shit.pwn(331) : error 010: invalid function or declaration
C:\Users\Sami\Desktop\SERVU\shit.pwn(337) : error 010: invalid function or declaration
C:\Users\Sami\Desktop\SERVU\shit.pwn(339) : error 010: invalid function or declaration
C:\Users\Sami\Desktop\SERVU\shit.pwn(341) : error 010: invalid function or declaration
C:\Users\Sami\Desktop\SERVU\shit.pwn(343) : error 010: invalid function or declaration
C:\Users\Sami\Desktop\SERVU\shit.pwn(349) : error 010: invalid function or declaration
C:\Users\Sami\Desktop\SERVU\shit.pwn(351) : error 010: invalid function or declaration
C:\Users\Sami\Desktop\SERVU\shit.pwn(359) : error 010: invalid function or declaration
Pawn compiler 3.2.3664          Copyright (c) 1997-2006, ITB CompuPhase


10 Errors.
Thanks.
Reply
#2

Which line is 327? Also you have to learn about basics first: https://sampwiki.blast.hk/wiki/Scripting_Basics

pawn Код:
if(response) {
    switch (dialogid) {
        case 1338: {
            if(0 == listitem)
            {
                ShowPlayerDialog(playerid , 1339 , DIALOG_STYLE_LIST , "Car Shop" , "Cadrona($20 000)\nBlista($60 000)" , "Buy" , "Exit");
            }
        }
        case 1339: {
            if(!listitem)
            {
                if(GetPlayerMoney(playerid) < 20000) return SendClientMessage(playerid , 0xFFFFFFFF , "You don't have enough money");
                CreateVehicle(527 , 210.6137 , -8.0158 , 2.5338 , 1 , 1 , 500);
                GivePlayerMoney(playerid -20000);
                SendClientMessage(playerid , 0x489048FF , "-----------------------------------------------------");
                SendClientMessage(playerid , 0x489048FF , "You have bought Cadrona for $20 000!");
            }
            else
            {
                if(GetPlayerMoney(playerid) < 60000) return SendClientMessage(playerid , 0xFFFFFFFF , "You don't have enough money");
                CreateVehicle(496 , 210.6137 , -8.0158 , 2.5338 , 1 , 1 , 500)
                GivePlayerMoney(playerid -60000)
                SendClientMessage(playerid , 0x489048FF , "-----------------------------------------------------");
                SendClientMessage(playerid , 0x489048FF , "You have bought Blista Compact for $60 000!");
            }
        }
    }
}
You could refactor your code using your own functions, to make adding cars to sell/buy in future much easier.
Reply
#3

Line 327 is the very first line where it says: if (dialogid == 1338 && response).
What really confuses me here is that I made a same kind of a script for weapon shop and it works just fine and this second one doesn't...
Reply
#4

Then the error is few lines backwards. Is this code inside callback?
Reply
#5

Yea it is inside OnDialogResponse, though there is another code before it.
Reply
#6

Try to compile with mine code. If it doesn't change anything, show me whole OnDialogResponse
Reply
#7

Yea forgot to mention that I tried it.. didn't work. The problem must be in the previous code.
Anyways, here's the whole code:

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if (dialogid == 20320 && response)
    {
    switch(listitem)
    {
    case 0:
    {
    ShowPlayerDialog(playerid, 20321 , DIALOG_STYLE_LIST , "Weapon Shop" , "9mm(3500$)\nSilenced 9mm(4000$)", "Buy", "Exit");
    }
    }
    }
    if (dialogid == 20321 && response)
    {
    switch(listitem)
    {
    case 0:
    {
    if(GetPlayerMoney(playerid) < 4000) return SendClientMessage(playerid , 0xFFFFFFFF , "You don't have enough money");
    GivePlayerWeapon(playerid , 22 , 100);
    GivePlayerMoney(playerid , -4000);
    SendClientMessage(playerid, 0xFFFFFFFF , "You have bought a 9mm for $4000");
    }
    case 1:
    {
    if(GetPlayerMoney(playerid) < 4500) return SendClientMessage(playerid , 0xFFFFFFFF, "You don't have enough money");
    GivePlayerWeapon(playerid , 23 , 100);
    GivePlayerMoney(playerid , -4500);
    SendClientMessage(playerid , 0xFFFFFFFF , "You have bought a silenced pistol");
    }
    }
    }
    return 1;
  }
 
  if (dialogid == 1338 && response)
    {
    switch(listitem)
    {
    case 0:
    {
    ShowPlayerDialog(playerid , 1339 , DIALOG_STYLE_LIST , "Car Shop" , "Cadrona($20 000)\nBlista($60 000)" , "Buy" , "Exit");
    }
    }
    }
    else if (dialogid == 1339 && response)
    {
    switch(listitem)
    {
    case 0:
    {
    if(GetPlayerMoney(playerid) < = 20000) return SendClientMessage(playerid , 0xFFFFFFFF , "You don't have enough money");
    CreateVehicle(527 , 210.6137 , -8.0158 , 2.5338 , 1 , 1 , 500);
    GivePlayerMoney(playerid -20000);
    SendClientMessage(playerid , 0x489048FF , "-----------------------------------------------------");
    SendClientMessage(playerid , 0x489048FF , "You have bought Cadrona for $20 000!");
    }
    case 1:
    {
    if(GetPlayerMoney(playerid) < = 60000) return SendClientMessage(playerid , 0xFFFFFFFF , "You don't have enough money");
    CreateVehicle(496 , 210.6137 , -8.0158 , 2.5338 , 1 , 1 , 500)
    GivePlayerMoney(playerid -60000)
    SendClientMessage(playerid , 0x489048FF , "-----------------------------------------------------");
    SendClientMessage(playerid , 0x489048FF , "You have bought Blista Compact for $60 000!");
    }
    }
    }
}
    return 1;
}
Reply
#8

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if (dialogid == 20320 && response)
    {
    switch(listitem)
    {
    case 0:
    {
    ShowPlayerDialog(playerid, 20321 , DIALOG_STYLE_LIST , "Weapon Shop" , "9mm(3500$)\nSilenced 9mm(4000$)", "Buy", "Exit");
    }
    }
    }
    if (dialogid == 20321 && response)
    {
    switch(listitem)
    {
    case 0:
    {
    if(GetPlayerMoney(playerid) < 4000) return SendClientMessage(playerid , 0xFFFFFFFF , "You don't have enough money");
    GivePlayerWeapon(playerid , 22 , 100);
    GivePlayerMoney(playerid , -4000);
    SendClientMessage(playerid, 0xFFFFFFFF , "You have bought a 9mm for $4000");
    }
    case 1:
    {
    if(GetPlayerMoney(playerid) < 4500) return SendClientMessage(playerid , 0xFFFFFFFF, "You don't have enough money");
    GivePlayerWeapon(playerid , 23 , 100);
    GivePlayerMoney(playerid , -4500);
    SendClientMessage(playerid , 0xFFFFFFFF , "You have bought a silenced pistol");
    }
    }
    }
 else  if (dialogid == 1338 && response)
    {
    switch(listitem)
    {
    case 0:
    {
    ShowPlayerDialog(playerid , 1339 , DIALOG_STYLE_LIST , "Car Shop" , "Cadrona($20 000)\nBlista($60 000)" , "Buy" , "Exit");
    }
    }
    }
  if (dialogid == 1339 && response)
    {
    switch(listitem)
    {
    case 0:
    {
    if(GetPlayerMoney(playerid) < = 20000) return SendClientMessage(playerid , 0xFFFFFFFF , "You don't have enough money");
    CreateVehicle(527 , 210.6137 , -8.0158 , 2.5338 , 1 , 1 , 500);
    GivePlayerMoney(playerid -20000);
    SendClientMessage(playerid , 0x489048FF , "-----------------------------------------------------");
    SendClientMessage(playerid , 0x489048FF , "You have bought Cadrona for $20 000!");
    }
    case 1:
    {
    if(GetPlayerMoney(playerid) < = 60000) return SendClientMessage(playerid , 0xFFFFFFFF , "You don't have enough money");
    CreateVehicle(496 , 210.6137 , -8.0158 , 2.5338 , 1 , 1 , 500)
    GivePlayerMoney(playerid -60000)
    SendClientMessage(playerid , 0x489048FF , "-----------------------------------------------------");
    SendClientMessage(playerid , 0x489048FF , "You have bought Blista Compact for $60 000!");
    }
    }
    }
}
    return 1;
}

you used 2 returns
Reply
#9

Don't switch to your old code, mine does exactly same thing but is a little nicer. And for the love of God, indent your code (tab, and shift+tab are your friends)! If you did it, you could see that you have one brace too much which causes premature callback block end.

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(response) {
        switch (dialogid) {
            case 20320: {
                switch(listitem)
                {
                    case 0:
                    {
                    ShowPlayerDialog(playerid, 20321 , DIALOG_STYLE_LIST , "Weapon Shop" , "9mm(3500$)\nSilenced 9mm(4000$)", "Buy", "Exit");
                    }
                }
            }
            case 20321: {
                switch(listitem)
                {
                    case 0:
                    {
                        if(GetPlayerMoney(playerid) < 4000) return SendClientMessage(playerid , 0xFFFFFFFF , "You don't have enough money");
                        GivePlayerWeapon(playerid , 22 , 100);
                        GivePlayerMoney(playerid , -4000);
                        SendClientMessage(playerid, 0xFFFFFFFF , "You have bought a 9mm for $4000");
                    }
                    case 1:
                    {
                        if(GetPlayerMoney(playerid) < 4500) return SendClientMessage(playerid , 0xFFFFFFFF, "You don't have enough money");
                        GivePlayerWeapon(playerid , 23 , 100);
                        GivePlayerMoney(playerid , -4500);
                        SendClientMessage(playerid , 0xFFFFFFFF , "You have bought a silenced pistol");
                    }
                }
            }
            case 1338: {
                if(0 == listitem)
                {
                    ShowPlayerDialog(playerid , 1339 , DIALOG_STYLE_LIST , "Car Shop" , "Cadrona($20 000)\nBlista($60 000)" , "Buy" , "Exit");
                }
            }
            case 1339: {
                if(!listitem)
                {
                    if(GetPlayerMoney(playerid) < 20000) return SendClientMessage(playerid , 0xFFFFFFFF , "You don't have enough money");
                    CreateVehicle(527 , 210.6137 , -8.0158 , 2.5338 , 1 , 1 , 500);
                    GivePlayerMoney(playerid -20000);
                    SendClientMessage(playerid , 0x489048FF , "-----------------------------------------------------");
                    SendClientMessage(playerid , 0x489048FF , "You have bought Cadrona for $20 000!");
                }
                else
                {
                    if(GetPlayerMoney(playerid) < 60000) return SendClientMessage(playerid , 0xFFFFFFFF , "You don't have enough money");
                    CreateVehicle(496 , 210.6137 , -8.0158 , 2.5338 , 1 , 1 , 500)
                    GivePlayerMoney(playerid -60000)
                    SendClientMessage(playerid , 0x489048FF , "-----------------------------------------------------");
                    SendClientMessage(playerid , 0x489048FF , "You have bought Blista Compact for $60 000!");
                }
            }
        }
    }
    return 1;
}
Reply
#10

Allright got it finally working with the original code(might not be the best one).. many thanks for you help guys.

Quote:

Don't switch to your old code, mine does exactly same thing but is a little nicer. And for the love of God, indent your code (tab, and shift+tab are your friends)! If you did it, you could see that you have one brace too much which causes premature callback block end.

And yea, sorry for a the messy look of that code haven't really paid attention to it.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)