Jump to content

Andreigl

VIP
  • Posts

    1958
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by Andreigl

  1. ce poză sexy ai 😎

  2. ceau, cf? m-ai bagat la ignore pe samp si n am decat sa-ti las aici msj

    doar intreb, daca faci rage pt ca face cineva dm pe tine, ce rezolvi? avand in vedere ca mai esti si admin 5 sau pana mea, mi se pare penibil si nu-i nici prima oara cand ma iei cu copilarisme. De asta a si picat de tot b-zone'ul, profesionalism frt respekt cu K daca vezi bn da? lupa poate ti tre :D ms

     

    las poza asta aici, daca stergi post ul meu inseamna ca te simti deranjat de situatie, pana la urma mie mi-ai dovedit ca esti un copil cu muci la nas n am csz no offence bro

    x6Hmb72.png

     

    pace fra csz,succes in viata, o sa ti trebuiasca

  3. Descriere: Un calculator ce convertește orice număr dintr-o bază m în altă bază n. L-am făcut în prima săptămână de carantină. Poze / Video: Link de descărcare: (download source) Sursa (opțional): https://www.dropbox.com/s/x82x6ihgmplwwgi/convert numbers.rar?dl=0 Alte precizări: goal-ul meu inițial a fost să-l fac într-o interfață, dar nu mă prea am cu C#-ul
  4. ai postat moduri cu stealer, te-am lăsat la comandă degeaba, nimic nu știi ;/

    1. Nic

      Nic

      unde frt

    2. Dark Night

      Dark Night

      Intr-adevar, degeaba l-ai lasat, acum speram sa nu ajunga ca FnZ sa ne faca moduri buguite 

    3. Clanin3

      Clanin3

      doamne nic, asa ai ajuns, sa faci moduri cu stealer? :(

  5. @Leviathan, vezi că ți-am depistat un țigan în facțiune. Pentru un bun de 15,000,000$ să dai țeapă XD https://imgur.com/a/YCFfcsa
  6. baftă marțianule, vezi că am pretenția de la tine să te înroșești

  7. Nick: shanker' Level: 88 Rank: 4 (LV Supervisor) Nick-ul celui reclamat: ScooBy.RENUL Bara RPG a celui reclamat: Motiv: Limbaj. Dovezi: https://i.imgur.com/o9yL0eW.png Alte precizări: -
  8. Nick: shanker' Level: 88 Rank: 4 (LV Supervisor) Nick-ul celui reclamat: tony. Bara RPG a celui reclamat: Motiv: Nesimțire. Dovezi: https://i.imgur.com/srVdoup.png Alte precizări: L-am adăugat (1/2)
  9. frt, dacă te doare în, gât, treci și suge o acadea, face bine :) 

    image.png.4481490f546033e57aebd03640ad669e.png

    1. low A n n e

      low A n n e

      Ai ban pt reclama esti phaa 

  10.  

    „She gave me a box full of darkness.”

  11. Modul Reconnect a fost actualizat (a fost rezolvat bugul cu avertismentele de la fiecare reconectare / schimbare de server)

    Link: 

     

  12. @Vesca, dă edit la topic și într-un spoiler să pui toate funcțiile API-ului cerute (inclusiv asta de mai sus) Am nevoie de: 1) ForAllPeds (direct din stActorPool) 2) isActorDefined (a.k.a streamed) (dacă găseam asta, știam să fac și eu func. 1), dar era ineficientă așa ) 3) ActorCurrentCar sau playerCurrentCar (pHandle / playerID) 4) ForAllVehicles (direct din stVehiclePool) momentan doar atât
  13. Varianta 2, folosind tutorialul lui @Vesca (Click pentru a accesa tutorialul): main.h class Announcements { public: static void __stdcall GiveLicense(std::string); static void __stdcall At_Me(std::string); static void __stdcall StartLesson(std::string); static void __stdcall TestPassed(std::string); static void __stdcall TestFailed(std::string); }; std::unordered_map< std::string, std::pair<std::regex, std::string> > Syntaxes{ { "GiveLicence", { std::regex("[0-999]+ [1-5]+"), "<Player ID> <Licence ID>" } }, { "At_Me", { std::regex("[0-999]+ [1-5]+"), "<Player ID> <Licence ID>" } } }; main.cpp void _stdcall Announcements::GiveLicense(std::string params) { std::regex regex_syntax = Syntaxes["GiveLicence"].first; if (std::regex_match(params, regex_syntax)) { std::stringstream StringStream(params); std::string Player_ID, Licence_ID; StringStream >> Player_ID >> Licence_ID; if (SF->getSAMP()->getPlayers()->IsPlayerDefined(std::stoi(Player_ID))) { if (std::stoi(Licence_ID) == 1) { std::string Format = "/givelicense " + Player_ID + " Flying"; char* Text = new char[Format.size() + 1]; strcpy_s(Text, Format.size() + 1, Format.c_str()); SF->getSAMP()->getPlayers()->pLocalPlayer->Say(Text); free(Text); } if (std::stoi(Licence_ID) == 2) { std::string Format = "/givelicense " + Player_ID + " Sailing"; char* Text = new char[Format.size() + 1]; strcpy_s(Text, Format.size() + 1, Format.c_str()); SF->getSAMP()->getPlayers()->pLocalPlayer->Say(Text); free(Text); } if (std::stoi(Licence_ID) == 3) { std::string Format = "/givelicense " + Player_ID + " Fishing"; char* Text = new char[Format.size() + 1]; strcpy_s(Text, Format.size() + 1, Format.c_str()); SF->getSAMP()->getPlayers()->pLocalPlayer->Say(Text); free(Text); } if (std::stoi(Licence_ID) == 4) { std::string Format = "/givelicense " + Player_ID + " Weapon"; char* Text = new char[Format.size() + 1]; strcpy_s(Text, Format.size() + 1, Format.c_str()); SF->getSAMP()->getPlayers()->pLocalPlayer->Say(Text); free(Text); } if (std::stoi(Licence_ID) == 5) { std::string Format = "/givelicense " + Player_ID + " Materials"; char* Text = new char[Format.size() + 1]; strcpy_s(Text, Format.size() + 1, Format.c_str()); SF->getSAMP()->getPlayers()->pLocalPlayer->Say(Text); free(Text); } } else { std::string Text = "{00d12d}[School Instructors]: {a1aba2}Player with ID " + Player_ID + " is not connected."; SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xFF, 0), Text.c_str()); } } else { std::string Text_Syntax = "{00d12d}[School Instructors]: {a1aba2}Syntax: " + Syntaxes["GiveLicence"].second; SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xFF, 0), Text_Syntax.c_str()); } }
  14. Destul de complicat pentru un începător, dar merge Oricum, m-am prins și eu după 4 ore ce ai făcut tu aici O să revin cu un edit, bravo pt tutorial, e chiar interesant
  15. Andreigl

    Banul Ramane

    @Antique, fraaa, ui ni aici!
  16. Dacă ai lucrat în cleo vreodată, atunci știi că poți afla parametrii în felul următor: SAMP.IsCommandTyped(0@) 0AD4: 4@ = scan_string 0@ format "%s %d %s" 1@v 5@ 6@v și unde 4@ returnează numărul de parametrii (evident, în cazul nostru sunt 3, dar nu am pus-o ca și o condiție, deci nu-i obligatoriu să fie 3). În C++, pentru un mod SF, ce mi-a venit în cap, pentru a afla numărul de parametrii, putem verifica numărul de spații. De exemplu, se află un spațiu? Atunci avem 2 parametrii, nu se află nici un spațiu? Atunci avem unul singur. Funcția următoare ne dă numărul de parametrii: int params_count = 0; for (unsigned int contor = 0; contor < params.length(); contor++) if (params[contor] == ' ') params_count++; Cu funcția următoare putem verifica dacă jucătorul a trimis cel puțin un parametru: if (!params.empty()) std::cout << "Avem cel putin un parametru"; else std::cout << "Nu avem nici un parametru"; Putem să verificăm dacă a trimis într-adevăr parametrii de care noi avem nevoie: if (!sscanf_s(params.c_str(), "%d %d", Player_ID, Licence_ID)) { SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xFF, 0), "{00d12d}[School Instructors]: {a1aba2}Usage: /gl(givelicense) [Player ID] [License ID]"); SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xFF, 0), "{00d12d}[School Instructors]: {a1aba2}ID Licenses: Flying (1), Sailing (2), Fishing (3), Weapon (4), Materials (5)"); return; } Un exemplu de utilizare (am început eu să traduc un mod CLEO în C++): void __stdcall Announcements::GiveLicense(std::string params) { unsigned int params_count = 0; for (unsigned int contor = 0; contor < params.length(); contor++) if (params[contor] == ' ') params_count++; if (params.empty() || params_count == 0) { SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xFF, 0), "{00d12d}[School Instructors]: {a1aba2}Usage: /gl(givelicense) [Player ID] [License ID]"); SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xFF, 0), "{00d12d}[School Instructors]: {a1aba2}ID Licenses: Flying (1), Sailing (2), Fishing (3), Weapon (4), Materials (5)"); return; } int* Player_ID = new int; int* Licence_ID = new int; if (!sscanf_s(params.c_str(), "%d %d", Player_ID, Licence_ID)) { SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xFF, 0), "{00d12d}[School Instructors]: {a1aba2}Usage: /gl(givelicense) [Player ID] [License ID]"); SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xFF, 0), "{00d12d}[School Instructors]: {a1aba2}ID Licenses: Flying (1), Sailing (2), Fishing (3), Weapon (4), Materials (5)"); free(Player_ID); free(Licence_ID); return; } if (SF->getSAMP()->getPlayers()->IsPlayerDefined(*Player_ID)) { if (*Licence_ID >= 1 && *Licence_ID <= 5) { if (*Licence_ID == 1) { char* Event = new char[256]; snprintf(Event, 256, "/givelicense %d Flying", *Player_ID); SF->getSAMP()->getPlayers()->pLocalPlayer->Say(Event); free(Event); } if (*Licence_ID == 2) { char* Event = new char[256]; snprintf(Event, 256, "/givelicense %d Sailing", *Player_ID); SF->getSAMP()->getPlayers()->pLocalPlayer->Say(Event); free(Event); } if (*Licence_ID == 3) { char* Event = new char[256]; snprintf(Event, 256, "/givelicense %d Fishing", *Player_ID); SF->getSAMP()->getPlayers()->pLocalPlayer->Say(Event); free(Event); } if (*Licence_ID == 4) { char* Event = new char[256]; snprintf(Event, 256, "/givelicense %d Weapon", *Player_ID); SF->getSAMP()->getPlayers()->pLocalPlayer->Say(Event); free(Event); } if (*Licence_ID == 5) { char* Event = new char[256]; snprintf(Event, 256, "/givelicense %d Materials", *Player_ID); SF->getSAMP()->getPlayers()->pLocalPlayer->Say(Event); free(Event); } } else { SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xFF, 0), "{00d12d}[School Instructors]: {a1aba2}Wrong License ID."); SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xFF, 0), "{00d12d}[School Instructors]: {a1aba2}ID Licenses: Flying (1), Sailing (2), Fishing (3), Weapon (4), Materials (5)"); } } else { char Message[256]; _snprintf_s(Message, sizeof(Message), "{00d12d}[School Instructors]: {a1aba2}Player with ID %d is not connected.", *Player_ID); SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xFF, 0), Message); } free(Player_ID); free(Licence_ID); } Singura problemă, care încă nu i-am dat de furcă, funcția say ne cere pointerul unui string, însă _snprintf_s nu poate implementa un pointer (noi ca să citim parametrii pe rând, folosim sscanf, iar aici trebuie să creem pointeri din nou). Eu am folosit în schimb snprintf, dar o să primim warning cum că funcția este unsecure. Bine înțeles, se poate dezactiva acest warning. Revin cu edit când o să găsesc o soluție.
  17. @Vesca, atunci un motiv în plus să lucrez cu v142 Cum se ia playerScore?
  18. Nu ai cum, doar să vezi prin părți ce face programul cutare, dar sursa nu o poți recupera. Asta se poate doar in C# O altă variantă în loc de: std::string mesaj = "Salut, " + name + "!"; // <- creem mesajul de salut char* mesaj_char = new char[mesaj.size() + 1]; // <- il convertim la char strcpy(mesaj_char, mesaj.c_str()); Ar mai fi: char* myChar = new char[256]; snprintf( myChar, 256, "Jucatorul cu ID-ul %d are numele %s", Player_ID, SF->getSAMP()->getPlayers()->GetPlayerName(Player_ID) ); P.S: Pentru cei care primesc eroare cum că nu se găsește Windows.h, trebuie să dați retarget la proiect. și să-l upgradați la o versiune nouă (eu folosesc v142 2017).
×
×
  • 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.