Новые плагины для AMX Mod X, которые были добавлены в базу плагинов нашего форума. Плагины еще не утвеждены администратором/модератором.
Модератор: Leonidddd
Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.
Данный раздел форума служит для добавления новых плагинов в базу нашего форума. После того, как администратор/модератор утвердит плагин, он будет перемещен в раздел "Утвежденные плагины".
Правила при добавлении новых плагинов:
1. При вставке кода плагина необходимо использовать тег [pawn], в противном случае, если тег [pawn] не отображает ваш код, можно использовать тег [code].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. Обязательно выкладывайте исходник sma плагина. Запрещено выкладывать amxx файл.
4. Обязательно указывайте настоящих авторов плагина, если вы использовали чьи-то наработки или функции, указывайте их авторов в сообщении.
5. Необходимо заполнять детальную информацию о плагине (версию, настройки, используемые модули, список изменений и другую).
BlackSmoke » 05 июл 2014, 20:52
Авторы: BlackSmoke
Версия: 0.1
Описание:Работа плагина заключается в сохранении и загрузке данных игрока с помощью файла.
Типы сохранения\загрузки:• По имени игрока DP_PLAYER_NAME
• По стим идентификатору игрока DP_PLAYER_STEAMID
• По айпи игрока DP_PLAYER_IP
Нативы:[pawn]
native dp_save_int( iTypeSL:iType, iPlayer, const sFileName[ ], iData );
native dp_save_float( iTypeSL:iType, iPlayer, const sFileName[ ], Float:fData );
native dp_save_string( iTypeSL:iType, iPlayer, const sFileName[ ], const sData[ ] );
native dp_load_int( iTypeSL:iType, iPlayer, const sFileName[ ], &iData );
native dp_load_float( iTypeSL:iType, iPlayer, const sFileName[ ], &Float:fData );
native dp_load_string( iTypeSL:iType, iPlayer, const sFileName[ ], sData[ ], iLen );
[/pawn]
Пример ( сохранение денег ):[pawn]
#include amxmodx
#include data_player_api
#include cstrike
public client_disconnect( id )
{
dp_save_int( DP_PLAYER_NAME, id, "addons/amxmodx/configs/PlayersMoney.ini", cs_get_user_money( id ) ) ;
}
public client_putinserver( id )
{
cs_set_user_money( id, 0 ) ;
set_task( 10.0, "Load__Money", id ) ;
}
public Load__Money( id )
{
new iReturnMoney ;
if( dp_load_int( DP_PLAYER_NAME, id, "addons/amxmodx/configs/PlayersMoney.ini", iReturnMoney ) )
{
cs_set_user_money( id, iReturnMoney ) ;
client_print( id, print_center, "Ваши загруженные деньги: %d", iReturnMoney ) ;
}
else
client_print( id, print_center, "Ошибка загрузки денег" ) ;
}
[/pawn]
Пример работы с массивом:[pawn]
public Save__Origin( id )
{
new Float:fOrigin[ 3 ] , sText[ 64 ] ;
pev( id, pev_origin, fOrigin ) ;
format( sText, charsmax( sText ), "%f %f %f", fOrigin[ 0 ], fOrigin[ 1 ], fOrigin[ 2 ] ) ;
dp_save_string( DP_PLAYER_NAME, id, "addons/amxmodx/configs/PlayersOrigin.ini", sText ) ;
}
public Load_Origin( id )
{
new sReturnData[ 128 ] , sPos[ 3 ][ 8 ], Float:fOrigin[ 3 ] ;
dp_load_string( DP_PLAYER_NAME, id, "addons/amxmodx/configs/PlayersOrigin.ini", sReturnData, charsmax( sReturnData ) ) ;
parse( sReturnData, sPos[ 0 ], charsmax( sPos[ ] ), sPos[ 1 ], charsmax( sPos[ ] ), sPos[ 2 ], charsmax( sPos[ ] ) ) ;
fOrigin[ 0 ] = str_to_float( sPos[ 0 ] ) ;
fOrigin[ 1 ] = str_to_float( sPos[ 1 ] ) ;
fOrigin[ 2 ] = str_to_float( sPos[ 2 ] ) ;
[/pawn]
Файлы:data_player_API.sma
data_player_api.inc
Последний раз редактировалось
BlackSmoke 06 июл 2014, 12:42, всего редактировалось 3 раз(а).
-
BlackSmoke
-
- Сообщения: 1109
- Зарегистрирован: 28 июл 2012, 04:33
- Откуда: Ukraine
- Благодарил (а): 106 раз.
- Поблагодарили: 287 раз.
- Опыт программирования: Около года
- Языки программирования: Counter Strike 1.6
-
BlackSmoke » 06 июл 2014, 13:12
Нужно это обдумать.
-
BlackSmoke
-
- Сообщения: 1109
- Зарегистрирован: 28 июл 2012, 04:33
- Откуда: Ukraine
- Благодарил (а): 106 раз.
- Поблагодарили: 287 раз.
- Опыт программирования: Около года
- Языки программирования: Counter Strike 1.6
-
trololost » 06 июл 2014, 13:32
Asmodai писал(а):И? 10000? Ну выйдет 40 мб и что дальше? А ты представляешь такое количество строк из файла читать и сравнивать?
Согласен. Когда стату по юзерам вел в файлах, то очень удобно было называть файлы: STEAM00_123, а потом данные с файлов грабить построчно. Также легко проверяется наличие файла в папке, нежели строчки в файле
[Не принимаю заказы]
-
trololost
-
- Сообщения: 923
- Зарегистрирован: 05 ноя 2011, 02:25
- Благодарил (а): 104 раз.
- Поблагодарили: 358 раз.
Safety1st » 06 июл 2014, 13:45
Можно добавить возможность хранения файла в памяти и обращаться к нему только при старте и конце карты. Включение - при компиляции, а команду на использование отдает главный плагин (например, preload_file). И тогда дальнейшая работа с этими данными выполняется в памяти, а API само в конце карты сохраняет файл.
GoldSrc Gaming Community
-
Safety1st
-
- Сообщения: 1958
- Зарегистрирован: 08 окт 2011, 05:41
- Откуда: Moscow
- Благодарил (а): 1690 раз.
- Поблагодарили: 933 раз.
- Опыт программирования: Больше трех лет
- Языки программирования: Counter-Strike 1.6
Half-Life
Rafa » 06 июл 2014, 14:17
Армиранк поглотил все сервера, пабликмены/ZP держатели навряд ли перейдут на этот "API" имхо =D
за старание плюс.
-
Rafa
-
- Сообщения: 292
- Зарегистрирован: 30 сен 2012, 16:14
- Благодарил (а): 284 раз.
- Поблагодарили: 194 раз.
- Опыт программирования: Больше трех лет
- Языки программирования: Counter-Strike 1.6
-
Safety1st » 06 июл 2014, 14:29
Так API - не конечный плагин, а вспомогательный. Что скриптер заюзает - то держатели серверов и будут использовать)
GoldSrc Gaming Community
-
Safety1st
-
- Сообщения: 1958
- Зарегистрирован: 08 окт 2011, 05:41
- Откуда: Moscow
- Благодарил (а): 1690 раз.
- Поблагодарили: 933 раз.
- Опыт программирования: Больше трех лет
- Языки программирования: Counter-Strike 1.6
Half-Life
hmn3r^Ist » 06 июл 2014, 15:08
А в чем преимущество перед sqlite?
-
hmn3r^Ist
-
- Сообщения: 900
- Зарегистрирован: 19 апр 2012, 16:24
- Откуда: Petersburg
- Благодарил (а): 82 раз.
- Поблагодарили: 158 раз.
BlackSmoke » 06 июл 2014, 15:20
Да ни в чём.
-
BlackSmoke
-
- Сообщения: 1109
- Зарегистрирован: 28 июл 2012, 04:33
- Откуда: Ukraine
- Благодарил (а): 106 раз.
- Поблагодарили: 287 раз.
- Опыт программирования: Около года
- Языки программирования: Counter Strike 1.6
-
hmn3r^Ist » 06 июл 2014, 16:03
BlackSmoke писал(а):Да ни в чём.
Тогда... Зачем?
-
hmn3r^Ist
-
- Сообщения: 900
- Зарегистрирован: 19 апр 2012, 16:24
- Откуда: Petersburg
- Благодарил (а): 82 раз.
- Поблагодарили: 158 раз.
Safety1st » 06 июл 2014, 16:15
hmn3r^Ist, а зачем многие хранят данные в файлах, nVault'ах, MySQL, раз есть SQLite?
GoldSrc Gaming Community
-
Safety1st
-
- Сообщения: 1958
- Зарегистрирован: 08 окт 2011, 05:41
- Откуда: Moscow
- Благодарил (а): 1690 раз.
- Поблагодарили: 933 раз.
- Опыт программирования: Больше трех лет
- Языки программирования: Counter-Strike 1.6
Half-Life
hmn3r^Ist » 06 июл 2014, 16:27
Safety1st писал(а):hmn3r^Ist, а зачем многие хранят данные в файлах, nVault'ах, MySQL, раз есть SQLite?
У каждого свои плюсы и минусы, а у этого преимуществ перед sqlite я не заметил, только и всего
Плагин по определению должен уступать в производительности и функционалу sqlite
-
hmn3r^Ist
-
- Сообщения: 900
- Зарегистрирован: 19 апр 2012, 16:24
- Откуда: Petersburg
- Благодарил (а): 82 раз.
- Поблагодарили: 158 раз.
Вернуться в Добавленные новые плагины
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9