Question

Хочу сделать выбор скина автоматической(без выбора)

При выборе пола,остается этот диалог и не телепортирует на спавн

Вот код:

 

1.Выбор скина

Спойлер

case 4://------------------------------------ [ Парень ] -------------------------------------------------//Язык
        {
        if(response)
            {
                PlayerInfo[playerid][pSex] = 1;
                    PlayerInfo[playerid][pChar] = 137// ?? ????? ??????? ???????? ??? ??????????? (???????)
                    SelectCharPlace[playerid] = 0;
                    PlayerInfo[playerid][pReg] = 1;
                        CharPrice[playerid] = 0;
                        SelectCharID[playerid] = 0;
                        SelectChar[playerid] = 0;
                        PicCP[playerid] = 0;
                        PlayerPlaySound(playerid, 10690.00.00.0);
                        SCM(playerid, COLOR_WHITE,"{99FF00}Защита по IP адресу обезопасит ваш аккаунт от взлома! {ffffff}(/mm -> настройки -> защита IP)");
                        SpawnPlayer(playerid);
                        OnPlayerUpdateRL(playerid);
                        return true;
            }
            else
            {
                PlayerInfo[playerid][pSex] = 1;
                    PlayerInfo[playerid][pChar] = 90// ?? ????? ??????? ???????? ??? ??????????? (???????)
                    SelectCharPlace[playerid] = 0;
                    PlayerInfo[playerid][pReg] = 1;
                        CharPrice[playerid] = 0;
                        SelectCharID[playerid] = 0;
                        SelectChar[playerid] = 0;
                        PicCP[playerid] = 0;
                        PlayerPlaySound(playerid, 10690.00.00.0);
                        SCM(playerid, COLOR_WHITE,"{99FF00}Защита по IP адресу обезопасит ваш аккаунт от взлома! {ffffff}(/mm -> настройки -> защита IP)");
                        SpawnPlayer(playerid);
                        OnPlayerUpdateRL(playerid);
                        return true;
            }
        }


    

2.Сама регистрация:

 

Спойлер

case 1://Регистрация
        {
            if(!strlen(inputtext))
            {
                format(stringer, sizeof(stringer),"{FFFFFF}Добро пожаловать на проект {FF9900}Stats Role Play\n\n{FFFFFF}Ваше имя не числится в списках людей, проживающих в наших штатах.\nЗарегистрируйте вашу личность, пожалуйста, введите пароль.");
                SPD(playerid,1,DIALOG_STYLE_INPUT,"{003333}Регистрация | {FFFFFF}Пароль",stringer,"Далее","Отмена");
                return true;
            }
            if(strlen(inputtext) < 6 ||strlen(inputtext) > 20)
            {
                format(stringer, sizeof(stringer),"{FFFFFF}Добро пожаловать на проект {FF9900}Stats Role Play\n\n{FFFFFF}Ваше имя не числится в списках людей, проживающих в наших штатах.\nЗарегистрируйте вашу личность, пожалуйста, введите пароль.");
                SPD(playerid,1,DIALOG_STYLE_INPUT,"{003333}Регистрация | {FFFFFF}Пароль",stringer,"Далее","Отмена");
                return true;
            }
            OnPlayerRegister(playerid,inputtext);
            SPD(playerid,3,DIALOG_STYLE_INPUT,"{FFFF00}Электорнный адрес","{FFFFFF}Введите пожалуйста ваш действующий электронный адрес: \nПодсказка: Используйте почтовый сервис {FFFF00}@yandex.ru, mail.ru или gmail.com\n","Далее","");
            return true;
        }

 

 

Edited by Cawfee

Share this post


Link to post

2 answers to this question

  • 0

@xbloody96, перед тем, как порождать игрока, необходимо указывать, где именно он должен появиться, используя SetSpawnInfo. Крайне дурной привычкой является формирование координат появления игрока непосредственно в OnPlayerSpawn, поскольку эта автовызываемая функция вызывается после того, как игрок появился.

 

Таким образом, не пытайтесь сделать нечто следующее (вы можете это найти в игровых модах или на просторах Интернета):

Спойлер

case 4: {
    if(response) {
        PlayerInfo[playerid][pSex] = 1;
        PlayerInfo[playerid][pChar] = 137;
        SelectCharPlace[playerid] = 0;
        PlayerInfo[playerid][pReg] = 1;
        CharPrice[playerid] = 0;
        SelectCharID[playerid] = 0;
        SelectChar[playerid] = 0;
        PicCP[playerid] = 0;
        PlayerPlaySound(playerid, 10690.00.00.0);
        SCM(playerid, COLOR_WHITE,"{99FF00}Защита по IP адресу обезопасит ваш аккаунт от взлома! {ffffff}(/mm -> настройки -> защита IP)");
        SetSpawnInfo(playerid, 000.00.00.00.0000000); // обратите внимание: этой строки у вас нет
        SpawnPlayer(playerid);
        OnPlayerUpdateRL(playerid);
        return true;
    }
    
    // ...

public OnPlayerSpawn(playerid) {
    SetPlayerPos(playerid, 100.100200.200300.300); // не нужно в OnPlayerSpawn перемещать игрока!
    return true;
}

 

 

Прибегните к правильному, заложенному разработчиками клиента, решению:

Спойлер

case 4: {
    if(response) {
        PlayerInfo[playerid][pSex] = 1;
        PlayerInfo[playerid][pChar] = 137;
        SelectCharPlace[playerid] = 0;
        PlayerInfo[playerid][pReg] = 1;
        CharPrice[playerid] = 0;
        SelectCharID[playerid] = 0;
        SelectChar[playerid] = 0;
        PicCP[playerid] = 0;
        PlayerPlaySound(playerid, 10690.00.00.0);
        SCM(playerid, COLOR_WHITE,"{99FF00}Защита по IP адресу обезопасит ваш аккаунт от взлома! {ffffff}(/mm -> настройки -> защита IP)");
        spawnPlayerOnStation(playerid); // вызовем функцию порождения игрока на вокзале
        OnPlayerUpdateRL(playerid);
        return true;
    }
    
    // ...


/*
    Создайте отдельную функцию, например, для порождения игрока на вокзале
*/

public spawnPlayerOnStation(playerid) {
    SetSpawnInfo(playerid, 000.00.00.00.0000000); // координаты появления на вокзале
    return SpawnPlayer(playerid);
}

/*
    Аналогично отдельную функцию, например, для порождения игрока в больнице
*/

public spawnPlayerInHospital(playerid) {
    SetSpawnInfo(playerid, 000.00.00.00.0000000); // координаты появления в больнице
    return SpawnPlayer(playerid);
}

 

 

Безусловно, последний вариант можно сделать более гибким, но это уже другой вопрос.

Edited by Cawfee

Share this post


Link to post
  • 0

@Cawfee Ошибки в консолях:

к этой строке:

Спойлер

spawnPlayerOnStation(playerid); // вызовем функцию порождения игрока на вокзале
Спойлер

D:\samp mods\Rovero Blue Original\gamemodes\modik555.pwn(17117) : error 012: invalid function call, not a valid address
D:\samp mods\Rovero Blue Original\gamemodes\modik555.pwn(17117) : warning 215: expression has no effect
D:\samp mods\Rovero Blue Original\gamemodes\modik555.pwn(17117) : error 001: expected token: ";", but found ")"
D:\samp mods\Rovero Blue Original\gamemodes\modik555.pwn(17117) : error 029: invalid expression, assumed zero
D:\samp mods\Rovero Blue Original\gamemodes\modik555.pwn(17117) : fatal error 107: too many error messages on one line

 

Edited by xbloody96

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0