Jump to content

WopsS

Administrator
  • Posts

    2,200
  • Joined

  • Last visited

  • Days Won

    118

Everything posted by WopsS

  1. Nu ai raspuns in termen de 48 de ore. Topic inchis!
  2. [pawn]#if USE_DIALOGS == false [/pawn] Asta nu merge asa, acolo cu "#" definesti sau incluzi. Scrie [pawn]new bool:DIALOGS = false; [/pawn]
  3. Cand sunt deja definite le stergi a doua definitie, cand nu exista le definesti.
  4. "undefined symbol" = Simbol nedefinit. "local variable "x" shadows a variable at a preceding level" = Variabila X este definita anterior. "expected token: ";", but found "]"" = Trebuie sa fie ";" dar a gasit "]". Rezolva-le ca nu este asa greu.
  5. Cauti in gamdemode variabila pCarLic si te uiti si la mesajul cand te scoate din masina.
  6. Nu ai raspuns in termen de 48 de ore. Topic inchis!
  7. WopsS

    Problema!

    Nu ai raspuns in termen de 48 de ore. Topic inchis!
  8. Nu ai raspuns in termen de 48 de ore. Topic inchis!
  9. Nu ai raspuns in termen de 48 de ore. Topic inchis!
  10. Si pentru ca nu ai UPDATE in baza de date. Doar o creaza.
  11. Ce ai tu acolo o sa-ti creeze o baza de date in folderul Scriptfiles, cu Numele "Facebook.db".
  12. WopsS

    /findcar

    Respect modelul! http://www.sa-mp.ro/forum/index.php?topic=31017.0
  13. WopsS

    Erroare mysq

    Arata-ne scriptul tau.
  14. Respect modelul! http://www.sa-mp.ro/forum/index.php?topic=31017.0
  15. Respect modelul! http://www.sa-mp.ro/forum/index.php?topic=31017.0
  16. WopsS

    Problema

    Iti spusai, uita-te la for si la if.
  17. WopsS

    Problema

    N-o sa intelegi nici odata daca continui asa.
  18. WopsS

    Problema

    Asa ceva nu exista! Uita-te aici si incearca sa inveti cum este structura for / pentru. http://www.sa-mp.ro/forum/index.php?topic=31457.0
  19. Noțiuni de bază pentru limbajul PAWN Cuprins Despre PAWNDespre algoritmiDespre iniţializatoriDespre tipuri de dateDespre formatoriDespre expresiiDespre prioritatea operaţiilorDespre structuri Despre PAWNPAWN este un limbaj specific serverelor de San Andreas Multiplayer. Acesta a fost derivat din limbajul de programare C. Atenţie! Mulţi confundă PAWN cu PAWNO care sunt două lucruri diferite. PAWN este limbajul în care se programează serverele de San Andreas Multiplayer, iar PAWNO este programul în care se realizează (se scriu) scripturile / game mode-urile pentru aceste servere, mai pe scurt un IDE (integrated development environment sau interactive development environment). Desigur, în directorul pawno din folderul serverului se află un executabil numit pawncc. Aceste este compilatorul, adică programul care transformă textul care poate să fie citit de om în cod binar (codul binar reprezintă numerele 0 şi 1, datorită tranzistorului) care este înţeles de calculator. Despre algoritmiAlgoritmul este o metodă de rezolvare a unei probleme. Algoritmii au 3 proprietăţi importante: FinititudineGeneralitateCorectitudineOptimalitate 1. Finititudinea Finititudinea reprezintă proprietatea algoritmului de a se termină într-un număr finit de paşi. 2. Generalitate Generalitatea reprezintă proprietatea algoritmului de a rezolva o întreagă clasă de probleme. 3. Corectitudine Corectitudinea reprezintă proprietatea algoritmului de a oferi o rezolvare corectă în urmă executari acestuia. 4. Optimalitate Optimalitatea reprezintă proprietatea algoritmului de se execută într-un număr de minim de paşi. Exemplu: Să zicem că avem un altgorim pentru a verifică dacă Player-ul X se află în jurul Player-ului Y. Player-ul Y are rază 8.0 (pentru IsPlayerInRangeOfPoint). stock IsPlayerInRangeOfPointEx(playerid, targetid, Float:Radius) { new Float:X, Float:Y, Float:Z; GetPlayerPos(playerid, X, Y, Z); if(IsPlayerInRangeOfPoint(targetid, Radius, X, Y, Z)) return 1; return 0; }Acest algoritm are toate proprietăţiile, adică: 1. Finititudine - Se execută într-un număr finit de paşi. 2. Generalitate - Se poate execută pentru orice player de pe server, nu doar pentru player-ul X. 3. Corectitudine - Este corect scris din punct de vedere al limbajului PAWN. 4. Optimalitate - Se execută o singură dată, nu merge de la 0 până la MAX_PLAYERS (499). Acest algoritm este făcut de mine, el va retura valoarea 1 în cazul în care Player-ul X se află în rază Player-ului Y sau 0 în caz contrar. Despre iniţializatori1. const const nu este modificată pe parcursul algoritmului. Exemplu: new const Float:PI = 3.14; 2. enum Enumeratiile sunt un sistem bun de reprezentare a grupurilor mari de date şi modificări rapide. Exemplu: enum pInfo { pLevel, pAdmin }; new PlayerInfo[MAX_PLAYERS][pInfo]; public OnPlayerConnect(playerid) { PlayerInfo[playerid][pLevel] = 1; PlayerInfo[playerid][pAdmin] = 6; } 3. forward forward îi spune compilatorului că o funcţie o să urmeze mai târziu, fie că are sau nu parametrii. Exemplu: forward FunctiaMea(playerid, const string[]); public FunctiaMea(playerid, const string[]) { } 4. native native defineşte o funcţie în maşină abstractă / calculator, dar NU în script. Se poate defini o funcţie native doar dacă ea este inclusă în SA:MP sau într-un plugin. Exemplu: native printf(const format[], {Float,_}:...); 5. new new iniţializează o variabilă globală sau locală, indiferent de fişier (în caz că este globală). Exemplu: new Variabila = 5; 6. public public face o funcţie visibila pentru maşină abstractă / calculator, poate să fie chemată direct într-un script. Exemplu: forward FunctiaMea(); main() { CallLocalFunction("FunctiaMea", ""); } public FunctiaMea() { printf("Asta e functia mea."); } 7. static static face variabilă să fie globală doar în fişierul respectiv. Exemplu: fisier1.pwn: FunctiaMea1() { // Eroare, Variabila_Globala nu este definită. printf("%d", Variabila_Globala); } // Variabila_Globala este definită aici. new Variabila_Globala = 10; FunctiaMea2() { // Nu se întâmplă nimic, Variabila_Globala a fost definită anterior printf("%d", Variabila_Globala); } // Includem un alt fişier #include "fisier2.pwn"fisier2.pwn: FunctiaMea3() { // Aici iar nu este o eroare pentru că fişier2 este inclus după ce am definit Variabila_Globala. printf("%d", Variabila_Globala); }Acum să modificăm Variabila_Globala în static. Exemplu: FunctiaMea1() { // Eroare, Variabila_Globala nu este definită. printf("%d", Variabila_Globala); } // Variabila_Globala este definită aici. static Variabila_Globala = 10; FunctiaMea2() { // Nu se întâmplă nimic, Variabila_Globala a fost definită anterior printf("%d", Variabila_Globala); } // Includem un alt fişier #include "fisier2.pwn"fisier2.pwn: FunctiaMea3() { // Eroare, deoarece Variabila_Globala a fost limitată doar la fişierul 1. printf("%d", Variabila_Globala); } 8. stock stock se foloseşte pentru a initializa variabile, dar dacă nu e folosită nu va apărea warningul că variabilă respectivă nu este folosită. Exemplu: main() { Functia1(); } Functia1() { printf("Functia1 bună"); } Functia2() { printf("Functia2 salut"); }Aici o să fie un warning cum că Functia2 nu este folosită. main() { Functia1(); } stock Functia1() { printf("Functia1 bună"); } stock Functia2() { printf("Functia2 salut"); }Aici NU o să fie un warning cum că Functia2 nu este folosită. Despre tipuri de dateDatele sunt clasificate după: Natură lorconstantevariabileDupă tipnumericeîntregirealeLogiceCaractere Datele constante Datele constante nu îşi modifică valoare pe tot parcursul algoritmului. Se initializeaza cu const. Datele variabile Datele variabile îşi pot modifică valoare pe parcursul algoritmului. Acestea se caracterizează prin nume, tip de dată şi locaţia de memorie. Se initializeaza cu new. Datele de tip numeric Datele de tip numeric sunt numerele. Acestea sunt întregi (exemplu 3 sau 5, zise şi integer) şi reale (exemplu 4.25 şi 9.16, zise şi float). Se initializeaza cu new nume_variabila sau new Float:nume_variabila. Datele de tip logic Datele de tip logic pot avea doar două valori (Adevărat / True / 1 sau Fals / False / 0).Se initializeaza cu new Bool:. Datele de tip caracter Datele de tip caracter (string) sunt datele cuprinse între ghilimele (" ", exemplu "Date de tip caracter sau string"). Se initializeaza cu new nume_variabila[lungime_string] Despre formatoriDupă cum am spus mai sus, PAWN este derivat de la C, deci a moştenit şi câte ceva de la el. Formatori sunt argumente adiţionale urmate de format, în locul acestora sunt inserate string-ul rezultat în funcţie de tipul formatorului. Tipuri de formatori: %i - afişază un număr întreg (tot numărul).%d - afişază un număr întreg (tot numărul).%s - afişază un string.%f - afişază un număr real / float. (trebuie să aibă tagul Float:)%c - afişază caracter ASCII.%x - afişază un număr Hexadecima.%b - afişază un număr binar.%% - afişază caracterul "%" Exemplu: Întreg: new a = 54; format(string, sizeof(string), "Număr a este %i.", a); SendClientMessage(playerid, 0xFFFFFFAA, string);Se va afişa: Număr a este 54.Exemplu #2: new string[64]; format(string, sizeof(string), "Ai scorul: %d", GetPlayerScore(playerid)); SendClientMessage(playerid, 0xFFFFFFAA, string);Se va afişa: Ai scorul: 1 (depinde ce scor are playerul) String: new string[20]; format(string, sizeof(string), "Învăţ despre %s.", "formatori"); SendClientMessage(playerid, 0xFFFFFFAA, string);Se va afişa: Învăţ despre formatori. Float: new string[20]; format(string, sizeof(string), "4 împărţit la 3 este %f.", 4.0 / 3.0); SendClientMessage(playerid, 0xFFFFFFAA, string);Se va afişa: 4 împărţit la 3 este 1.333333. Despre expresiiO expresie este o succesiune de operanzi legaţi între ei de operator. Sunt grupaţi cu ajutorul parantezelor după reguli bine stabilite. Sunt mai multe tipuri de operatori: Aritmetici"+" - adunare"-" - scădere"*" - înmulţire"/" - împărţire"%" - restul împărţiriLogici"!" - negaţie / not"&&" - şi / and"||" - sau / orRaţionali"<" - mai mic">" - mai mare"<=" - mai mic sau egal">=" - mai mare sau egal"!=" - diferit de Exemplu: new a = 15, b = 10; // Initializam variabilele a şi b, care o să aibă valorile 15 şi 10. (a o să aibă valoare 15 şi b o să aibă valoare 10, pe baza "Primul venit, primul servit") Puteţi să luaţi orice numere vreţi. printf("Suma: %i", a + b; // Calculăm suma şi o afişăm printf("Scădere: %i", a - b; // Calculăm scăderea şi o afişăm printf("Înmulţire: %i", a * b; // Calculăm înmulţirea şi o afişăm printf("Împărţire: %i", a / b; // Calculăm împărţirea şi o afişăm printf("Rest: %i", a % b; // Calculăm restul împărţiri lui a la b şi o afişămSe va afişa: Suma: 25 Scădere: 5 Înmulţire: 150 Împărţire: 1 Rest: 5Putem să nu facem variabilele a şi b. printf("Suma: %i", 15 + 10); // Calculăm suma şi o afişăm printf("Scădere: %i", 15 - 10); // Calculăm scăderea şi o afişăm printf("Înmulţire: %i", 15 * 10); // Calculăm înmulţirea şi o afişăm printf("Împărţire: %i", 15 / 10); // Calculăm împărţirea şi o afişăm printf("Rest: %i", 15 % 10); // Calculăm restul împărţiri lui a la b şi o afişămSe va afişa: Suma: 25 Scădere: 5 Înmulţire: 150 Împărţire: 1 Rest: 5 Despre prioritatea operaţiilorÎn funcţie de prioritatea maximă se calculează expresile în următoarea ordine: Cele în care apar operatorii "&&", "*", "/", "%".Cele în care apar operatorii "+", "-", "||".Cele în care apar operatorii "<", ">", "<;=", ">=", "!=". Despre structuri1. Structura if / dacă Structura if, zisă şi dacă în pseudocod. Are rolul de verificare. Formă: if(condiţie) { Structura1(); } else if(condiţie2) { Structura2(); } else { Structura3(); }Explicaţie: Se verifică dacă condiţia este adevărată, dacă este adevărată se execută Structura1, dacă prima condiţie este falsă se verifică condiţia2, dacă este adevărată se execută Structura2, în caz contrar (când conditile de mai sus sunt false) se execută Structura3. Nu se pun paranteze decât atunci când ai decât o linie după structura de mai sus. Exemplu: if(condiţie) { Structura1(); } else if(condiţie2) { Structura2(); } else { Structura3(); }else este opţional! 2. Structura while / cât timp Structura while, zisă şi cât timp în pseudocod. Are rolul de a execută structura din interior cât timp condiţia este adevărată. Formă: while(condiţie) { Structura1(); }Explicaţie: Se verifică dacă condiţia este adevărată, dacă este adevărată se execută Structura1 până când condiţia este falsă. Când condiţia este falsă se termină de executat structura while şi se trece la structura imediat următoare. Nu se pun paranteze decât atunci când ai decât o linie după structura de mai sus. Exemplu: while(condiţie) { Structura1(); } 3. Structura for / pentru Structura for, zisă şi pentru în pseudocod. Are rolul de a execută structura din interior cât timp variabilă noastră îndeplineşte condiţia. Formă: for(new variabilă = valoare_iniţială; condiţie; pas_de_executare) { Structura1(); }Explicaţie: Variabilei i se atribuie valoare iniţială. Se verifică dacă variabilă a depăşit valoarea finală (condiţia), dacă s-a depăşit se termină de executat structura for şi se trece la structura imediat următoare, în caz contrar se execută Structura1 şi se creşte valoarea variabilei cu pasul de executare. Nu se pun paranteze decât atunci când ai decât o linie după structura de mai sus. Exemplu: for(new variabilă = valoare_iniţială; condiţie; pas_de_executare) { Structura1(); } 4. Exemple main() { StructuraIf(5, 4); // Chemam functia "StructuraIf" cu parametrii a = 5 si b = 4. StructuraIf(9, 9); // Chemam functia "StructuraIf" cu parametrii a = 9 si b = 9. StructuraIf(2, 3); // Chemam functia "StructuraIf" cu parametrii a = 2 si b = 3. StructuraWhile(5); // Chemam functia "StructuraWhile" cu parametrul NumarMaxim = 5. StructuraFor(3); // Chemam functia "StructuraFor" cu parametrul NumarMaxim = 3. } stock StructuraIf(a, b) // Cream functia "StructuraIf" cu parametrii a si b care sunt obligatorii. { if(a > b) // Verificam daca a este mai mare ca b. { print("a este mai mare ca b"); // Daca a este mai mare ca b afisam mesajul. } else if(a == b) // Verificam daca a este egal cu b. { print("a este egal cu b"); // Daca a este egal cu b afisam mesajul. } else { print("b este mai mare ca a"); // Daca nici o conditie de mai sus nu este adevarata afisam mesajul. } } stock StructuraWhile(NumarMaxim) // Cream functia "StructuraWhile" cu parametriul NumarMaxim care este obligatoriu. { new i = 1; // Initializam variabila locala i, îi atribuim valoare 1. while(i < NumarMaxim) // Executam structura print si i++ cât timp conditia este adevarata. { print("Execut While"); // Afisam mesajul cât timp conditia este adevarata. i++; // Crestem i-ul cu 1, cât timp conditia este adevarata. } } stock StructuraFor(NumarMaxim) // Cream functia "StructuraWhile" cu parametriul NumarMaxim care este obligatoriu. { for(new i = 1; i <= NumarMaxim; i++) // Executam conditia cât timp i este mai mic sau egal cu NumarMaxim si îl creste cu 1 (i++). (se poate creste si cu 2, dar atunci trebuie scris i += 2 sau i = i + 2) { printf("%i ", i); // Afisam mesajul care este de tip întreg. } print("FOC!"); // Dupa ce terminam de executat for-ul afisam mesajul "FOC!". }
  20. Uita-te aici. http://wiki.sa-mp.com/wiki/SetWeather
  21. Mda, nu stiam ... (sarcasm) Atunci stii cate case ai in baza de date, da? Daca nu contorizeaza-le. Si cand inserezi in baza de date poti sa ii pui pretu, coordonatele, ownerul etc. Fara sa mai faci 100 de query-uri. Iar ID-ul o sa fie contrul de (case + 1). Cand vrei sa creezi o noua casa, il cresti.
  22. WopsS

    Spijin ceas

    In primul rand nu e de la codul pe care l-ai dat. In al doilea rand eroarea aia inseamna ca nu ai definit variabila "FALSE". Daca vrei sa folosesti bool este "false".
×
×
  • 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.