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

System Coins

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

Модератор: Leonidddd

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

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

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

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

System Coins

Сообщение БиЗоН » 23 авг 2022, 11:58

Автор: 6u3oH
Версия: 1.3.2a
Описание: Плагин добавит на сервер дополнительную валюту: монеты.

Требования
– ReAPI
– База данных MySQL

Благодарности
t3rkecorejz
Вы должны зарегистрироваться, чтобы видеть ссылки.
Вы должны зарегистрироваться, чтобы видеть ссылки.

Начисления монет происходит по следующим параметрам:
1. Во время убийства.
– убийство игрока;
– убийство ножом.
– убийство в голову.
– убийство гранатой.
– имеющийся дополнительный привилегированный флаг, указанный в настройках.
2. Победа команды

Для каждого типа начисления присутствует квар настройки количества.
Начисление может суммироваться по нескольким параметрам.
Несколько примеров:
1. Убийство + убийство ножом.
2. Убийство + убийство ножом + убийство в голову.
3. Убийство + флаг для дополнительного начисления монет.

Монеты выпадают с игрока при смерти, имеют визуальную модель, звук при подборе.
Игроки, имеющие указанный привилегированный флаг, имеют возможность притягивать к себе выпавшие монеты (автоматически в указанном радиусе). Если же таких игроков несколько, то притягивать к себе монету будет тот, кто стоит ближе к монете по принципе минимального расстояния.

В архиве имеется пример использования нативов.
Примеры использования форвардов и недавно введенных нативов (некоторые условия просто для примера):

1. Блокировка пополнения монет для игрока, который имеет монет больше чем условные 9999.
Код: Выделить всё
#include <amxmodx>
#include <coins_system>

public sc_give_coins_pre(pPlayer, iAddCoins)
{
    if(get_user_coins(pPlayer) + iAddCoins > 9999)
    {
        set_user_coins(pPlayer, 9999);
        return SC_HANDLED;
    }

    return SC_IGNORE;


2. Событие получения монет и выведение информации в DHUD:
Код: Выделить всё
#include <amxmodx>
#include <coins_system>

public sc_give_coins_post(pPlayer, iAddCoins)
{
    set_dhudmessage(0, 255, 0, -1.0, -1.0, .holdtime = 3.0);
    show_dhudmessage(pPlayer, "Вы получили: %i монет", iAddCoins);


3. Блокировка поднятия монеты для игрока, который имеет монет больше чем условные 2500.
Код: Выделить всё
#include <amxmodx>
#include <coins_system>

public sc_coins_pickup_pre(pPlayer, eEnt)
{
    if(get_user_coins(pPlayer) > 2500)
        return SC_HANDLED;

    return SC_IGNORE;


4. Событие поднятия монеты и выведение информации в DHUD:
Код: Выделить всё
#include <amxmodx>
#include <coins_system>

public sc_coins_pickup_post(pPlayer, eEnt)
{
    set_dhudmessage(0, 255, 0, -1.0, -1.0, .holdtime = 3.0);
    show_dhudmessage(pPlayer, "Вы подняли монету");


5. Блокировка притягивания монет игроком, который имеет более условных 1000 монет
Код: Выделить всё
#include <amxmodx>
#include <coins_system>

public sc_coin_pull(pPlayer, eEnt)
{
    if(get_user_coins(pPlayer) > 1000)
        return SC_HANDLED;

    return SC_IGNORE;


6. Дроп монеты из игрока при попадании по нему, если у него есть монеты:
Код: Выделить всё
#include <amxmodx>
#include <coins_system>
#include <reapi>

public plugin_init()
{
    RegisterHookChain(RG_CBasePlayer_TakeDamage, "@CBasePlayer_TakeDamage_Post", true);
}

@
CBasePlayer_TakeDamage_Post(pVictim, pAttacker, iCorpse)
{
    if(!is_user_connected(pVictim) || !is_user_connected(pAttacker) || get_member(pVictim, m_iTeam) == get_member(pAttacker, m_iTeam))
        return;

    user_drop_coins(pVictim, 1, true);


Файл с настройками автоматически будет создан при первой загрузке плагина.
Код: Выделить всё
// Количество выдаваемых монет за простое убийство
// -
// Default: "1"
sc_give_kill "1"

// Количество выдаваемых монет за убийство в голову
// -
// Default: "1"
sc_give_kill_head "1"

// Количество выдаваемых монет за убийство HE гранатой
// -
// Default: "1"
sc_give_kill_hegrenade "1"

// Количество выдаваемых монет за убийство ножом
// -
// Default: "1"
sc_give_kill_knife "1"

// Количество выдаваемых монет для игроков с флагами, указанном в кваре 'sc_priv_flags'
// -
// Default: "1"
sc_give_kill_with_flags "1"

// Флаги для доступа к притягиванию монет и получению допольнительных монет за убийство
// -
// Default: "t"
sc_priv_flags "t"

// Количество выдаваемых монет игрокам команды, одержавшей победу
// -
// Default: "3"
sc_give_team_win "3"

// Выпадение монет с игрока при смерти
// 0 - нет
// 1 - да
// -
// Default: "1"
// Minimum: "0.000000"
// Maximum: "1.000000"
sc_drop_enable "1"

// Минимальное количество монет, выпадающих с игрока
// -
// Default: "1"
sc_drop_min_value "1"

// Максимальное количество монет, выпадающих с игрока
// -
// Default: "3"
sc_drop_max_value "3"

// Кто может поднимать монеты
// 0 - все
// 1 - только убийца (видит монеты только он же)
// 2 - только союзники
// 3 - только враги
// -
// Default: "0"
sc_drop_action "0"

// Анимация модели
// 0 - нет
// 1 - движение вверх-вниз, вращение
// 2 - вращение
// -
// Default: "1"
sc_drop_animation "1"

// Скорость проигрывания анимации модели (дробное значение)
// -
// Default: "0.5"
sc_drop_animtime "0.5"

// Подсветка (glow-свечение) монеты
// 0 - нет
// 1 - заданный кваром 'sc_glow_color' цвет
// 2 - цвет команды
// -
// Default: "1"
sc_glow_type "1"

// Цвет glow (формат 'R G B') для 'sc_glow_type' = 1
// -
// Default: "255 255 128"
sc_glow_color "255 255 128"

// Толщина (плотность) эффекта glow (0-255)
// -
// Default: "15"
// Minimum: "0.000000"
// Maximum: "255.000000"
sc_glow_amount "15"

// Притягивание монет к привилегированным игрокам
// 0 - нет
// 1 - да
// -
// Default: "1"
// Minimum: "0.000000"
// Maximum: "1.000000"
sc_pull_enable "1"

// Радиус действия для притягивания монет в юнитах
// -
// Default: "500"
sc_pull_radius "500"

// Цвет худ-сообщения (формат 'R G B')
// -
// Default: "255 0 255"
sc_hud_color "255 0 255"

// Показ худ-сообщения игроку о его кол-ве монет
// 0 - нет
// 1 - да
// -
// Default: "1"
// Minimum: "0.000000"
// Maximum: "1.000000"
sc_hud_enable "1"

// Позиция (координаты на экране) для отображения худ-сообщения (формат 'X Y')
// -
// Default: "0.01 0.18"
sc_hud_position "0.01 0.18"

// Показ худ-сообщения игроку о кол-ве монет за наблюдаемыми игроками
// 0 - нет
// 1 - да
// -
// Default: "1"
// Minimum: "0.000000"
// Maximum: "1.000000"
sc_hud_spectator_enable "1"

// Позиция (координаты на экране) для отображения худ-сообщения за наблюдаемым игроком (формат 'X Y')
// -
// Default: "0.01 0.22"
sc_hud_spectator_position "0.01 0.22"

// Удаление монет в конце раунда, разбросанных по карте (неподобранные выпавшие с игроков)
// 0 - нет
// 1 - да
// -
// Default: "0"
// Minimum: "0.000000"
// Maximum: "1.000000"
sc_coin_clear "0"

// SQL: IP
// -
// Default: "localhost"
sc_mysql_host "localhost"

// SQL: база данных
// -
// Default: "db"
sc_mysql_database "db"

// SQL: пользователь
// -
// Default: "root"
sc_mysql_user "root"

// SQL: пароль
// -
// Default: "pass"
sc_mysql_pass "pass"

// SQL: таблица
// -
// Default: "tbl_coin"
sc_mysql_table "tbl_coin"

// Количество попыток для подключения к базе данных
// -
// Default: "5"
sc_mysql_attempts_connect_count "5" 


coins_system.inc
Код: Выделить всё
/*
* Функция возвращает количество монет у игрока
* pPlayer - индекс игрока
*/
native get_user_coins(pPlayer);

/*
* Функция прибавляет заданное количество монет игроку
* pPlayer - индекс игрока
* iAddCoins - добавляемое количество
*/
native add_user_coins(pPlayer, iAddCoins);

/*
* Функция устанавливает заданное количество монет игроку
* pPlayer - индекс игрока
* iSetCoins - устанавливаемое количество
*/
native set_user_coins(pPlayer, iSetCoins);

/*
* Функция имитирует выброс монет из игрока
* pPlayer - индекс игрока
* iDropCount - количество монет для выброса
* bIsCoinCheck - учитывать ли монеты (false/true)
* ->
* (false - монеты будут выброшены, но не будут вычитаться с баланса игрока)
* (true - будут учитываться, если выброс монет доведёт баланс игрока до 0, то выброс прекратится)
*/
native user_drop_coins(pPlayer, iDropCount, bool: bIsCoinCheck)

/*
* Функция вызывается в момент изменения количества монет с возможностью блокировки
* Для блокировки используйте return SC_HANDLED, для игнорирования - SC_IGNORE.
* pPlayer - индекс игрока
* iAddCoins - добавляемое количество
*/
forward sc_give_coins_pre(pPlayer, iAddCoins);

/*
* Функция вызывается в момент изменения количества монет
* pPlayer - индекс игрока
* iAddCoins - добавляемое количество
*/
forward sc_give_coins_post(pPlayer, iAddCoins);

/*
* Функция вызывается в момент поднятия монеты с возможностью блокировки
* Для блокировки используйте return SC_HANDLED, для игнорирования - SC_IGNORE.
* pPlayer - индекс игрока
* eEnt - индекс энтити монеты
*/
forward sc_coins_pickup_pre(pPlayer, eEnt);

/*
* Функция вызывается в момент поднятия монеты
* pPlayer - индекс игрока
* eEnt - индекс энтити монеты
*/
forward sc_coins_pickup_post(pPlayer, eEnt);

/*
* Функция вызывается в момент притягивания монеты игроком с возможностью блокировки
* Для блокировки используйте return SC_HANDLED, для игнорирования - SC_IGNORE.
* pPlayer - индекс игрока
* eEnt - индекс энтити монеты
*/
forward sc_coin_pull(pPlayer, eEnt);

const SC_IGNORE = 0xA734;
const SC_HANDLED = 0xB371
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Вечно занятой. Вечно в павне.
Аватара пользователя
БиЗоН
 
Сообщения: 165
Зарегистрирован: 24 мар 2014, 21:05
Благодарил (а): 10 раз.
Поблагодарили: 49 раз.
Опыт программирования: Больше трех лет

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

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

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