Jump to content

irinelbro69

Membru
  • Posts

    113
  • Joined

  • Last visited

  • Days Won

    6

Everything posted by irinelbro69

  1. Salut! Vand gamemode de la 0 scris in perioada 14 oct 2021 - 1 iulie 2022. Gamemode-ul are in jur de 25,000 linii si este gata in proportie de 95 la suta (mai trebuiesc finalizate cateva). Poate fi pus si pe open.mp foarte usor (nu exista probleme, e adaptat 100% si pentru open.mp). Acesta a rulat pe comunitatea mea timp de o saptamana dar am decis impreuna cu celalalt fondator sa inchidem serverul si sa ne axam pe ceva mult mai interesant. In toata aceasta perioada cat timp serverul a fost online am avut ce-i drept cateva probleme dar le-am rezolvat cu succes, facandu-l foarte stabil. Gamemode-ul este foarte bun pentru a face update-uri pe el si are un cod scris foarte ok, cu multe functii ce pot usura treaba. La un numar de aproape 50 on am avut in jur de 195-196 tick-uri (e irelevant pentru un server de SA:MP cu 50 jucatori ca nu are ce performanta sa consume), dupa parerea mea ar mentine lejer 500+ jucatori. Gamemode-ul contine urmatoarele sisteme (in mare parte): - sistem de logare / inregistrare - sistem de admini + helperi pe puncte - contorizare ore jucatori in ultimele 7 zile - actiuni care se pot procesa de pe panel (trebuie doar sa inserati un query cand faceti o actiune pe panel si se proceseaza in maxim 10 secunde pe joc): kick-uri, ban-uri, mute-uri, warn-uri si poti da/lua ametiste jucatorilor - sistem de joburi dinamice - sistem de case dinamice - sistem de business-uri dinamice - sistem de vehicule personale - sistem de dealership dinamic (unic in mare parte) - sistem de skill-uri (se pot adauga skill-uri din baza de date si totodata si numarul de puncte necesare) - sistem de quest-uri zilnice - 8 joburi unice - sistem de cont premium pe zile - sistem de vehicule dinamice - sistem de rentcar (puteti face orice vehicul inchiriabil) - sistem de skinuri personale + beneficii - sistem de referal cu promo code-uri - sistem de barbut unic - sistem de clanuri bazate pe level si XP - sistem de scoala de soferi cu test teoretic + practic (se pot modifica intrebarile din baza de date) Mai multe video-uri in care este prezentat gamemode-ul (mai puteti cauta voi pe youtube): Pretul acestui gamemode este de 40 euro / 200 lei. Ca metode de plata accept doar PayPal / transfer bancar. Ofer suport 7 zile de la cumparare pentru rezolvarea bugurilor si a problemelor. Metode de contact: - Instagram: @irinelbro69 - Discord: irinelbro69#8416 - Email: [email protected] Rog seriozitate!
  2. Salut, da-mi PM pe discord: irinel77#3505.
  3. Daca ai nevoie de un gamemode mult mai mult decat decent, astept mesaj pe discord: irinel77#3505.
  4. Pur si simplu faci 2 foldere numite fixes si temp in folderul scriptfiles.
  5. if(NumIp(playerip, playerid) >= 5 && !IsBotOnIP(playerip)) in loc de 5 pune mai mult.
  6. Username: irinel77z Varsta: 16 Ce vinzi?: Gamemode de la 0 RPG scris in perioada 2020-2021. Dovada (că sunteti in posesia produsului) OBLIGATORIU: Pret: 30 euro / 150 lei (PayPal / Transfer bancar). Detalii de contact: Discord: irinel77#3505, Instagram: @irinelbro69 sau email: [email protected] Alte precizari: Gamemode-ul a rulat in trecut pe rpg.l*******a.ro si a avut un numar de aprox. 190 tick-uri la 95 on. Am refacut si reparat cateva sisteme dupa ce am decis sa iesim din comunitate (din cauza unui singur om - pt cei care se intreaba de ce n-am continuat cu acest gm) si sa ne apucam de un alt gamemode de la 0 cu un cod foarte bun. Nu e cod scris cu picioarele, mai sunt probabil cateva functii neadaptate inca pentru un cod bine scris in zilele de astazi. Ofer suport 7 zile de la cumparare pentru repararea bugurilor (important e sa raportati orice bug in cele 7 zile de suport, le rezolv cu mare drag). O sa va las cateva video-uri cu cateva sisteme din acest gamemode mai jos si cam ce update-uri i-au fost aduse in timp ce a rulat pe comunitatea l*******a. Rog seriozitate! ** Am decis sa cenzurez numele comunitatii deoarece nu doresc sa le fac reclama. ** Lista update-uri: https://pastebin.com/3NnUC4vu
  7. Iti recomand sa gandesti sistemul altfel, o sa-ti las un exemplu mai jos de la care poti porni la ceva mai complex: 1. creeaza o enumeratie pentru a stoca fiecare radar in parte enum radars { radarID, Float:radarRadius, Float:radarPositionX, Float:radarPositionY, Float:radarPositionZ, radarPlacer, // player id radarLimit, // limita in km/h } 2. defineste variabilele pe care le vei folosi new server_radars[10][radars], // pe server sa poata exista maxim 10 radare Iterator:sv_radars<10>; // definim iteratorul pentru radare new placed_radar[MAX_PLAYERS], // aici definim variabila care stocheaza ID-ul radar-ului plasat de catre jucator radar_delay[MAX_PLAYERS]; // delay /radar 3. creeaza o functie prin care inserezi un radar stock PlaceRadar(playerid, Float:radius, limit) { new i = Iter_Free(sv_radars); server_radars[i][radarID] = i+1; server_radars[i][radarRadius] = radius; new Float:X, Float:Y, Float:Z; GetPlayerPos(playerid, X, Y, Z); server_radars[i][radarPositionX] = X; server_radars[i][radarPositionY] = Y; server_radars[i][radarPositionZ] = Z; server_radars[i][radarPlacer] = i; server_radars[i][radarLimit] = limit; Iter_Add(sv_radars, server_radars[i][radarID]); return SCM(playerid, -1, "Radar %d placed (%d km/h) - radius: %0.1fm.", server_radars[i][radarID], limit, radius); } 4. creeaza o alta functie prin care stergi radarul jucatorului: stock DestroyRadar(playerid) { if(placed_radar[playerid] > 0) { new r = placed_radar[playerid]; server_radars[r][radarRadius] = 0.0; server_radars[r][radarPositionX] = server_radars[r][radarPositionY] = server_radars[r][radarPositonZ] = 0.0; server_radars[r][radarPlacer] = INVALID_PLAYER_ID; server_radars[r][radarLimit] = 0; Iter_Remove(sv_radars, r); placed_radar[playerid] = 0; radar_delay[playerid] = 0; } return 1; } 5. la conectare apeleaza functia DestroyRadar 6. comanda /placeradar: YCMD:placeradar(playerid, params[], help) { // aici pui tu verificarile daca e copoi if(radar_delay[playerid] > gettime()) return SCM(playerid, -1, "Poti folosi aceasta comanda din nou peste %d secunde.", radar_delay[playerid]-gettime()); if(placed_radar[playerid] != 0) return SCM(playerid, -1, "Ai deja un radar plasat!"); if(Iter_Count(sv_radars) >= 10) return SCM(playerid, -1, "Eroare: Pot fi maxim 10 radare deodata pe server."); new radius, limit; if(sscanf(params, "dd", radius, limit)) return SCM(playerid, -1, "/placeradar [raza] [limita de viteza]"); if(radius < 100 || radius > 300) return SCM(playerid, -1, "Eroare: Raza de actiune trebuie sa fie cuprinsa intre 100 si 300 metri."); if(limit < 60 || limit > 200) return SCM(playerid, -1, "Eroare: Limita de viteza trebuie sa fie cuprinsa intre 60 si 200 km/h."); PlaceRadar(playerid, radius, limit); radar_delay[playerid] = gettime() + 45; // pui tu un mesaj de ex care anunta politistii de pe server ca a pus x radar return 1; } 7. in final, timerul pentru verificarea vitezei: ptask check_radar[1000](playerid) { if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER && placed_radar[playerid] == 0) { // verificam daca e intr-un vehicul ca sofer si sa nu-l ia radaru' in caz de el l-a pus new speed = Carspeed(playerid); foreach(new r : sv_radars) { if(IsPlayerInRangeOfPoint(playerid, server_radars[r][radarRadius], server_radars[r][radarPositionX], server_radars[r][radarPositionY], server_radars[r][radarPositionZ])) { if((speed+10) >= server_radars[r][radarLimit]) { // verificam daca limita de viteza este incalcata cu minim 10km/h // si aici pui sa-l ia radaru' } } } } } Sper sa te ajute si sa nu fie probleme (n-am testat, am gandit pe loc chestia). Succes!
  8. #1 "local variable "gString" shadows a variable at a preceding level" Aceasta variabila a fost definita probabil mai sus, incearca acest cod: new nick[MAX_PLAYER_NAME]; cache_get_field_content(0, "name", nick, MAX_PLAYER_NAME); #2 Deoarece variabila ta este boolean, trebuie sa o incarci folosindu-te de chestia aceasta: sau poti scrie direct: CarInfo[id][cRainBow] = bool:cache_get_field_content_int(0, "RainBow");
  9. Codul nu este aranjat corect. Pe viitor incearca sa aliniezi liniile corect, succes! public OnPlayerConnect(playerid) { new name[MAX_PLAYER_NAME], file[256]; GetPlayerName(playerid, name, sizeof(name)); format(file, sizeof(file), SAVE, name); if(!dini_Exists(file)) { ShowPlayerDialog(playerid, Register, DIALOG_STYLE_INPUT, "Salut, nu ai un cont!", "Te rog scrie o parola !", "Register", "Inchide"); TextDrawShowForPlayer(playerid, TDEditor_TD[7]); TextDrawShowForPlayer(playerid, TDEditor_TD[8]); format(ReportText[playerid], 256, "None"); PlayerInfo[playerid][pFier] = FierVechi[playerid]; UpdateSpeed[playerid] = false; SpdObj[playerid][0] = INVALID_OBJECT_ID; SpdObj[playerid][1] = INVALID_OBJECT_ID; PlayerJob[playerid] = 0; Checkpoint[playerid] = 0; JobVehicle[playerid] = 0; JobWorking[playerid] = 0; PlayerJob1[playerid] = 0; Checkpoint1[playerid] = 0; JobVehicle1[playerid] = 0; JobWorking1[playerid] = 0; PlayerJob2[playerid] = 0; Checkpoint2[playerid] = 0; JobVehicle2[playerid] = 0; JobWorking2[playerid] = 0; CursaCheckpoint[playerid] = 0; CursaCar[playerid] = 0; Report[playerid] = 0; masinaadmin[playerid] = 0; Event[playerid] = 0; pEvent[playerid] = 0; Gift[playerid] = 0; GiftC[playerid] = 0; Bonus[playerid] = 0; SpecialQuest[playerid] = 0; SpecialQuestCheckpoint[playerid] = 0; Salutare[playerid] = 0; DrivingCheckpoint[playerid] = 0; MasinaDMV[playerid] = 0; fPolitie[playerid] = 0; fMedic[playerid] = 0; fTaxi[playerid] = 0; fProTv[playerid] = 0; IsInCar[playerid] = 0; gPlayerLogged[playerid] = 0; } if(fexist(file)) { if(PlayerInfo[playerid][pBan] == 1){ SendClientMessage(playerid, 0xff0000FF, "Esti Banat !"); Kick(playerid); return 1; } ShowPlayerDialog(playerid, Login, DIALOG_STYLE_INPUT, "Salut, ai deja un cont!", "Te rog scrie parola !", "Login", "Inchide"); TextDrawShowForPlayer(playerid, TDEditor_TD[0]); TextDrawShowForPlayer(playerid, TDEditor_TD[1]); format(ReportText[playerid], 256, "None"); PlayerInfo[playerid][pFier] = FierVechi[playerid]; UpdateSpeed[playerid] = false; SpdObj[playerid][0] = INVALID_OBJECT_ID; SpdObj[playerid][1] = INVALID_OBJECT_ID; PlayerJob[playerid] = 0; Checkpoint[playerid] = 0; JobVehicle[playerid] = 0; JobWorking[playerid] = 0; PlayerJob1[playerid] = 0; Checkpoint1[playerid] = 0; JobVehicle1[playerid] = 0; JobWorking1[playerid] = 0; PlayerJob2[playerid] = 0; Checkpoint2[playerid] = 0; JobVehicle2[playerid] = 0; JobWorking2[playerid] = 0; CursaCheckpoint[playerid] = 0; CursaCar[playerid] = 0; Report[playerid] = 0; masinaadmin[playerid] = 0; Event[playerid] = 0; pEvent[playerid] = 0; Gift[playerid] = 0; GiftC[playerid] = 0; Bonus[playerid] = 0; SpecialQuest[playerid] = 0; SpecialQuestCheckpoint[playerid] = 0; Salutare[playerid] = 0; DrivingCheckpoint[playerid] = 0; MasinaDMV[playerid] = 0; fPolitie[playerid] = 0; fMedic[playerid] = 0; fTaxi[playerid] = 0; fProTv[playerid] = 0; IsInCar[playerid] = 0; gPlayerLogged[playerid] = 0; } return 1; }
  10. Inainte de aceasta linie: DestroyVehicle(car); Adauga: VehicleOccupied[car] = 0; Tu trebuie sa pui aceasta valoare pe 0 inainte de a distruge vehiculul, ca urmatorul vehicul ce va capata acest ID sa nu aiba valoarea pe 1 si sa fie 0. Sper ca te-am ajutat.
  11. Exemplu - se reseteaza la relog: public OnPlayerDisconnect(playerid, reason) { SetPVarInt(playerid, "cmd_comanda_folosit", 0); return 1; } YCMD:comanda(playerid, params[], help) { if(GetPVarInt(playerid, "cmd_comanda_folosit") == 1) return SendClientMessage(playerid, -1, "Nu mai poti folosi aceasta comanda."); SetPVarInt(playerid, "cmd_comanda_folosit", 1); SendClientMessage(playerid, -1, "Nu vei mai putea folosi aceasta comanda pana la urmatorul relog."); return 1; } Dacă vrei să poată folosi acea comanda doar o singură dată indiferent dacă dă relog sau nu, adaugă în baza de date în tabelul conturilor: "cmdComandaUsed" si te poti lua dupa urmatorul exemplu: YCMD:comanda(playerid, params[], help) { if(playerVariables[playerid][pComandaUsed] == 1) return SendClientMessage(playerid, -1, "Nu mai poti folosi aceasta comanda."); playerVariables[playerid][pComandaUsed] = 1; SendClientMessage(playerid, -1, "Nu vei mai putea folosi aceasta comanda."); gQuery[0] = EOS; mysql_format(SQL, gQuery, sizeof(gQuery), "update `users` set `cmdComandaUsed` = '1' where `playerID` = '%d'", playerVariables[playerid][pSQLID]); mysql_tquery(SQL, gQuery, "", ""); return 1; } Eu am folosit variabilele din gamemode-ul meu, poti adapta foarte usor. Mult succes!
  12. Pare destul de eficient, momentan... Poate o sa-l incerc si pe al tau. Mersi de sfat, insa am preferat ceva mai simplu, nu sa ma folosesc de nu stiu cati operatori si alte chestii.
  13. Iti recomand sa te folosesti de BigInt-ul lui Matt, eu il folosesc de cand l-a pus pe forum si am priceput foarte repede cum sa-l folosesc, ai si un mic tutorial in .inc. https://github.com/ItssMatt/samp/blob/master/bigint
  14. "Cu toate acestea doresc sa pun un easter quest facut de mine la download"
  15. Salut, ma poti contacta pe Discord: irinel77#3505. In decembrie se fac 5 ani de cand sunt in domeniu :).
  16. Trebuie sa te folosesti de OnPlayerEnterCheckpoint. Tu aici nu ai nimic legat de checkpoint-uri, doar o comanda pe care trebuie sa o tastezi ca sa verifice daca esti intr-un anumit checkpoint sau nu.
  17. Nu e nevoie de tutorial. Daca vrei sa-l faci ca pe b-hood adauga o noua optiune in shop: Reborn, apoi creeaza o functie (rebornPlayer de exemplu) si aici resetezi toate variabilele jucatorului (level, bani, casa etc.) sau ce vrei tu sa i se reseteze.
  18. else { DestroyObject(TurnLight[vehicleid][2]); DestroyObject(TurnLight[vehicleid][3]); TurnLight[vehicleid][2] = 0; TurnLight[vehicleid][3] = 0; } } } return 1; Incearca asta.
  19. In baza de date nu exista coloana 'Reward' in tabelul 'users'.
  20. public OnPlayerCommandText(playerid, cmdtext[]) { if(strcmp("/vreauarma", cmdtext, true, 10) == 0) { if(GetPlayerMoney(playerid) < 15000) return SendClientMessage(playerid, 0x00FF00FF, "Nu ai bani suficienti."); GivePlayerWeapon(playerid, 24, 100); SendClientMessage(playerid, 0x5175adFF, "(-) Ai cumparat un Deagle pentru $15.000."); GivePlayerMoney(playerid, -15000); return 1; } } Poftim.
  21. La OnPlayerConnect/OnPlayerDisconnect pune StartQuest[playerid] = 0;
×
×
  • 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.