←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] set_task pętla co rundę

Zablokowany

  • +
  • -
he1st - zdjęcie he1st 18.10.2014

Witajcie. Mam mały problem z

 

set_task

 

A mianowicie, chciałbym sprawić, żeby 

 

set_task(1.0, "checklvl", id)

 

było wykonywane co rundę na jej początku. Pytanie: Jak mogę tego dokonać?? :)

Odpowiedz

  • +
  • -
Petpat - zdjęcie Petpat 18.10.2014

Dodaj #include <hamsandwich>
 
 
w public_init dodaj
 
    RegisterHam(Ham_Spawn, "player", "wykonaj", 1);
Potem dodaj
 
public wykonaj(){
    set_task(1.0, "checklvl", id)
}
Po co pętla skoro można zrobic tak ? :)
Użytkownik Petpat edytował ten post 18.10.2014 18:46
Odpowiedz

  • +
  • -
Wielkie Jol - zdjęcie Wielkie Jol 18.10.2014

refresh

 

 

Dodaj #include <hamsandwich>
 
 
w public_init dodaj
 

    RegisterHam(Ham_Spawn, "player", "wykonaj", 1);
Potem dodaj
 
public wykonaj(){
    set_task(1.0, "checklvl", id)
}
Po co pętla skoro można zrobic tak ? :)

 

 

Próbowałeś to chociaż skompilować? xD

 

0ne, dodajesz event nowej rundy i w pętli dla każdego gracza wykonujesz taska.

Odpowiedz

  • +
  • -
MyShoT4YoU - zdjęcie MyShoT4YoU 18.10.2014

Przykład eventu hltv

 

Ten przykład działa, ale chyba ten event też tej funkcji służy

register_logevent("TaskCzasu", 2, "1=Round_Start");
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN ""
#define VERSION "1.0"
#define AUTHOR "MyShoT4You"

public plugin_init() 

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

public TaskCzasu(id){

set_task(55.0, "TaskCzasu")

}

public task()
{
////twój kod
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/


Użytkownik MyShoT4YoU edytował ten post 18.10.2014 21:10
Odpowiedz

  • +
  • -
Wielkie Jol - zdjęcie Wielkie Jol 18.10.2014


Przykład eventu hltv

Ten przykład działa, ale chyba ten event też tej funkcji służy

register_logevent("TaskCzasu", 2, "1=Round_Start");
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN ""
#define VERSION "1.0"
#define AUTHOR "MyShoT4You"

public plugin_init() 

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

public TaskCzasu(id){

set_task(55.0, "TaskCzasu")

}

public task()
{
////twój kod
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/


Niby czemu ma ten kod służyć?
Odpowiedz

  • +
  • -
he1st - zdjęcie he1st 19.10.2014

Chodzi mi to, żeby sprawdzało co rundę lvl graczowi. 

 

Z dwoma warunkami w

public RoundStart()

wygląda to tak:

 

if(player_lvl[i] > 0 && zobaczylemlvl[i] == 0)
{
set_task(1.0, "checklvl", i)
}
a to moje checklvl
Spoiler
W ten sposób opisany task wykonuje się raz na mapę i nie wiem jak mogę to zmienić, żeby był co rundę ;P
 
Spróbuję jeszcze pokombinować z flagami.
 
 

@MyShoT4YoU

 

set_task wykonuje funkcję w określonym czasie. A w twoim wypadku to on ch**a zrobi, bo dałeś

set_task(55.0, "TaskCzasu")

a później jako funkcję wykonywalną dałeś

public task()

{

}

więc stale wykonujesz funkcję

public TaskCzasu()

gdzie masz umieszczony ten sam task... :facepalm:

 


Użytkownik !_0ne_! edytował ten post 19.10.2014 09:17
Odpowiedz

  • +
  • -
Najlepsza odpowiedź Wielkie Jol - zdjęcie Wielkie Jol 19.10.2014

1. Aaa, no to bierzesz ten event:

register_logevent("Poczatek_Rundy", 2, "1=Round_Start")

2. Robisz petle dla wszystkich graczy na serwerze.

3. W petli dajesz warunki i inne duperele.

4. I dla kazdego gracza w petli wykonujesz funkcje checklevel(id)

 

Ale po co to?

zobaczylemlvl[i]

 

Przeciez co runde graczowi przybywa expa i moze w pewnej rundzie osiagnac level 100, ale Ty juz tego nie sprawdzisz, bo zablokowales mozliwosc sprawdzenia.

Odpowiedz
Zablokowany