MPD wrote:Vietoj Ham_Spawn siūlyčiau HLTV event, nes tokiu atveju visus vienu metu užšaldys, o ne kada atsispawnins. Būna gi, kad vėliau prisijungęs žaidėjas keliom (ar daugiau) sec vėliau atsispawnina.
Pasakei dalį tiesos ir melo.
Viena, tai kai iškviečiamas HLTV eventas, tai žaidėjai dar nebūna prisikėlę. Tam reikia tada daryti task su 0.1s uždelsimu ir tada daryti norimus veiksmus.
Tiesa, kad šiuo metodu tada laikas visiems bus nevienodas. Jei kas vėliau kiek atėjo į serverį, tai vėliau ir gaus freeze.
Dar didžiulė nesąmonė šiuo atveju, kad task kviečiamas konkretaus žaidėjo spawn funkcijoje. Taip sukuriama daug lygiai tokių pačių task, kurie daro tą patį. Ta freeze funkcija galioja visiems žaidėjams, o ne individualiai.
Teisingas kodas būtų:
Code: Select all
public plugin_init(){ register_logevent("logevent_round_start",2, "1=Round_Start")} public logevent_round_start() set_task(40.0, "OnTerroristFreeze"); } public OnTerroristFreeze(){ new players[32], playerCount; get_players(players, playerCount, "aceh", "TERRORIST"); if (!playerCount) return; for (new i; i < playerCount; i++) set_entity_flags(players[i], FL_FROZEN, true);}
logevent_round_start() čia yra laikas po freezetime pabaigos. Tikrojo raundo pradžia.
Palikau CS pasaulį ;/ . Nebepasiekiamas.