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

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±

    Сохранение, другой вариант

    Здравствуйте. У меня в моде сохранение следующим образом будет (только начал переводить):
    PHP код:
    PlayerInfo[playerid][pSkin] = 30;
    UpdatePlayerData(playerid"skin"PlayerInfo[playerid][pSkin]); 
    Может есть какой то похожий другой вариант, чтобы не писать каждый раз так.

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

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Можешь в саму функцию UpdatePlayerData передавать переменную для сохранения и значения для это переменной. Т.е:
    PHP код:
    UpdatePlayerData(const playerid, const column[], var, value);
    // playerid - ид игрока для которого обновлять
    // column - обновляемая "ячейка" 
    // var - переменная, которая обновляется
    // value - значение для обновляемой переменной 
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

  3. Пользователь сказал cпасибо:
    StevenH (02.07.2017)
  4. #3
    Аватар для StevenH
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Цитата Сообщение от $continue$ Посмотреть сообщение
    Можешь в саму функцию UpdatePlayerData передавать переменную для сохранения и значения для это переменной. Т.е:
    PHP код:
    UpdatePlayerData(const playerid, const column[], var, value);
    // playerid - ид игрока для которого обновлять
    // column - обновляемая "ячейка" 
    // var - переменная, которая обновляется
    // value - значение для обновляемой переменной 
    Как вариант тоже можно.

    Пока подожду, может еще какие будут варианты..

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    PHP код:
    UpdatePlayerData(playerid"skin", (PlayerInfo[playerid][pSkin] = 30)); 
    ? :)

    А вообще, как по мне, следует для таких дел написать отдельную функцию, которая сразу и в игре будет обновлять скин (содержать SetPlayerSkin в себе), и данные в БД (ну или же сделать перехват SetPlayerSkin, в котором добавить параметр, который обозначал бы синхронизацию данных). А плодить миллион функций ради совершения одного действия или в одну функцию пихать миллион задач - такая себе затея
    Последний раз редактировалось DeimoS; 02.07.2017 в 03:45.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    PHP код:
    UpdatePlayerData(playerid"skin", (PlayerInfo[playerid][pSkin] = 30)); 
    ? :)

    А вообще, как по мне, следует для таких дел написать отдельную функцию, которая сразу и в игре будет обновлять скин (содержать SetPlayerSkin в себе), и данные в БД (ну или же сделать перехват SetPlayerSkin, в котором добавить параметр, который обозначал бы синхронизацию данных). А плодить миллион функций ради совершения одного действия или в одну функцию пихать миллион задач - такая себе затея
    Хм.. тогда подробнее на счет перехвата или подобного..

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

    Статус
    Оффлайн
    Регистрация
    22.01.2016
    Сообщений
    40
    Репутация:
    7 ±
    Цитата Сообщение от StevenH Посмотреть сообщение
    Хм.. тогда подробнее на счет перехвата или подобного..
    Тут.

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

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Цитата Сообщение от middlematt Посмотреть сообщение
    В теме рассказывается как мы перехватывает обычные паблики, но никак не массивы

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

    Статус
    Оффлайн
    Регистрация
    22.01.2016
    Сообщений
    40
    Репутация:
    7 ±
    Цитата Сообщение от StevenH Посмотреть сообщение
    В теме рассказывается как мы перехватывает обычные паблики, но никак не массивы
    Перехват массивов? Что, простите?
    Насколько я знаю, можно перехватить только функцию и коллбэк.

    А DeimoS наверно имел ввиду такой вариант:
    PHP код:
    stock SetPlayerSkinEx(const playerid, const skin_modelid)
    {
        static const    
            
    fmt_str0[] = "UPDATE `accounts` SET `skin` = '%i' WHERE `id` = '%i'";
        new
            
    str0[sizeof (fmt_str0) + (MAX_PLAYER_NAME)];
        
    format(str0sizeof (str0), fmt_str0,
            
    PlayerInfo[playerid][pSkin], PlayerInfo[playerid][pID]);
        
    mysql_tquery(db_handlestr0);
        
        return 
    SetPlayerSkin(playeridskin_modelid);
    }
    #if defined _ALS_SetPlayerSkin
        #undef SetPlayerSkinEx
    #else
        #define _ALS_SetPlayerSkin
    #endif
    #define SetPlayerSkin SetPlayerSkinEx 
    Может он имел что-то другое, но думая суть понятна.

  10. #9
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Плохая практика изменять работу функции. (добавлять в нее параметр и т.д). И если я захочу изменить скин в игре на временный, то запрос отправится в пустую.
    Цитата Сообщение от middlematt Посмотреть сообщение
    Перехват массивов? Что, простите?
    Насколько я знаю, можно перехватить только функцию и коллбэк.

    А DeimoS наверно имел ввиду такой вариант:
    PHP код:
    stock SetPlayerSkinEx(const playerid, const skin_modelid)
    {
        static const    
            
    fmt_str0[] = "UPDATE `accounts` SET `skin` = '%i' WHERE `id` = '%i'";
        new
            
    str0[sizeof (fmt_str0) + (MAX_PLAYER_NAME)];
        
    format(str0sizeof (str0), fmt_str0,
            
    PlayerInfo[playerid][pSkin], PlayerInfo[playerid][pID]);
        
    mysql_tquery(db_handlestr0);
        
        return 
    SetPlayerSkin(playeridskin_modelid);
    }
    #if defined _ALS_SetPlayerSkin
        #undef SetPlayerSkinEx
    #else
        #define _ALS_SetPlayerSkin
    #endif
    #define SetPlayerSkin SetPlayerSkinEx 
    Может он имел что-то другое, но думая суть понятна.
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

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

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Цитата Сообщение от middlematt Посмотреть сообщение
    Перехват массивов? Что, простите?
    Насколько я знаю, можно перехватить только функцию и коллбэк.

    А DeimoS наверно имел ввиду такой вариант:
    PHP код:
    stock SetPlayerSkinEx(const playerid, const skin_modelid)
    {
        static const    
            
    fmt_str0[] = "UPDATE `accounts` SET `skin` = '%i' WHERE `id` = '%i'";
        new
            
    str0[sizeof (fmt_str0) + (MAX_PLAYER_NAME)];
        
    format(str0sizeof (str0), fmt_str0,
            
    PlayerInfo[playerid][pSkin], PlayerInfo[playerid][pID]);
        
    mysql_tquery(db_handlestr0);
        
        return 
    SetPlayerSkin(playeridskin_modelid);
    }
    #if defined _ALS_SetPlayerSkin
        #undef SetPlayerSkinEx
    #else
        #define _ALS_SetPlayerSkin
    #endif
    #define SetPlayerSkin SetPlayerSkinEx 
    Может он имел что-то другое, но думая суть понятна.
    Почему SetPlayerSkin? То что в массиве был pSkin, это ни о чем не говорит. Допустим, в массиве игрока будет pMoney, и?

 

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

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

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

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

Ваши права

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