Cum se creează comenzi de bază
Acest tutorial se adreseaza începatorilor care au pu?ina experien?a în codificare. Va trece peste ce ve?i avea nevoie, cum sa crea?i o comanda, ce pute?i face în cadrul unei comenzi etc.
I. Cerin?e
- ZCMD îmbunata?it
- sscanf
II. No?iuni de baza
Primul lucru pe care va trebui sa-l face?i este sa va pregati?i scriptul. Daca utiliza?i IDE-ul implicit care vine cu pachetul de server SA-MP, pute?i apasa „Nou” ?i acesta va crea acest lucru pentru dvs. Cu toate acestea, vor func?iona ?i urmatoarele:
Cod PHP:
#include <a_samp>
public OnGameModeInit ()
{
retur 1;
}
public OnGameModeExit ()
{
retur 1;
}
Primul lucru pe care trebuie sa-l facem este sa adaugam I-ZCMD ?i sscanf la scriptul nostru, astfel încât sa le putem accesa func?iile. Facem acest lucru tastând #include <include_name_here> în partea de sus a scriptului. Ar trebui sa arate cam a?a:
Cod PHP:
#include <a_samp> // orice samp nativ include ar trebui sa fie mai presus de toate crea?iile facute de utilizator
#include <izcmd>
#include <sscanf2>
Acum ar trebui sa compila?i scriptul pentru a va asigura ca nu apar erori. Daca se face corect, nu ar trebui sa ave?i erori sau avertismente. Urmatorul pas este crearea comenzilor.
III. Crearea unei comenzi
Crearea unei comenzi în primele zile ale SA-MP a necesitat utilizarea OnPlayerCommandText publica (playerid, cmdtext []) împreuna cu utilizarea strcmp ?i strtok pentru a în?elege ce comenzi au fost tastate ?i pentru a aduna parametrii de comanda pe care jucatorul le-a tastat alaturi de comanda. Acest lucru nu mai este folosit de majoritatea scripturilor, deoarece s-a aratat din nou ?i din nou ca este foarte ineficient în compara?ie cu alte procesoare de comanda fabricate astazi. Vom folosi izcmd ca procesor de comanda, deoarece acesta (sau zcmd original) este cel pe care îl folosesc majoritatea scripturilor astazi. Cream o comanda procedând în felul urmator:
Cod PHP:
CMD: examplecmd (playerid, params [])
{
retur 1;
}
Exemplul de mai sus este unul dintre modurile comune în care scripterii vor crea o comanda, cu toate acestea izcmd va permite sa crea?i o comanda înca câteva moduri, cum ar fi:
Cod PHP:
COMANDA: examplecmd (playerid, params [])
{
retur 1;
}
comanda (examplecmd, playerid, params [])
{
retur 1;
}
cmd (examplecmd, playerid, params [])
{
retur 1;
}
Pentru restul tutorialului, vom folosi primul exemplu. Comenzile pot fi plasate oriunde în scriptul de sub liniile #include. Acum, atunci când un jucator tasteaza / examplecmd, nu va face nimic, deoarece nu exista niciun cod pentru a merge împreuna cu acesta, însa scriptul îl va recunoa?te ca o comanda. Sa facem ca aceasta comanda sa trimita un mesaj simplu:
Cod PHP:
CMD: examplecmd (playerid, params [])
{
SendClientMessage (playerid, -1, „Buna ziua, am facut o comanda!”); // trimite un mesaj clientului (jucatorului)
retur 1;
}
Acum, când un jucator tasteaza / examplecmd, acesta le va afi?a mesajul „Buna ziua, am facut o comanda!”. Cu toate acestea, aceasta este o comanda foarte simpla, a?a ca sa o facem sa ofere jucatorului sanatate ?i armura deplina:
Cod PHP:
CMD: examplecmd (playerid, params [])
{
SendClientMessage (playerid, -1, „Buna ziua lume, am facut o comanda!”); // trimite un mesaj clientului (jucatorului)
SetPlayerHealth (playerid, 100.0); // seteaza valoarea de sanatate a jucatorului la 100 (sanatate completa)
SetPlayerArmour (playerid, 100.0); // seteaza valoarea armurii jucatorului la 100 (armura completa)
retur 1;
}
Acum, când tipul de jucator / examplecmd, acesta va seta sanatatea ?i valorile armurii jucatorului la 100, împreuna cu trimiterea unui mesaj. Acum, efectuarea comenzilor de acest fel va func?iona bine, dar daca un jucator trebuie sa introduca informa?ii suplimentare pe care comanda le cere de la jucator?
IV: Tratarea parametrilor
Parametrii sunt ceea ce playerul va tasta dupa comanda, astfel încât scriptul sa le poata utiliza. Nu toate comenzile vor necesita parametri, dar atunci când o vor face, ve?i avea nevoie de ceva pentru a discerne daca jucatorul a tastat vreun parametru dupa comanda, care sunt acei parametri, câ?i sunt, etc. Aceasta este ceea ce ne va ajuta sscanf. Iata un exemplu de comanda în care jucatorul trebuie sa introduca un numar pentru a-?i seta starea de sanatate la o anumita valoare:
Cod PHP:
CMD: sethealth (playerid, params [])
{
nou Float: hp, string [128]; // declaram o variabila float care va de?ine valoarea specifica tastata de jucator împreuna cu o variabila ?ir care va fi utilizata pentru a afi?a un mesaj formatat
if (sscanf (params, ”f”, hp)) // aici, sscanf este folosit pentru a spune scriptului valorile pe care ar trebui sa le a?tepte de la jucator. În acest caz, se verifica daca a fost tastat ceva în afara de numele comenzii sau daca valoarea furnizata va func?iona (adica daca a fost tastata o litera în locul unui numar)
{
returneaza SendClientMessage (playerid, -1, „Sintaxa: / sethealth [valoare]”); // aici îi spune?i jucatorului cum sa foloseasca corect comanda
}
SetPlayerHealth (playerid, hp); // presupunând ca sscanf nu a gasit nimic în neregula cu valoarea oferita de player, va stoca acea valoare în variabila noastra „hp”, gata sa fie folosita în comanda noastra aici.
format (?ir, dimensiune (?ir), „V-a?i setat valoarea de sanatate la% f.”, hp); // formatul este utilizat aici pentru ca variabila ?ir sa stocheze un mesaj în care mesajul are nevoie de informa?ii suplimentare
Autor : Uzzi25 grx