←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Funkcja czasowa

Zablokowany

  • +
  • -
EufooZ - zdjęcie EufooZ 13.04.2011

Witam, czy taki zapis będzie działać ? Chciałbym aby po 3.5 sekundach nowej rundy wykonywał się dany kod w tym przypadku mam tak:

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
//tutaj kody.......
set_task(3.5, "wywal", 0)
//tutaj kody.......
}

public wywal(id)
{
strip_user_weapons(id)
}


Oraz po 5 sekundzie nowej rundy wykonywał się ten kod:

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
//tutaj kody.......
set_task(5.0, "menu_broni", 0)
//tutaj kody.......
}
public menu_broni(id)
{
menu = menu_create("Menu broni","menu_broni_wybierz")

menu_additem(menu,"Marker + HE")
menu_additem(menu,"Super Marker + HE (Tylko dla VIP)")
//tutaj kod leci dalej ....
Odpowiedz

  • +
  • -
KariiO - zdjęcie KariiO 13.04.2011

Tak będzie działać , wszystkim wyrzuci bron a następnie pokaże im menu.
Odpowiedz

  • +
  • -
EufooZ - zdjęcie EufooZ 13.04.2011

To rozumiem, że co runde tak będzie robiło ?

Masz + :)
Odpowiedz

  • +
  • -
speedkill - zdjęcie speedkill 13.04.2011

A nie łatwiej kod tam gdzie menu
case 1
strip_user_weapons
give_item ...
Odpowiedz

  • +
  • -
EufooZ - zdjęcie EufooZ 13.04.2011

Też tak mam, lecz chodzi o to, że PB na początku rundy automatycznie daje bronie, dlatego chce je najpierw wywalić :P
Odpowiedz

  • +
  • -
Leihto - zdjęcie Leihto 13.04.2011

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
//tutaj kody.......
set_task(3.5, "wywal", 0)
//tutaj kody.......
}

To nie bedzie dzialac ;) Dlatego ze plugin_init jest przy zmianie mapy ;)

Zastosuj odpowiedniego eventa, lub wykonaj to gdy gracz sie spawnuje ;)

Czyli uzywajac hama tak:
RegisterHam(Ham_Spawn, "player", "funkcja", 1);


Pozdrawiam ;)
Użytkownik Blak Rajder edytował ten post 14.04.2011 15:00
Odpowiedz

  • +
  • -
KariiO - zdjęcie KariiO 13.04.2011

UP
Co Ty gadasz? Jaka zmiana mapy...
Odpowiedz

  • +
  • -
Knopers - zdjęcie Knopers 13.04.2011

Taka : plugin_init
Odpowiedz

  • +
  • -
Ortega - zdjęcie Ortega 13.04.2011

@up
void C_ServerActivate_Post(edict_t *pEdictList, int edictCount, int clientMax)
{
	if (g_activated)
		RETURN_META(MRES_IGNORED);

	for (int i = 1; i <= gpGlobals->maxClients; ++i)
	{
		CPlayer	*pPlayer = GET_PLAYER_POINTER_I(i);
		pPlayer->Init(pEdictList + i, i);
	}

	executeForwards(FF_PluginInit);
	executeForwards(FF_PluginCfg);
Tak właśnie się zaczyna wykonywanie forwardu plugin_initialize.( amxmodx source 1.8.1 ) ServerActivate_Post wskazuje w sposób oczywisty, że po wykonaniu najważniejszych czynności ( precache ). Co de facto występuje po zmianie mapy albo przeładowaniu aplikacji.

Co do wątku można za pomocą rożnych eventów czy forwardów czy wirtualnych funkcji przechwycić to co chcesz ale najlepiej posłużyć się eventem nowej rundy bez zbędnych udziwnień. Oczywiście event ten nie posiada INDEKSU GRACZA ( bo niby skąd ), dlatego pobieranie 1 parametru jest bezsensowne.
Odpowiedz

  • +
  • -
EufooZ - zdjęcie EufooZ 13.04.2011

Ale chyba i tak będzie działało... matko teraz to już kompletnie nic nie rozumiem..

Blak Rajder, nie pozdrawiaj bo walisz mi głupoty (nie co do set_task) jak byś poczytał ze zrozumieniem, to byś wiedział, że chcę wykonać to po danym czasie a nie od razu przy respie ......

Przecież jak się respi to wykonuje się czynność to tak samo jak co każdą runde co ileś czasu wykonuje się czynność ...

Dodano 13 kwiecień 2011 - 18:03:
Nie chce od nowej rundy bo to mnie zupełnie nie interesuje .

Dodano 13 kwiecień 2011 - 18:04:
Chcę aby co runde wykonywało daną czynność tak jak jest to w set_task po odstępie danego czasu tylko raz na runde od jej startu.
Odpowiedz

  • +
  • -
Leihto - zdjęcie Leihto 14.04.2011

Blak Rajder, nie pozdrawiaj bo walisz mi głupoty (nie co do set_task) jak byś poczytał ze zrozumieniem, to byś wiedział, że chcę wykonać to po danym czasie a nie od razu przy respie ......


Widze ze myslenie zanika..

#include <amxmodx>
#include <hamsandwich>

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_Spawn, "player", "funkcja", 1)
}
public funkcja(id)
{
set_task(3.0, "wyrzuc")
}
public wyrzuc(id)
{
strip_user_weapons(id)
}


A dalej tak robisz..

#include <amxmodx>
#include <hamsandwich>

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_Spawn, "player", "funkcja", 1)
}
public funkcja(id)
{
set_task(3.0, "wyrzuc")
set_task(5.0, "menu_broni")
}
public wyrzuc(id)
{
strip_user_weapons(id)
}
public menu_broni(id)
{
menu = menu_create("Menu broni","menu_broni_wybierz")

menu_additem(menu,"Marker + HE")
menu_additem(menu,"Super Marker + HE (Tylko dla VIP)")
//tutaj kod leci dalej ....
}



@edit
Kody sa pisane w notatniku :<


@ i jeszcze jedno
Jak wykonasz eventa na poczatek rundy, to gdy osoba wejdzie chwile po poczatku to sie juz mu nie wykona akcja..
Użytkownik Blak Rajder edytował ten post 14.04.2011 14:59
Odpowiedz

  • +
  • -
diablix - zdjęcie diablix 14.04.2011

Blak Rajder, nie pozdrawiaj bo walisz mi głupoty (nie co do set_task) jak byś poczytał ze zrozumieniem, to byś wiedział, że chcę wykonać to po danym czasie a nie od razu przy respie ......


Widze ze myslenie zanika..

#include <amxmodx>
#include <hamsandwich>

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_Spawn, "player", "funkcja", 1)
}
public funkcja(id)
{
set_task(3.0, "wyrzuc")
}
public wyrzuc(id)
{
strip_user_weapons(id)
}


A dalej tak robisz..

#include <amxmodx>
#include <hamsandwich>

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_Spawn, "player", "funkcja", 1)
}
public funkcja(id)
{
set_task(3.0, "wyrzuc")
set_task(5.0, "menu_broni")
}
public wyrzuc(id)
{
strip_user_weapons(id)
}
public menu_broni(id)
{
menu = menu_create("Menu broni","menu_broni_wybierz")

menu_additem(menu,"Marker + HE")
menu_additem(menu,"Super Marker + HE (Tylko dla VIP)")
//tutaj kod leci dalej ....
}



@edit
Kody sa pisane w notatniku :<


@ i jeszcze jedno
Jak wykonasz eventa na poczatek rundy, to gdy osoba wejdzie chwile po poczatku to sie juz mu nie wykona akcja..


Bzdury.. jak chcesz wykonać task skoro nie nadałeś indeksu?

#include <amxmodx>
#include <hamsandwich>

#define TASK_INFO 1337

static const VERSION[] = "0.1";

public plugin_init() {
register_plugin("Task po odrodzeniu", VERSION, "diablix");
RegisterHam(Ham_Spawn, "player", "eventPlayerSpawn", 1);
}

public eventPlayerSpawn(id){
if(task_exists(TASK_INFO + id)) remove_task(TASK_INFO + id);
set_task(3.0, "showMessage", TASK_INFO + id);
}

public showMessage(id){
id -= TASK_INFO;

client_print(id, 3, "Task zostak wykonany!");
}
Odpowiedz
Zablokowany