• Пожалуйста, создайте название темы отражающее ее смысл
  • Для ускорения решения Вашего вопроса заполните обязательные поля и подробно опишите возникшую проблему

Помощь GameCMS_Present Coins Addon

ashok49

Участник
Сообщения
47
Реакции
4
Баллы
8
Заменил код который указал @zhorzh78, чтобы свои не могли подбирать монету.
Код:
CmsSpawnPresentById(500, origin, true, -get_user_team(killer), 15.0)

Но все равно подбирается . При компиляций


2020-06-03_130735.jpg

Помогите еще добавить сообщение , что нельзя подбирать своим
 
Последнее редактирование:
zhorzh78, путь к модели меняется в основном плагине ? Хотелось бы видеть 2 модели. Один синий за кт и красный тт.
 
ashok49, Создавайте 2 презента с разными моделями, заодно настройки для команд там зададите.
Вы странно просите помощь по скриптингу, ничего не делая и не предоставляя исходный код. Для информации: я недержу у себя ваши коды со всеми исправлениями и дополнениями.
 
zhorzh78,
Код:
{
    //добавляем презент "монета"
    //указываем модель монеты "exp2_blue" без .mdl
    coinPresent = CmsAddPresent(500, "монета", -2, -3, 0, "exp2_blue", 0);
    coinPresent = CmsAddPresent(500, "монета", -2, -3, 0, "exp2_red", 0);
    g_API = true;
}

вот так ? как сделать, чтобы красный выпадал у тт, синие кт?
 

Вложения

  • presents_coins_on_death.1.1.sma
    4 KB · Просмотры: 3
ashok49, код не смотрел, не удобно.
Номера презентов должны быть уникальные, т.е. разные. Поставьте в каждом презента свой доступ по команде, смотрите параметры в нативе. При спавне выбирайте презент в зависимости от команды игрока. Если киллер из команды тт, то спавните презент красный, с доступом только для тт.
 
zhorzh78,
Код:
//Проверяем, загружен ли API для выдачи денег
public OnAPIPluginLoaded(Handle:sqlTuple)
{
    //добавляем презент "монета"
    //указываем модель монеты "exp2_blue" без .mdl
    coinPresent = CmsAddPresent(500, "монета", -1, -3, 0, "exp2_blue", 0); выпадает у кт , подбирает тт
    coinPresent = CmsAddPresent(501, "монета", -2, -3, 0, "exp2_red", 0); выпадает у тт , подбирает кт
    g_API = true;
}

Правильно ли я сделал ? Где то еще надо что то менять ?
Добавлено:

Код:
    CmsSpawnPresentById(500, origin, true, -get_user_team(killer), 15.0)
    CmsSpawnPresentById(501, origin, true, -get_user_team(killer), 15.0)
вот здесь еще так сделал

Код:
    {
        if(itemId == 500)
        {
            rh_emit_sound2(iEntity, id, CHAN_AUTO, g_szSound);
            //===== тут- для примера возврата функции
            if(random_num(0, 10) == 2)
            {
                //вернем "3" для запрета поднятия монетки и блокирования стандартного сообщения
                //т.к. задаем свое сообщение
                client_print_color(id, 0, "Манетка паламалась)) тибе аблом");
                return 3;
            }
            //===== конец примера
          
            if(cmsapi_add_user_money(id, fMoney))
            {
                client_print_color(id, 0, "%L Ты получил награду %.2f рублей", LANG_SERVER, "CMS_PRESENT_PREFIX_CHAT", fMoney);
                //вернем "2" для разрешения поднять монетку и блокировки стандартного сообщения о поднятии
                //т.к. задали свое сообщение
                return 2;
            }
        }
    }

Здесь тоже надо кажется что то добавлять "501"
 
Последнее редактирование:
Перед спавном проверить команду игрока.
 
zhorzh78,
Код:
#include <amxmodx>
#include <gamecms5>
#include <gamecms_present>
#include <reapi>

#define PLUGIN "GameCMS_Present Coins Addon"
#define VERSION "1.1"
#define AUTHOR "zhorzh78"

#if AMXX_VERSION_NUM < 183
    #include <colorchat>
#endif

new Float:fMoney = 0.05;     //сумма денег за монетку (на баланс сайта)
new bool:killerOnly = false    //true- если поднять монету разрешено только киллеру (чтобы не ругались за монеты :))
                            //false- если поднять монету разрешено любому

new const g_szSound[] = "money.wav"; //звук при поднятии из папки sound/

new bool:g_API;
new coinPresent;
                          
public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
 
    register_event("DeathMsg", "EventDeathMessage", "a");
}

public plugin_precache()
{
    precache_sound(g_szSound);
}

//Если основной плагин презентов не стартанул, останавливаем
public OnPresentCoreStopped()
    pause("d");

//Проверяем, загружен ли API для выдачи денег
public OnAPIPluginLoaded(Handle:sqlTuple)
{
    //добавляем презент "монета"
    //указываем модель монеты "exp2_blue" без .mdl
    coinPresent = CmsAddPresent(500, "монета", -1, -3, 0, "exp2_blue", 0); // выпадает у кт , подбирает тт
    coinPresent = CmsAddPresent(501, "монета", -2, -3, 0, "exp2_red", 0); // выпадает у тт , подбирает кт
    g_API = true;
}
 

//Событие смерти игрока
public EventDeathMessage(killer, victim)
{
    if(!coinPresent)
        return;

    new killer = read_data(1);
    new victim = read_data(2);

    //если умер сам, не спавним монету
    if(killer == victim)
        return;

    new Float:origin[3], sorigin[3]
    get_user_origin(victim, sorigin, 0)

    origin[0] = float(sorigin[0]);
    origin[1] = float(sorigin[1]);
    origin[2] = float(sorigin[2]);
 
    //презент создаем только для киллера или для всех (зависит от настройки)
    //спавним презент без стандартного уведомления в чат о его появлении (параметр true блокирует уведомление)
    //зададим время до удаления монетки 15.0 сек
    CmsSpawnPresentById(500, origin, true, -get_user_team(killer), 15.0)
    CmsSpawnPresentById(501, origin, true, -get_user_team(killer), 15.0)
}

//событие попытки поднять презент
public OnTakePresent(id, itemId, iEntity)
{
    //если API загружен и игрок- владелец монеты (киллер) (проверку игрока проверяет Core)
    if(g_API)
    {
        if(itemId == 500)
        {
            rh_emit_sound2(iEntity, id, CHAN_AUTO, g_szSound);
            //===== тут- для примера возврата функции
            if(random_num(0, 10) == 2)
            {
                //вернем "3" для запрета поднятия монетки и блокирования стандартного сообщения
                //т.к. задаем свое сообщение
                client_print_color(id, 0, "Манетка паламалась)) тибе аблом");
                return 3;
            }
            //===== конец примера
          
            if(cmsapi_add_user_money(id, fMoney))
            {
                client_print_color(id, 0, "%L Ты получил награду %.2f рублей", LANG_SERVER, "CMS_PRESENT_PREFIX_CHAT", fMoney);
                //вернем "2" для разрешения поднять монетку и блокировки стандартного сообщения о поднятии
                //т.к. задали свое сообщение
                return 2;
            }
        }
    }

    return 0;
}

public client_disconnected(id)
CmsRemovePresent(0, id)

можете проверить ? Дальше соображайки не хватает )
 
ashok49,
C++:
#include <amxmodx>
#include <gamecms5>
#include <gamecms_present>
#include <reapi>

#define PLUGIN "GameCMS_Present Coins Addon"
#define VERSION "1.1"
#define AUTHOR "zhorzh78"

#if AMXX_VERSION_NUM < 183
    #include <colorchat>
#endif

new Float:fMoney = 0.05;     //сумма денег за монетку (на баланс сайта)
new const g_szSound[] = "money.wav"; //звук при поднятии из папки sound/

new bool:g_API;
new coinPresentT, coinPresentCT;
                          
public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
 
    register_event("DeathMsg", "EventDeathMessage", "a");
}

public plugin_precache()
{
    precache_sound(g_szSound);
}

//Если основной плагин презентов не стартанул, останавливаем
public OnPresentCoreStopped()
    pause("d");

//Проверяем, загружен ли API для выдачи денег
public OnAPIPluginLoaded(Handle:sqlTuple)
{
    //добавляем презент "монета"
    //указываем модель монеты "exp2_blue" без .mdl
    coinPresentCT = CmsAddPresent(500, "монета", -1, -3, 0, "exp2_blue", 0); // выпадает у кт , подбирает тт
    coinPresentT = CmsAddPresent(501, "монета", -1, -3, 0, "exp2_red", 0); // выпадает у тт , подбирает кт
    g_API = true;
}
 

//Событие смерти игрока
public EventDeathMessage(killer, victim)
{
    new killer = read_data(1);
    new victim = read_data(2);

    //если умер сам, не спавним монету
    if(killer == victim)
        return;

    new Float:origin[3], sorigin[3]
    get_user_origin(victim, sorigin, 0)

    origin[0] = float(sorigin[0]);
    origin[1] = float(sorigin[1]);
    origin[2] = float(sorigin[2]);
 
    //презент создаем только для киллера или для всех (зависит от настройки)
    //спавним презент без стандартного уведомления в чат о его появлении (параметр true блокирует уведомление)
    //зададим время до удаления монетки 15.0 сек
    new iTeam = get_user_team(killer);
    if(iTeam == 1 && coinPresentCT)
        CmsSpawnPresentById(500, origin, true, -1, 15.0)
    else if(iTeam == 2 && coinPresentT)
        CmsSpawnPresentById(501, origin, true, -2, 15.0)
    
}

//событие попытки поднять презент
public OnTakePresent(id, itemId, iEntity)
{
    //если API загружен и игрок- владелец монеты (киллер) (проверку игрока проверяет Core)
    if(g_API)
    {
        if(itemId == 500 || itemId == 501)
        {
            rh_emit_sound2(iEntity, id, CHAN_AUTO, g_szSound);

            if(cmsapi_add_user_money(id, fMoney))
            {
                client_print_color(id, 0, "%L Ты получил награду %.2f рублей", LANG_SERVER, "CMS_PRESENT_PREFIX_CHAT", fMoney);
                //вернем "2" для разрешения поднять монетку и блокировки стандартного сообщения о поднятии
                //т.к. задали свое сообщение
                return 2;
            }
        }
    }

    return 0;
}

public client_disconnected(id)
CmsRemovePresent(0, id)
 
Назад
Сверху