Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 11
  1. #1
    Аватар для aHristovsky
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.12.2013
    Сообщений
    5
    Репутация:
    0 ±

    Проблема со скином

    Меня друг попросил сделать ему сервер с регистрацией. Так то я pawn знаю, но не понимаю в чём проблема. Вообще не работает SetSpawnInfo, вернее не весь, а скин или не меняется вообще при запуске игры, или это происходит крайне редко. Помоги, пожалуйста. И ещё, если пытаюсь в чат вывести например id скина с файла, то оно выводит имя игрока без 2-4 первых символов, что это за бред?
    PHP код:
    #include <a_samp>
    #include <mxINI>

    #define COLOR_RED 0xF60000AA
    #define COLOR_WHITE 0xFFFFFFAA
    #define COLOR_GREY 0xAFAFAFAA

    forward SaveAccounts(playerid);

    enum pInfo {
        
    pName,
        
    pSkin,
        
    pLvl,
        
    pMoney,
        
    Float:pHeal,
        
    Float:pArmour,
        
    Kills,
        
    Deaths
    };

    new 
    PlayerInfo[MAX_PLAYERS][pInfo];
    new 
    logged[MAX_PLAYERS];
    new 
    saveacctimer;

    main(){}

    public 
    OnGameModeInit()
    {
        
    //saveacctimer = SetTimer("SaveAccounts", 200000, 1);
        
    return 1;
    }

    public 
    OnGameModeExit()
    {
        
    KillTimer(saveacctimer);
        return 
    1;
    }

    public 
    OnPlayerRequestClass(playeridclassid)
    {
     return 
    1;
    }

    public 
    OnPlayerConnect(playerid)
    {
        
    logged[playerid]=0;

        
    GetPlayerName(playerid,PlayerInfo[playerid][pName],30);
        new 
    account[30+9+4];
        
    format(account,sizeof(account),"accounts/%s.ini",PlayerInfo[playerid][pName]);

        if(
    fexist(account))
         {
            new 
    s[256];
            
    format(s,sizeof(s),"{cccccc}________________________________________\n\n  Добро пожаловать на сервер \n         Этот аккаунт зарегистрирован\n\nВаш логин: {ffffff}%s\n{cccccc}Введите пароль:\n________________________________________",PlayerInfo[playerid][pName]);
            
    ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT"Авторизация",s"Войти""Отмена");
        }
        else
        {
            
    /*new s[256];
            format(s,sizeof(s),"{cccccc}________________________________________\n\n  Добро пожаловать на сервер Aurum-RP\n          Регистрация нового персонажа\n\nВаш логин: {ffffff}Anton_Hristovsky\n{cccccc}Придумайте пароль:\n________________________________________",PlayerName);
            ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "Регистрация",s, "Войти", "Отмена");*/
        
    }
        return 
    1;
    }

    public 
    OnPlayerDisconnect(playeridreason)
    {
        
    logged[playerid]=0;
        return 
    1;
    }

    public 
    OnPlayerSpawn(playerid)
    {
        
    logged[playerid] = 1;
        return 
    1;
    }

    public 
    OnPlayerDeath(playeridkilleridreason)
    {
        
    PlayerInfo[killerid][Kills]++;
        
    PlayerInfo[playerid][Deaths]++;
        return 
    1;
    }

    public 
    OnVehicleSpawn(vehicleid)
    {
         return 
    1;
    }

    public 
    OnVehicleDeath(vehicleidkillerid)
    {
        return 
    1;
    }

    public 
    OnPlayerText(playeridtext[])
    {
        if(
    logged[playerid] == 0)
        {
        
    SendClientMessage(playeridCOLOR_RED"Ошибка: Вам не доступен чат.");
        return 
    0;
        }
        return 
    1;
    }

    public 
    OnPlayerCommandText(playeridcmdtext[])
    {
        if (
    strcmp("/m"cmdtexttrue10) == 0)
        {
            
    AddStaticVehicle(500,0,0,382.287301);
            return 
    1;
        }
        return 
    0;
    }

    public 
    OnPlayerEnterVehicle(playeridvehicleidispassenger)
    {
        return 
    1;
    }

    public 
    OnPlayerExitVehicle(playeridvehicleid)
    {
        return 
    1;
    }

    public 
    OnPlayerStateChange(playeridnewstateoldstate)
    {
        return 
    1;
    }

    public 
    OnPlayerEnterCheckpoint(playerid)
    {
        return 
    1;
    }

    public 
    OnPlayerLeaveCheckpoint(playerid)
    {
        return 
    1;
    }

    public 
    OnPlayerEnterRaceCheckpoint(playerid)
    {
        return 
    1;
    }

    public 
    OnPlayerLeaveRaceCheckpoint(playerid)
    {
        return 
    1;
    }

    public 
    OnRconCommand(cmd[])
    {
        return 
    1;
    }

    public 
    OnPlayerRequestSpawn(playerid)
    {
        return 
    1;
    }

    public 
    OnObjectMoved(objectid)
    {
        return 
    1;
    }

    public 
    OnPlayerObjectMoved(playeridobjectid)
    {
        return 
    1;
    }

    public 
    OnPlayerPickUpPickup(playeridpickupid)
    {
        return 
    1;
    }

    public 
    OnVehicleMod(playeridvehicleidcomponentid)
    {
        return 
    1;
    }

    public 
    OnVehiclePaintjob(playeridvehicleidpaintjobid)
    {
        return 
    1;
    }

    public 
    OnVehicleRespray(playeridvehicleidcolor1color2)
    {
        return 
    1;
    }

    public 
    OnPlayerSelectedMenuRow(playeridrow)
    {
        return 
    1;
    }

    public 
    OnPlayerExitedMenu(playerid)
    {
        return 
    1;
    }

    public 
    OnPlayerInteriorChange(playeridnewinterioridoldinteriorid)
    {
        return 
    1;
    }

    public 
    OnPlayerKeyStateChange(playeridnewkeysoldkeys)
    {
        return 
    1;
    }

    public 
    OnRconLoginAttempt(ip[], password[], success)
    {
        return 
    1;
    }

    public 
    OnPlayerUpdate(playerid)
    {
        return 
    1;
    }

    public 
    OnPlayerStreamIn(playeridforplayerid)
    {
        return 
    1;
    }

    public 
    OnPlayerStreamOut(playeridforplayerid)
    {
        return 
    1;
    }

    public 
    OnVehicleStreamIn(vehicleidforplayerid)
    {
        return 
    1;
    }

    public 
    OnVehicleStreamOut(vehicleidforplayerid)
    {
        return 
    1;
    }

    public 
    OnDialogResponse(playeriddialogidresponselistiteminputtext[])
    {
        if(
    dialogid == 1)
        {
            if(
    response)
            {
                if(!
    strlen(inputtext))
                {
                    new 
    s[256];
                    
    format(s,sizeof(s),"{cccccc}________________________________________\n\n  Добро пожаловать на сервер \n         Этот аккаунт зарегистрирован\n\nВаш логин: {ffffff}%s\n{cccccc}Введите пароль:\n________________________________________",PlayerInfo[playerid][pName]);
                    
    SendClientMessage(playeridCOLOR_GREY"Ошибка {#111}: Поле не может быть пустым.");
                    return 
    ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT"Авторизация",s"Войти""Отмена");
                }

                new 
    password[64],account[128];
                
    format(account,sizeof(account),"accounts/%s.ini",PlayerInfo[playerid][pName]);
                
    //if(IsPlayerNPC(playerid))return 1;
                
    new iniFile ini_openFile(account);
                
    ini_getString(iniFile"Password",password);
                if(!
    strcmp(inputtextpasswordtrue))
                {
                    
    ini_getInteger(iniFile"Skin"PlayerInfo[playerid][pSkin]);
                    
    ini_getInteger(iniFile"Lvl"PlayerInfo[playerid][pLvl]);
                    
    ini_getInteger(iniFile"Money"PlayerInfo[playerid][pMoney]);
                    
    SendClientMessage(playeridCOLOR_REDPlayerInfo[playerid][pMoney]);
                    
    ini_getFloat(iniFile"Heal"PlayerInfo[playerid][pHeal]);
                    
    ini_getFloat(iniFile"Armour"PlayerInfo[playerid][pArmour]);
                    
    ini_getInteger(iniFile,"Kills"PlayerInfo[playerid][Kills]);
                    
    ini_getInteger(iniFile,"Deaths"PlayerInfo[playerid][Deaths]);
                    
    SetPlayerScore(playeridPlayerInfo[playerid][pLvl]);
                    
    GivePlayerMoney(playeridPlayerInfo[playerid][pMoney]);
                    
    SetPlayerHealth(playeridPlayerInfo[playerid][pHeal]);
                    
    SetPlayerArmour(playeridPlayerInfo[playerid][pArmour]);
                    
    SetSpawnInfo(playerid,0,PlayerInfo[playerid][pSkin],10.0000,-100.0000,5.0000,10.0000,0,0,0,0,0,0);
                    
    ini_closeFile(iniFile);
                    
    TogglePlayerSpectating(playeridfalse);
                    
    SpawnPlayer(playerid);
                    return 
    1;
                }
                else
                {
                    new 
    s[256];
                    
    format(s,sizeof(s),"{cccccc}________________________________________\n\n  Добро пожаловать на сервер \n         Этот аккаунт зарегистрирован\n\nВаш логин: {ffffff}%s\n{cccccc}Введите пароль:\n________________________________________",PlayerInfo[playerid][pName]);
                    
    SendClientMessage(playeridCOLOR_GREY"Ошибка {#112}: Вы ввели неверный пароль.");
                    return 
    ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT"Авторизация",s"Войти""Отмена");
                }
            }
            else
            {
                new 
    s[256];
                
    format(s,sizeof(s),"{cccccc}________________________________________\n\n  Добро пожаловать на сервер \n         Этот аккаунт зарегистрирован\n\nВаш логин: {ffffff}%s\n{cccccc}Введите пароль:\n________________________________________",PlayerInfo[playerid][pName]);
                return 
    ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT"Авторизация",s"Войти""Отмена");
            }
        }
        
    /*if(dialogid == 2) //???????????
        {
            if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "???????????", "?? ??????????????? ?? ???! \n?????? ????:", "??", "");
            if(response)
            {
                new PlayerName[MAX_PLAYER_NAME];
                GetPlayerName(playerid,PlayerName,sizeof(PlayerName)); //?????? ??? ??????
                new account[128];
                format(account,sizeof(account),"users/%s.ini",PlayerName);//?????????. ???? ?? ???? ??? ? ????? users
                if(fexist(account)) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "???????????", "???????????! \n ?????? ????:", "?????", ""); //?????????? ???, ???? ???? ???
                new iniFile = ini_createFile(account); //??????? ???
                if(iniFile < 0) ini_openFile (account); //???? ???? ??????, ??
                {
                    ini_setString(iniFile,"Password",inputtext); //??????
                    ini_setInteger(iniFile, "Skin", 206);
                    ini_setInteger(iniFile, "Money", 5000); // ??????? ???? ???????? ? ???-??? ????? 5000
                    ini_setFloat(iniFile, "Heal", 100.0); // ??????? ???? ???????? ? ???-??? ????????
                    ini_setFloat(iniFile, "Armour", 100.0); // ??????? ???? ???????? ? ???-??? ?????
                    ini_setInteger(iniFile, "Kills", 0); // ?? ??? ????????
                    ini_setInteger(iniFile, "Deaths", 0); // ??????
                    ini_closeFile(iniFile); //??????? ????
                    ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "???????????", "???????????:", "?????", "");
                }
            }
            else //???? ???? ???? ??????? ?????? ???? ? ?????? ?? Esc, ?? ???? ??? ????? ??????
            {
                ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "???????????", "?????????????, ?????:", "??", "");
            }
        }*/
        
    return 1;
    }

    public 
    OnPlayerClickPlayer(playeridclickedplayeridsource)
    {
        return 
    1;
    }

    /*public SaveAccounts(playerid)
    {
        for(new i=0; i<MAX_PLAYERS; i++)
        {
            new PlayerName[MAX_PLAYER_NAME], account[128];
            GetPlayerName(i,PlayerName,sizeof(PlayerName));
            format(account,sizeof(account), "users/%s.ini", PlayerName);
            new iniFile = ini_openFile(account);
            ini_setInteger(iniFile, "Money", GetPlayerMoney(i));
            ini_setInteger(iniFile,"Kills", PlayerInfo[i][Kills]);
            ini_setInteger(iniFile,"Deaths", PlayerInfo[i][Deaths]);
            GetPlayerHealth(i,PlayerInfo[i][pHeal]);
            ini_setFloat(iniFile, "Heal", PlayerInfo[i][pHeal]);
            GetPlayerArmour(i,PlayerInfo[i][pArmour]);
            ini_setFloat(iniFile, "Armour", PlayerInfo[i][pArmour]);
            ini_closeFile(iniFile);
            SendClientMessage(i, COLOR_WHITE, "Аккаунт сохранён");// ??? ????? ???????
        }
        return 1;
    }*/ 

  2. #2
    Аватар для FanHamMer
    Пользователь

    Статус
    Оффлайн
    Регистрация
    06.01.2014
    Сообщений
    4
    Репутация:
    0 ±
    Регистрация ужасна. Рано тебе знать PAWN.

  3. #3
    Аватар для MR_BEN
    Пользователь

    Статус
    Оффлайн
    Регистрация
    10.01.2014
    Сообщений
    110
    Репутация:
    29 ±
    Цитата Сообщение от FanHamMer Посмотреть сообщение
    Регистрация ужасна. Рано тебе знать PAWN.
    А ты за час весь Pawn выучил, прям про стал?

  4. Пользователь сказал cпасибо:
    Nurick (13.09.2014)
  5. #4
    Аватар для wAx
    ¯\_(ツ)_/¯

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    377
    Репутация:
    146 ±
    PHP код:
    enum pInfo {
        
    pName,
        
    pSkin,
        
    pLvl,
        
    pMoney,
        
    Float:pHeal,
        
    Float:pArmour,
        
    Kills,
        
    Deaths
    }; 
    Удели под ник-нейм игрока хотя-бы 24 ячейки..

    PHP код:
    enum pInfo {
        
    pName[MAX_PLAYER_NAME],
        
    pSkin,
        
    pLvl,
        
    pMoney,
        
    Float:pHeal,
        
    Float:pArmour,
        
    Kills,
        
    Deaths
    }; 

  6. #5
    Аватар для aHristovsky
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.12.2013
    Сообщений
    5
    Репутация:
    0 ±
    Это безумно ценный совет, но я лучше подожду ещё вариантов.

    - - - Добавлено - - -

    Цитата Сообщение от FanHamMer Посмотреть сообщение
    Регистрация ужасна. Рано тебе знать PAWN.
    А что не так с регистрацией? Я взял её в интернете. И при чём тут ник? Я сделал как Вы сказали, но при чём тут?

  7. #6
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от aHristovsky Посмотреть сообщение
    А что не так с регистрацией?
    Например то, что вы ник (строку) пытались записать в переменную целочисленного типа. Или что в GetPlayerName, извлекать ник, вы ожидаете получить строку в 30 символов. Так же для сообщения в 200 символов вы выделяете 256 ячеек. Дальше продолжать?
    Я лишь могу вам посоветовать свою регистрацию, код которой проверен и лично мной, и десятком других пользователей. Да и описание, что давал я в той теме, вам стоит почитать, судя по коду
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  8. #7
    Аватар для aHristovsky
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.12.2013
    Сообщений
    5
    Репутация:
    0 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Например то, что вы ник (строку) пытались записать в переменную целочисленного типа. Или что в GetPlayerName, извлекать ник, вы ожидаете получить строку в 30 символов. Так же для сообщения в 200 символов вы выделяете 256 ячеек. Дальше продолжать?
    Я лишь могу вам посоветовать свою регистрацию, код которой проверен и лично мной, и десятком других пользователей. Да и описание, что давал я в той теме, вам стоит почитать, судя по коду
    Спасибо большое, я сейчас ознакомлюсь.

  9. #8
    Аватар для aHristovsky
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.12.2013
    Сообщений
    5
    Репутация:
    0 ±
    Я скачал сервер с темы, но почему после авторизации/регистрации оно не спавнит а эти стрелочки и кнопка Spawn появляются?

  10. #9
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от aHristovsky Посмотреть сообщение
    Я скачал сервер с темы, но почему после авторизации/регистрации оно не спавнит а эти стрелочки и кнопка Spawn появляются?
    Потому что тема посвящена созданию системы регистрации, а не тому, как обходить стандартную систему спавна. Там лишь работа с файлом игрока и не более. Всё остальное - ваша забота, ибо это ВЫ пишете мод, а не я.
    Могу посоветовать такой вариант
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  11. #10
    Аватар для aHristovsky
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.12.2013
    Сообщений
    5
    Репутация:
    0 ±
    Спасибо большое, Вы мне очень помогли, только последний вопрос. Я не могу разобраться в team в SetPlayerSpawn. Это обязательно указывать, или можно всегда использовать 0?

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •