Eventuri Runda si Player Spawn (nu le incurcati!)

Tutoriale scripting, cod si portiuni de cod.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
User avatar
KronoS eXtream
Fost administrator
Fost administrator
Posts: 4378
Joined: 02 Apr 2009, 19:18
Detinator Steam: Da
Reputatie: Fost administrator
Fost detinator Zombie-Land.eXtream.Ro
Contribuitor
Fost Scripter eXtreamCS
Dezvoltator al listei de seriozitate eXtreamCS
Location: Bucharest
Has thanked: 551 times
Been thanked: 820 times
Contact:

27 Aug 2013, 11:58

Una dintre cele mai intalnite greseli facute in scripting este reprezentata de folosirea incorecta a eventurilor rundei si player spawn.Cititi cu atentie explicatiile de mai jos si nu le incurcati.

1. New round (runda noua)

Cea mai comuna greseala facuta in incercarea de a detecta inceputul unei runde noi este folosirea eventului ResetHUD:

Code: Select all

register_event( "ResetHUD", "Func_Runda_Noua", "b" );
Eventul ResetHUD este apelat din mai multe circumstante pentru fiecare jucator in parte, nu doar cand acesta primeste spawn.Cea mai buna metoda de a detecta inceputul unei runde este folosirea eventului HLTV:

Code: Select all

register_event( "HLTV", "Func_Runda_Noua", "a", "1=0", "2=0" );
Trebuie retinut faptul ca acest event nu este apelat in prima runda (la inceputul hartii).Pentru a o capta si pe aceasta, puteti folosi functiile: plugin_init( ) sau plugin_cfg( ).De asemenea, acest event este executat doar atunci cand incepe freezetime-ul (cand jucatorii nu se pot misca sau ataca).

2. Player Spawn

Daca folositi AMX Mod X versiunea 1.8.0 sau una mai noua, cea mai simpla si eficienta cale de a detecta Player Spawn este folosirea eventului Ham_Spawn:

Code: Select all

RegisterHam( Ham_Spawn, "player", "public_player_spawn", 1 );
Pentru jocul Counter-Strike trebuie sa verificam daca jucatorul este in viata (suna aiurea dar eventul este apelat si atunci cand un jucator se alatura unei echipe si este mort).Mai jos aveti un exemplu bun:

Code: Select all

#include < amxmodx >
#include < hamsandwich >
 
public plugin_init( )
        RegisterHam( Ham_Spawn, "player", "Func_Player_Spawn", 1 );
 
public Func_Player_Spawn( iPlayer )
{
        if ( is_user_alive( iPlayer ) )
        {
                // instructiuni...
        }
}
3. Round Start (inceputul unei runde 2)

Eventul Round Start se produce la sfarsitul freezetime-ului.Multi scripteri incurca Round Start cu New Round.
Metoda corecta ce poate fi utilizata pentru detectarea Round Start este aceasta:

Code: Select all

register_logevent( "Func_Round_Start", 2, "1=Round_Start" );
4. Round End (sfarsitul unei runde)

Acest event este apelat la sfarsitul rundei (atunci cand toti jucatorii dintr-o echipa sunt morti/ostaticii au fost salvati/bomba a explodat/timpul rundei s-a sfarsit/etc.).
Metoda corecta ce poate fi utilizata pentru detectarea Round End este aceasta:

Code: Select all

register_logevent( "Func_Round_End", 2, "1=Round_End" );
Autor: KronoS # GG (sintetizare si traducere de pe Alliedmodders)
Nu efectuez tranzactii pe mess, skype etc. Aveti grija la indivizii care se dau drept mine!
Nu mai ofer suport asa ca nu imi mai trimiteti mesaje in legatura cu asta!


Zombie Plague Shade 1.2-debug1 [with Item Limiter] (12 September 2015) - Bombardier Branch
Cosmin
Fost moderator
Fost moderator
Posts: 9362
Joined: 06 Jul 2013, 22:08
Detinator Steam: Da
Detinator server CS: Nu
Reputatie: Fost eXtream Mod
Fost Scripter eXtreamCS
Nume anterior: scosmynnnn
Has thanked: 492 times
Been thanked: 547 times

27 Aug 2013, 14:08

multumesc :) numai la programarea cs'ului stau :))
User avatar
Adventx
Membru, skill +4
Membru, skill +4
Posts: 1785
Joined: 17 Sep 2013, 21:44
Detinator Steam: Da
Reputatie: Fost moderator ajutator
Has thanked: 128 times
Been thanked: 142 times
Contact:

16 Feb 2014, 20:44

Code: Select all

register_event( "HLTV", "Func_Runda_Noua", "a", "1=0", "2=0" );
Trebuie retinut faptul ca acest event nu este apelat in prima runda (la inceputul hartii).Pentru a o capta si pe aceasta, puteti folosi functiile: plugin_init( ) sau plugin_cfg( ).De asemenea, acest event este executat doar atunci cand incepe freezetime-ul (cand jucatorii nu se pot misca sau ataca).
Kronos #GG da-mi un exemplu cum sa se execute eventul acesta din prima runda ca nu am inteles :)
User avatar
KronoS eXtream
Fost administrator
Fost administrator
Posts: 4378
Joined: 02 Apr 2009, 19:18
Detinator Steam: Da
Reputatie: Fost administrator
Fost detinator Zombie-Land.eXtream.Ro
Contribuitor
Fost Scripter eXtreamCS
Dezvoltator al listei de seriozitate eXtreamCS
Location: Bucharest
Has thanked: 551 times
Been thanked: 820 times
Contact:

16 Feb 2014, 20:46

Foloseste punctul 3, deoarece nu cred ca are importanta freezetime-ul in cazul tau :)
Nu efectuez tranzactii pe mess, skype etc. Aveti grija la indivizii care se dau drept mine!
Nu mai ofer suport asa ca nu imi mai trimiteti mesaje in legatura cu asta!


Zombie Plague Shade 1.2-debug1 [with Item Limiter] (12 September 2015) - Bombardier Branch
User avatar
Adventx
Membru, skill +4
Membru, skill +4
Posts: 1785
Joined: 17 Sep 2013, 21:44
Detinator Steam: Da
Reputatie: Fost moderator ajutator
Has thanked: 128 times
Been thanked: 142 times
Contact:

16 Feb 2014, 22:07

KronoS # GG wrote:Foloseste punctul 3, deoarece nu cred ca are importanta freezetime-ul in cazul tau :)
Are, imi trebue la un plugin, pentru ca am freezetime (5 sec.) si vreau sa creez ceata (fog) si sa setez lumita (light) si daca folosesc round event va actiona dupa ce trece freezetime, asa ca vreau sa folosesc HLTV :)
User avatar
KronoS eXtream
Fost administrator
Fost administrator
Posts: 4378
Joined: 02 Apr 2009, 19:18
Detinator Steam: Da
Reputatie: Fost administrator
Fost detinator Zombie-Land.eXtream.Ro
Contribuitor
Fost Scripter eXtreamCS
Dezvoltator al listei de seriozitate eXtreamCS
Location: Bucharest
Has thanked: 551 times
Been thanked: 820 times
Contact:

16 Feb 2014, 22:08

Atunci apeleaza functiile care creeaza ceata si seteaza lumina si in plugin_init :)
Nu efectuez tranzactii pe mess, skype etc. Aveti grija la indivizii care se dau drept mine!
Nu mai ofer suport asa ca nu imi mai trimiteti mesaje in legatura cu asta!


Zombie Plague Shade 1.2-debug1 [with Item Limiter] (12 September 2015) - Bombardier Branch
User avatar
Adventx
Membru, skill +4
Membru, skill +4
Posts: 1785
Joined: 17 Sep 2013, 21:44
Detinator Steam: Da
Reputatie: Fost moderator ajutator
Has thanked: 128 times
Been thanked: 142 times
Contact:

16 Feb 2014, 22:12

KronoS # GG wrote:Atunci apeleaza functiile care creeaza ceata si seteaza lumina si in plugin_init :)
Adica sa adaug functiile in plugin init?
User avatar
KronoS eXtream
Fost administrator
Fost administrator
Posts: 4378
Joined: 02 Apr 2009, 19:18
Detinator Steam: Da
Reputatie: Fost administrator
Fost detinator Zombie-Land.eXtream.Ro
Contribuitor
Fost Scripter eXtreamCS
Dezvoltator al listei de seriozitate eXtreamCS
Location: Bucharest
Has thanked: 551 times
Been thanked: 820 times
Contact:

16 Feb 2014, 22:15

Exact :) Le apelezi atunci cand se executa logevent_roundstart, dar si la incarcarea pluginului (in plugin_init)
Nu efectuez tranzactii pe mess, skype etc. Aveti grija la indivizii care se dau drept mine!
Nu mai ofer suport asa ca nu imi mai trimiteti mesaje in legatura cu asta!


Zombie Plague Shade 1.2-debug1 [with Item Limiter] (12 September 2015) - Bombardier Branch
User avatar
Adventx
Membru, skill +4
Membru, skill +4
Posts: 1785
Joined: 17 Sep 2013, 21:44
Detinator Steam: Da
Reputatie: Fost moderator ajutator
Has thanked: 128 times
Been thanked: 142 times
Contact:

17 Feb 2014, 15:37

KronoS # GG wrote:Exact :) Le apelezi atunci cand se executa logevent_roundstart, dar si la incarcarea pluginului (in plugin_init)
Face Palm Kronos #GG, zi-mi te rog cum sa apelez Eventul HLTV din prima runda si gata :)
User avatar
KronoS eXtream
Fost administrator
Fost administrator
Posts: 4378
Joined: 02 Apr 2009, 19:18
Detinator Steam: Da
Reputatie: Fost administrator
Fost detinator Zombie-Land.eXtream.Ro
Contribuitor
Fost Scripter eXtreamCS
Dezvoltator al listei de seriozitate eXtreamCS
Location: Bucharest
Has thanked: 551 times
Been thanked: 820 times
Contact:

17 Feb 2014, 20:27

Incearca sa apelezi in plugin_init( ):

Code: Select all

numele_functiei_HLTV( );
Nu efectuez tranzactii pe mess, skype etc. Aveti grija la indivizii care se dau drept mine!
Nu mai ofer suport asa ca nu imi mai trimiteti mesaje in legatura cu asta!


Zombie Plague Shade 1.2-debug1 [with Item Limiter] (12 September 2015) - Bombardier Branch
LordOfNothing
Membru, skill +1
Membru, skill +1
Posts: 387
Joined: 19 Jul 2013, 15:51
Detinator Steam: Nu
Reputatie: Restrictie PM
Has thanked: 11 times
Been thanked: 35 times

28 Mar 2014, 08:09

kronos tutorialul ar trebui sa se numeasca asa :

Runda Noua / Jucatorul se Respawneaza / Inceputul Rundei / Sfarsitul Rundei

PS : parka suna mai bine in en :))
Post Reply

Return to “Scripting”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 2 guests