Forum - cSoneS
Doriți să reacționați la acest mesaj? Creați un cont în câteva clickuri sau conectați-vă pentru a continua.



 
AcasaUltimele imaginiCăutareÎnregistrareConectare

Distribuiţi | 
 

 Inceputul unui plugin de SourceMOD

Vezi subiectul anterior Vezi subiectul urmator In jos 
AutorMesaj
KoLeA'[;x]
Detinator

Detinator
KoLeA'[;x]

Advertisment :
Inceputul unui plugin de SourceMOD   Left_bar_bleue0 / 1000 / 100Inceputul unui plugin de SourceMOD   Right_bar_bleue

Warn @ Ban :
Inceputul unui plugin de SourceMOD   Left_bar_bleue0 / 1000 / 100Inceputul unui plugin de SourceMOD   Right_bar_bleue

Mesaje : 17
Reputatie : 1
Data de inscriere : 14/03/2011
Varsta : 29
Localizare : Braila

Inceputul unui plugin de SourceMOD   Empty
MesajSubiect: Inceputul unui plugin de SourceMOD    Inceputul unui plugin de SourceMOD   Icon_minitimeLun Mar 14, 2011 3:51 pm

SourceMOD foloseste un limbaj de programare numit PAWN (Small) http://www.compuphase.com/pawn/pawn.htm ; http://en.wikipedia.org/wiki/Small-C
Acest este defapt C++ cu proprietatile reduse

Ca sa poti incepe un plugin trebuie sa ai la cunostinta Operatorii limbajului , Tipurile de variabile , Conditia 'if' , Structurile repetitive 'for' si 'while
Mai departe, ar trebui sa cititi tot tutorialul asta : http://wiki.alliedmods.net/Introduction_to_SourcePawn

Limbajul SourceMod se scrie in fisiere cu extensia .sp si prin compilare se obtin fisiere .smx
Compilatoru se afla in folderu /scripting/ al pachetului de SourceMod.
Pentru a compila un plugin puneti fisierul .sp in folderu scripting si rulati compile.
Veti gasi apoi fisierele compilate in folderu compile din acelasi director scripting

Acum sa deschidem un fisier cu extensia .sp
Pentru pluginurile de SourceMod, daca nu se folosesc inc-uri decat cele
din pachetul de baza, nu e nevoie sa folositi decat unu din
incluziunile astea: sourcemod, sdktools, cstrike sau geoip; Bineinteles
le puteti include pe toate daca aveti nevoie; Ideea e sa nu includeti
restu gen "clients", "console" etc ca nu e ncesar.
Deocamdata lasam doar sourcemod si incepem:

Cod:
#include

In fisierul sourcemod.inc is deja declarate restul fisierelor .inc aparatinand de sourcemod

Mai departe adaugam asta in plugin:
Cod:
public Plugin:myinfo =
{
name = "New Plugin",
author = "Unknown",
description = "<- Description ->",
version = "1.0",
url = "<- URL ->"
}

Sper ca v-ati dat seama ce si bineinteles completati acolo in loc de "New Plugin", "Unknown" etc cu ce vreti

Deschizand fisierele .inc din folderul scripting/include ve-ti casi
diferite sintaxe. Cele de tip 'forward' se pun in plugin cam asa:
Cod:
public forward_name(parametri)

Sper exemplu, luam OnPluginStart()
Cod:
public OnPluginStart()

Forward-urile
se executa singure fara a fi nevoit sa fie apelate vreodata, fiecare
facandu-si treaba la momentul potrivit(cititi descrierea fiecarui sa
aflati cand se apeleaza).
In cazul de fata, OnPluginStart() se
apeleaza cand incepe pluginul. Si vom adauga si un mesaj sa apara in
consola sa vedem ca pluginul functioneaza:
Cod:
public OnPluginStart()
{
PrintToServer("A pornit !");
}


Tot
in fisierele .inc gasiti syntaxe care incep cu 'native' . Acestea sunt
functii care se apeleaza cand doriti, Cum de exemplu mai sus am folosit
PrintToServer. Aia este o functie de tip 'native'. Cititi descrierea
fiecaruia ca sa aflati ce face si o sa o folositi cand aveti nevoie

Acum sa facem un exemplu mai detailat, cand intra un jucator pe server, sa apara un mesaj
Deschidem fisierul "clients.inc" in scripting/include si gasim:
Cod:
forward bool:OnClientConnect(client, String:rejectmsg[], maxlen);


Deci in plugin vom folosi:
Cod:
public bool:OnClientConnect(client,String:rejectmsg[], maxlen)

Deschidem o { la inceput si sa nu uitam sa inchidem } la sfarsit
Si punem ceva de forma:
Cod:
public bool:OnClientConnect(client,String:rejectmsg[], maxlen)
{
PrintToChatAll("A intrat cineva pe server");
}

Va aparea un mesaj in chat de fiecare data cand intra cineva
Sau mai complex
Cod:
public bool:OnClientConnect(client,String:rejectmsg[], maxlen)
{
new String:name[64];
GetClientName(client,name,sizeof(name));

PrintToChatAll("%s a intrat pe server",name);
}

Va aparea ca jucatorul 'X' a intrat pe server ('X' fiind numele lui)

Complet:
Cod:
#include

public Plugin:myinfo =
{
name = "New Plugin",
author = "SAMURAI",
description = "mesaj cand intra cineva pe server",
version = "1.0",
url = "www.cs-utilz.net"
}

public OnPluginStart()
{
PrintToServer("A pornit !");
}


public bool:OnClientConnect(client,String:rejectmsg[], maxlen)
{
new String:name[64];
GetClientName(client,name,sizeof(name));

PrintToChatAll("%s a intrat pe server",name);
}


Un exemplu cand cineva iese de pe server:
Cod:
public OnClientDisconnect(client)
{
new String:name[64];
GetClientName(client,name,sizeof(name));

PrintToChatAll("%s a iesit de pe server",name);
}


Aici : http://docs.sourcemod.net/api/index.php
gasiti toate functiile din SourceMod si mi se pare ca e mult mai usor
decat sa intri prin toate fisierele .inc mai ales ca are si filter (un
search mai smeker)

Bafta
Sus In jos
https://csones.forumgratuit.ro
 

Inceputul unui plugin de SourceMOD

Vezi subiectul anterior Vezi subiectul urmator Sus 

 Subiecte similare

-
» Plugin Amx_who
Pagina 1 din 1

Permisiunile acestui forum:Nu puteti raspunde la subiectele acestui forum
Forum - cSoneS :: CsoneS # Counter-Strike 1.6 :: Tutoriale :: Tutoriale SourceMOD-
Mergi direct la:  

creează un forum | ©phpBB | Forum gratuit de suport | Semnaleaza un abuz | Discuții recente