Мини CW плагин на ReAPI

Сообщения
3
Реакции
4
Всем огромный привет!)
Очень нужен такой небольшой CW плагин для комфортной игры на моем классик сервере.
Основное, что я хочу от него:
При событии "Game Commencing" начинается отсчет раундов.
После 15 сыгранных раундов идет смена сторон + рестарт с сохранением счета команд.
Можно имитировать рестарт, отбирая оружие, выдавая дефолтные пистолеты, и выставляя деньги в 800$.
Если одна из команд набирает 16 очков (выигранных раундов), то карта меняется
на следующую в списке mapcycle.txt (информация в чат по nextmap) с выводом таблицы счета.

Кто-нибудь может помочь в написании такого плагина?
Заранее спасибки!
 
Сообщения
184
Реакции
316
Помог
1 раз(а)
Собственно начал ваять сие "чудо" и сразу возник ряд вопросов =)
Код:
#include <amxmodx>
#include <reapi>

#define PLUGIN "miniCW"
#define VERSION "0.2"
#define AUTHOR "perf"

#define SWAP_TEAMS 16 //В начале какого раунда менять команды местами
#define MONEY 800 //Сколько выдавать денег после смены команд

new g_iRoundCount;

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
RegisterHookChain(RG_CSGameRules_RestartRound, "CSGameRules_RestartRound_Pre", false);
// Хукаем Pre, потому что в Post m_bCompleteReset всегда false
}

public CSGameRules_RestartRound_Pre()
{
// проверяем, что у нас новый раунд, а не рестарт
if(get_member_game(m_bCompleteReset))
{
// если рестарт, то...
g_iRoundCount = 0;
client_print_color(0,0,"^4LIVE! LIVE! LIVE!");
client_print_color(0,0,"^3HF & GL!");

}

g_iRoundCount++;
client_print(0, print_center, "*** Играем %i раунд ***", g_iRoundCount);

if(g_iRoundCount == SWAP_TEAMS)
{
rg_swap_all_players();

new players[32],pnum
get_players(players,pnum,"h")

for(new i,player ; i < pnum ; i++)
{
player = players
//Имитация рестарта =)))
rg_add_account(player, MONEY, AS_SET, true);

if(is_user_alive(player))
{
rg_remove_all_items(player);
rg_give_default_items(player);
}
}
client_print_color(0,0,"^4TEAMS SWAPED!");
client_print_color(0,0,"^3HF & GL!");
}
}



1. Получается так, что после смены команд у игрока не 800, а 2200 денег, я как понимаю вначале выставляется 800, а потом движок засчитывает проигрыш и добавляет 1400 сверху.
2. Как хукнуть квар, например mp_startmoney, чтоб брать его значение и выставлять деньги в новом раунде?
3. Или лучше тогда делать рестарт, а перед этим запоминать счет команд и выставлять его в новом раунде? (пользуюсь mp_winlimit, и хочу чтоб на 16ой победе одной из команд автоматом менялась карта)
 
  • Нравится
Реакции: L4D2
Сообщения
258
Реакции
262
Помог
5 раз(а)
2.
C++:
g_startmoney = get_cvar_pointer("mp_startmoney"); // plugin_init

// after team change
new players[32], playersnum, money = get_pcvar_num(g_startmoney);
get_players(players, playersnum, "h");
for(new i; i < playersnum; i++) {
rg_add_account(players, money, AS_SET, false);
}
 
Последнее редактирование:

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

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