KoLeA'[;x] Detinator
Advertisment : Warn @ Ban : Mesaje : 17 Reputatie : 1 Data de inscriere : 14/03/2011 Varsta : 29 Localizare : Braila
| Subiect: Inceputul unui plugin de SourceMOD Lun 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 |
|