Jump to content


Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Posted Image Posted Image

Guest Message by DevFuse
 

[ROZWIĄZANE] Odliczanie czasu do końca rundy + wiadomość w chat - problem


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


  • This topic is locked This topic is locked
2 replies to this topic

#1 Scorpion Flail

    Wszechobecny

  • Użytkownik

  • Reputacja: 129
    Zaawansowany

  • Postów:489
  • GG:
  • Steam:steam
Offline

Posted 28.05.2014 16:33

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?


  • +
  • -
  • 0

#2 DaanD

    Życzliwy

  • Zbanowany

  • Reputacja: 2
    Nowy

  • Postów:30
  • Lokalizacja:Warszawa
Offline

Posted 28.05.2014 17:03

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")
}


#3 VertekS

    Zaawansowany

  • Użytkownik

  • Reputacja: 48
    Pomocny

  • Postów:80
  • Lokalizacja:amxxpc.exe
Offline

Posted 28.05.2014 17:25   Best Answer

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)
            }
        }
    }
}

  • +
  • -
  • 1




  


1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users

Coinsy CSGOPolygon Za SMS, PSC , Przelew - CoinSell.pro
Skiny do CS:GO za SMS, PSC, Przelew - CSGOPaka.com
Automatyczny Bot Levelowania Steam - LVLUPSteam.com
CSGO Gambling Sites and Free Betting Codes - DreamCodes.gg

Sign In