Jump to content
  • 0

pomoc Problém s dialogama?


MrShoTys74

Dotaz

Čaute prosím vás už som raz mal problém ked som chcel pridať další diaog do DialogOnResponse, ale vtedy som mal problem zo zátvorkamy { }.

Ale s týmto si nejsom istý aky je problém?.. ved to robím všetko podla wiki.

Ak by bol niekto ochotný mi prosim vás vysvetliť kde stale robím chybu? lebo všetko funguje len ked chcem pridať ten posledný dialog vyhadzuje mi to erory.

 

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
//==============================================================================REGISTER/LOGIN======================================================================================
    switch( dialogid )
    {
        case DIALOG_REGISTER:
        {
            if (!response) return Kick(playerid);
            if(response)
            {
                if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""COL_WHITE"Registrácia",""COL_RED"Zadali ste neplatné heslo.\n"COL_WHITE"Zadajte svoje heslo nižšie a zaregistrujte si nový účet.","Registracia","Ukončit");
                new INI:File = INI_Open(UserPath(playerid));
                INI_SetTag(File,"data");
                INI_WriteInt(File,"Password",udb_hash(inputtext));
                INI_WriteInt(File,"Cash",0);
                INI_WriteInt(File,"Admin",0);
                INI_WriteInt(File,"Kills",0);
                INI_WriteInt(File,"Deaths",0);
                INI_WriteInt(File,"Wanted",0);
                INI_WriteInt(File,"Skin",0);
                INI_WriteInt(File,"VodickyB",0);
                INI_Close(File);

                SetSpawnInfo(playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
                SpawnPlayer(playerid);
			}
        }

        case DIALOG_LOGIN:
        {
            if ( !response ) return Kick ( playerid );
            if( response )
            {
                if(udb_hash(inputtext) == PlayerInfo[playerid][pPass])
                {
                    INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
                    GivePlayerMoney(playerid, PlayerInfo[playerid][pCash]);
                    SetPlayerWantedLevel(playerid, PlayerInfo[playerid][pWanted]);
                    SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
                    SpawnPlayer(playerid);

                }
                else
                {
                    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Prihlasenie",""COL_RED"Zadali ste nesprávne heslo.\n"COL_WHITE"Pre prihlásenie zadajte svoje heslo nižšie.","Login","Quit");
                }
                return 1;
            }
        }
    }
//=========================================================================WARPY===================================================================================================
    if(dialogid == DIALOG_WARPY)
    {
         if(!response)
         {
         //zrust
         return 1;
         }
         switch(listitem)
         {
         case 0:
         {
         new vehicleid = GetPlayerVehicleID(playerid);
         new State = GetPlayerState(playerid);
         if(IsPlayerInAnyVehicle(playerid) && State == PLAYER_STATE_DRIVER)

         {
         LinkVehicleToInterior(vehicleid,0);
         SetPlayerInterior(playerid,0);
         SetVehicleZAngle(vehicleid,227.2756);
         SetCameraBehindPlayer(playerid);
         SetVehiclePos(vehicleid,-1986.5483,305.5474,35.0071);
         return SendClientMessage(playerid, COLOR_GREEN, "[RealnySvet] Bol si teleportovaný do San Fierro!");
         }
         SetPlayerPos(playerid,-1969.0593,294.0901,35.1719);
         SetPlayerFacingAngle(playerid,89.9102);
         SetPlayerInterior(playerid,0);
         SetCameraBehindPlayer(playerid);
         SendClientMessage(playerid, COLOR_GREEN, "[RealnySvet] Bol si teleportovaný do San Fierro!");
         }
         case 1:
         {
         new vehicleid = GetPlayerVehicleID(playerid);
         new State = GetPlayerState(playerid);
         if(IsPlayerInAnyVehicle(playerid) && State == PLAYER_STATE_DRIVER)

         {
         LinkVehicleToInterior(vehicleid,0);
         SetPlayerInterior(playerid,0);
         SetVehicleZAngle(vehicleid,227.2756);
         SetCameraBehindPlayer(playerid);
         SetVehiclePos(vehicleid,1608.3900,-1719.7670,13.3786);
         return SendClientMessage(playerid, COLOR_GREEN, "[RealnySvet] Bol si teleportovaný do Los Santos!");
         }
         SetPlayerPos(playerid,1606.3514,-1739.5194,13.5469);
         SetPlayerFacingAngle(playerid,89.9102);
         SetPlayerInterior(playerid,0);
         SetCameraBehindPlayer(playerid);
         SendClientMessage(playerid, COLOR_GREEN, "[RealnySvet] Bol si teleportovaný do Los Santos!");
         }
         case 2:
         {
         new vehicleid = GetPlayerVehicleID(playerid);
         new State = GetPlayerState(playerid);
         if(IsPlayerInAnyVehicle(playerid) && State == PLAYER_STATE_DRIVER)

         {
         LinkVehicleToInterior(vehicleid,0);
         SetPlayerInterior(playerid,0);
         SetVehicleZAngle(vehicleid,227.2756);
         SetCameraBehindPlayer(playerid);
         SetVehiclePos(vehicleid,2128.2754,1333.6340,10.6558);
         return SendClientMessage(playerid, COLOR_GREEN, "[RealnySvet] Bol si teleportovaný do Las Venturas!");
         }
         SetPlayerPos(playerid,2096.9543,1322.6205,10.8203);
         SetPlayerFacingAngle(playerid,89.9102);
         SetPlayerInterior(playerid,0);
         SetCameraBehindPlayer(playerid);
         SendClientMessage(playerid, COLOR_GREEN, "[RealnySvet] Bol si teleportovaný do Las Venturas!");
         }
         }
         }
    return 1;
}
//=========================================================================Autoskola===================================================================================================
    if (dialogid == DIALOG_AUTOSKOLA)
    {
        if (response)
        {
            switch (listitem)
            {
                case 0:
                {
                //vodicakB
                }
                case 1:
                {
                //vodicakC
                }
                case 2:
                {
                //vodicakD
                }
            }
        }
        return 1;
    }

 

 

 

A tieto errory 

 

C:\Users\42195\OneDrive\Plocha\Nový priečinok (3)\gamemodes\rls.pwn(515) : error 010: invalid function or declaration
C:\Users\42195\OneDrive\Plocha\Nový priečinok (3)\gamemodes\rls.pwn(517) : error 010: invalid function or declaration
C:\Users\42195\OneDrive\Plocha\Nový priečinok (3)\gamemodes\rls.pwn(519) : error 010: invalid function or declaration
C:\Users\42195\OneDrive\Plocha\Nový priečinok (3)\gamemodes\rls.pwn(521) : error 010: invalid function or declaration
C:\Users\42195\OneDrive\Plocha\Nový priečinok (3)\gamemodes\rls.pwn(524) : error 054: unmatched closing brace ("}")
C:\Users\42195\OneDrive\Plocha\Nový priečinok (3)\gamemodes\rls.pwn(525) : error 010: invalid function or declaration
C:\Users\42195\OneDrive\Plocha\Nový priečinok (3)\gamemodes\rls.pwn(528) : error 054: unmatched closing brace ("}")
C:\Users\42195\OneDrive\Plocha\Nový priečinok (3)\gamemodes\rls.pwn(529) : error 010: invalid function or declaration
C:\Users\42195\OneDrive\Plocha\Nový priečinok (3)\gamemodes\rls.pwn(532) : error 054: unmatched closing brace ("}")
C:\Users\42195\OneDrive\Plocha\Nový priečinok (3)\gamemodes\rls.pwn(535) : error 010: invalid function or declaration
Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


10 Errors.

 

Link to comment
Share on other sites

4 odpovědí na tuto otázku

Recommended Posts

  • 1

Ahoj, čím skôr sa naučíš správne formátovať svoj kód, tým menej podobného utrpenia zažiješ v budúcnosti. Dobrá prax je posunúť telo bloku - to medzi { a } - o 1 tabulátor (alebo 4 medzery) doprava. Potom vždy ľahko vidíš, ktorá zátvorka uzatvára ktorý blok a vieš ľahšie vložiť kód do správnej časti. Porovnaj svoj kód s formátovanou verziou v spoileri. Čo z toho sa ti ľahšie číta?
 

Spoiler
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    //==============================================================================REGISTER/LOGIN======================================================================================
    switch (dialogid)
    {
        case DIALOG_REGISTER:
        {
            if (!response) return Kick(playerid);
            if (response)
            {
                if (!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""
                    COL_WHITE "Registrácia", ""
                    COL_RED "Zadali ste neplatné heslo.\n"
                    COL_WHITE "Zadajte svoje heslo nižšie a zaregistrujte si nový účet.", "Registracia", "Ukončit");
                new INI: File = INI_Open(UserPath(playerid));
                INI_SetTag(File, "data");
                INI_WriteInt(File, "Password", udb_hash(inputtext));
                INI_WriteInt(File, "Cash", 0);
                INI_WriteInt(File, "Admin", 0);
                INI_WriteInt(File, "Kills", 0);
                INI_WriteInt(File, "Deaths", 0);
                INI_WriteInt(File, "Wanted", 0);
                INI_WriteInt(File, "Skin", 0);
                INI_WriteInt(File, "VodickyB", 0);
                INI_Close(File);

                SetSpawnInfo(playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
                SpawnPlayer(playerid);
            }
        }
        case DIALOG_LOGIN:
        {
            if (!response) return Kick(playerid);
            if (response)
            {
                if (udb_hash(inputtext) == PlayerInfo[playerid][pPass])
                {
                    INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
                    GivePlayerMoney(playerid, PlayerInfo[playerid][pCash]);
                    SetPlayerWantedLevel(playerid, PlayerInfo[playerid][pWanted]);
                    SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
                    SpawnPlayer(playerid);
                }
                else
                {
                    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, ""
                        COL_WHITE "Prihlasenie", ""
                        COL_RED "Zadali ste nesprávne heslo.\n"
                        COL_WHITE "Pre prihlásenie zadajte svoje heslo nižšie.", "Login", "Quit");
                }

                return 1;
            }
        }
    }

    //=========================================================================WARPY===================================================================================================
    if (dialogid == DIALOG_WARPY)
    {
        if (!response)
        {
            //zrust
            return 1;
        }

        switch (listitem)
        {
            case 0:
            {
                new vehicleid = GetPlayerVehicleID(playerid);
                new State = GetPlayerState(playerid);
                if (IsPlayerInAnyVehicle(playerid) && State == PLAYER_STATE_DRIVER)
                {
                    LinkVehicleToInterior(vehicleid, 0);
                    SetPlayerInterior(playerid, 0);
                    SetVehicleZAngle(vehicleid, 227.2756);
                    SetCameraBehindPlayer(playerid);
                    SetVehiclePos(vehicleid, -1986.5483, 305.5474, 35.0071);
                    return SendClientMessage(playerid, COLOR_GREEN, "[RealnySvet] Bol si teleportovaný do San Fierro!");
                }

                SetPlayerPos(playerid, -1969.0593, 294.0901, 35.1719);
                SetPlayerFacingAngle(playerid, 89.9102);
                SetPlayerInterior(playerid, 0);
                SetCameraBehindPlayer(playerid);
                SendClientMessage(playerid, COLOR_GREEN, "[RealnySvet] Bol si teleportovaný do San Fierro!");
            }

            case 1:
            {
                new vehicleid = GetPlayerVehicleID(playerid);
                new State = GetPlayerState(playerid);
                if (IsPlayerInAnyVehicle(playerid) && State == PLAYER_STATE_DRIVER)
                {
                    LinkVehicleToInterior(vehicleid, 0);
                    SetPlayerInterior(playerid, 0);
                    SetVehicleZAngle(vehicleid, 227.2756);
                    SetCameraBehindPlayer(playerid);
                    SetVehiclePos(vehicleid, 1608.3900, -1719.7670, 13.3786);
                    return SendClientMessage(playerid, COLOR_GREEN, "[RealnySvet] Bol si teleportovaný do Los Santos!");
                }

                SetPlayerPos(playerid, 1606.3514, -1739.5194, 13.5469);
                SetPlayerFacingAngle(playerid, 89.9102);
                SetPlayerInterior(playerid, 0);
                SetCameraBehindPlayer(playerid);
                SendClientMessage(playerid, COLOR_GREEN, "[RealnySvet] Bol si teleportovaný do Los Santos!");
            }

            case 2:
            {
                new vehicleid = GetPlayerVehicleID(playerid);
                new State = GetPlayerState(playerid);
                if (IsPlayerInAnyVehicle(playerid) && State == PLAYER_STATE_DRIVER)
                {
                    LinkVehicleToInterior(vehicleid, 0);
                    SetPlayerInterior(playerid, 0);
                    SetVehicleZAngle(vehicleid, 227.2756);
                    SetCameraBehindPlayer(playerid);
                    SetVehiclePos(vehicleid, 2128.2754, 1333.6340, 10.6558);
                    return SendClientMessage(playerid, COLOR_GREEN, "[RealnySvet] Bol si teleportovaný do Las Venturas!");
                }

                SetPlayerPos(playerid, 2096.9543, 1322.6205, 10.8203);
                SetPlayerFacingAngle(playerid, 89.9102);
                SetPlayerInterior(playerid, 0);
                SetCameraBehindPlayer(playerid);
                SendClientMessage(playerid, COLOR_GREEN, "[RealnySvet] Bol si teleportovaný do Las Venturas!");
            }
        }
        return 1;
    }
    //=========================================================================Autoskola===================================================================================================
    if (dialogid == DIALOG_AUTOSKOLA)
    {
        if (response) // If they clicked 'Select' or double-clicked a weapon
        {
            switch (listitem)
            {
                case 0:
                {
                    GivePlayerWeapon(playerid, WEAPON_M4, 120); // Give them an M4
                }
                case 1:
                {
                    GivePlayerWeapon(playerid, WEAPON_MP5, 90); // Give them an MP5
                }
                case 2:
                {
                    GivePlayerWeapon(playerid, WEAPON_AK47, 120); // Give them an AK-47
                }
            }
        }
        return 1; // We handled a dialog, so return 1. Just like OnPlayerCommandText.
    }
    return 1;
}

 

Na záver ešte dodám, že keď už máš v OnDialogResponse switch na dialogid, tak ho kľudne využi a pridaj do neho ďalšie možnosti (case DIALOG_WARPY, case DIALOG_AUTOSKOLA). Môžeš sa tak vyhnúť zbytočným ifom.

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • 0



//=========================================================================WARPY===================================================================================================
    if(dialogid == DIALOG_WARPY)
    {
         if(!response)
         {
         //zrust
         return 1;
         }
         switch(listitem)
         {
         case 0:
         {
         new vehicleid = GetPlayerVehicleID(playerid);
         new State = GetPlayerState(playerid);
         if(IsPlayerInAnyVehicle(playerid) && State == PLAYER_STATE_DRIVER)

         {
         LinkVehicleToInterior(vehicleid,0);
         SetPlayerInterior(playerid,0);
         SetVehicleZAngle(vehicleid,227.2756);
         SetCameraBehindPlayer(playerid);
         SetVehiclePos(vehicleid,-1986.5483,305.5474,35.0071);
         return SendClientMessage(playerid, COLOR_GREEN, "[RealnySvet] Bol si teleportovaný do San Fierro!");
         }
         SetPlayerPos(playerid,-1969.0593,294.0901,35.1719);
         SetPlayerFacingAngle(playerid,89.9102);
         SetPlayerInterior(playerid,0);
         SetCameraBehindPlayer(playerid);
         SendClientMessage(playerid, COLOR_GREEN, "[RealnySvet] Bol si teleportovaný do San Fierro!");
         }
         case 1:
         {
         new vehicleid = GetPlayerVehicleID(playerid);
         new State = GetPlayerState(playerid);
         if(IsPlayerInAnyVehicle(playerid) && State == PLAYER_STATE_DRIVER)

         {
         LinkVehicleToInterior(vehicleid,0);
         SetPlayerInterior(playerid,0);
         SetVehicleZAngle(vehicleid,227.2756);
         SetCameraBehindPlayer(playerid);
         SetVehiclePos(vehicleid,1608.3900,-1719.7670,13.3786);
         return SendClientMessage(playerid, COLOR_GREEN, "[RealnySvet] Bol si teleportovaný do Los Santos!");
         }
         SetPlayerPos(playerid,1606.3514,-1739.5194,13.5469);
         SetPlayerFacingAngle(playerid,89.9102);
         SetPlayerInterior(playerid,0);
         SetCameraBehindPlayer(playerid);
         SendClientMessage(playerid, COLOR_GREEN, "[RealnySvet] Bol si teleportovaný do Los Santos!");
         }
         case 2:
         {
         new vehicleid = GetPlayerVehicleID(playerid);
         new State = GetPlayerState(playerid);
         if(IsPlayerInAnyVehicle(playerid) && State == PLAYER_STATE_DRIVER)

         {
         LinkVehicleToInterior(vehicleid,0);
         SetPlayerInterior(playerid,0);
         SetVehicleZAngle(vehicleid,227.2756);
         SetCameraBehindPlayer(playerid);
         SetVehiclePos(vehicleid,2128.2754,1333.6340,10.6558);
         return SendClientMessage(playerid, COLOR_GREEN, "[RealnySvet] Bol si teleportovaný do Las Venturas!");
         }
         SetPlayerPos(playerid,2096.9543,1322.6205,10.8203);
         SetPlayerFacingAngle(playerid,89.9102);
         SetPlayerInterior(playerid,0);
         SetCameraBehindPlayer(playerid);
         SendClientMessage(playerid, COLOR_GREEN, "[RealnySvet] Bol si teleportovaný do Las Venturas!");
         }
         }
         }

    if (dialogid == DIALOG_AUTOSKOLA)
         {
         if (response) // If they clicked 'Select' or double-clicked a weapon
         {
         switch (listitem)
         {
         case 0:
         {
                    GivePlayerWeapon(playerid, WEAPON_M4, 120); // Give them an M4
         }
         case 1:
         {
                    GivePlayerWeapon(playerid, WEAPON_MP5, 90); // Give them an MP5
         }
         case 2:
         {
                    GivePlayerWeapon(playerid, WEAPON_AK47, 120); // Give them an AK-47
         }
         }
         }
         return 1; // We handled a dialog, so return 1. Just like OnPlayerCommandText.
         }
    return 1;
         }

  //edit skúsil som to dať takto a funguje to.. môže to takto byt? .. lebo som myslel že každy dialog musi byť ukončení

Link to comment
Share on other sites

  • 0

Ďakujem za odpoved, Ano už som si to celé prerobil a je to oveľa prehľadnejšie.

este aby som nemusel znovu otvárať nový topic chcel som sa spýtať, spravil som si autoškolu a všetko funguje ako má ale neviem prísť ako na premennú čisla/hodnoty na text?

priklad

PlayerInfo[playerid][pAutoskolaB] = 0; 

Zmenit hodnotu 0 na “Nevlastni” ?

pri všetkých pokusoch mi to vyhadzuje errory alebo to nefunguje  a pri stocku mi prestalo reagovať pawno. 😅 uz neviem ako na to Dakujem ak by mi s tým niekto pomohol. 

(Potreboval by som to do vypisovanie všetkých štatistík Vodičský preukaz - Nevlastním / Vlastním)

Edited by MrShoTys74
Link to comment
Share on other sites

  • 0
před 10minutami, MrShoTys74 said:

Ďakujem za odpoved, Ano už som si to celé prerobil a je to oveľa prehľadnejšie.

este aby som nemusel znovu otvárať nový topic chcel som sa spýtať, spravil som si autoškolu a všetko funguje ako má ale neviem prísť ako na premennú čisla/hodnoty na text?

priklad

PlayerInfo[playerid][pAutoskolaB] = 0; 

Zmenit hodnotu 0 na “Nevlastni” ?

pri všetkých pokusoch mi to vyhadzuje errory alebo to nefunguje  a pri stocku mi prestalo reagovať pawno. 😅 uz neviem ako na to Dakujem ak by mi s tým niekto pomohol. 

(Potreboval by som to do vypisovanie všetkých štatistík Vodičský preukaz - Nevlastním / Vlastním)

Toto je fakt na samostatný topic a rovno prilož aj kód

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...