User Team Tutorial [AMXMODX ONLY]
Pentru inceput tind sa va zic ca tutorialul acesta este format din 2 mari categorii:
cs_get_user_team
cs_set_user_team
Diferenta dintre cele 2 este ca una afla in ce echipa este un player si a doua transfera jucatorul la o echipa.
1. cs_get_user_team
Vom incepe cu declararea unor include-uri.
#include <amxmodx>
comenzile de baza la amxmodx.fara aceasta nu putem face nimic.
#include <cstrike>
folosit la comenzi precum cs_get_user_team/cs_set_user_team/cs_get_user_armor etc , definit doar pentru ca folosim o comanda din el.
public plugin_init()
{
register_plugin("Nume Plugin","1.0","Autor")
register_event("ResetHUD","first","be")
}
Al doilea rand (register_event("ResetHUD","first_pub","be")) este tot una cu
register_event("HLTV", "first", "a", "1=0", "2=0")
si ambele se executa de fiecare data publicul "first" la inceperea fiecarei runde,
dar eu mam obisnuit cu primul fel
Dupa ce am terminat si cu inclusul si cu public_init mergem la primul public si anume public first(id)
Aici vom introduce un loop(for / while care trece prin toate ident-urile playerilor , luand pe fiecare in parte) luand ca numar maxim, numarul de jucatori de pe server.Dupa aia vom face un test sa vedem daca playerul a ramas pe server pana s-a ajuns la el cu for-ul.
Dupa aia
Deci o sa arate cam asa:
public first(id)
{
static players[32], inum, i; /*declararea variabilelor ce vor fi folosite ca altfel da eroare la compilare*/
get_players(players,inum) /*uam nr maxim de playeri*/
for( i = 0; i < inum; i++) /*loop-ul propriuzis*/
{
if(!is_user_connected(players[i])) /*daca playerul nu este conectat (a iesit intre timp) */
return PLUGIN_HANDLED; /*sa nu se faca nimic*/
}
Eu m-am hotarat sa fac playerii sa aiba un invelis colorat dupa echipe
Adica daca eu sunt CT sa fie in jurul meu un invelis albastru , daca sunt T sa fie rosu.
Odata ce am decis ce vreau sa fac imi dau seama ca comanda pentru a face un player sa fie 'colorat' este
set_user_rendering(id_jucator,mod,culoare_rosie,culoare_verde,culoare_albastra,stralucire_norma
la,factor);
set_user_rendering(players[i],kRenderFxGlowShell,255,0,0,kRenderNormal,25);
si imi mai dau seama ca la inceput cand am facut include-urile nu stiam ca am sa folosesc si o comanda din fun.inc asa ca revin sus si trec linia
#include <fun>
public first(id)
{
static players[32], inum, i; /*declararea variabilelor ce vor fi folosite ca altfel da eroare la compilare*/
get_players(players,inum) /*luam nr maxim de playeri*/
for( i = 0; i < inum; i++) /*loop-ul propriuzis*/
{
if(!is_user_connected(players[i])) /*daca playerul nu este conectat (a iesit intre timp) */
return PLUGIN_HANDLED; /*sa nu se faca nimic*/
if(cs_get_user_team(players[i]) == CS_TEAM_T) /*daca playerul se afla la Terro atunci
{
set_user_rendering(players[i],kRenderFxGlowShell,255,0,0,kRenderNormal,25); /*sa aiba un invelis de culoarea ros*/
}
if(cs_get_user_team(players[i]) == CS_TEAM_CT) /*daca playerul se afla la Couter-Terro atunci*/
{
set_user_rendering(players[i],kRenderFxGlowShell,0,0,255,kRenderNormal,25); /*sa aiba un invelis de culoare albastra*/
}
}
return PLUGIN_CONTINUE; /*se anunta sfarsitul publicului*/
}
cs_get_user_team(ident) - poate sa 'aduca' 4 valori:
CS_TEAM_T => playerul este la terro
CS_TEAM_CT => playerul este la ct
CS_TEAM_SPECTATOR => playerul este spectator
CS_TEAM_UNASSIGNED => playerul este la meniul unde isi selecteaza echipa cand se conecteaza
Deci la final arata asa:
#include <amxmodx>
#include <cstrike>
#include <fun>
public plugin_init()
{
register_plugin("Team Glowing","1.0","Hack")
register_event("ResetHUD","first","be")
}
public first(id)
{
static players[32], inum, i;
get_players(players,inum)
for( i = 0; i < inum; i++)
{
if(!is_user_connected(players[i]))
return PLUGIN_HANDLED;
if(cs_get_user_team(players[i]) == CS_TEAM_T)
{
set_user_rendering(players[i],kRenderFxGlowShell,255,0,0,kRenderNormal,25);
}
if(cs_get_user_team(players[i]) == CS_TEAM_CT)
{
set_user_rendering(players[i],kRenderFxGlowShell,0,0,255,kRenderNormal,25);
}
}
return PLUGIN_CONTINUE;
}
2. cs_set_user_team
Pune jucatorul intr-o echipa.
Vom folosi tot codul de mai sus dar nu ii vom face sa straluceasca ci terro se amesteca in baza ct si invers deci cine trage primu bine castiga
)
#include <amxmodx>
#include <cstrike>
new variabila = 0;
public plugin_init()
{
register_plugin("Team Switching","1.0","Hack")
register_event("ResetHUD","first","be")
}
public first(id)
{
if(variabila == 5)
{
static players[32], inum, i;
get_players(players,inum)
for( i = 0; i < inum; i++)
{
new ok
ok = 0
if(!is_user_connected(players[i]))
return PLUGIN_HANDLED;
if(cs_get_user_team(players[i]) == CS_TEAM_T)
{
cs_set_user_team(players[i],CS_TEAM_CT)
ok = 1
}
if(cs_get_user_team(players[i]) == CS_TEAM_CT && ok != 1)
{
cs_set_user_team(players[i],CS_TEAM_T)
}
ok = 0
}
}
else
{
variabila++;
}
return PLUGIN_CONTINUE;
}
Sper sa fie folositor.Pentru Probleme | Pentru informatii sunt aici...