Авторизироваться у нас на сайте можно только через STEAM. Если у Вас нет STEAM аккаунта, зарегистрируйте бесплатный на официальном сайте steamcommunity.com, после чего нажмите на кнопку ниже и войдите на сайт. Авторизированным пользователям доступны много разных функций, позволяющих с комфортом серфить по нашему магазину. Чтобы покупать плагины, менять IP и восстанавливать ключ, авторизация не нужна.
Плагин добавляет возможность передачи другим игрокам денег, поинтов anew, опыта Army Ranks Ultimate и баланса с сайта на движке GameCMS. Но работает все не как в других подобных плагинах, а более реалистично. Игрок будет скидывать предмет на землю, в виде красивой модельки, а другой игрок в свою очередь подберет предмет (как это обычно делается с дропом оружия).
Как работает?
Пишите в чат /transfer (или консольная команда transfer_menu), выбираете например опыт и выбираете сколько скинуть. Все, предмет выбрасывается на землю, показываются соответствующие уведомления, пишутся логи, воспроизводится звук и т.п. Как обычно, плагин имеет широкий функционал и гибкую настройку.
4 встроенных типа дропа. Как писалось выше, это $, anew, xp и рубли. Но можно добавить куда больше😀 подробнее ниже.
Простой API. Благодаря нативам и форвардам, можно добавить любой другой тип дропа. В инклуде все очень подробно расписано и есть полностью готовый пример, как добавить тип дропа "жизни", там плагин на 50 строчек. Тоже весело, бегаешь и свои жизни разбрасываешь, но решил подобное в основной плагин не вшивать, кому нужно, тот легко может сделать.
Логи. Важная вещь, там очень подробно пишется кто, когда, что скинул/подобрал, сколько было у него и сколько стало. Это поможет в спорных ситуациях.
Меню. Можно гибко настроить поведение, например поставить или убрать меню подтверждения, или сделать так, чтоб меню закрывалось после выброса предмета.
Защита от умников. Игроки они такие, знают что за регистрацию на сайте(например) получат 30руб, и будут регаться да скидывать их одному человеку. Но не выйдет! У каждого типа предмета есть соответствующие квары, ограничивающие дроп. Например нельзя скинуть рубли, если на балансе останется меньше 50-ти. Смотрите конфиг, настройте как нужно именно Вам.
Модели. Весят очень мало, выглядят очень красиво и реалистично. Можно заменить на свои.
Доступ только для VIP. Можно так же ограничить доступ для дропа. Поставить на флаг или на услугу gamecms, или разрешить всем.
Свечение. Можно подсветить предметы, задать свой цвет, чтоб их было лучше видно. По умолчанию отключено, нужно всего лишь раскомментировать соответствующий квар.
Звуки. Тоже можно поменять, по умолчанию стоят стандартные звуки из игры, чтоб клиент не качал лишнего.
25.01.26BETA - обновить .amxx - исправлено чтение lang файла (баг прошлой версии) 24.10.10BETA - обновить ВСЕ ФАЙЛЫ - обновлено ядро плагина - добавлена полная мультиязычность, даже в конфигах (серверная команда fg_lang) 22.12.08BETA - обновить .amxx - обновлено ядро - добавлено уведомление, когда игрок не зареген на сайте и пытается взять деньги
На данный плагин присутствует скидка в размере 50руб на вторую покупку.
Если ранее Вы уже покупали этот плагин, то на второй сервер и последующие плагин будет стоить на 50руб дешевле!
// Лицензионный ключ вводить в файл amxmodx/data/fg_keys.ini (если файла нет, он создастся сам при рестарте/смены карты сервера)
// Включить запись логов?
// Будут записаны все действия от плагина(кто скинул, кто подобрал) в файл amxmodx/logs/transfer_rbs/TRANSFERYYYYMMDD.log
transfer_logs "1"
// Звук при дропе
// Можно использовать только .wav файлы
// Закомментируйте квар для отключения
// Полный путь до звука:
// cstrike/sound/папка/звук.wav - звук будет закачан клиенту
// valve/sound/папка/звук.wav - стандартные звуки, есть у всех клиентов, поэтому закачиваться не будет
transfer_sound_drop "valve/sound/items/weapondrop1.wav"
// Тоже самое, только при взятии
transfer_sound_pickup "valve/sound/items/gunpickup2.wav"
// Какие сообщения писать при дропе?
// "a" - в чате
// "b" - по центру экрана
// "c" - HUD
transfer_msg_drop "bc"
// Тоже самое, только при взятии
transfer_msg_pickup "bc"
// Поведение меню при дропе
// "a" - вернется на главный экран
// "b" - останется на текущем экране
// "c" - закроется
// "d" - показывать меню подтверждения дропа?
transfer_menu_type "bd"
// Настройка худа
// r g b x y time dhud
// r g b - цвет
// x y - координаты
// time - как долго будет исчезать сообщение
// type - тип худа
// 0 - отключить худ
// 1 - hud (обычный)
// 2 - DHUD (жирный текст)
transfer_hud "0 255 0 -1.0 0.25 6.0 1"
// Запретить весь /transfer, чье звание меньше этого (требуется Army Ranks Ultimate)
// "0" - разрешить с любого звания
// "1" - разрешить со звания курсант
// "2" - разрешить со звания рядовой и т.д.
transfer_army "0"
// Запретить весь /transfer, если общее кол-во фрагов в стате игрока меньше этого
// "0" - разрешить всем
transfer_frags "0"
/////////////////////////
// ОБЫЧНЫЕ ДЕНЬГИ В КС //
/////////////////////////
// Значения для дропа (будут отображаться в меню)
// Закомментируйте для отключения этого типа дропа
transfer_money_items "500 1000 5000 10000 16000"
// Флаг игрока, который может скидывать деньги
// "0" - можно всем.
// "gamecms:_transfer_money" - по услуги в gamecms
transfer_money_access "0"
// Время в секундах, в течении которого нельзя скидывать повторный дроп (чтоб не спамили)
// "0" - без ограничений
transfer_money_block "0"
// Сколько минимум единиц должно остаться у игрока после после дропа?
// "0" - не меньше нуля
transfer_money_min "0"
// Сколько максимум единиц можно дропнуть за карту
// "0" - без ограничений
transfer_money_max "50000"
// Свечение объекта в формате RGB
// Закомментировать для отключения
//transfer_money_glow "255 255 255"
// Путь до модели
transfer_money_model "models/transfer_rbs/money.mdl"
/////////////////////////////////////////////////////////////////
// ОПЫТ (требуется плагин Army Ranks Ultimate и CsStats MySQL) //
/////////////////////////////////////////////////////////////////
// Значения для дропа (будут отображаться в меню)
// Закомментируйте для отключения этого типа дропа
transfer_xp_items "10 20 50 100 200"
// Флаг игрока, который может скидывать опыт
// "0" - можно всем.
// "gamecms:_transfer_xp" - по услуги в gamecms
transfer_xp_access "t"
// Время в секундах, в течении которого нельзя скидывать повторный дроп (чтоб не спамили)
// "0" - без ограничений
transfer_xp_block "1"
// Сколько минимум единиц должно остаться у игрока после после дропа?
// В данном кваре имеется ввиду, какой номер уровня игрока должен быть, чтобы можно было скидывать опыт
// В любом случае, не получится скинуть столько опыта, чтобы звание скинулось на предыдущее
// "0" - любое звание
// "1" - курсант
// "2" - рядовой и т.д.
transfer_xp_min "5"
// Сколько максимум единиц можно дропнуть за карту
// "0" - без ограничений
transfer_xp_max "500"
// Свечение объекта в формате RGB
// Закомментировать для отключения
//transfer_xp_glow "255 255 255"
// Путь до модели
transfer_xp_model "models/transfer_rbs/xp.mdl"
////////////////////////////////////////////////////////////////////
// ПОИНТЫ /anew (требуется Army Ranks Ultimate или BonusMenu RBS) //
////////////////////////////////////////////////////////////////////
// Значения для дропа (будут отображаться в меню)
// Закомментируйте для отключения этого типа дропа
transfer_anew_items "1 2 5 10 15"
// Флаг игрока, который может скидывать поинты
// "0" - можно всем.
// "gamecms:_transfer_anew" - по услуги в gamecms
transfer_anew_access "0"
// Время в секундах, в течении которого нельзя скидывать повторный дроп (чтоб не спамили)
// "0" - без ограничений
transfer_anew_block "0"
// Сколько минимум единиц должно остаться у игрока после после дропа?
// "0" - не меньше нуля
transfer_anew_min "10"
// Сколько максимум единиц можно дропнуть за карту
// "0" - без ограничений
transfer_anew_max "50"
// Свечение объекта в формате RGB
// Закомментировать для отключения
//transfer_anew_glow "255 255 255"
// Путь до модели
transfer_anew_model "models/transfer_rbs/anew.mdl"
////////////////////////////////////////////////////////////////////////////
// Деньги с баланса юзера на сайте gamecms (требуется плагин GameCMS API) //
////////////////////////////////////////////////////////////////////////////
// Значения для дропа (будут отображаться в меню)
// Закомментируйте для отключения этого типа дропа
//transfer_balance_items "1 2 5 10 15"
// Флаг игрока, который может скидывать поинты
// "0" - можно всем.
// "gamecms:_transfer_balance" - по услуги в gamecms
transfer_balance_access "0"
// Время в секундах, в течении которого нельзя скидывать повторный дроп (чтоб не спамили)
// "0" - без ограничений
transfer_balance_block "30"
// Сколько минимум единиц должно остаться у игрока после после дропа?
// "0" - не меньше нуля
transfer_balance_min "50"
// Сколько максимум единиц можно дропнуть за карту
// "0" - без ограничений
transfer_balance_max "100"
// Свечение объекта в формате RGB
// Закомментировать для отключения
//transfer_balance_glow "255 255 255"
// Путь до модели
transfer_balance_model "models/transfer_rbs/balance.mdl"
// При включенном кваре, плагин будет записывать в личный кабинет юзера на сайте GameCMS информацию об изменении баланса
// При первом запуске сервера, он добавит в таблицу `money__actions_types` необходимые строки, изменить их можно в ланг файле TRANSFER_GAMECMS_*
// ВНИМАНИЕ! При включении этого лога, обязательно установите ограничение в квар transfer_balance_block, чтобы сократить кол-во запросов к БД
transfer_gamecms_logs "0"
//////////////////////////////////////////////////////////////
// С помощью нативов, можно добавить другие дропы //
// Например опыт в каком ни будь стороннем плагине //
// Более подробно расписано в инклуде transfer_rbs.inc //
//////////////////////////////////////////////////////////////
[ru]
TRANSFER_TAG = !n[!gTRANSFER!n]
TRANSFER_ALIVE = !tДоступно только для живых!
TRANSFER_ACCESS = Недостаточно прав!
TRANSFER_ARMY = Требуется минимум звание %s!
TRANSFER_FRAGS = Требуется набрать минимум %d фрагов!
TRANSFER_BLOCK = Разрешено через %d сек...
TRANSFER_MAX = За карту нельзя скидывать больше %L
TRANSFER_MAIN_TITLE = \r[\yTRANSFER\r]\w Что Вы хотите скинуть?
TRANSFER_MAIN_ITEM = %L
TRANSFER_MAIN_EXIT = Выход
TRANSFER_SUB_TITLE = \r[\yTRANSFER\r]\w Скинуть \r%L
TRANSFER_SUB_BACK = Назад
TRANSFER_CONFIRM_TITLE = \r[\yTRANSFER\r]\w Уверены, что хотите скинуть \r%L\w?
TRANSFER_CONFIRM_INFO = \wБыло:\r%L \d| \wСтанет:\r%L
TRANSFER_CONFIRM_YES = Да, скинуть
TRANSFER_GAMECMS_DROP = Дропнул
TRANSFER_GAMECMS_PICKUP = Подобрал
TRANSFER_DROP_CHAT = !n[!gTRANSFER!n] Вы скинули %L
TRANSFER_DROP_CENTER = Вы скинули %L
TRANSFER_DROP_HUD = Вы скинули %L
TRANSFER_PICKUP_CHAT = !n[!gTRANSFER!n] Вы подобрали %L
TRANSFER_PICKUP_CENTER = Вы подобрали %L
TRANSFER_PICKUP_HUD = Вы подобрали %L
TRANSFER_NAME_MONEY = Деньги
TRANSFER_LACK_MONEY = Недостаточно денег! Должно остаться минимум %d$!
TRANSFER_MENU_MONEY = %d\y$
TRANSFER_CHAT_MONEY = !g%d!n$
TRANSFER_NAME_XP = Опыт
TRANSFER_LACK_XP = У Вас недостаточно опыта!
TRANSFER_LOSS_XP = Вы потеряете звание, если поставите столько опыта!
TRANSFER_ACCE_XP = Разрешено только со звания %s!
TRANSFER_MENU_XP = %d\yXP
TRANSFER_CHAT_XP = !g%d!nXP
TRANSFER_NAME_ANEW = Поинты
TRANSFER_LACK_ANEW = Недостаточно поинтов! Должно остаться минимум %danew!
TRANSFER_MENU_ANEW = %d\yanew
TRANSFER_CHAT_ANEW = !g%d!nanew
TRANSFER_NAME_BALANCE = Баланс на сайте
TRANSFER_LOSS_BALANCE = Вы не зарегистрированы на сайте!
TRANSFER_LACK_BALANCE = Недостаточно денег на балансе! Должно остаться минимум %dруб!
TRANSFER_MENU_BALANCE = %d\yруб
TRANSFER_CHAT_BALANCE = !g%d!nруб
/* Transfer RBS Functions
*
* by SKAJIbnEJIb
*
* This file is provided as is (no warranties).
*/
#if defined _transfer_rbs_included
#endinput
#endif
#define _transfer_rbs_included
#define TRANSFER_MONEY 0 // обычные деньги в кс
#define TRANSFER_XP 1 // опыт арми ранкс
#define TRANSFER_ANEW 2 // поинты /anew
#define TRANSFER_BALANCE 3 // баланс GameCMS
#define TRANSFER_DEFAULT 4 // кол-во стандартных дропов
#define TRANSFER_MAX 9 // максимальное кол-во дропов не должно превышать 9-ти!
#define TRANSFER_ERROR_SUCCESS 0 // если все нормально
#define TRANSFER_ERROR_LACK 1 // если не хватает средств(основной плагин напишет сообщение в чат)
#define TRANSFER_ERROR_OTHER -1 // другая ошибка, сами напишите свое сообщение в чат, дроп при этом не сделается
#if defined TRANSFER_RECURSION
#undef _transfer_rbs_included
#endinput
#endif
// Вызывается перед проверками на дроп
// id - айди игрока
// type - тип дропа (константы TRANSFER_* или добавленный тип нативом transfer_custom_add)
// value - значение
// post - до или после события
// res - если проверки прошли успешно, то вернет 1
// В этом форварде можно делает собственные проверки, и в случае необходимости заблочить дроп return PLUGIN_HANDLED
forward transfer_player_check(id, type, value, post=0, res);
// Вызывается перед списанием средств
// id - айди игрока
// type - тип дропа (константы TRANSFER_* или добавленный тип нативом transfer_custom_add)
// value - значение
// post - до или после события
// res - вернет 1 если все успешно списалось
// В этом форварде можно делает собственные проверки, и в случае необходимости заблочить дроп return PLUGIN_HANDLED
forward transfer_player_set(id, type, value, post=0, res);
// Вызывается после всех проверок и списаний средств, прямо перед дропом
// id - айди игрока
// type - тип дропа (константы TRANSFER_* или добавленный тип нативом transfer_custom_add)
// value - значение
// post - до или после события
forward transfer_player_drop(id, type, value, post=0);
// Вызывается при взятии дропа
// id - айди игрока
// type - тип дропа (константы TRANSFER_* или добавленный тип нативом transfer_custom_add)
// value - значение
// post - до или после события
forward transfer_player_pickup(id, type, value, post=0);
// Добавляет новый тип дропа
// cvar_ident - идентификатор для кваров(потом в transfer_rbs.cfg вписать квары transfer_идентификатор_* для добавления значений)
// lang_name - идентификатор для ланг файла TRANSFER_NAME_*
// lang_lack - идентификатор для ланг файла TRANSFER_LACK_*
// lang_menu - идентификатор для ланг файла TRANSFER_MENU_*
// lang_chat - идентификатор для ланг файла TRANSFER_CHAT_*
// идентификаторы для ланг файла потом нужно будет вписать в transfer_rbs.txt, аналогично тем что там уже есть
// вызывать натив нужно в plugin_precache, при этом, плагин использующий этот натив, должен стоять выше transfer_rbs.amxx в plugins.ini
//
// Возвращаемые значения
// type - вернет айди нового типа
// -1 - ошибка (превышено кол-во типов, максимум 9 можно включая стандартные)
// -2 - ошибка (выполняется натив слишком поздно, нужно основной плагин transfer_rbs.amxx поставить ниже в plugins.ini)
native transfer_custom_add(cvar_ident[], lang_name[], lang_lack[], lang_menu[], lang_chat[]);
// Вызывается когда игрок дропнул не стандартный тип (добавленный нативом transfer_custom_add)
// Соответственно в этом событии нужно производить функцию отнятия value
// id - айди игрока, что сделал дроп
// type - тип дропа (получили его нативом transfer_custom_add)
// value - значение дропа
// data[2] - нужно для логов
// [0] - в эту ячейку записать сколько было
// [1] - в эту ячейку записать сколько стало
// это нужно для логов, например игрок дропнул опыт AES, в [0] надо записать сколько опыта у него было,
// а в [1] записать сколько стало после отнятия value
// post
// 0 - во время проверок
// 1 - после успешных проверок, непосредственно перед дропом
// Возвращать TRANSFER_ERROR_*
forward transfer_custom_drop(id, type, value, data[2], post);
// Вызывается когда игрок поднял не стандартный тип дропа (только для типов добавленных через transfer_custom_add)
// Соответственно тут нужно будет добавить игроку value
// id - айди игрока, кто поднял дроп
// owner - айди игрока, что скинул этот дроп
// type - тип дропа (получили его нативом transfer_custom_add)
// value - значение дропа
// data[2] - нужно для логов
// [0] - в эту ячейку записать сколько было
// [1] - в эту ячейку записать сколько стало
// это нужно для логов, например игрок поднял опыт AES, в [0] надо записать сколько опыта у него было,
// а в [1] записать сколько стало после прибавления value
// Что возвращать в return
// PLUGIN_HANDLED если хотите заблокировать запись в лог
forward transfer_custom_pickup(id, owner, type, value, data[2]);
// Вызовется как только плагин прочитает квары
// items - кол-во значений для дропа
// access - значение квара transfer_*_access
// glow - значение квара transfer_*_glow
// block - значение квара transfer_*_block
// min - значение квара transfer_*_min
// max - значение квара transfer_*_max
// model - значение квара transfer_*_model
forward transfer_custom_cvars(type, items[9], access[], glow[3], block, min, max, model[]);
// Пример плагина для добавления кастомных дропов
/*
#include <amxmodx>
#include <fakemeta>
#include "include/transfer_rbs.inc"
new g_TypeHealth, g_MinHealth;
public plugin_init()
{
register_plugin("Transfer Addons", "1.0", "SKAJIbnEJIb")
}
public plugin_precache()
{
g_TypeHealth = transfer_custom_add("health", "TRANSFER_NAME_HEALTH", "TRANSFER_LACK_HEALTH", "TRANSFER_MENU_HEALTH", "TRANSFER_CHAT_HEALTH");
// Добавляем в конфиг transfer_rbs.cfg новые квары:
// transfer_health_items "5 10 20 40"
// transfer_health_access "0"
// transfer_health_block "0"
// transfer_health_min "0"
// transfer_health_max "0"
// transfer_health_glow "255 255 255"
// transfer_health_model "models/chick.mdl"
// Добавляем новые идентификаторы в ланг файл
// TRANSFER_NAME_HEALTH = Жизни
// TRANSFER_LACK_HEALTH = У Вас недостаточно жизней!
// TRANSFER_MENU_HEALTH = %d\yHP
// TRANSFER_CHAT_HEALTH = !g%d!nHP
}
public transfer_custom_cvars(type, items[9], access[], glow[3], block, min, max, model[])
{
if (type==g_TypeHealth) { g_MinHealth=min; } // узнаем значение transfer_health_min, если вызывается тип дропа жизни
}
public transfer_custom_drop(id, type, value, data[2], post) // Игрок делает дроп
{
if (type==g_TypeHealth) // если вызывается тип дропа жизни
{
data[0]=fm_get_user_health(id); // было жизней
data[1]=data[0]-value; // станет жизней
if (data[1] <= g_MinHealth) { return TRANSFER_ERROR_LACK; } // не хватает жизней для дропа, возвращаем TRANSFER_ERROR_LACK, чтоб основной плагин уведомил игрока об этом
if (post) // если вызывается пост событие, значит предыдущие проверки проверки успешно, нужно отнять жизни
{
fm_set_user_health(id, data[1]); // отняли у игрока жизни
}
}
return TRANSFER_ERROR_SUCCESS;
}
public transfer_custom_pickup(id, owner, type, value, data[2]) // Игрок поднял дроп
{
if (type==g_TypeHealth) // если вызывается тип жизни
{
data[0]=fm_get_user_health(id); // было жизней
data[1]=data[0]+value; // станет жизней
fm_set_user_health(id, data[1]); // прибавили жизни игроку
}
}
stock fm_set_user_health(index, health) { health > 0 ? set_pev(index, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, index); return 1; }
stock fm_get_user_health(id) { return pev(id, pev_health); }
*/