Astazi vreau sa va invat, cum sa va creati un countdown. De exemplu, sa zicem ca vrem sa apara un mesaj in hud, in care sa scrie:
In Y secunde vei primi o grenada de tip Z
Iar acel mesaj sa fie permanent. (sa se repete, chiar si dupa ce primesti grenada)
1. Cream un vector global, de aproximativ
33 de pozitii, in care vom stoca numarul
10 (un exemplu (voi puteti sa puneti ce numar doriti))
2. Acum vom crea un public numit
client_putinserver. Cu parametrul id/index (respectiv id-ul playerului care se conecteaza). Ce este/ce face el? Acest public este chemat de fiecare data cand un player intra pe server; Mai precis
http://www.amxmodx.org/doc/index.html?p ... server.htm
Code: Select all
public client_putinserver( id )
{
}
3. Vom crea un task, care sa se repete pana la infinit. In cazul nostru, taskul se va repeta odata la
1 secunda;
Atentie!!! Secunda va fi trecuta cu decimale. In cazul nostru, de tip float, respectiv
1.0.
Code: Select all
set_task( 1.0, "countDown", id, _, _, "b", _ );
4. Cream publicul care este executat de task, cu parametrul id/index (in cazul nostru
countDown)
5. Acum vom verifica daca variabila globala,
g_iCountDown, este mai mica/sau egala cu
0; Daca este, vom verifica daca playerul este in viata, iar daca este, ii vom da o grenada de tip
he
Code: Select all
if( g_iCountDown[ id ] <= 0 )
{
if( is_user_alive( id ) )
{
give_item( id, "weapon_hegrenade" );
}
g_iCountDown[ id ] = 10;
}
6. Vom adauga o exceptie, mai pe inteles, daca variabila globala,
g_iCountDown nu este mai mica/sau egala cu
0, vom scade din ea cate
1, si vom adauga un mesaj hud.
Code: Select all
else
{
g_iCountDown[ id ]--;
set_hudmessage( 150, 10, 10, -1.0, 0.28, 0, 1.0 );
show_hudmessage( id, "Vei primi o grenada in %i secunde.", g_iCountDown[ id ] );
}
In final iese cam asa:
- | Afiseaza codul
#include < amxmodx >
#include < fun >
#define PLUGIN "Count down"
#define VERSION "0.1"
new g_iCountDown[ 33 ] = 10;
public plugin_init( )
{
register_plugin( PLUGIN, VERSION, "falseq" );
}
public client_putinserver( id )
{
set_task( 1.0, "countDown", id, _, _, "b", _ );
}
public countDown( id )
{
if( g_iCountDown[ id ] <= 0 )
{
if( is_user_alive( id ) )
{
give_item( id, "weapon_hegrenade" );
}
g_iCountDown[ id ] = 10;
}
else
{
g_iCountDown[ id ]--;
set_hudmessage( 150, 10, 10, -1.0, 0.28, 0, 1.0 );
show_hudmessage( id, "Vei primi o grenada in %i secunde.", g_iCountDown[ id ] );
}
}
Daca am sarit ceva, lasa-ti post/pm ca sa editez sa adaug.