Преработка на Knife round

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
chillblaze
Извън линия
Потребител
Потребител
Мнения: 11
Регистриран на: 12 Окт 2016, 14:53

Преработка на Knife round

Мнение от chillblaze » 12 Окт 2016, 15:40

Ползвам Knife Round v1.6 в комплект с Auto Restart vl , тъй като KnifeRound не рестартира рунда след като мине warm up времето.
Обаче Auto Restart често се бъгва , когато в сървъра има 1на1 или 2на1 играчи и се получават 1-2-3 допълнителни рестарта в началото на картата. Трябва ми нова функция в Knife Round v1.6 , която да рестартира 1 път след като минат 60-те секунди warm up или фикс за другия плугин така ,че да не рестартира по 2-3 пъти, когато има малко играчи. Незнам кой от двата ще е по-лесен за редактиране, вие изберете...

Knife Round

Код за потвърждение: Избери целия код

/* Script generated by Pawn Studio */

/*
Name:        Knife Round
Version:    1.6a
Author:        jas0n
Date:        16.05.08

Description: Allow to play first round in "knife only" mode. Also you could allow c4/granades.

Cvars:        kr_mode <0|1|2|3> (default "1")
                0: knife only
                1: knife + c4
                2: knife + granades
                3: knife + c4 + granades
            kr_timer <sec> (default "0")
                * If value less then 30 sec this function disabled
*/

#include <amxmodx>

new const PLUGIN[] = "Knife Round"
new const VERSION[] = "1.6a"
new const AUTHOR[] = "jas0n"

new const g_HudMsgStart[] = "KNIFE!!! KNIFE!!! KNIFE!!!"
new const g_HudMsgEnd[] = "PICK UP YOUR WEAPONS AND FIGHT!"

new bool:g_IsKnifeRound
new bool:g_IsCommencing
new g_Mode, p_Mode
new g_Timer, p_Timer
new g_SyncMsgObj

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)

    register_event("TextMsg", "evGameCommencing", "a", "2=#Game_Commencing")
    register_event("CurWeapon", "evCurWeapon", "be", "1=1", "2!29")
    register_event("HLTV", "evNewRound", "a", "1=0", "2=0")
    register_logevent("evStartRound", 2, "1=Round_Start")
    register_logevent("evRestartRound", 2, "1&Restart_Round_")

    g_Mode = register_cvar("kr_mode", "1")
    g_Timer = register_cvar("kr_timer", "0")
    g_SyncMsgObj = CreateHudSyncObj()
}

public plugin_cfg() {
    p_Mode = get_pcvar_num(g_Mode)
    p_Timer = get_pcvar_num(g_Timer)
}

public evGameCommencing() {
    g_IsCommencing = true
}

public evNewRound() {
    if(!g_IsKnifeRound)
        return
    
    if(task_exists(348916))
        remove_task(348916)

    set_hudmessage(0, 225, 0, -1.0, 0.30, 2, 2.0, 6.0, _, _, -1)
    ShowSyncHudMsg(0, g_SyncMsgObj, g_HudMsgEnd)
        
    g_IsCommencing = false
    g_IsKnifeRound = false

    pause("ad")
}

public evStartRound() {
    if (!g_IsCommencing)
        return

    g_IsKnifeRound = true

    if (p_Timer >= 30)
        set_task(float(p_Timer), "evNewRound", 348916)

    set_hudmessage(0, 225, 0, -1.0, 0.30, 2, 2.0, 6.0, _, _, -1)
    ShowSyncHudMsg(0, g_SyncMsgObj, g_HudMsgStart)
}

public client_spawn(id) {
    if (!g_IsCommencing)
        return
    
    force_knife(id)
}

public evRestartRound() {
    if (!g_IsKnifeRound)
        return

    g_IsKnifeRound = false
}

public evCurWeapon(id) {
    if (!g_IsCommencing)
        return

    static weapon
    weapon = get_user_weapon(id)

    switch(p_Mode) {
        case 1: if (weapon == CSW_C4) return
        case 2: if (weapon == CSW_HEGRENADE || weapon == CSW_FLASHBANG || weapon == CSW_SMOKEGRENADE) return
        case 3: if (weapon == CSW_C4 || weapon == CSW_HEGRENADE || weapon == CSW_FLASHBANG || weapon == CSW_SMOKEGRENADE) return
    }

    force_knife(id)
}

force_knife(id)
{
    engclient_cmd(id, "weapon_knife")
} 

Auto Restart

Код за потвърждение: Избери целия код

/* Plugin generated by AMXX-Studio */


#include <amxmodx>

#define PLUGIN "Auto Restart vl"
#define VERSION "1.3"
#define AUTHOR "vato loco [GE-S]"

#define TIMER_TASK        123456
#define RESTART_TASK      789123

new g_counter  

new g_autorestart
new g_autoenabled
new g_autocds

new g_SyncGameStart
new g_SyncRestartTimer

new bool:g_bRoundStart 

public plugin_init() 
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_logevent("RoundStart", 2, "1=Round_Start")
    register_event("TextMsg","RestartTask","a","2&#Game_C")   
    
    register_dictionary("auto_restart_vl.txt")
    
    g_autoenabled = register_cvar("amx_autorr_enable","1")
        g_autocds = register_cvar("amx_autorr_cds","1")
    g_autorestart = register_cvar("amx_auto_restart","20.0")
    
    g_SyncGameStart = CreateHudSyncObj()
    g_SyncRestartTimer = CreateHudSyncObj()
}

public RoundStart()
{
    if(!get_pcvar_num(g_autoenabled))
        return PLUGIN_HANDLED
    
    if(g_bRoundStart)
    {
        set_hudmessage( 0, 255, 0, -1.0, 0.40, 1, 5.0, 8.0, 0.0, 0.0, -1)
        ShowSyncHudMsg( 0, g_SyncGameStart, "%L",LANG_PLAYER, "GAME_STARTED")
    }
    g_bRoundStart = false
    
    return PLUGIN_CONTINUE
}

public RestartTask() 
{
    if(!get_pcvar_num(g_autoenabled))
        return PLUGIN_HANDLED
    
    set_task(1.0,"TimeCounter",TIMER_TASK,_,_,"a",get_pcvar_num(g_autorestart))
    set_task(get_pcvar_float(g_autorestart),"RestartRound",RESTART_TASK)
    
    return PLUGIN_CONTINUE
}

public TimeCounter() 
{
    g_counter++
    
    new Float:iRestartTime = get_pcvar_float(g_autorestart) - g_counter
    new Float:fSec
    fSec = iRestartTime 
    
    set_hudmessage( 0, 255, 255, -1.0, 0.25, 0, 0.0, 1.0, 0.0, 0.0, -1)
    ShowSyncHudMsg( 0, g_SyncRestartTimer, "%L",LANG_PLAYER, "AUTO_RESTART", fSec)
    
    if(get_pcvar_num(g_autocds) && get_pcvar_num(g_autorestart) - g_counter < 11 && get_pcvar_num(g_autorestart) - g_counter !=0)
    {
        static szNum[32]
        num_to_word(get_pcvar_num(g_autorestart) - g_counter, szNum, 31)
        client_cmd(0,"speak ^"vox/%s^"", szNum)
    }
        if(g_counter == get_pcvar_num(g_autorestart))
    {
        g_bRoundStart = true
                g_counter = 0
    }
}

public RestartRound() 
{
    server_cmd("sv_restartround 1")
} 
Последно промяна от OciXCrom на 12 Окт 2016, 15:44, променено общо 1 път.
Причина: Ползвай [code] таг за кодове.

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Re: Преработка на Knife round

Мнение от OciXCrom » 12 Окт 2016, 15:48

Добавих проста проверка във втория плъгин, която няма да позволи повече от 1 рестарт.

Код за потвърждение: Избери целия код

/* Plugin generated by AMXX-Studio */


#include <amxmodx>

#define PLUGIN "Auto Restart vl"
#define VERSION "1.3"
#define AUTHOR "vato loco [GE-S]"

#define TIMER_TASK        123456
#define RESTART_TASK      789123

new g_counter  

new g_autorestart
new g_autoenabled
new g_autocds

new g_SyncGameStart
new g_SyncRestartTimer

new bool:g_bRoundStart,
    bool:g_bRestarted

public plugin_init() 
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_logevent("RoundStart", 2, "1=Round_Start")
    register_event("TextMsg","RestartTask","a","2&#Game_C")   
    
    register_dictionary("auto_restart_vl.txt")
    
    g_autoenabled = register_cvar("amx_autorr_enable","1")
        g_autocds = register_cvar("amx_autorr_cds","1")
    g_autorestart = register_cvar("amx_auto_restart","20.0")
    
    g_SyncGameStart = CreateHudSyncObj()
    g_SyncRestartTimer = CreateHudSyncObj()
}

public RoundStart()
{
    if(!get_pcvar_num(g_autoenabled))
        return PLUGIN_HANDLED
    
    if(g_bRoundStart)
    {
        set_hudmessage( 0, 255, 0, -1.0, 0.40, 1, 5.0, 8.0, 0.0, 0.0, -1)
        ShowSyncHudMsg( 0, g_SyncGameStart, "%L",LANG_PLAYER, "GAME_STARTED")
    }
    g_bRoundStart = false
    
    return PLUGIN_CONTINUE
}

public RestartTask() 
{
    if(!get_pcvar_num(g_autoenabled))
        return PLUGIN_HANDLED
    
    set_task(1.0,"TimeCounter",TIMER_TASK,_,_,"a",get_pcvar_num(g_autorestart))
    set_task(get_pcvar_float(g_autorestart),"RestartRound",RESTART_TASK)
    
    return PLUGIN_CONTINUE
}

public TimeCounter() 
{
    g_counter++
    
    new Float:iRestartTime = get_pcvar_float(g_autorestart) - g_counter
    new Float:fSec
    fSec = iRestartTime 
    
    set_hudmessage( 0, 255, 255, -1.0, 0.25, 0, 0.0, 1.0, 0.0, 0.0, -1)
    ShowSyncHudMsg( 0, g_SyncRestartTimer, "%L",LANG_PLAYER, "AUTO_RESTART", fSec)
    
    if(get_pcvar_num(g_autocds) && get_pcvar_num(g_autorestart) - g_counter < 11 && get_pcvar_num(g_autorestart) - g_counter !=0)
    {
        static szNum[32]
        num_to_word(get_pcvar_num(g_autorestart) - g_counter, szNum, 31)
        client_cmd(0,"speak ^"vox/%s^"", szNum)
    }
        if(g_counter == get_pcvar_num(g_autorestart))
    {
        g_bRoundStart = true
                g_counter = 0
    }
}

public RestartRound() 
{
    if(g_bRestarted)
        return
    else
    {
        server_cmd("sv_restartround 1")
        g_bRestarted = true
    }
}  

Аватар
chillblaze
Извън линия
Потребител
Потребител
Мнения: 11
Регистриран на: 12 Окт 2016, 14:53

Re: Преработка на Knife round

Мнение от chillblaze » 14 Окт 2016, 14:12

Благодаря . Тествано и вече работи перфектно.

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: Bing [Bot] и 28 госта