Jump to content

- Advertisement -
Photo

[CS16-Scripting]Primul plugin


  • Please log in to reply
2 replies to this topic

#1
Andrei;

Andrei;

    Administrator

  • Administrator
  • 3201 posts
  • 398 topics
  • Joined 16-December 12
  • Country: Country Flag

O sa folosesc un exemplu clasic, printarea mesajului "Hellow World", in consola playerului si in chat.

/* Plugin generated by AMXX-Studio */

#include <amxmodx>

#define PLUGIN "Hello world"
#define VERSION "1.0"
#define AUTHOR "Artick"

public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
}

public client_putinserver ( id )
{
	console_print(id, "Hello World");
	set_task(3.0, "ShowMessage", id);
	
}

public ShowMessage( id )
{
	client_print(id, print_chat, "Hello World");
        remove_task(id)
}

Primul lucru nou intalnit este client_putinserver. Este un forward default amxx,noi nu trebuie sa il definim. Se executa cand un jucator vede motdul de pe server(cand este practic pe server).

 

Mai sunt cateva forwarduri utile:

client_connect( id ) //jucatorul se conecteaza
client_authorized( id ) //se executa intre connect si putinserver,momentul in care i se verifica steamidul,daca e valid. Se face schimbul de informatii cu serverul.
client_disconnect ( id ) //se executa cand jucatorul e deja deconectat.

Va spuneam un tutorialul trecut de headerul functiei si de paramuri. Aceste forwarduri au in header ( intre "( )" ) paramul id. idul este o valoare numerica, este un index dupa care jocul recunoaste playerii. Cand un player se deconecteaza si altcineva( sau tot playerul ) se conecteaza, e posibil sa primeasca acelasi userid(id). 

console_print(id, "Hello World");
  • printeaza un mesaj in consola
  • id = playerul pentru care se executa
  • intre "" este mesajul
  • se mai poate utiliza client_print(id, print_console, "mesaj")
set_task(3.0, "ShowMessage", id)

Ca sa imi fie mai usor sa explic, voi lua un exemplu din viata reala. Mergi la magazin sa cumperi mere,dar s-au vandut toate si iti spune sa te intorci peste x timp. Practic,ti-a indicat ca peste x timp trebuie sa faci o actiunea. Asta face si set_task, efectueaza o actiune peste timpul specificat( in cazul nostru 3 secunde).

Nu puteam pune mesajul din chat direct in putinserver, atunci playerul inca are motdul/team menu deschis si nu vede mesajul. Peste 3 secunde este sigur pe server si il va vedea.

 

  • 3.0 reprezinta timpul. set_task functioneaza pe baza de floaturi(numere cu virgula). Daca scriem 3 ne va da un warning la compilare,tag mismatch.
  • Intre "" este publicul pe care trebuie sa il execute dupa 3 secunde.
  • Am folosit paramul id pentru a cunoaste carui player trebuie sa ii afisam mesajul.

Set_task este o functie complexa,voi face un tutorial separat despre ea.

client_print(id, print_chat, "Hello World");
  • printaza un mesaj unui player
  • print_chat inseamna ca va printa in chat
  • intre "" e mesajul.

Inafara de print_chat se mai foloseste:

print_chat - mesaj in chat
print_console - mesaj in consola 
print_notify - mesaj tot in consola,insa trebuie ca modul developper sa fie on
print_center - mesaj in centru. Ca cele de la plantarea bombei etc.

remove_task(id)
  • sterge taskul.

Astept intrebari.


Edited by Artick ;, 28 July 2014 - 06:37 PM.

  • PopCornN, Razvan-, Shalkee and 1 other like this

#2
D3luxe

D3luxe

    Advanced Member

  • Membru
  • 179 posts
  • 22 topics
  • Joined 28-June 14
  • Country: Country Flag
User id este cel ce apare la listplayers ?Iar pt a trimite mesajul la toti ce tr sa scrii la id ?Mulţumesc anticipat!

#3
Andrei;

Andrei;

    Administrator

  • Topic Starter

  • Administrator
  • 3201 posts
  • 398 topics
  • Joined 16-December 12
  • Country: Country Flag

Pentru a trimite un mesaj global folosesti 0 in loc de id.






2 user(s) are reading this topic

0 members, 2 guests, 0 anonymous users