←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

ROund STart REstart by Miczu

  • +
  • -
Ox!d3 - zdjęcie Ox!d3 12.04.2008

Witam

Używam u siebie na serwerze M_Antirusher_2.4 oraz ROund STart REstart 1.1 od Micza. Moja prośba jest skierowana do Micza głównie, chyba że jeszcze ktoś będzie potrafił dobrze to wykonać.

Chodzi o modyfikację pluginu ROund STart REstart:

1. Występuje tam taki mały błąd przy odtwarzaniu dźwięku one.wav, tzn dźwięk ten nie jest w pełni odtwarzany (trochę go na końcu urywa)
2. Przydało by się aby runda nożowa włączała się po wejściu minimum 2 osób na pusty serwer a nie tylko po zmianie mapy (tak jak w auto_restart_knives.amxx).
3. Zlikwidować te napisy zielone na środku z odliczaniem (trzy, dwa, jeden) a zamiast tego zostawić do samego końca tą ramkę, która odlicza sekundy do autorestartu.
4. No i najważniejsze chyba. Aby podczas tej rundy nożowej były zapauzowane następujące pluginy: M_Antirusher_2.4.amxx, imessage.amxx oraz scrollmsg.amxx. Na koniec rundy oczywiście powinny zostać automatycznie odpauzowane (też tak samo jak w auto_restart_knives.amxx ale dodatkowo jeszcze z opcją pauzowania pluginów: imessage.amxx i scrollmsg.amxx)

Bardzo bym prosił o przerobienie tego pluginu.
Z góry dziękuję.

Oto plugin do przeróbki w mojej wersji:
#include <amxmodx>             // AMX Mod X
#include <amxmisc>

new czas = 60
new resety=3
new noze=0
new restart_title[1][] = {
    "Knife Round"          //SPAM
}
new misc[3][]={"misc/one.wav","misc/two.wav","misc/three.wav"}
new texty[3][]={"Jeden","Dwa","Trzy"}

public plugin_init()
{
    register_plugin("ROund STart REstart","1.1","Edited by Miczu") //cos mi sie nalezy <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/tongue.gif' class='bbc_emoticon' alt=':P' />
    set_task(5.0,"restart_odlicz", 0)

    return PLUGIN_CONTINUE
}

public client_PreThink ( id )
{
    if(noze) client_cmd(id,"weapon_knife")
}

public restart_odlicz(){
   
    new players[32],num,num2
    get_players(players,num,"ae","TERRORIST")
    get_players(players,num2,"ae","CT")
   
    if((num)&&(num2))
    {
        noze=1
    set_task(5.0,"muza_on", 0)
    set_task(1.0,"wyswietl_res",8188,"",0,"b")
    }
    else set_task(5.0,"restart_odlicz", 0)
}

public muza_on(){
    client_cmd(0,"stopsound")
    client_cmd(0,"spk misc/play_test.wav")
}

public wyswietl_res(){

    new jac1=random_num(0,255)
    new jac2=random_num(0,255)
    new jac3=random_num(0,255)   

    set_hudmessage(jac1, jac2, jac3, 0.65, 0.75, 2, 0.02, 1.0, 0.01, 0.1, 10)
    show_hudmessage(0,"==================^n   *%s *^n  RESTART ZA: %i sec^n==================", restart_title, czas)
    czas--
    if(czas==2){
    set_task(0.2,"restart_rundy_0", 0)
    remove_task(8188)
   }
}

public restart_rundy_play(){
    set_hudmessage(10, 255, 40, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, 4)
    show_hudmessage(0,"=============^n* GAME LIVE *^n=============")
}


public restart_rundy(){
    noze=0
    client_cmd(0,"stopsound")
    client_cmd(0,"spk misc/reset.wav") 
    server_cmd("sv_restart 1")
    set_task(2.0,"restart_rundy_play", 0)
}

public restart_rundy_0(){
    set_hudmessage(10, 255, 40, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, 4)
    show_hudmessage(0,texty[resety-1])
    client_cmd(0,"stopsound")
    client_cmd(0,"spk %s",misc[resety-1])
    resety--
    if(resety==0) set_task(0.5,"restart_rundy", 0)
    else set_task(1.5,"restart_rundy_0", 0)
}

public plugin_precache()
{
    precache_sound("misc/play_test.wav")
    precache_sound("misc/reset.wav")
    precache_sound(misc[0])
    precache_sound(misc[1])
    precache_sound(misc[2])

    return PLUGIN_CONTINUE
}
Odpowiedz

  • +
  • -
Miczu - zdjęcie Miczu 12.04.2008

client_cmd(0,"stopsound")
to przerywa odtwarzany dzwiek - usun z pluga (a przynajmniej to jedno co ucina jeden) i ciesz sie pelnym odtwarzaniem...

lub
set_task(1.5,"restart_rundy_0", 0)
zmien by czas miedzy odtrarzaniem muzyki byl dluzszy niz 1.5 sekundy :P

Co do tego by sie uruchamialo gdy na serwer wchodza osoby to da sie oczywiscie zrobic ale na razie nie mam na to czasu, sory ;P
Odpowiedz

  • +
  • -
ESTCOBS - zdjęcie ESTCOBS 12.04.2008

Jest też prośba ode mnie =)
Zrobisz tak żeby pokazywało się nad stanem gotówki ? (koniec ========= of course.... :D)
Z góry dziękował

BTW // Te nasze prośby o ile zostaną spełnione to pewno 1.3 będzie xDDD
Odpowiedz

  • +
  • -
Ox!d3 - zdjęcie Ox!d3 13.04.2008

Więc tak problem nr 1 rozwiązałem sam.
set_task(1.5,"restart_rundy_0", 0)
zmienienie tutaj czasu nic nie daje, ponieważ dotyczy to tylko przerw między three a two i miedzy two a one.

client_cmd(0,"stopsound")
usunięcie tej linijki co prawda spowodowało, że dźwięk one.wav NIE był na końcu ucinany ale za to dźwięk one.wav nakładał się na końcu delikatnie na początek reset.wav.

Czyli ani pierwsze ani drugie rozwiązanie nie przyniosło skutku.

To właśnie podsunęło mi pomysł, że po prostu dźwięk reset.wav jest za wcześnie odtwarzany i dlatego urywało na końcu one.wav.

Wystarczyło tylko wy edytować ten jeden wiersz:
if(resety==0) set_task(0.5,"restart_rundy", 0)
czyli zmienić czas z 0.5 s. na 1.3 s. między odtwarzaniem dźwięku one.wav i reset.wav

if(resety==0) set_task(1.3,"restart_rundy", 0)

P.S.
Czekam na pomoc w sprawie pozostałych 3 punktów. :F
Odpowiedz

  • +
  • -
Miczu - zdjęcie Miczu 13.04.2008

Faktycznie, nie wiem dlaczego myslalem ze odlicza jeden, dwa, trzy (a przeciez odlicza wstecz :P)
Odpowiedz

  • +
  • -
Ox!d3 - zdjęcie Ox!d3 14.04.2008

Dobra z punktem 4 też już sobie poradziłem drogą dedukcji :]

Pauzowanie dałem tutaj:
public restart_odlicz(){
   
    new players[32],num,num2
    get_players(players,num,"ae","TERRORIST")
    get_players(players,num2,"ae","CT")
   
    if((num)&&(num2))
    {
        noze=1
    pause("ac","M_Antirusher_2.4.amxx")
    pause("ac","imessage.amxx")
    pause("ac","scrollmsg.amxx")
    set_task(3.0,"muza_on", 0)
    set_task(1.0,"wyswietl_res",8188,"",0,"b")
    }
    else set_task(5.0,"restart_odlicz", 0)
}

Odpauzowanie dałem tutaj:
public restart_rundy(){
    noze=0
    unpause("ac","M_Antirusher_2.4.amxx")
    unpause("ac","imessage.amxx")
    unpause("ac","scrollmsg.amxx")
    client_cmd(0,"stopsound")
    client_cmd(0,"spk misc/reset.wav")  
    server_cmd("sv_restart 1")
    set_task(2.0,"restart_rundy_play", 0)
}
No i zadziałało ;> :yea:

Prosił bym tylko jeszcze o pomoc w punkcie 2 i 3, bo z tym to już nie dam rady drogą dedukcji :F
Odpowiedz

  • +
  • -
Miczu - zdjęcie Miczu 14.04.2008

set_hudmessage(10, 255, 40, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, 4) 

    show_hudmessage(0,texty[resety-1])
usun to i sprawdz efekt :F
Odpowiedz

  • +
  • -
Ox!d3 - zdjęcie Ox!d3 15.04.2008

Usunąłem tak jak mówiłeś i pomogło oczywiście ale nie rozwiązało jednak problemu w całości ;P
Tzn. zielone napisy z odliczaniem na środku nie pokazują się już ale ramka z odliczaniem sekund nadal za wcześnie znikała. Oprócz tego przy kompilacji pojawił się dodatkowy "Warning" ale to akurat nie stanowi problemu w poprawnym działaniu pluginu :F


Tak więc znów sam doszedłem do następujących wniosków:

ten wiersz

remove_task(8188)

z tego miejsca
set_hudmessage(jac1, jac2, jac3, 0.65, 0.75, 2, 0.02, 1.0, 0.01, 0.1, 10) 
    show_hudmessage(0,"==================^n    *%s *^n  RESTART ZA: %i sec^n==================", restart_title, czas)
    czas--
    if(czas==2){
    set_task(0.2,"restart_rundy_0", 0)
    remove_task(8188)
przeniosłem tutaj
public restart_rundy(){
    noze=0
    unpause("ac","M_Antirusher_2.4.amxx")
    unpause("ac","imessage.amxx")
    unpause("ac","scrollmsg.amxx")
    client_cmd(0,"stopsound")
    client_cmd(0,"spk misc/reset.wav")  
    server_cmd("sv_restart 1")
    remove_task(8188)
    set_task(2.0,"restart_rundy_play", 0)
}

A oprócz tego te wiersze
if(czas==2){
set_task(0.2,"restart_rundy_0", 0)
Podmieniłem na na takie
if(czas==3){
set_task(0.7,"restart_rundy_0", 0)
aby zsynchronizować odliczający głos z wyświetlanym czasem

Tak więc do zrobienia został już tylko punkt 2 (chyba najtrudniejszy), z którym sobie sam na pewno nie poradzę. Także bardzo proszę o pomoc w tej kwestii :D
Odpowiedz

  • +
  • -
Miczu - zdjęcie Miczu 15.04.2008

No musze przyznac, ze zainponowales mi, nie wiele uzytkownikow, potrafi w tak samodzielny sposob rozwiazywac wlasne problemy, szczegolnie jesli dobrze to wiedze i dopiero sie uczysz :] Kto wie moze za jakis czas sam bedziesz pomagac innym i tworzyc na wlasna reke ;]


Jak wroce z uczeli to postaram sie ostatnie zrobic, ale dam na start potrzebne nam rzeczy, ktore beda do tego niezbedne (kto wie moze z tym uda ci sie zrobic ;> ).
public client_connect(id) {}          //gracz polaczyl sie z serwerem
public client_putinserver(id) {}     //gracz wszedl na serwer 

public client_disconnect(id) {}      //gracz opuscil serwer

new players[32], num

get_players(players,num,"ae","TERRORIST")        // w num jest ukryta liczba zywych TT

get_players(players,num,"ae","CT")                    // w num jest ukryta liczba zywych CT
get_players()

register_event("HLTV","Event_StartRound","a","1=0","2=0")            /* event od                                                                 startu rundy - dajemy plugin_init */

public Event_StartRound() {}                       // tutaj kod zwiazany z poczatkiem rundy <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/smile.gif' class='bbc_emoticon' alt=':)' />

set_task(5.0,"restart_odlicz", 0)  //uruchamia noze z opusnieniem 5.0s

Teraz tylko trzeba wymierzyc kiedy na serwerze jest conajmniej 1 osoba w kazdym teamie. i uruchamiamy noze :P Jak cos to pozniej zrobie jako calosc ;>

Wiele tu brakuje, ale kto wie :D

[ Dodano: 2008-04-15, 14:44 ]
PS. Daj aktualny kod bo mi sie nie chce mi sie robic kolejnego skladaka :P
Odpowiedz

  • +
  • -
Ox!d3 - zdjęcie Ox!d3 15.04.2008

Dzięki za uznanie :> Może gdybym znał perfekt angielski (a nie piąte przez dziesiąte :F ) i język programowania C++ to pewnie było by mi łatwiej pisać lub edytować pluginy.

Jeśli chodzi o ten drugi "Warning", który pojawił się przy kompilowaniu to też już sobie z tym poradziłem.
Trzeba było tylko usunąć tą linijkę, która nie była wykorzystywana w dalszej części pluga:
new texty[3][]={"Jeden","Dwa","Trzy"}
A jeśli chodzi o ten pierwszy "Warning", który pojawia się zawsze przy kompilacji, to nie mam pojęcia o co w nim chodzi :(

Tutaj masz już dopracowany plugin w mojej wersji (i Twojej oczywiście :F) prawie finalnej (czyli bez punktu 2):
#include <amxmodx>             // AMX Mod X
#include <amxmisc>

new czas = 60
new resety=3
new noze=0
new restart_title[1][] = {
    "La Resistance"
}
new misc[3][]={"misc/one.wav","misc/two.wav","misc/three.wav"}

public plugin_init()
{
    register_plugin("ROund STart REstart","1.9","Miczu & Ox!d3") // Mi też się coś należy ;D
    set_task(5.0,"restart_odlicz", 0)

    return PLUGIN_CONTINUE
}

public client_PreThink ( id )
{
    if(noze) client_cmd(id,"weapon_knife")
}

public restart_odlicz(){
   
    new players[32],num,num2
    get_players(players,num,"ae","TERRORIST")
    get_players(players,num2,"ae","CT")
   
    if((num)&&(num2))
    {
        noze=1
    pause("ac","M_Antirusher_2.4.amxx")
    pause("ac","imessage.amxx")
    pause("ac","scrollmsg.amxx")
    set_task(3.0,"muza_on", 0)
    set_task(1.0,"wyswietl_res",8188,"",0,"b")
    }
    else set_task(5.0,"restart_odlicz", 0)
}

public muza_on(){
    client_cmd(0,"stopsound")
    client_cmd(0,"spk misc/play_ejo.wav") 
}

public wyswietl_res(){

    new jac1=random_num(0,255)
    new jac2=random_num(0,255)
    new jac3=random_num(0,255)   

    set_hudmessage(jac1, jac2, jac3, 0.65, 0.75, 2, 0.02, 1.0, 0.01, 0.1, 10) 
    show_hudmessage(0,"==================^n    *%s *^n  RESTART ZA: %i sec^n==================", restart_title, czas)
    czas--
    if(czas==3){
    set_task(0.7,"restart_rundy_0", 0)
   }
}

public restart_rundy_play(){
    set_hudmessage(10, 255, 40, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, 4)
    show_hudmessage(0,"===================^n* LIVE LA RESISTANCE *^n===================")
}

public restart_rundy(){
    noze=0
    unpause("ac","M_Antirusher_2.4.amxx")
    unpause("ac","imessage.amxx")
    unpause("ac","scrollmsg.amxx")
    client_cmd(0,"stopsound")
    client_cmd(0,"spk misc/reset.wav")  
    server_cmd("sv_restart 1")
    remove_task(8188)
    set_task(2.0,"restart_rundy_play", 0)
}

public restart_rundy_0(){
    client_cmd(0,"stopsound")
    client_cmd(0,"spk %s",misc[resety-1])
    resety--
    if(resety==0) set_task(1.0,"restart_rundy", 0)
    else set_task(1.3,"restart_rundy_0", 0)
}

public plugin_precache()
{
    precache_sound("misc/play_ejo.wav") 
    precache_sound("misc/reset.wav") 
    precache_sound(misc[0])
    precache_sound(misc[1])
    precache_sound(misc[2])

    return PLUGIN_CONTINUE
}
Do załącznika dodałem jeszcze pliki WAV do pluga gdybyś chciał go przetestować w całości. ;>

Wieczorem spróbuje złożyć to w całość (chociaż będzie mi ciężko to ogarnąć) bo teraz nie mam za bardzo czasu, no chyba że Ty zrobisz to wcześniej
;> :D

Załączone pliki

Odpowiedz

  • +
  • -
Miczu - zdjęcie Miczu 15.04.2008

Nie moglem testowac zbyt dobrze, bo chyba boty nie maja disconecta :P ale powinno dzialac

#include <amxmodx>             // AMX Mod X 
#include <amxmisc> 

new czas = 60 
new resety=3 
new noze=0 
new restart_title[1][] = { "La Resistance" }

new misc[3][]={"misc/one.wav","misc/two.wav","misc/three.wav"} 

new bylo_juz=0

public plugin_init() 
{ 
    register_plugin("ROund STart REstart","1.9","Miczu & Ox!d3") // Mi też się coś należy ;D 
    
    register_event("HLTV","Event_StartRound","a","1=0","2=0")

    return PLUGIN_CONTINUE 
} 

public client_disconnect(id){
	new players[32], num, num2
	get_players(players,num,"e","TERRORIST")
	get_players(players,num2,"e","CT")
	if(num2+num<2) bylo_juz=0
}

public Event_StartRound(){
	if(bylo_juz==0) set_task(0.2,"restart_odlicz", 0)
}

public client_PreThink ( id ) 
{ 
	if(noze) client_cmd(id,"weapon_knife") 
} 

public restart_odlicz(){ 
    
	new players[32],num,num2 
	get_players(players,num,"ae","TERRORIST") 
	get_players(players,num2,"ae","CT") 
    
	if((num)&&(num2)){ 
        noze=1 
	bylo_juz=1
	pause("ac","Antirusher.amxx")
	pause("ac","M_Antirusher.amxx")
        pause("ac","M_Antirusher_2.4.amxx")
	pause("ac","M_Antirusher_2.5.amxx")
        pause("ac","imessage.amxx") 
        pause("ac","scrollmsg.amxx") 
        set_task(3.0,"muza_on", 0) 
        set_task(1.0,"wyswietl_res",8188,"",0,"b") 
	} 
} 

public muza_on(){ 
	client_cmd(0,"stopsound") 
	client_cmd(0,"spk misc/play_ejo.wav") 
} 

public wyswietl_res(){ 

    new jac1=random_num(0,255) 
    new jac2=random_num(0,255) 
    new jac3=random_num(0,255)    

    set_hudmessage(jac1, jac2, jac3, 0.65, 0.75, 2, 0.02, 1.0, 0.01, 0.1, 10) 
    show_hudmessage(0,"==================^n    *%s *^n  RESTART ZA: %i sec^n==================", restart_title, czas) 
    czas-- 
    if(czas==3){ 
    set_task(0.7,"restart_rundy_0", 0) 
   } 
} 

public restart_rundy_play(){ 
    set_hudmessage(10, 255, 40, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, 4) 
    show_hudmessage(0,"===================^n* LIVE LA RESISTANCE *^n===================") 
} 

public restart_rundy(){ 
    noze=0 
    unpause("ac","Antirusher.amxx")
    unpause("ac","M_Antirusher.amxx")
    unpause("ac","M_Antirusher_2.4.amxx") 
    unpause("ac","M_Antirusher_2.5.amxx")
    unpause("ac","imessage.amxx") 
    unpause("ac","scrollmsg.amxx") 
    client_cmd(0,"stopsound") 
    client_cmd(0,"spk misc/reset.wav")  
    server_cmd("sv_restart 1") 
    remove_task(8188) 
    set_task(2.0,"restart_rundy_play", 0) 
} 

public restart_rundy_0(){ 
    client_cmd(0,"stopsound") 
    client_cmd(0,"spk %s",misc[resety-1]) 
    resety-- 
    if(resety==0) set_task(1.0,"restart_rundy", 0) 
    else set_task(1.3,"restart_rundy_0", 0) 
} 

public plugin_precache() 
{ 
    precache_sound("misc/play_ejo.wav") 
    precache_sound("misc/reset.wav") 
    precache_sound(misc[0]) 
    precache_sound(misc[1]) 
    precache_sound(misc[2]) 

    return PLUGIN_CONTINUE 
}


[ Dodano: 2008-04-15, 19:49 ]
Jesli chcesz zeby wystarczylo, ze reset byl gdy np. CT=10 a TT=0 i przechodza ludzie i byly noze to takie cos dac

public client_disconnect(id){ 
    new players[32], num, num2 
    get_players(players,num,"e","TERRORIST") 
    get_players(players,num2,"e","CT") 
    if(num2<1 || num<1) bylo_juz=0 
}
Odpowiedz

  • +
  • -
Ox!d3 - zdjęcie Ox!d3 16.04.2008

Przetestowałem plugin w tej wersji i sprawa wygląda następująco:

1. Po zmianie mapy kiedy wejdzie minimum jedna osoba do CT i minimum 1 osoba to TT, plugin załącza się ,wyłącza i działa ogólnie prawidłowo

2. Podczas tej samej mapy kiedy na serwerze są 2 osoby i jedna wyjdzie z CT lub TT a jedna zostanie na serwie w CT lub TT a następnie jakiś gracz wejdzie na serwer i dołączy do pustego teamu, wówczas plugin nie reaguje a wydaje mi się, że powinien zadziałać...

3. Następna sytuacja: na serwerze są 2 osoby, runda nożowa po zmianie mapy już się odbyła, jedna osoba przechodzi do CT lub na SPECTA po czym wraca do TT (lub na odwrót przechodzi do TT lub na SPECTA i wraca do CT). Po takiej akcji plugin również nie reaguje (nie mam pojęcia czy powinien ;P)

4. No i ostatnia sytuacja dotyczy przypadku kiedy na serwerze są 2 osoby, następuje zmiana mapy i plugin prawidłowo wykonuję swoje czynności. Następnie te 2 osoby opuszczają serwer i wchodzą ponownie na tej samej mapie, no i wówczas plugin załącza sie ponownie ale niestety NIEPRAWIDŁOWO, ponieważ czas jest odliczany od 0 wstecz i tak odlicza na minusie w nieskończoność (czyli ta ramka z odliczaniem sekund nie znika). Na skutek tego błędu nie są odtwarzane pliki dźwiękowe z odliczaniem głosowym.

Podsumowując: zmiany które wprowadziłeś w pluginie przynoszą efekt JEDYNIE w sytuacji opisanej w punkcie 4. Efekt oczywiście z drobnym błędem, bo odlicza wstecz. Także nie wiem jakie miałeś zamiary co do działania tego pluginu, ale opisałem Ci dokładnie sposób jego zachowania w 4 różnych okolicznościach (możliwe, że jakąś pominąłem ;P).

Jak znajdziesz chwilkę to prosił bym Cię o dopracowanie tej funkcji pluga.
Odpowiedz

  • +
  • -
Miczu - zdjęcie Miczu 16.04.2008

Ale ja pisalem ze tak bedzie dzialac

Jesli chcesz zeby wystarczylo, ze reset byl gdy np. CT=10 a TT=0 i przechodza ludzie i byly noze to takie cos dac

public client_disconnect(id){ 
    new players[32], num, num2 
    get_players(players,num,"e","TERRORIST") 
    get_players(players,num2,"e","CT") 
    if(num2<1 || num<1) bylo_juz=0 
}


Co do 4 to bedzie moje jedyne zmartwienie, poza tym chyba jeszcze to jak ktos przejdzie z speca do teamu z 0 liczba miejsc. Ja osobiscie nie lubilem w starym plugu nozowym, ze resety robil 'za czesto' na jedna mape, no ale to ty zyczysz sobie takiego pluga :P

[ Dodano: 2008-04-16, 08:18 ]
Przy rozlaczeniu sie gracza z serwera nie widzi tego? (jak jeden jest na sererze) czyli boty nie klamaly :/
Odpowiedz

  • +
  • -
Ox!d3 - zdjęcie Ox!d3 16.04.2008

OK masz racje, zgadzam się z Tobą. Najważniejsze jest aby plugin działał w przypadkach opisanych w punktach 1, 2 i 4 i na tym się skupmy. Ta opcja 3 z przechodzeniem z teamu do teamu jest mało istotna.

Źle cię po prostu zrozumiałem z tym kodem. Myślałem, że mam go zastosować właśnie wtedy jeśli nie będę chciał aby miało znaczenie przechodzenie z teamu do teamu
Odpowiedz

  • +
  • -
Miczu - zdjęcie Miczu 17.04.2008

Postac finalna

#include <amxmodx>             // AMX Mod X 
#include <amxmisc> 

new czas = 60 
new resety=3 
new noze=0 
new restart_title[1][] = { "La Resistance" } 

new misc[3][]={"misc/one.wav","misc/two.wav","misc/three.wav"} 

new bylo_juz=0 

public plugin_init() 
{ 
	register_plugin("ROund STart REstart","1.9","Miczu & Ox!d3") // Mi też się coś należy ;D 
    
	register_event("HLTV","Event_StartRound","a","1=0","2=0") 

	return PLUGIN_CONTINUE 
} 

public test_it(){
	new players[32], num, num2 
	get_players(players,num,"e","TERRORIST") 
	get_players(players,num2,"e","CT") 
	if(num2<1 || num<1) return 0
	return 1
}

public client_disconnect(id){ 
	set_task(0.3,"disconnect",0)
}

public disconnect(){
	if(test_it()==0 && noze==0) bylo_juz=0
}

public Event_StartRound(){ 
	if(test_it()==0 && noze==0) bylo_juz=0
	set_task(0.2,"restart_odlicz", 0) 
	set_task(6.0,"restart_odlicz", 0) 
} 

public client_PreThink ( id ) 
{ 
	if(noze) client_cmd(id,"weapon_knife") 
} 

public restart_odlicz(){ 
       
	if(test_it() && noze==0 && bylo_juz==0){ 
		noze=1 
		bylo_juz=1
		czas=60
		resety=3
		pause("ac","Antirusher.amxx") 
		pause("ac","M_Antirusher.amxx") 
		pause("ac","M_Antirusher_2.4.amxx") 
		pause("ac","M_Antirusher_2.5.amxx") 
		pause("ac","M_Antirusher_2.5b.amxx") 
		pause("ac","imessage.amxx") 
		pause("ac","scrollmsg.amxx") 
		set_task(3.0,"muza_on", 0) 
		set_task(1.0,"wyswietl_res",8188,"",0,"b") 
	} 
} 

public muza_on(){ 
	client_cmd(0,"stopsound") 
	client_cmd(0,"spk misc/play_ejo.wav") 
} 

public wyswietl_res(){ 

	new jac1=random_num(0,255) 
	new jac2=random_num(0,255) 
	new jac3=random_num(0,255)    

	set_hudmessage(jac1, jac2, jac3, 0.65, 0.75, 2, 0.02, 1.0, 0.01, 0.1, 10) 
	show_hudmessage(0,"==================^n    *%s *^n  RESTART ZA: %i sec^n==================", restart_title, czas) 
	czas-- 
	if(czas==3){ 
		set_task(0.7,"restart_rundy_0", 0) 
	} 
} 

public restart_rundy_play(){ 
	set_hudmessage(10, 255, 40, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, 4) 
	show_hudmessage(0,"===================^n* LIVE LA RESISTANCE *^n===================") 
} 

public restart_rundy(){ 
	unpause("ac","Antirusher.amxx") 
	unpause("ac","M_Antirusher.amxx") 
	unpause("ac","M_Antirusher_2.4.amxx") 
	unpause("ac","M_Antirusher_2.5.amxx") 
	unpause("ac","M_Antirusher_2.5b.amxx") 
	unpause("ac","imessage.amxx") 
	unpause("ac","scrollmsg.amxx") 
	client_cmd(0,"stopsound") 
	client_cmd(0,"spk misc/reset.wav")  
	server_cmd("sv_restart 1") 
	remove_task(8188) 
	set_task(2.0,"restart_rundy_play", 0) 
} 

public restart_rundy_0(){ 
	client_cmd(0,"stopsound") 
	client_cmd(0,"spk %s",misc[resety-1]) 
	resety-- 
	if(resety==0){
		noze=0
		set_task(1.0,"restart_rundy", 0) 
	}
	else set_task(1.2,"restart_rundy_0", 0) 
} 

public plugin_precache() 
{ 
	precache_sound("misc/play_ejo.wav") 
	precache_sound("misc/reset.wav") 
	precache_sound(misc[0]) 
	precache_sound(misc[1]) 
	precache_sound(misc[2]) 

	return PLUGIN_CONTINUE 
}

Powinno przejsc wszystkie testy na serwerze. Poza tym dalem tradycyjne wylaczenie noza przy ostatniej sekundzie przed resetem :) zawsze beka przy tym jest :P
Odpowiedz

  • +
  • -
Ox!d3 - zdjęcie Ox!d3 18.04.2008

Dobra robota :blaga: Chyba wszystko działa jak należy ^D^ Podaj mi tylko kod jaki bym musiał podmienić gdybym chciał żeby przechodzenie z teamu do teamu NIE miało znaczenia. Chodzi mi o sytuację opisaną w punkcie 3
Odpowiedz

bicek - zdjęcie bicek 19.04.2008

skoro plugin jest już skończony i dopracowany to śmiało możecie go opublikować w dziale pluginy ^^
Odpowiedz

  • +
  • -
Miczu - zdjęcie Miczu 19.04.2008

tez tak mi sie zdaje :F
Odpowiedz

Gość__* 19.04.2008

Miczu, a mi nie ;)

Dodałem wersje "finalną" i co? AR się wyłacza na RR i potem się nie odpala ;>
Odpowiedz

  • +
  • -
Miczu - zdjęcie Miczu 20.04.2008

A odtwarza reset.wav?

unpause("ac","Antirusher.amxx") 
    unpause("ac","M_Antirusher.amxx") 
    unpause("ac","M_Antirusher_2.4.amxx") 
    unpause("ac","M_Antirusher_2.5.amxx") 
    unpause("ac","M_Antirusher_2.5b.amxx") 
    unpause("ac","imessage.amxx") 
    unpause("ac","scrollmsg.amxx") 
    client_cmd(0,"stopsound") 
    client_cmd(0,"spk misc/reset.wav")

Najwyzej moze miec opoznienie 1 rundy ;>
Odpowiedz