Русское сообщество по скриптингу

[API] Data Player (Load/Save)

Новые плагины для AMX Mod X, которые были добавлены в базу плагинов нашего форума. Плагины еще не утвеждены администратором/модератором.

Модератор: Leonidddd

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

Данный раздел форума служит для добавления новых плагинов в базу нашего форума. После того, как администратор/модератор утвердит плагин, он будет перемещен в раздел "Утвежденные плагины".

Правила при добавлении новых плагинов:

1. При вставке кода плагина необходимо использовать тег [pawn], в противном случае, если тег [pawn] не отображает ваш код, можно использовать тег [code].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. Обязательно выкладывайте исходник sma плагина. Запрещено выкладывать amxx файл.
4. Обязательно указывайте настоящих авторов плагина, если вы использовали чьи-то наработки или функции, указывайте их авторов в сообщении.
5. Необходимо заполнять детальную информацию о плагине (версию, настройки, используемые модули, список изменений и другую).

[API] Data Player (Load/Save)

Сообщение BlackSmoke » 05 июл 2014, 20:52

Авторы: BlackSmoke

Версия: 0.1

Описание:
Работа плагина заключается в сохранении и загрузке данных игрока с помощью файла.


Типы сохранения\загрузки:
• По имени игрока DP_PLAYER_NAME
• По стим идентификатору игрока DP_PLAYER_STEAMID
• По айпи игрока DP_PLAYER_IP


Нативы:
[pawn]
  1. native dp_save_int( iTypeSL:iType, iPlayer, const sFileName[ ], iData );

  2. native dp_save_float( iTypeSL:iType, iPlayer, const sFileName[ ], Float:fData );

  3. native dp_save_string( iTypeSL:iType, iPlayer, const sFileName[ ], const sData[ ] );

  4. native dp_load_int( iTypeSL:iType, iPlayer, const sFileName[ ], &iData );

  5. native dp_load_float( iTypeSL:iType, iPlayer, const sFileName[ ], &Float:fData );

  6. native dp_load_string( iTypeSL:iType, iPlayer, const sFileName[ ], sData[ ], iLen );
[/pawn]

Пример ( сохранение денег ):
[pawn]
  1. #include        amxmodx

  2. #include        data_player_api

  3. #include        cstrike

  4.  

  5. public client_disconnect( id )

  6. {

  7.      dp_save_int( DP_PLAYER_NAME, id, "addons/amxmodx/configs/PlayersMoney.ini", cs_get_user_money( id ) ) ;

  8. }

  9.  

  10. public client_putinserver( id )

  11. {

  12.      cs_set_user_money( id, 0 ) ;

  13.      set_task( 10.0, "Load__Money", id ) ;

  14. }

  15.  

  16. public Load__Money( id )

  17. {

  18.      new iReturnMoney ;

  19.      if( dp_load_int( DP_PLAYER_NAME, id, "addons/amxmodx/configs/PlayersMoney.ini", iReturnMoney ) )

  20.      {

  21.              cs_set_user_money( id, iReturnMoney ) ;

  22.              client_print( id, print_center, "Ваши загруженные деньги: %d", iReturnMoney ) ;

  23.      }

  24.      else

  25.              client_print( id, print_center, "Ошибка загрузки денег" ) ;

  26. }
[/pawn]

Пример работы с массивом:
[pawn]
  1. public Save__Origin( id )

  2. {

  3.      new Float:fOrigin[ 3 ] , sText[ 64 ] ;

  4.      pev( id, pev_origin, fOrigin ) ;

  5.      format( sText, charsmax( sText ), "%f %f %f", fOrigin[ 0 ], fOrigin[ 1 ], fOrigin[ 2 ] ) ;

  6.      dp_save_string( DP_PLAYER_NAME, id, "addons/amxmodx/configs/PlayersOrigin.ini", sText ) ;

  7. }

  8.  

  9. public Load_Origin( id )

  10. {

  11.      new sReturnData[ 128 ] , sPos[ 3 ][ 8 ], Float:fOrigin[ 3 ] ;

  12.      dp_load_string( DP_PLAYER_NAME, id, "addons/amxmodx/configs/PlayersOrigin.ini", sReturnData, charsmax( sReturnData ) ) ;

  13.      parse( sReturnData, sPos[ 0 ], charsmax( sPos[ ] ), sPos[ 1 ], charsmax( sPos[ ] ), sPos[ 2 ], charsmax( sPos[ ] ) ) ;

  14.      fOrigin[ 0 ] = str_to_float( sPos[ 0 ] ) ;

  15.      fOrigin[ 1 ] = str_to_float( sPos[ 1 ] ) ;

  16.      fOrigin[ 2 ] = str_to_float( sPos[ 2 ] ) ;
[/pawn]

Файлы:
data_player_API.sma

data_player_api.inc
Последний раз редактировалось BlackSmoke 06 июл 2014, 12:42, всего редактировалось 3 раз(а).
Заказы принимаю Отзывы о работе
itsblacksmoke
Аватара пользователя
BlackSmoke
 
Сообщения: 1109
Зарегистрирован: 28 июл 2012, 04:33
Откуда: Ukraine
Благодарил (а): 106 раз.
Поблагодарили: 287 раз.
Опыт программирования: Около года
Языки программирования: Counter Strike 1.6

Re: [API] Data Player (Load/Save)

Сообщение BlackSmoke » 13 июл 2014, 17:00

Asmodai, В смысле не сам придумал ? На идею наткнул тёма, когда говорил, что нужно запилить интерфейс load/save
Заказы принимаю Отзывы о работе
itsblacksmoke
Аватара пользователя
BlackSmoke
 
Сообщения: 1109
Зарегистрирован: 28 июл 2012, 04:33
Откуда: Ukraine
Благодарил (а): 106 раз.
Поблагодарили: 287 раз.
Опыт программирования: Около года
Языки программирования: Counter Strike 1.6

Re: [API] Data Player (Load/Save)

Сообщение Safety1st » 13 июл 2014, 18:45

Asmodai писал(а):Наоборот, мне кажется, конечному пользователю надо просто использовать, а не вдаваться в подробности, как оно работает.

Согласен. Но API - для скриптеров, не для конечных. Я как стал разбираться в плагинах - тупо их теперь не ставлю, обязательно должен в общих чертах представлять, что там да как, всё ли разумно) Косвенно отсутствие интереса новичков подтверждается отсутствием школоло-комментариев в топике :-D

Ну да ладно, это уже не наши проблемы.
GoldSrc Gaming Community
Аватара пользователя
Safety1st
 
Сообщения: 1958
Зарегистрирован: 08 окт 2011, 05:41
Откуда: Moscow
Благодарил (а): 1690 раз.
Поблагодарили: 933 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Half-Life

Re: [API] Data Player (Load/Save)

Сообщение Asmodai » 16 июл 2014, 01:15

Допилил, правда наскоро. Вообще не запускал.

Плагин позволяет хранить информацию о игроках вида ключ-значение между подключениями. А также обеспечивает возможность доступа к ней из разных плагинов. Идентификация игрока происходит по SteamID, IP или нику. При условии, что игрок не меняет свой идентификатор, позволяет хранить информацию удобнее, чем в userinfo и в больших объемах. Плагин является альтернативой mysql базе. Вся работа по получению информации для нужного идентификатора ложится на файловую систему.

Нативы dp_register_* позволяют зарегистрировать стандартное значение для ключа.
Нативы dp_save_* сохраняют значение для ключа. Если оно соответствует стандартному, запоминаться не будет.
Нативы dp_load_* получают значение ключа. Если найдено, возвращают 1, если получено стандартное значение -1 (что тоже true для условий if), если нет значения 0.
Натив dp_remove_key позволяет удалить определенный ключ для всех игроков.

В исходнике также можно указать параметры MAX_PLAYERS и MAX_DAYS_STORE, ну и остальные если надо. Первый задает максимум игроков, второй это максимальное количество дней хранения информации, если она не используется.

[pawn]
  1. dpapi_save_by "1"

  2. 1 - SteamID

  3. 2 - IP

  4. 3 - Name

  5.  

  6. dpapi_allow_rename "1"

  7. 1 - менять имя файла при смене ника

  8. 2 - оставить какое было при подключении
[/pawn]

[pawn]
  1. native dp_save_int( id, const key[], value )

  2. native dp_save_float( id, const key[], Float:value )

  3. native dp_save_string( id, const key[], const value[] )

  4. native dp_load_int( id, const key[], &value )

  5. native dp_load_float( id, const key[], &Float:value )

  6. native dp_load_string( id, const key[], value[], maxlen )

  7. native dp_register_int( const key[], value )

  8. native dp_register_float( const key[], Float:value )

  9. native dp_register_string( const key[], const value[] )

  10. native dp_remove_key( const key[] )
[/pawn]
Аватара пользователя
Asmodai
Адмирал
 
Сообщения: 466
Зарегистрирован: 24 фев 2011, 20:48
Благодарил (а): 0 раз.
Поблагодарили: 393 раз.
Языки программирования: Counter-Strike 1.6

Пред.

Вернуться в Добавленные новые плагины

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5