Иконка ресурса

Spawn Money 1.2b

Нет прав для скачивания
Сообщения
2,143
Реакции
1,223
Помог
44 раз(а)
EnemyDown,
Код:
#include <amxmodx>
#include <reapi>

new cvarMoney;
new cvarMoneyNoVip;
new round_number;

#define FLAG_ACCESS        ADMIN_LEVEL_H // default flag "t"
#define ROUND            3

public plugin_init() {
    register_plugin("Spawn Money", "1.2b", "Don.C");

    RegisterHookChain(RG_RoundEnd, "RoundEnd_Post", .post = true);
    RegisterHookChain(RG_CSGameRules_RestartRound, "NewRound_Post", .post = true);
    RegisterHookChain(RG_CBasePlayer_Spawn, "PlayerSpawn_Post", .post = true);
   
    cvarMoney = register_cvar("vip_spawn_money_amount", "16000");
    cvarMoneyNoVip = register_cvar("novip_money_amount", "7777");
}

public RoundEnd_Post(WinStatus:status, ScenarioEventEndRound:event, Float:tmDelay) {
    if(event == ROUND_GAME_COMMENCE || event == ROUND_GAME_RESTART) round_number = 0;
}

public NewRound_Post() round_number++;

public PlayerSpawn_Post(id) {
    if(round_number < ROUND) return;
    if(!is_user_alive(id)) return;

    rg_add_account(id, isVIP(id) ? get_pcvar_num(cvarMoney) : get_pcvar_num(cvarMoneyNoVip), AS_SET);
}

public isVIP(id) {
    return get_user_flags(id) & FLAG_ACCESS;
}
 
Сообщения
106
Реакции
12
Помог
1 раз(а)
Minni, Спасибо!
Только почему-то деньги выдаются не в дополнение к имеющимся, а вместо. Например при таких настройках:
Код:
cvarMoney = register_cvar("vip_spawn_money_amount", "2000");
cvarMoneyNoVip = register_cvar("novip_money_amount", "1000");
У вип игрока по окончании предыдущего раунда было 5000$, а в начале раунда у него становится 2000$.
Или это так и задумано автором, а я не правильно понял смысл плагина. Тогда прошу извинить :sclerosis:
 
Сообщения
316
Реакции
131
Помог
4 раз(а)
EnemyDown, каждый раунд выдает установленную вами сумму, без разницы сколько у вас было $ до этого, новый раунд - снова 2000/1000 $
 

RockTheStreet

Саппорт года
Сообщения
1,743
Реакции
346
Помог
40 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
alabamaster1337, Тогда поправь описание, ибо cs_set_user_money не выдаёт деньги, а устанавливает определённое количество.
Либо перепиши плагин, что будет логичнее. На amxxmodx был же пример выдачи денег.
 
Сообщения
287
Реакции
223
Помог
6 раз(а)
EnemyDown,
C++:
public PlayerSpawn_Post(id) {
    if(round_number < ROUND) return;
    if(!is_user_alive(id)) return;

-rg_add_account(id, isVIP(id) ? get_pcvar_num(cvarMoney) : get_pcvar_num(cvarMoneyNoVip), AS_SET);
+rg_add_account(id, isVIP(id) ? get_pcvar_num(cvarMoney) : get_pcvar_num(cvarMoneyNoVip), AS_ADD);
}
 
Последнее редактирование:
Сообщения
106
Реакции
12
Помог
1 раз(а)
Phantom, Спасибо, но я заменил

Код:
rg_add_account(id, isVIP(id) ? get_pcvar_num(cvarMoney) : get_pcvar_num(cvarMoneyNoVip), AS_SET);
на
Код:
rg_add_account(id, isVIP(id) ? get_pcvar_num(cvarMoney) : get_pcvar_num(cvarMoneyNoVip), AS_ADD);
и работает как мне надо)
 
Сообщения
2,831
Реакции
1,666
Помог
75 раз(а)
EnemyDown, ты сделал тоже самое что и написал Phantom и пишешь, спасибо, НО Я СДЕЛАЛ ПО-ДРУГОМУ:wacko:
 
Сообщения
106
Реакции
12
Помог
1 раз(а)
EnemyDown, ты сделал тоже самое что и написал Phantom и пишешь, спасибо, НО Я СДЕЛАЛ ПО-ДРУГОМУ:wacko:
Он сначала с ошибкой написал, позже исправил и стало как у меня)) комменты в одну и туже минуту написаны.

Сейчас возник другой вопрос, добавил худ сообщение о прибавке бонуса, но оно пишет это сообщение всем игрокам, а не только с указанным флагом. Как подправить?
C++:
#include <amxmodx>
#include <reapi>

new cvarMoney;
new cvarMoneyNoVip;
new round_number;

#define FLAG_ACCESS        ADMIN_LEVEL_H // default flag "t"
#define ROUND            3

public plugin_init() {
    register_plugin("Spawn Money", "1.2b", "Don.C");

    RegisterHookChain(RG_RoundEnd, "RoundEnd_Post", .post = true);
    RegisterHookChain(RG_CSGameRules_RestartRound, "NewRound_Post", .post = true);
    RegisterHookChain(RG_CBasePlayer_Spawn, "PlayerSpawn_Post", .post = true);
  
    cvarMoney = register_cvar("vip_spawn_money_amount", "16000");
    cvarMoneyNoVip = register_cvar("novip_money_amount", "7777");
}

public RoundEnd_Post(WinStatus:status, ScenarioEventEndRound:event, Float:tmDelay) {
    if(event == ROUND_GAME_COMMENCE || event == ROUND_GAME_RESTART) round_number = 0;
}

public NewRound_Post() round_number++;

public PlayerSpawn_Post(id) {
    if(round_number < ROUND) return;
    if(!is_user_alive(id)) return;

    rg_add_account(id, isVIP(id) ? get_pcvar_num(cvarMoney) : get_pcvar_num(cvarMoneyNoVip), AS_ADD);
    set_hudmessage(0, 255, 0, 0.90, 0.86, 0, 6.0, 12.0)
    show_hudmessage(id, "VIP бонус +2000$")
}

public isVIP(id) {
    return get_user_flags(id) & FLAG_ACCESS;
 
Сообщения
35
Реакции
12
Помог
1 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
EnemyDown,


Код:
#include <amxmodx>
#include <reapi>

new cvarMoney;
new round_number;

#define FLAG_ACCESS        ADMIN_LEVEL_H // default flag "t"
#define ROUND            3

public plugin_init() {
    register_plugin("Spawn Money", "1.2b", "Don.C");

    RegisterHookChain(RG_RoundEnd, "RoundEnd_Post", .post = true);
    RegisterHookChain(RG_CSGameRules_RestartRound, "NewRound_Post", .post = true);
    RegisterHookChain(RG_CBasePlayer_Spawn, "PlayerSpawn_Post", .post = true);

    cvarMoney = register_cvar("vip_spawn_money_amount", "16000");
}

public RoundEnd_Post(WinStatus:status, ScenarioEventEndRound:event, Float:tmDelay) {
    if(event == ROUND_GAME_COMMENCE || event == ROUND_GAME_RESTART) round_number = 0;
}

public NewRound_Post() round_number++;

public PlayerSpawn_Post(id) {
    if(round_number < ROUND) return;
    if(!is_user_alive(id)) return;
    if(!isVIP(id)) return;

    rg_add_account(id, get_pcvar_num(cvarMoney), AS_ADD);
    set_hudmessage(0, 255, 0, 0.90, 0.86, 0, 6.0, 12.0)
    show_hudmessage(id, "VIP бонус +%d$", get_pcvar_num(cvarMoney))
}

public isVIP(id) {
    return get_user_flags(id) & FLAG_ACCESS;
 
Последнее редактирование:
Сообщения
287
Реакции
223
Помог
6 раз(а)
w0w, затем, что только при строгом соблюдении всех трех условий код должен выполниться
 
Сообщения
1,419
Реакции
2,509
Помог
59 раз(а)
shadow, таким образом он и соблюдается, если одно условие не будет выполнено то код ниже не будет выполняться
 
Сообщения
287
Реакции
223
Помог
6 раз(а)
w0w, если хотя бы одно из условий будет верным, то код выполнится дальше. Это в случае с использованием оператора ||. Оператор && же требует строго соответствия всех условий для дальнейшего выполнения кода
 
Сообщения
1,419
Реакции
2,509
Помог
59 раз(а)
shadow, если хотя бы одно из трёх будет правдой то код ниже не будет выполнен. Проблем нет
 
Последнее редактирование:
Сообщения
141
Реакции
201
Помог
5 раз(а)
C:
#include <amxmodx>

public plugin_init() {
    register_clcmd("radio1", "@cmd");
}

@cmd() {
    server_print("%d %d %d", h9lla(0, 0, 0), w0w(0, 0, 0), shadow(0, 0, 0));
    server_print("%d %d %d", h9lla(0, 0, 1), w0w(0, 0, 1), shadow(0, 0, 1));
    server_print("%d %d %d", h9lla(0, 1, 0), w0w(0, 1, 0), shadow(0, 1, 0));
    server_print("%d %d %d", h9lla(0, 1, 1), w0w(0, 1, 1), shadow(0, 1, 1));
    server_print("%d %d %d", h9lla(1, 0, 0), w0w(1, 0, 0), shadow(1, 0, 0));
    server_print("%d %d %d", h9lla(1, 0, 1), w0w(1, 0, 1), shadow(1, 0, 1));
    server_print("%d %d %d", h9lla(1, 1, 0), w0w(1, 1, 0), shadow(1, 1, 0));
    server_print("%d %d %d", h9lla(1, 1, 1), w0w(1, 1, 1), shadow(1, 1, 1));

    return PLUGIN_HANDLED;
}

h9lla(a, b, c) {
    if(a) return 1;
    if(!b) return 1;
    if(!c) return 1;

    return 0;
}

w0w(a, b, c) {
    return (a || !b || !c);
}

shadow(a, b, c) {
    return (a && !b && !c);
}
1 1 0
1 1 0
1 1 0
0 0 0
1 1 1
1 1 0
1 1 0
1 1 0
 
Последнее редактирование:
Сообщения
957
Реакции
1,185
Помог
52 раз(а)
h9lla, зачем 3 хука то?

Код:
#include <amxmodx>
#include <reapi>

#define VIP_MONEY   32000

public plugin_cfg()
{
    RegisterHookChain(RG_CBasePlayer_AddAccount, "CBasePlayer_AddAccount_Pre", false);
}

public CBasePlayer_AddAccount_Pre(const id, amount, RewardType:type, bool:bTrackChange)
{
    if(type == RT_ROUND_BONUS && isVip(id))
    {
        SetHookChainArg(2, ATYPE_INTEGER, VIP_MONEY);
    }

    return HC_CONTINUE;
}

public isVip(id)
{
    // Тут проверка на випа
    // Лучше кешировать чтоб не дергать каждый раз флаги
}
 
Сообщения
316
Реакции
131
Помог
4 раз(а)
Один микро плагин и 10000 вариантов у кого что и как :D
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу