ecstazy Administrator

Data inscrierii: 17/Iun/2008 Mesaje: 6
|
Trimis: 18/06/2008 13:16 Titlul subiectului: Comenzi asupra mai multor playery |
|
|
Probabil ca multi nu stit cum se da kick,slay,slap la toti jucatorii deodata...ei bine,in acest tutorial veti invata cum ! Fiti atenti,am sa combin alte functii din alte tutoriale si alte functii noi
Am sa fac prima parte a pluginului fara explicatii pentru ca deja le stiti.Deci voi face un plugin pentru slay la toata echipa,deci vom avea asa pentru inceput :
CODE
#include <amxmodx>
#include <amxmisc>
new const PLUGIN[] = "Slay Team"
new const VERSION[] = "1.0"
new const AUTHOR[] = "Anakin"
#define ACCESS ADMIN_SLAY
new show_act;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_concmd ( "amx_slayteam" , "slayteam_cmd" , ACCESS , "amx_slayteam @T/@CT/@All" )
show_act = get_cvar_pointer ( "amx_show_activity" )
}
Cu siguranta ati observat ceva nou,asta :
CODE
new const PLUGIN[] = "Slay Team"
new const VERSION[] = "1.0"
new const AUTHOR[] = "Anakin"
Este alta metoda de a inregistra pluginul,doar ca prin "niste" variabile....
* Accesul necesar pentru a putea folosi comanda este ADMIN_SLAY !
Apoi in continuare vom avea asa :
CODE
public slayteam_cmd ( id , level , cid ) {
if ( ! ( get_user_flags ( id ) & ACCESS ) ) {
console_print ( id , "No Access !" )
return PLUGIN_HANDLED
}
Daca user-ul ce vrea sa folosesca comanda nu are accesul definit mai sus,ii va aparea in consola "No Access !" si operatia va fi blocata de "return PLUGIN_HANDLED"
In continuara urmeaza citirea argumentelor din consola si aflarea numelui adminului care foloseste comanda :
CODE
new arg[23]
new name[32]
read_argv ( 1 , arg , 23 )
get_user_name ( id , name , 31 )
Acum veti vedea o functie noua,equali :
CODE
if ( equali ( arg , "@T" ) )
-> deci daca argumentul din consola este @T
Acum vom avea trebuință de 2 variabile, sa zicem :
CODE
new players[32] , num
Puteti face doua variabile,sau mai multe,intr-o singura linie ,separandu-le prin , ( virgula :p )
Iar acum,din nou o functie,pentru echipa Terrorist :
CODE
get_players ( players , num , "ae" , "TERRORIST" )
Ati observat ca "players" si "num" sunt variabilele pe care le-am făcut mai sus.... Apoi creem inca doua variable :
CODE
new k , tplayers
...k il vom folosi mai jos,iar "tplayers" pentru a ne usura putin "munca" :p
Si acuma,o functie mai complexa,numita Foor - Loop :
CODE
for ( k = 0; k < num; k++ )
Din nou acel "num" creeat mai sus si "k" la fel.Si apoi egalam variabila care ne va ajuta ( tplayers ) cu rezultatul din functia Foor - Loop :
CODE
tplayers = players[k]
Si apoi comanda asupra echipei Terrorist :
CODE
user_kill ( tplayers )
In continuare,fara alte explicatii,schimbarea cazurilor :
CODE
switch ( get_pcvar_num ( show_act ) ) {
case 1: {
client_print ( 0 , print_chat , "[AMXX] An Admin Has Kill Team T !" )
}
case 2: {
client_print ( 0 , print_chat , "[AMXX] %s Has Kill Team T !" , name )
}
}
Si,dupa cum am vazut in numeroase cereri,un mic efect ca la adminmod cu sunet :
CODE
client_cmd ( 0 , "spk ambience/thunder-clap" )
Sunetul este din cstrike/sounds/ambience !
Si am terminat cu echipa Terrorist,urmeaza pentru CT si pentru toti jucatorii,pe care nu le mai explic deoarece am dat un exemplu pentru T,doar functiile se transforma :
Pentru CT :
CODE
get_players ( players , num , "ae" , "CT" );
Iar pentru toti jucatorii mai simplu
CODE
get_players ( players , num , "a")
Deci,daca ati urmarit pasi de mai sus,ar trebui sa aveti ceva de genu :
CODE
#include <amxmodx>
#include <amxmisc>
new const PLUGIN[] = "Slay Team"
new const VERSION[] = "1.0"
new const AUTHOR[] = "Anakin"
#define ACCESS ADMIN_SLAY
new show_act;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_concmd ( "amx_slayteam" , "slayteam_cmd" , ACCESS , "amx_slayteam @T/@CT/@All" )
show_act = get_cvar_pointer ( "amx_show_activity" )
}
public slayteam_cmd ( id , level , cid ) {
if ( ! ( get_user_flags ( id ) & ACCESS ) ) {
console_print ( id , "No Access !" )
return PLUGIN_HANDLED
}
new arg[23]
new name[32]
read_argv ( 1 , arg , 23 )
get_user_name ( id , name , 31 )
if ( equali ( arg , "@T" ) ) {
new players[32] , num
new k , tplayers
get_players ( players , num , "ae" , "TERRORIST" );
for ( k = 0; k < num; k++ ) {
tplayers = players[k]
user_kill ( tplayers )
switch ( get_pcvar_num ( show_act ) ) {
case 1: {
client_print ( 0 , print_chat , "[AMXX] An Admin Has Kill Team T !" )
}
case 2: {
client_print ( 0 , print_chat , "[AMXX] %s Has Kill Team T !" , name )
}
}
client_cmd ( 0 , "spk ambience/thunder-clap" )
}
} else if ( equali ( arg , "@CT" ) ) {
new players[32] , num
new k , ctplayers
get_players ( players , num , "ae" , "CT" );
for ( k = 0; k < num; k++ ) {
ctplayers = players[k]
user_kill ( ctplayers )
switch ( get_pcvar_num ( show_act ) ) {
case 1: {
client_print ( 0 , print_chat , "[AMXX] An Admin Has Kill Team CT !" )
}
case 2: {
client_print ( 0 , print_chat , "[AMXX] %s Has Kill Team CT !" , name )
}
}
client_cmd ( 0 , "spk ambience/thunder-clap" )
}
} else if ( equal ( arg , "@All" ) ) {
new players[32] , num
new k , aplayers
get_players ( players , num , "a")
for ( k = 0; k < num; k++ ) {
aplayers = players[k]
user_kill ( aplayers )
switch ( get_pcvar_num ( show_act ) ) {
case 1: {
client_print ( 0 , print_chat , "[AMXX] An Admin Has Kill All Players !" )
}
case 2: {
client_print ( 0 , print_chat , "[AMXX] %s Has Kill All Players !" , name )
}
}
client_cmd ( 0 , "spk ambience/thunder-clap" )
}
}
return PLUGIN_HANDLED
}
by ecstazy  _________________ [img] http://img380.imageshack.us/my.php?image=20080613focuspicex0.jpg [/img] |
|