Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 6 из 6
  1. #1
    Аватар для kala4iks
    Пользователь

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

    Сохранение регистрационного IP.

    Добрый день, скажите пожалуйста из за чего такая проблема?

    Вообщем я при зарегался и IP регистрационный сохранился в базу данных если выйти и войти он сохранен.
    А если выключить сервер, и включить, и игроки заходят на сервер то у всех регистрационные IP слетают на 0.

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

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

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    27.02.2015
    Сообщений
    317
    Репутация:
    0 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Эмм, а зачем вообще перезаписывать IP, который был у игрока при регистрации?
    Покажи код того, как загружаешь и как сохраняешь
    Ток я не перезаписываю его он слетает когда сервер выключить и заного включить если игрок зайдет на сервер.
    Это в enum pInfo

    PHP код:
    pIpReg[16
    Сохранение аккаунта.

    PHP код:
    stock SaveAccount(playerid)
    {
        if(
    Player[playerid][pLogged] == true)
        {
            
    CheckMySQLConnection();
            new 
    str[1500];
            new 
    sqlname[MAX_PLAYER_NAME];
            
    mysql_real_escape_string(Player[playerid][pName], sqlname);
            
    format(strsizeof(str), "UPDATE `Accounts` SET `Nickname`= '%s',`Level`= '%i', `Admin`= '%i', `Reg`= '%i', `Sex`= '%i', `Spawn`= '%i', `Exp`= '%i', `BankPass`= '%i', `Money` = '%i', `Bank` = '%i', `MuteTime` = '%i', `Job`= '%i',",
            
    sqlname,
            
    Player[playerid][pLevel],
            
    Player[playerid][pAdmin],
            
    Player[playerid][pReg],
            
    Player[playerid][pSex],
            
    Player[playerid][pSpawn],
            
    Player[playerid][pExp],
            
    Player[playerid][pBankPass],
            
    Player[playerid][pMoney],
            
    Player[playerid][pBank],
            
    Player[playerid][pMuteTime],
            
    Player[playerid][pJob]);
            
    format(strsizeof(str), "%s `PayCheck` = '%i',`Jailed` = '%i',`JailTime`= '%i',`MedicTime` = '%i',`Mats` = '%i',`Drugs`= '%i',`JobTime`= '%i',`Member` = '%i',`Leader` = '%i',`Zam` = '%i',`Rank` = '%i',`Model` = '%i',`Char` = '%i',`Phousekey` = '%i',`Carkey1` = '%i',",
            
    str,
            
    Player[playerid][pPayCheck],
            
    Player[playerid][pJailed],
            
    Player[playerid][pJailTime],
            
    Player[playerid][pMedicTime],
            
    Player[playerid][pMats],
            
    Player[playerid][pDrugs],
            
    Player[playerid][pJobTime],
            
    Player[playerid][pMember],
            
    Player[playerid][pLeader],
            
    Player[playerid][pZam],
            
    Player[playerid][pRank],
            
    Player[playerid][pModel],
            
    Player[playerid][pChar],
            
    Player[playerid][pPhousekey],
            
    Player[playerid][pCarkey1]);
            
    format(strsizeof(str), "%s `Carkey2` = '%i',`Pbiskey` = '%i',`TWarns` = '%i',`CarLic` = '%i',`MotoLic` = '%i',`TruckLic` = '%i',`TruckELic` = '%i',`FlyLic` = '%i',`BoatLic` = '%i',`SD` = '%i',",
            
    str,
            
    Player[playerid][pCarkey2],
            
    Player[playerid][pPbiskey],
            
    Player[playerid][pTWarns],
            
    Player[playerid][pCarLic],
            
    Player[playerid][pMotoLic],
            
    Player[playerid][pTruckLic],
            
    Player[playerid][pTruckELic],
            
    Player[playerid][pFlyLic],
            
    Player[playerid][pBoatLic],
            
    Player[playerid][pSD]);
            
    format(strsizeof(str), "%s `GunLic` = '%i',`TaxiLic`= '%i',`GruzSkill` = '%i',`DrugSkill` = '%i',`GunSkill` = '%i',`CarSkill` = '%i',`JackSkill` = '%i',`RobSkill` = '%i',`RobHouseSkill` = '%i',`TimePizdanul` = '%i',`RobHouseTime` = '%i',`MechSkill` = '%i',`TruckSkill` = '%i',`DetSkill` = '%i',`HeadValue` = '%i',`HunterValue` = '%i',`TruckTime` = '%i',`TruckETime` = '%i',",
            
    str,
            
    Player[playerid][pGunLic],
            
    Player[playerid][pTaxiLic],
            
    Player[playerid][pGruzSkill],
            
    Player[playerid][pDrugSkill],
            
    Player[playerid][pGunSkill],
            
    Player[playerid][pCarSkill],
            
    Player[playerid][pJackSkill],
            
    Player[playerid][pRobSkill],
            
    Player[playerid][pRobHouseSkill],
            
    Player[playerid][pTimePizdanul],
            
    Player[playerid][pRobHouseTime],
            
    Player[playerid][pMechSkill],
            
    Player[playerid][pTruckSkill],
            
    Player[playerid][pDetSkill],
            
    Player[playerid][pHeadValue],
            
    Player[playerid][pHunterValue],
            
    Player[playerid][pTruckTime],
            
    Player[playerid][pTruckETime]);
            
    format(strsizeof(str), "%s `PayDay` = '%i',`Warns`= '%i',`Boxing` = '%i',`Kunfu` = '%i',`Kneehead` = '%i',`Grabkick` = '%i',`FStyle` = '%i',`Rope` = '%i',`CheatPassword` = '%i',`GPS` = '%i',`Sigs` = '%i',`Pivo` = '%i',`Wanted` = '%i',`RobTime` = '%i',`JackTime` = '%i',`Vipe` = '%i',`AdminOnline` = '%i',`Vip` = '%i', `MissionKeis` = '%i', `Donate` = '%i',",
            
    str,
            
    Player[playerid][pPayDay],
            
    Player[playerid][pWarns],
            
    Player[playerid][pBoxing],
            
    Player[playerid][pKunfu],
            
    Player[playerid][pKneehead],
            
    Player[playerid][pGrabkick],
            
    Player[playerid][pFStyle],
            
    Player[playerid][pRope],
            
    Player[playerid][pCheatPassword],
            
    Player[playerid][pGPS],
            
    Player[playerid][pSigs],
            
    Player[playerid][pPivo],
            
    Player[playerid][pWanted],
            
    Player[playerid][pRobTime],
            
    Player[playerid][pJackTime],
            
    Player[playerid][pVipe],
            
    Player[playerid][pAdminOnline],
            
    Player[playerid][pVip],
            
    Player[playerid][pMissionKeis],
            
    Player[playerid][pDonate]);
            
    format(str,sizeof(str),"%s `IpReg` = '%s' WHERE `ID` = '%i'",
              
    str,
            
    Player[playerid][pIpReg],
            
    Player[playerid][pID]);
            
    mysql_query(str);
        }
        return 
    1;

    Вот при регистрации сохраняю рег ip.

    PHP код:
    stock CreateAccount(playerid,password[])
    {
        new 
    query[128],sqlname[MAX_PLAYER_NAME],sqlpassword[32],ipreg[16];
        
    GetPlayerIp(playerid,ipreg,sizeof(ipreg));
        
    mysql_real_escape_string(Player[playerid][pName], sqlname);
        
    mysql_real_escape_string(passwordsqlpassword);
        
    format(querysizeof(query), "INSERT INTO `Accounts` (`Nickname`, `Password`) VALUE ('%s', '%s')"sqlnamesqlpassword);
        
    mysql_query(query);
        
    Player[playerid][pID] = GetAccountID(playerid);
        
    strmid(Player[playerid][pKey],sqlpassword064255);
        
    strmid(Player[playerid][pIpReg],ipreg,0,64,255);
        
    Player[playerid][pLogged] = true;
        new 
    string[120];
        
    SetPlayerColor(playerid,0xFFFFFF80);
        
    format(string,sizeof(string),"(( %s[%d] подключился к серверу. IP {FFFFFF}%s ))",sqlname,playerid,ipreg);
        
    ABroadCast(COLOR_GREY,string,1);
        return 
    1;

    Вот собственно загружаю из бд.

    PHP код:
    stock LoadAccount(playeridpassword[])
    {
        if(
    strfind(password,"|") != -1)return Kick(playerid);
        new 
    query[500],sqlpass[32],result[512],string[120];
        
    mysql_real_escape_string(password,sqlpass);
        
    format(query,sizeof(query),"SELECT * FROM `Accounts` WHERE `Password` = '%s' AND `ID` = '%i'",sqlpass,Player[playerid][pID]);
        
    mysql_query(query);
        
    mysql_store_result();
        if(
    mysql_num_rows() == 1)
        {
            
    mysql_fetch_row_format(result"|");
            
    sscanf(result,"p<|>is[64]s[64]iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"Player[playerid][pID],Player[playerid][pName],Player[playerid][pKey],Player[playerid][pLevel],
            
    Player[playerid][pAdmin],Player[playerid][pReg],Player[playerid][pSex],Player[playerid][pSpawn],Player[playerid][pExp],Player[playerid][pBankPass],Player[playerid][pMoney],Player[playerid][pBank],Player[playerid][pMuteTime],Player[playerid][pJob],
            
    Player[playerid][pPayCheck],Player[playerid][pJailed],Player[playerid][pJailTime],Player[playerid][pMedicTime],Player[playerid][pMats],Player[playerid][pDrugs],Player[playerid][pJobTime],Player[playerid][pMember],Player[playerid][pLeader],
            
    Player[playerid][pZam],Player[playerid][pRank],Player[playerid][pModel],Player[playerid][pChar],Player[playerid][pPhousekey],Player[playerid][pCarkey1],Player[playerid][pCarkey2],Player[playerid][pPbiskey],Player[playerid][pTWarns],
            
    Player[playerid][pCarLic],Player[playerid][pMotoLic],Player[playerid][pTruckLic],Player[playerid][pTruckELic],Player[playerid][pFlyLic],Player[playerid][pBoatLic],Player[playerid][pSD],Player[playerid][pGunLic],Player[playerid][pTaxiLic],
            
    Player[playerid][pGruzSkill],Player[playerid][pDrugSkill],Player[playerid][pGunSkill],Player[playerid][pCarSkill],Player[playerid][pJackSkill],Player[playerid][pRobSkill],Player[playerid][pRobHouseSkill],Player[playerid][pTimePizdanul],
            
    Player[playerid][pRobHouseTime],Player[playerid][pMechSkill],Player[playerid][pTruckSkill],Player[playerid][pDetSkill],Player[playerid][pHeadValue],Player[playerid][pHunterValue],Player[playerid][pTruckTime],Player[playerid][pTruckETime],
            
    Player[playerid][pPayDay],Player[playerid][pWarns],Player[playerid][pBoxing],Player[playerid][pKunfu],Player[playerid][pKneehead],Player[playerid][pGrabkick],Player[playerid][pFStyle],Player[playerid][pRope],Player[playerid][pCheatPassword],
            
    Player[playerid][pGPS],Player[playerid][pSigs],Player[playerid][pPivo],Player[playerid][pWanted],Player[playerid][pRobTime],Player[playerid][pJackTime],Player[playerid][pVipe],Player[playerid][pAdminOnline],Player[playerid][pVip],
            
    Player[playerid][pMissionKeis],Player[playerid][pDonate],Player[playerid][pIpReg]);
            
    Player[playerid][pLogged] = true;
            
    Logged[playerid] = 1;
            
    DisablePlayerCheckpoint(playerid); 

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    А зачем его вообще сохранять после выхода с сервера? Это IP, который получен при регистрации. Как он может в дальнейшем измениться? (это, кстати, сохранение из той же оперы, что и сохранение ника/пароля. Зачем? Разве игрок может изменить свой пароль во время игры так, что ты об этом не узнаешь? Он его может сохранить только если ты напишешь для этого функцию. Так почему бы не сохранить его сразу, если вдруг игрок решил сменить свой пароль и не захламлять этим сохранением запрос, который отправляется при выходе?).

    Ну а слетает он, вероятнее всего, просто из-за того, что при выключении MySQL не успевает обработать запрос на сохранение. Такое случится и при краше сервера. Это, как я знаю, не лечится ничем. Можно лишь сделать обновление данных в БД прямо во время изменения их на сервере, но это нужно делать с умом (придумывать какие-то ограничения на изменение этих данных и т.п.), иначе БД загнётся от большого кол-ва запросов. Ну и обновлять только действительно важные данные.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    30.10.2014
    Сообщений
    148
    Репутация:
    37 ±
    В твоём коде я разбираться не стал. Удали сохранение регистрационного IP при выходе с сервера.
    И когда создаёшь аккаунт (CreateAccount) записывай IP следующим образом:
    PHP код:
    new query[128], ip[16];
    GetPlayerIp(playeridipsizeof(ip));
    format(querysizeof(query), "INSERT INTO `Accounts` (`Nickname`, `Password`, `IpReg`) VALUES ('%s', '%s', '%s')"sqlnamesqlpasswordip);
    mysql_function_query(переменная_подключения_к_базе_данныхqueryfalse""""); 

  6. Пользователь сказал cпасибо:
    kala4iks (12.02.2016)
  7. #6
    Аватар для kala4iks
    Пользователь

    Статус
    Оффлайн
    Регистрация
    27.02.2015
    Сообщений
    317
    Репутация:
    0 ±
    Цитата Сообщение от Wise Посмотреть сообщение
    В твоём коде я разбираться не стал. Удали сохранение регистрационного IP при выходе с сервера.
    И когда создаёшь аккаунт (CreateAccount) записывай IP следующим образом:
    PHP код:
    new query[128], ip[16];
    GetPlayerIp(playeridipsizeof(ip));
    format(querysizeof(query), "INSERT INTO `Accounts` (`Nickname`, `Password`, `IpReg`) VALUES ('%s', '%s', '%s')"sqlnamesqlpasswordip);
    mysql_function_query(переменная_подключения_к_базе_данныхqueryfalse""""); 
    Спасибо теперь вроде не сбрасывается на 0.

 

 

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

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

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

Ваши права

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