[fork] Random Weapons WarmUP

fork Random Weapons WarmUP 2.4.9

Нет прав для скачивания
Сообщения
55
Реакции
5
Помог
1 раз(а)
почему-то не воспроизводиться звук , хотя файл скачиваеться
 
Сообщения
2,491
Реакции
2,791
Помог
61 раз(а)
Интересен второй пункт. Не проще ли сделать таким образом:
При старте разминки: server_cmd("mp_round_infinite efg");
В конце разминки: server_cmd("mp_round_infinite 0");
Есть 3 варианта получше
Код:
// 1
set_cvar_string("mp_round_infinite", "efg");
set_cvar_string("mp_round_infinite"", "0");
// 2
new pcvar = get_cvar_pointer("mp_round_infinite");
set_pcvar_string(pcvar, "efg");
set_pcvar_string(pcvar, "0");
// 3
RegisterHookChain(RG_RoundEnd, "RoundEnd", 0);
public RoundEnd(WinStatus:status, ScenarioEventEndRound:event) {
    // Check event if you need
    return HC_SUPERCEDE;
}
 
  • Нравится
Реакции: h1k3
Сообщения
342
Реакции
65
Помог
6 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
fantom, что на что лучше заменить? подскажи?
 
Сообщения
96
Реакции
120
Помог
1 раз(а)
ops244, наверно так
Код:
#include <amxmodx>
#include <reapi>

#define TIME_RR     40    // Время разминки
#define NUM_RR        1    // Кол-во рестартов
#define LATENCY        1.5    // Задержка между рестартами
#define PROTECTED     2    // Сколько секунд действует защита после возрождения, 0 - отключить (актуально для DM_MODE)
// отключаемо //
#define SOUND            // Музыка под час разминки
#define STOP_PLUGS        // Отключать плагины на время разминки
#define DM_MODE            // Бесконечный респавн на время разминки
#define OFF_RR            // Отключать этот плагин на указанных картах
//#define BLOCK           // Запрет поднятия оружия с земли [по умолчанию выкл.]

#if defined SOUND
new const soundRR[] = "sound/rr/RoundStart.mp3"; // Указывать путь и название файла, например sound/serv/music.mp3
#endif

#if defined STOP_PLUGS
    new g_arPlugins[][] =    // Указывать название плагинов, например test.amxx
    {
        "test.amxx",
        "test2.amxx"
    }
#endif
new g_iHudSync;
new g_szWeapon[32];
new g_iWp;
new HookChain:fwd_NewRound,
    HookChain:fwd_GiveC4,
-   HookChain:fwd_RRound,
#if defined BLOCK
    HookChain:fwd_BlockEntity,
#endif
#if defined DM_MODE
    HookChain:fwd_Killed,
#endif
    HookChain:fwd_Spawn;

const TASK_PROTECTION_ID = 33464;

public plugin_init()
{
    register_plugin("[ReAPI] Random Weapons WarmUP", "2.4.3", "neugomon/h1k3");

    RegisterHookChain(RG_RoundEnd, "fwdRoundEnd", true);
-   DisableHookChain(fwd_RRound   = RegisterHookChain(RG_CSGameRules_RestartRound, "fwdRestartRound", true));
    DisableHookChain(fwd_NewRound = RegisterHookChain(RG_CSGameRules_CheckMapConditions, "fwdRoundStart", true));
    DisableHookChain(fwd_Spawn    = RegisterHookChain(RG_CBasePlayer_Spawn, "fwdPlayerSpawnPost", true));
    DisableHookChain(fwd_GiveC4   = RegisterHookChain(RG_CSGameRules_GiveC4, "fwdGiveC4", false));
#if defined BLOCK
    DisableHookChain(fwd_BlockEntity = RegisterHookChain(RG_CBasePlayer_HasRestrictItem, "fwdHasRestrictItemPre", false));
#endif
#if defined DM_MODE
    DisableHookChain(fwd_Killed   = RegisterHookChain(RG_CBasePlayer_Killed, "fwdPlayerKilledPost", true));
    g_iHudSync    = CreateHudSyncObj();
    register_clcmd("joinclass", "clCmdJoinClass");
    register_clcmd("menuselect","clCmdJoinClass");
#endif
    state warmupOff;
  
    #if defined OFF_RR
    new sPref[][] = { "awp_", "aim_", "fy_", "$", "cs_", "35hp" }; // Указывать префиксы карт
    new map[32]; get_mapname(map, charsmax(map));
    for(new i; i < sizeof sPref; i++)
    {
        if(containi(map, sPref[i]) != -1)
        {
            pause("ad");
            return;
        }
    } 
    #endif 
}

#if defined BLOCK
public fwdHasRestrictItemPre() {
    SetHookChainReturn(ATYPE_INTEGER, true);
    return HC_SUPERCEDE;
}
#endif

public client_putinserver(id)
{
    remove_task(id + TASK_PROTECTION_ID)
}

#if defined SOUND
public plugin_precache()
{
        precache_generic(soundRR);
}
#endif

public fwdRoundEnd(WinStatus:status, ScenarioEventEndRound:event, Float:tmDelay)
    if(event == ROUND_GAME_COMMENCE)
        EnableHookChain(fwd_NewRound);

public fwdRoundStart()
{
    state warmupOn;
  
    #if defined SOUND
    client_cmd(0, "mp3 play ^"%s^"", soundRR);
    #endif
  
    DisableHookChain(fwd_NewRound);
    EnableHookChain(fwd_Spawn);
    EnableHookChain(fwd_GiveC4);
-   EnableHookChain(fwd_RRound);
+   set_cvar_string("mp_round_infinite", "efg");
#if defined BLOCK
    EnableHookChain(fwd_BlockEntity);
#endif
#if defined DM_MODE 
    EnableHookChain(fwd_Killed);
#endif 
#if defined STOP_PLUGS 
    PluginController(1);
#endif
    switch((g_iWp = random(2)))
    {
        case 0: formatex(g_szWeapon, charsmax(g_szWeapon), "M4A1");
        case 1: formatex(g_szWeapon, charsmax(g_szWeapon), "AK-47");
    }
    set_task(1.0, "ShowTimer", .flags = "a", .repeat = TIME_RR);
}
#if defined DM_MODE
public clCmdJoinClass(id) <warmupOff>
    return;
  
public clCmdJoinClass(id) <warmupOn>
    if(get_member(id, m_iMenu) == Menu_ChooseAppearance)
        set_task(0.5, "SpawnPlayer", id);
#endif
public fwdPlayerSpawnPost(const id)
{
    if(!is_user_alive(id))
        return;

    rg_remove_all_items(id);
    set_member_game(m_bMapHasBuyZone, true);
    BuyZone_ToogleSolid(SOLID_NOT);

    switch(g_iWp)
    {
        case 0:
        {
            rg_give_item(id, "weapon_m4a1");
            rg_set_user_bpammo(id, WEAPON_M4A1, 90);
            rg_give_item(id, "weapon_knife");
        }
        case 1:
        {
            rg_give_item(id, "weapon_ak47");
            rg_set_user_bpammo(id, WEAPON_AK47, 90);
            rg_give_item(id, "weapon_knife");
        } 
    } 
}
#if defined DM_MODE
public fwdPlayerKilledPost(pVictim)
    set_task(1.0, "SpawnPlayer", pVictim);
#endif

public fwdGiveC4()
{
    return HC_SUPERCEDE
}

public ShowTimer()
{
    static timer = -1;
    if(timer == -1) timer = TIME_RR;
  
    switch(--timer)
    {
        case 0:
        {
            state warmupOff;
          
            BuyZone_ToogleSolid(SOLID_TRIGGER);
            DisableHookChain(fwd_Spawn);
            DisableHookChain(fwd_GiveC4);
-           DisableHookChain(fwd_RRound);
+           set_cvar_string("mp_round_infinite", "0");
        #if defined BLOCK
            DisableHookChain(fwd_BlockEntity);
        #endif
        #if defined DM_MODE 
            DisableHookChain(fwd_Killed);
        #endif
        #if defined STOP_PLUGS 
            PluginController(0);
        #endif 
        #if NUM_RR > 1     
            set_task(LATENCY, "SV_Restart", .flags = "a", .repeat = NUM_RR);
        #else
            SV_Restart();
        #endif
            timer = -1;
        }
        default:
        {
            set_hudmessage(135, 206, 235, .x = -1.0, .y = 0.08, .holdtime = 0.9, .channel = -1);
            ShowSyncHudMsg(0, g_iHudSync, "Разминка на %s!^nРестарт через %d сек", g_szWeapon, timer);
        }
    }
}

-public fwdRestartRound()
-{
-    set_member_game(m_iRoundWinStatus, WINSTATUS_DRAW)
-}

public SV_Restart()
    set_cvar_num("sv_restart", 1);
#if defined DM_MODE 
public SpawnPlayer(id)
{
    if(!is_user_connected(id))
        return;
    if(is_user_alive(id))
        return;
  
    SetProtection(id)
  
    switch(get_member(id, m_iTeam))
    {
        case 1, 2: rg_round_respawn(id);
    }
}
#endif

public SetProtection(id)
{
    set_entvar(id, var_takedamage, DAMAGE_NO)

#if PROTECTED > 1
    set_member(id, m_bIsDefusing, true)
#endif
    switch(get_member(id, m_iTeam))
    {
        case TEAM_TERRORIST: rg_set_rendering(id, kRenderFxGlowShell, 255, 0, 0, 10);
        case TEAM_CT: rg_set_rendering(id, kRenderFxGlowShell, 0, 0, 255, 10);
    }

    remove_task(TASK_PROTECTION_ID + id)
    set_task( PROTECTED.0, "EndProtection", TASK_PROTECTION_ID + id)
}

public EndProtection(TaskID)
{
    new id = TaskID - TASK_PROTECTION_ID

    if(!is_user_connected(id))
        return

#if PROTECTED > 1
    set_member(id, m_bIsDefusing, false)
#endif
    set_entvar(id, var_takedamage, DAMAGE_AIM)
    rg_set_rendering(id)
}

stock rg_set_rendering(index, fx = kRenderFxNone, r=255, g=255, b=255, amount=16)
{
    new Float:RenderColor[3]
    RenderColor[0] = float(r)
    RenderColor[1] = float(g)
    RenderColor[2] = float(b)
  
    set_entvar(index, var_renderfx, fx)
    set_entvar(index, var_rendercolor, RenderColor)
    set_entvar(index, var_renderamt, float(amount))
}

stock PluginController(stop)
{
    for(new i; i < sizeof g_arPlugins; i++)
    {
        if(stop)pause  ("ac", g_arPlugins[i]);
        else    unpause("ac", g_arPlugins[i]);
    } 
}

stock BuyZone_ToogleSolid(const solid)
{
    new entityIndex = 0;
    while ((entityIndex = rg_find_ent_by_class(entityIndex, "func_buyzone")))
        set_entvar(entityIndex, var_solid, solid);
}
 
Последнее редактирование:

GIT

Сообщения
82
Реакции
6
Помог
2 раз(а)
h1k3, А красным в коде , это значит убрать?
 

GIT

Сообщения
82
Реакции
6
Помог
2 раз(а)
sergei, Защита на респе не работает , хотя светится синим и красным!
11 Янв 2018
h1k3, sergei, Куда вставить код , чтобы после разминки была надпись типо разминка завершена
 
Сообщения
96
Реакции
120
Помог
1 раз(а)
Сообщения
2,143
Реакции
1,223
Помог
44 раз(а)
GIT, там где "-" - убери строк(у, и).
Там где "+" - убери знак + перед строкой.

Это что-то подобное редактору на гитхаб.
11 Янв 2018
Куда вставить код , чтобы после разминки была надпись типо разминка завершена
Можешь в паблик SV_Restart() добавить таск, а в паблике таска сделать вывод сообщения, дабы после рестарта писалось, мол, "Разминка завершена! Приятной игры!".
 
Сообщения
19
Реакции
5
настройки дефолт, но почему-то только m4a1 идет разминка... ни разу за 2 дня не было ак47 и knife.
 
Сообщения
96
Реакции
120
Помог
1 раз(а)
Kobalt, 1515869479417.png
запустил сервер. 1 раунд М4, 2 - М4, 3 - АК47. В дефолте нету knife
 

GIT

Сообщения
82
Реакции
6
Помог
2 раз(а)
Как сделать чтобы например раунд на м4а1 и ее нельзя было выкинуть?
Второе почему файл mp3 долго грузится, хотя стоит быстрая загрузка?
И еще подскажите где дописать чтобы выводилось Приятной игры после разминки?
 
Сообщения
96
Реакции
120
Помог
1 раз(а)
GIT, 1. кто-то по опытные может скажет
2. может быстрая загрузка не така уж быстрая) или смените звук на другой, не такой длинный
3.в public SV_Restart() добавьте set_task(2.0, "end_rr");
и после public SV_Restart() добавьте
Код:
public end_rr()
{
    set_hudmessage(135, 206, 235, .x = -1.0, .y = 0.08, .holdtime = 5.0, .channel = -1);
    show_hudmessage(0, "Разминка окончена!");
}
 

GIT

Сообщения
82
Реакции
6
Помог
2 раз(а)
h1k3, Про первое , просто например я его выкинул и взять его обратно не могу , а игроки увидев на земле что-то выкидывают оружие в руках, про второе хост myarena и все остальное быстро скачивается !
 
Сообщения
2,143
Реакции
1,223
Помог
44 раз(а)
GIT, 1) В plugin_init вставьregister_clcmd("drop", "ClCmd_Drop");
И где-то в плагине public ClCmd_Drop() return PLUGIN_HANDLED;
17 Янв 2018
А лучше так, чтобы потом не ныли, что после разминки нельзя дропнуть оружие:

C++:
public ClCmd_Drop() <warmupOff>
    return PLUGIN_CONTINUE;
    
public ClCmd_Drop() <warmupOn>
    return PLUGIN_HANDLED;
 
Сообщения
40
Реакции
1
Очень понравился плагин + слова золотые проигрываются.
 

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

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