PDA

View Full Version : [AMXX] Coduri utile



lAsuStarl
29-06-2017, 07:50 PM
In acest topic am sa postez bucatii de cod in limbajul amxx, si cum se foloseste, fara a mai da explicatii.

ATENTIE: Acest topic este de ajutor celor care au trecut de stagiul incepator.

1) Licenta pe nume ( DNS ) , pentru cei care doriti sa faceti plugin-uri pentru aceasta comunitate.

#include <amxmodx>

#define DNS_LICENTA "server.wargods.ro"

public plugin_init()
{
register_plugin("Licentiere DNS", "0.1", "Asu")

new Host[64]
get_cvar_string( "hostname", Host, charsmax(Host))

if(!equali(Host, DNS_LICENTA))
set_fail_state( "Licenta invalida!")
}

2) Licenta pe DNS ( Nume ) , dar de data asta va fi pe numele comunitatii :

#include <amxmodx>

#define DNS_LICENTA_COMUNITATE "wargods"

public plugin_init()
{
register_plugin("Licenta comunitate", "0.1", "Asu")

new Host[64]
get_pcvar_string("hostname", Host, charsmax(Host))

if(!(containi(Host, DNS_LICENTA_COMUNITATE) != -1)
set_fail_state("Licenta invalida!")
}


3) Licenta pe IP-ul server-ului :

#include <amxmodx>

#define Licenta_ip "0.0.0.0:27015"

public plugin_init()
{
register_plugin("Licenta pe IP", "0.1", "Asu")

new ip[20]
get_user_ip(0, ip, sizeof(ip) - 1, 1)

if(!equal(ip, Licenta_ip))
set_fail_state("Licenta invalida!")
}



--------------- Added after 11 minutes ---------------

4) Inregistrarea unei comenzi in chat si preluarea echipei jucatorului ce tasteaza comanda :

#include <amxmodx>
#include <cstrike>

public plugin_init()
{
register_plugin("Comanda in chat", "0.1", "Asu")

register_clcmd("say /comanda", "cmd_comanda")
register_clcmd("say_team /comanda", "cmd_comanda")

}

public cmd_comanda(id)
{
if(cs_get_user_team(id) == CS_TEAM_CT)
{
client_print(id, print_chat, "Esti la echipa CT")
}
else if(cs_get_user_team(id) == CS_TEAM_T)
{
client_print(id, print_chat, "Esti la echipa T")
}

return PLUGIN_CONTINUE
}

~Wolf~
18-08-2017, 07:20 PM
#include <amxmodx>

#define DNS_LICENTA_COMUNITATE "wargods"

public plugin_init()
{
register_plugin("Licenta comunitate", "0.1", "Asu")

new Host[64]
get_pcvar_string("hostname", Host, charsmax(Host))

if(!(containi(Host, DNS_LICENTA_COMUNITATE) != -1)
set_fail_state("Licenta invalida!")
}

Daca nu functioneaza cum a zis AsuStar , folositi asta:


#include <amxmodx>

#define LICENTA "WarGods"

public plugin_init()
{
register_plugin("Test de licentiere" , "1.0" , "Wolf");

new Host[ 64 ]
get_cvar_string("hostname" , Host , sizeof( Host ) -1 );

if(containi(Host , LICENTA) == -1)
set_fail_state("Licenta invalida");
}


E aproximativ acelasi algoritm.Mie unul nu mi-a mers ce a scris el.

~Wolf~
21-08-2017, 11:19 PM
Preluarea hp-ul si ap-ului jucatorului ce introduce comanda in chat folosind pev

#include <amxmodx>
#include <fakemeta> //"pev" provine din librăria fakemeta

#define VERSION "1.0"

public plugin_init()
{
register_plugin ("Funcţia pev" , VERSION , "1.0");
register_clcmd ("say /health" , "cmd_health");
register_clcmd ("say /armor" , "cmd_armor");
register_clcmd ("say_team /health" , "cmd_health"); //īnregistrăm comanda şi īn say_team pentru a le fi mai uşor jucătorilor
register_clcmd ("say_team /armor" , "cmd_armor");
}
public cmd_health (id)
{
new g_hp = pev (id , pev_health);
client_print (id , print_chat , "[Health info]:You have %i HP." , g_hp);
return FMRES_IGNORED;
}
public cmd_armor(id)
{
new g_ap = pev (id , pev_armorvalue);
client_print(id , print_chat , "[Armor info]:You have %i AP." , g_ap);
return FMRES_IGNORED;
}

Filip # 24.08
04-01-2018, 07:02 AM
if(cs_get_user_team(id) == CS_TEAM_CT)
{
client_print(id, print_chat, "Esti la echipa CT")
}
else if(cs_get_user_team(id) == CS_TEAM_T)
{
client_print(id, print_chat, "Esti la echipa T")
}

de ce if {} else if {} ?

mai bine switch:

switch(cs_get_user_team(id)) {
case 1: client_print(id, print_chat, "Esti la echipa T")
case 2: client_print(id, print_chat, "Esti la echipa CT")
}


new g_hp = pev (id , pev_health);
->
new g_hp = get_user_health(id)

de ce te complici atat cand poti face asta?

~Wolf~
16-05-2018, 06:47 PM
E aceeasi chestie doar ca am folosit fakemeta.

lAsuStarl
27-06-2018, 02:04 AM
Daca nu functioneaza cum a zis AsuStar , folositi asta:


#include <amxmodx>

#define LICENTA "WarGods"

public plugin_init()
{
register_plugin("Test de licentiere" , "1.0" , "Wolf");

new Host[ 64 ]
get_cvar_string("hostname" , Host , sizeof( Host ) -1 );

if(containi(Host , LICENTA) == -1)
set_fail_state("Licenta invalida");
}


E aproximativ acelasi algoritm.Mie unul nu mi-a mers ce a scris el.


if(containi(Host , LICENTA) == -1)
set_fail_state("Licenta invalida");

Din portiunea asta de cod, daca pui in DNS 'WarGods', iti inchide direct serverul, daca nu mergea cu containi, puteai folosi equali, 100% merge.
Switch in case e cel mai bine folosit atunci cand ai mai multe cazuri : case 1,2,3,4 etc.. , nu la un simplu if - else.