←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Odliczanie czasu do końca run...


Best Answer VertekS 28.05.2014 17:25

remove_taskset_task z własnym id taska (parametr 3).

Ponad plugin_init używasz dyrektywy preprocesora #define (będzie to ID taska, ważne aby było wyższe niż 32, żeby uniknąć błędów):

#define task_odliczanie 667

Przy ustawianiu taska:

set_task(1.0, "odliczanie", task_odliczanie,_,_,"b");

Następnie, jeśli zostało 11 sekund do końca rundy, to usuń task:

public odliczanie()
{
    new g_czas =  floatround(g_licznik - get_gametime(), floatround_floor);
    if(g_czas == 11)
    {
        for(new i = 1; i < maxPlayers; i++)
        {
            if(is_user_connected(i) && cs_get_user_team(i) == CS_TEAM_T)
            {    
                client_print(i,print_chat, "Czas")
                remove_task(task_odliczanie)
            }
        }
    }
}
Go to the full post
Locked

  • +
  • -
Scorpion Flail's Photo Scorpion Flail 28.05.2014

Witam.

Chcę zrobić by X czasu przed końcem rundy pojawiła się dana wiadomość w chat.

Dlatego zrobiłem tak:

 

W nowej rundzie (event HLTV):

set_task(1.0, "odliczanie",_,_,_,"b");

Następnie (11 sec przed końcem):

public odliczanie()
{
    new g_czas =  floatround(g_licznik - get_gametime(), floatround_floor);
    if(g_czas == 11)
    {
        for(new i = 1; i < maxPlayers; i++)
        {
            if(is_user_connected(i) && cs_get_user_team(i) == CS_TEAM_T)
            {    
                client_print(i,print_chat, "Czas")

            }
        }
    }
}

Odliczanie czasu oraz pokazywanie wiadomości działa, jednak przez taska powtarzającego, wiadomość w chat wyświetla się 2-3 razy.

Jak zrobić by wyświetlała się tylko raz?

Quote

DaanD's Photo DaanD 28.05.2014

hmm zrób poprostu set_task i dźwięk.

 

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Sound on finish rund"
#define VERSION "1.0"
#define AUTHOR "Mentos"

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
}

public plugin_precache()
{
    precache_sound("koniec/10.mp3")
    precache_sound("koniec/9.mp3")
    precache_sound("koniec/8.mp3")
    precache_sound("koniec/7.mp3")
    precache_sound("koniec/6.mp3")
    precache_sound("koniec/5.mp3")
    precache_sound("koniec/4.mp3")
    precache_sound("koniec/3.mp3")
    precache_sound("koniec/2.mp3")
    precache_sound("koniec/1.mp3")
}

public event_round_start()
{
    set_task(120.0, "countdown")
}

public countdown()
{
    set_task(1.0, "one")
    set_task(2.0, "two")
    set_task(3.0, "three")
    set_task(4.0, "four")
    set_task(5.0, "five")
}

public five()
{
    client_cmd(0, "spk koniec/5")
}

public four()
{
    client_cmd(0, "spk koniec/4")
}

public three()
{
    client_cmd(0, "spk koniec/3")
}

public two()
{
    client_cmd(0, "spk koniec/2")
}

public one()
{
    client_cmd(0, "spk koniec/1")
}
Quote

  • +
  • -
Best Answer VertekS's Photo VertekS 28.05.2014

remove_taskset_task z własnym id taska (parametr 3).

Ponad plugin_init używasz dyrektywy preprocesora #define (będzie to ID taska, ważne aby było wyższe niż 32, żeby uniknąć błędów):

#define task_odliczanie 667

Przy ustawianiu taska:

set_task(1.0, "odliczanie", task_odliczanie,_,_,"b");

Następnie, jeśli zostało 11 sekund do końca rundy, to usuń task:

public odliczanie()
{
    new g_czas =  floatround(g_licznik - get_gametime(), floatround_floor);
    if(g_czas == 11)
    {
        for(new i = 1; i < maxPlayers; i++)
        {
            if(is_user_connected(i) && cs_get_user_team(i) == CS_TEAM_T)
            {    
                client_print(i,print_chat, "Czas")
                remove_task(task_odliczanie)
            }
        }
    }
}
Quote
Locked