[TUT] Natives

Tutoriale scripting, cod si portiuni de cod.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
LordOfNothing
Membru, skill +1
Membru, skill +1
Posts: 387
Joined: 19 Jul 2013, 15:51
Detinator Steam: Nu
Reputatie: Restrictie PM
Has thanked: 11 times
Been thanked: 35 times

27 Mar 2014, 09:42

Buna , cum am observat Hamlet si-a sters tutorialul si am decis sa fac eu altul.

Inainte sa incep as dor sa va zic ca acest tutorial este pentru scripterii intermediari(cei care stiu ce face set_task,stiu sa foloseasca variabilelele, etc).

Bun , incepem incluzand libraria default (nu ne trebuie o librarie speciala) :

Code: Select all

#include <amxmodx>
dar unde inregistram nativele in plugin_init ? NU! vom folosi plugin_natives() :

Code: Select all

public plugin_natives()
{
     // codul tau !
}
pentru inregistrarea unei native folosim functia register_native(const func1[], const func2[]);
func1 - numele nativei ( ex : set_user_health...)
func2 - Functia care este chemata cand folosim nativul respectiv + parametrii.
Exemplu :

Code: Select all

register_native("half_hp","_my_function");
half_hp (care in romana inseamna jumatate hp) e numele nativei (voi puteti sai puneti ce nume vreti voi)
_my_function este functia care va fi chemata

Pana acum avem asa :

Code: Select all

#include <amxmodx>

public plugin_natives()
{
	register_native("half_hp","_my_function");	
}
Acum facem functia _my_function:

Code: Select all

public _my_function(client)
{
       // codul tau
}
Bun, deci stiti ca o functie trebuie sa contina parametrul ID (indexul userului) (nu toate functiile !)
La native ca sa aflam indexul functiei trebuie sa folosim o alta functie (din inauntru publiclui ) numita get_param(1)
get_param(1) - in romana inseamna "afla parametrul 1" adica primul parametru

mai intai facem o variabila la intaimplare , eu o sai pun numele "id" - de la index player...

Code: Select all

	new id = get_param(1);
Acum so punem in public :

Code: Select all

public _my_function(client)
{
	new id = get_param(1);
}
Pana acum avem asa :

Code: Select all

#include <amxmodx>

public plugin_natives()
{
	register_native("half_hp","_my_function");	
}

public _my_function(client)
{
	new id = get_param(1);
}
Ca sai setam hp jucatorului va trebui sa mai includem un modul (modulul "fun")

Code: Select all

#include <fun>
ca sai dam jumate de hp userului, vom folosi set_user_health si get_user_health

ex :

set_user_health(id, get_user_health(id) / 2)

adica : seteaza viata jucator ( id, afla viata jucator(id) / imparte la 2) ( de ex daca ai 100, vei avea 50)

In total avem asa :

Code: Select all

#include <amxmodx>

public plugin_natives()
{
	register_native("half_hp","_my_function");	
}

public _my_function(client)
{
	new id = get_param(1);
	set_user_health(id, get_user_health(id) / 2)
}
Acum so folosim in alt plugin :

Code: Select all

native half_hp(id);

#include <amxmodx>

public plugin_init()
{
	register_clcmd("say /hp","hook_hp");
}

public hook_hp(id)
{
	half_hp(id);
}
Note :
Acum am creat native cu un singur parametru (id- jucatorului)

noi putem crea si cu 2-3 dar pentru asta vom folosi get_param(numarul parametrului)
get_param(1)
get_param(2)
get_param(3)

doar ca cand faceti publicul nu puneti doar client, de ex pentru a da imparti viata jucatorului :

Code: Select all

public _my_function(client, imp)
{
	new id = get_param(1);
	new value = get_param(2);

	set_user_health(id, get_user_health(id) / value)
}
PS : Aceasta functie imparte viata ID (jucatorului) la al doilea parametru , ex :
half_hp(id, 10)
viata jucatorului , impartzit la 10 !

Sper ca ati inteles voi

Credite:

  • HamletEagle - de la el am luat idea
  • Hawks - tutorialul original in limba Engleza (scris diferit oricum)
  • ConnorMcLeod - ma invatat multe despre native
RoyalServer 2
User avatar
HamletEagle
Fost moderator
Fost moderator
Posts: 750
Joined: 21 Sep 2013, 15:05
Detinator Steam: Da
CS Status: Inactiv cateva zile.
SteamID: privat
Reputatie: Fost Scripter eXtreamCS.com
Fost Moderator ajutator
Has thanked: 19 times
Been thanked: 85 times

28 Mar 2014, 16:46

Nu te mai dai scipter leader pe comunitatea aia ?(am si uitat cum ii zice).
Oricum,ma mir ca ai pus tu credite. In rest,puteai sa dai mai multe exemple.... apropo nu te obosi sa imi dai un raspuns destept intr-o alta limba,de-al tau ca nu ma obosesc sa il citesc.
Daca vreti ajutorul meu, nu dati bump la topic, fara intrebari de genu "cat mai dureaza/mai astept mult?".
User avatar
Adventx
Membru, skill +4
Membru, skill +4
Posts: 1785
Joined: 17 Sep 2013, 21:44
Detinator Steam: Da
Reputatie: Fost moderator ajutator
Has thanked: 128 times
Been thanked: 142 times
Contact:

28 Mar 2014, 16:57

EDIT: Frumos tutorial!
LordOfNothing
Membru, skill +1
Membru, skill +1
Posts: 387
Joined: 19 Jul 2013, 15:51
Detinator Steam: Nu
Reputatie: Restrictie PM
Has thanked: 11 times
Been thanked: 35 times

29 Mar 2014, 08:00

HamletEagle wrote:Nu te mai dai scipter leader pe comunitatea aia ?(am si uitat cum ii zice).
Oricum,ma mir ca ai pus tu credite. In rest,puteai sa dai mai multe exemple.... apropo nu te obosi sa imi dai un raspuns destept intr-o alta limba,de-al tau ca nu ma obosesc sa il citesc.
Sa raspund? nea :P
LordOfNothing
Membru, skill +1
Membru, skill +1
Posts: 387
Joined: 19 Jul 2013, 15:51
Detinator Steam: Nu
Reputatie: Restrictie PM
Has thanked: 11 times
Been thanked: 35 times

02 Apr 2014, 09:44

HamletEagle wrote:Edited,nu mai are nici un sens. Astept warn.
sa primesti warn ? dc doar ai dreptate chiar daca nu am citit :)) :d nu ii dati warn ca nu am facut nicio reclamatie..
Post Reply

Return to “Scripting”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 9 guests