Jump to content

Comenzi de baza (SCRIPTING)


Uzzi25,

Recommended Posts

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

  • Like 1

 

Link to comment
Share on other sites

12 hours ago, .Robert. said:

Ai copiat si tradus asta doar ca sa fie facut nu ca sa ajuti pe cineva.

 

Macar daca traduci mai rectifica-l si tu... la fel si pt -> 

 

Nu cred ca am zis ca este facut de mine , si da este tradus dupa burger pt incepatori 

 

Link to comment
Share on other sites

  • 1 month later...
On 11/2/2020 at 12:01 PM, .Robert. said:

Ai copiat si tradus asta doar ca sa fie facut nu ca sa ajuti pe cineva.

 

Macar daca traduci mai rectifica-l si tu... la fel si pt -> 

 

Salut , a tradus acest "GHID" pentru a ajuta scriptarii noi / incepatori , din moment ce l-a tradus poti spune ca a facut ceva la el , si plus ca nu a spus ca este facut de el acest tutorial

Link to comment
Share on other sites

CMD: examplecmd (playerid, params [])
{
    SendClientMessage (playerid, -1, „Buna ziua, am facut o comanda!”); // trimite un mesaj clientului (jucatorului)
    retur 1;
}

Imi explici te rog, in comanda asta unde folosesti parametrii daca tot au fost indicati?

 

+ ai o gramada de greseli de programare, nu recomand acest tutorial.

[ Anti Flood Pack ] / Click [ Pugb SA:MP ] Click / [ TD Autorizatie ] Click
[ Created dm zone ] Click / [ Salvare vreme si timp ] Click [ Statistica a serverului ] Click
[ Sistema duel ] Click [ TD Registrare/Autorizatie ] Click [ Sistema kill/killed by ] Click
[ Sistema data si ora Click /  [ GM Anticheat ] Click   /  [ Schimbarea mersului ] Click
[ Save Camera ] Click  [ Sitema Concurs ] Click [ Projector pentru elicopter ] Click /
[ DM Zona ] Click / [ Folosirea textelor lungi ] Click / [Khain RPG] Click  / Antisobeit Click
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.