←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Odliczanie w menu

  • +
  • -
Mixtaz - zdjęcie Mixtaz 21.08.2018

Kolejny szalony pomysł ugrzązł w mojej głowie.

 

Mianowicie to próbuję włożyć zmienną do nowego menu, która będzie działała na zasadzie odliczania - zatem %i dekrementuje się o 1 co każdą sekundę.



public Odrodzenie(id)
{
if( !task_exists(TASKID) )
{
g_Timer = 5;
set_task( 1.0, "TaskFunction", TASKID, _, _, "b" )
}



new szMenu[33];
formatex( szMenu, charsmax(szMenu), "\d Czas [%i]", g_Timer );
new menu = menu_create(szMenu, "Handel_Menu");
 
//niżej są menu_additemy to sobie daruję

 

Wszystko fajnie dobrze, próbowałem zrobić to tak jak z normalnym odliczaniem na np. hudzie, i w rzeczy samej liczba malała o 1 w ciągu jednej sekundy, więc myślałem że mogę to ogłosić sukcesem, no ale niestety nie do końca.

 

Cały myk polega na odświeżaniu taskiem danej funkcji, lecz oprócz odświeżania tytułu menu ze zmienną, odświeża się również całe menu, więc gdy wybiore opcję to menu zamiast zniknąć - pojawia się ponownie..



public TaskFunction()
{
g_Timer--
 
new iPlayers[32], iNum, id;
get_players( iPlayers, iNum )
 
for( new i = 0; i < iNum; i++ )
{
id = iPlayers[i]
 
Odrodzenie(id)
}

Czy dałoby radę jakoś wyłuskać samą zmienną, aby tylko ona się odświeżała i dekrementowała, a resztę menu zostawić jak jest?

 

PS: Sory za brak intendera, tak się skopiowało :X

Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 21.08.2018

Może jakaś tablica bool globalna która trzyma to czy gracz wybrał coś z menu, jeśli wybrał to ustaw na true i w pętli wyświetlającej sprawdź odpowiednim warunkiem i nie wyświetlaj mu menu.

A i reset całej tej tablicy gdzieś może na nową rundę czy coś

I pamiętaj o client_disconnect tam też trzeba by zresetować graczowi


Opisz trochę więcej to, daj więcej kodu czy coś
Odpowiedz