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.

  • Similar Content

    • By ItzGabi2k
      Nu imi merg comenzile:
      /shopinfo, /normalshop, /vipcars, extrapackshop
      YCMD:shopinfo(playerid, params[], help) { ShopType[ playerid ] = 0; ShowShop( playerid ); return true; }
      YCMD:normalshop(playerid, params[], help) { ShopType[ playerid ] = 1; ShowShop( playerid ); return true; }
      YCMD:vipcars(playerid, params[], help) { ShopType[ playerid ] = 2; ShowShop( playerid ); return true; }
      YCMD:extrapackshop(playerid, params[], help) { ShopType[ playerid ] = 3; ShowShop( playerid ); return true; }
      YCMD:shop(playerid, params[], help) {
          SCM(playerid, COLOR_PURPLE, ">> {FFFFFF}Comanda de /shop a fost schimbata:");
          SCM(playerid, COLOR_PURPLE, ">> {FFFFFF}Shop Info:     /shopinfo");
          SCM(playerid, COLOR_PURPLE, ">> {FFFFFF}Normal Shop: /normalshop");
          SCM(playerid, COLOR_PURPLE, ">> {FFFFFF}V.I.P Cars:  /vipcars");
          SCM(playerid, COLOR_PURPLE, ">> {FFFFFF}Extra Packs: /extrapackshop");
          return true;
      }
    • By zNx[]
      Ce servicii pot oferi: Servicii scripting, tot ce tine de SA:MP
      Despre servicii: Ofer servicii scripting pe domeniul SA:MP, pot dezvolta orice fel de sistem, chiar si unul de dimensiuni mari, pretul acestuia va creste deoarece fiecare sistem este direct proportional cu pretul.Ma ocup si cu rezolvarea bugurilor, optimizarea gamemode-ului.Fac acest lucru de aproximativ 6 ani. Plata se face la predarea sistemului. După verificarea produsului pe localhost/server de teste(dacă e cazul) se face plata, produsul nu se înmânează, până nu este verificat daca banii au fost primiti. In cazul in care comandati un sistem mai complex, va trebui sa oferiti o garantie inainte deoarece volumul de munca este unul foarte mare si clientul se poate razgandi.
      Sisteme dezvoltate/Portofoliu": Sistemele create de mine se prezinta daca clientul este curios, in urma unui test, pe un server de teste.
       http://greenblood.ro/forum/index.php?/forum/43-updates/ 
       
      Metode de plata a servicilor:  
      Paypal - Suma minima de 3 euro.
      PaysafeCard - Suma minima de 5 euro.
      Skrill - Suma minima de 5 euro.
      Metode de contact:
      Email: [email protected] Discord: zNx#0198 Mesaj: privat pe forum
    • By Yonut
      Servicii scripting
      Ofer servicii scripting pentru SA:MP (PAWN) si de Web Development.
      ▶️ Detalii generale:
      Timp de lucru: 2-3 sau 4 ore pe zi Disponibilitate: Luni-Vineri > 20:00 - 00:00 | Sambata-Duminica > 14:00 - 22:30 | Pot fi disponibil si in afara acestui program Plata se face pe fiecare modificare / update / etc. ▶️ Detalii de contact:
      Discord: Yonut#4185 PM ▶️ Experienta:
      Fost scripter si web developer la cateva comunitati (time4fun, play-gaming) & site-uri. Mai bine de 3-4 ani in acest domeniu. ▶️ Cateva lucrari (un mic portofoliu):
      Canal de YT Site personal  
      👉 Mai multe detalii in privat.
    • By Mister
      Poziţie: Scripter si Mapper 
      Ce servicii pot oferi: Scripturi la comanda clientului, suport pentru montare pe host(server/ ipb forum), nu fac gmuri de la 0 necesita mult timp si nu am garantia ca voi fi platit.
      Modalitatea de lucru:
      Creez scriptul comandat Deschid serverul la mine in pc Il testati Platiti Primiti scriptul Il montati singuri sau vi-l montez eu. Cunostinte: Html, Php, Mysql, C, Pawn + Mapping de calitate
      Alte Detalii: Pretul il stabilim in functie de complexitatea scriptului, plata prin ce metode dispuneti: 
      Paypal Paysafe Transfer bancar Pagina de FB: https://www.facebook.com/scripting.pawn/
      Portofoliu:
      Gamemode BristonGOV Gamemode OhioRPG Serverul B4Play Serverul Treed PUBG arena Solo Rob Team Rob CS:GO Case Opening CS:GO Buy Menu Gun License Ruleta Casino Step Tutorial  
       
       
      #1 primul topic din aceasta categorie  
    • By St3f4n36
      Servicii scripting 
      Salut, pot oferii servici de scripting sa-mp la preturi accesibile:
      ----------------------------------------------------------------
      - Pot fi disponibil de seara de la ora 20:00 pana la ora 03:00.
      - Sisteme facute de mine: https://www.youtube.com/channel/UC4ERUteK3fOy9LibIuuoAuQ pot fi vazute pe acest canal si mai sunt multe altele, dar nu sunt puse.
      - Scriptez din anul 2018 - 2019.
      - Realizez orice sistem la cerere daca imi veniti cu niste idei sau imagini / video-uri.
      -----------------------------------------------------------------
      - Contact pe discord : __.steffyy.__#9339
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • 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.