Jump to content

DiBlaine

Member
  • Posts

    27
  • Joined

  • Last visited

  • Days Won

    4

Everything posted by DiBlaine

  1. Poza la structura tabelului users(baza de date).
  2. La un moment dat va fi o problema, nu trebuie exagerat asta cu maritul string-ului.
  3. Poftim: https://pastebin.com/M4FM3t4H
  4. Trebuie sa maresti variabila care afiseaza optiunile din /shop(de ex ai: string[128], trebuie sa il maresti la string[168]). Daca nu ai inteles, pune aici comanda /shop sa iti modific eu.
  5. Fa o poza la structura tabelului users. Codul este ok, nu ar avea de ce sa nu mearga.
  6. Pune pastebin cu noul script(cel al lui L0K3D) poate ai gresit undeva.
  7. Ai incercat sa maresti array-ul HouseInfo?
  8. Nustiu nu vad greseli in codul sursa, este corect scris. [19:40:22] [debug] Run time error 4: "Array index out of bounds" [19:40:22] [debug] Accessing element at index 200 past array upper bound 99 Tinand cont de warningurile/erorile de mai sus si de faptul ca ele apar doar la linia cu house/house rent, este o problema la MAX_HOUSES. Cate case ai tu creeate in baza de date?
  9. Ca sa ne dam seama de la care linii provin acele warninguri, pune o poza cu /stats ca sa vedem de unde nu mai afiseaza datele in /stats.
  10. Tu nu trebuie sa renunti la un gamemode pentru ca nu are sistemele dorite de tine, daca nu stii sa le faci tu de la 0 macar incearca sa le dai copy-paste dintr-un gamemode care are acel sistem.
  11. Poftim "scriptărule" ????????: case DIALOG_SHOP: { if(!response) return 1; switch(listitem) { case 0: Showadminshop(playerid); case 1: Showhelpershop(playerid); } }
  12. Scuze de dublu post, credeam ca pot da edit... totusi vreau sa iti explic, ai de exemplu 5 masini la factiunea cu nr 1. Functia ta: function SetVehicle(fid, turf) { for(new i; i < MAX_SVEHICLES; i++) { if(ServerVehicles[i][vFaction] == fid) SetVehicleVirtualWorld(i, turf); } return 1; } Luam deoparte linia: if(ServerVehicles[i][vFaction] == fid) SetVehicleVirtualWorld(i, turf); In functia de mai sus, se foloseste un loop pornind de la nr. 0 pana la maxim 999(asa e in burned, MAX_SVEHICLES = 1000). Ai de exemplu prima masina din baza de date(cu id-ul 1) din `svehicles` la factiunea cu nr. 1, asta ar cam veni la incarcare asa: ServerVehicles[1][vFaction] = 1; // primul 1 reprezinta id-ul masinii din baza de date, al 2-lea 1 reprezinta nr. factiunii care "detine" masina respectiva Tu ai avut: if(ServerVehicles[i][vFaction] == fid) SetVehicleVirtualWorld(i, turf); // ceea ce inseamna ca, daca masina cu numarul 1 apartine factiunii cu nr. 1 atunci sa ii seteze masini cu id-ul 1 *din joc vw-ul de la turf.* Daca observi la functia LoadSVehicles() ai: ServerVehicles[x][vSpawned] = CreateVehicleEx(ServerVehicles[x][vModel], ServerVehicles[x][vLocation][0], ServerVehicles[x][vLocation][1], ServerVehicles[x][vLocation][2], ServerVehicles[x][vAngle], ServerVehicles[x][vColor][0], ServerVehicles[x][vColor][1], -1); ServerVehicles[x][vSpawned] - va fi id-ul masinii cu nr. 1 din baza de date(in joc de ex masina va avea id-ul 316), astfel id-ul masinii spawnate(in joc) trebuie sa il folosesti tu cand vrei sa aduci niste actiuni/modificari etc asupra masinilor din joc
  13. Vad ca functia SetVehicle e in gamemode-ul burned, inlocuieste functia ta cu cea de mai jos si va trebui sa functioneze corect: function SetVehicle(fid, turf) { for(new v = 0; v < MAX_SVEHICLES; v++) { if(ServerVehicles[v][vFaction] == fid) SetVehicleVirtualWorld(ServerVehicles[v][vSpawned], turf); } return 1; }
  14. Sau poti face o verificare la incarcarea vehiculelor din baza de date, verifici modelul masinii si factiunea, uite un exemplu: if(MasinaInfo[i][mFactiune] == 1 && MasinaInfo[i][mModel] == 411) CreateVehicle(model, X, Y, Z, Angle, color1, color2, -1, 1); else CreateVehicle(model, X, Y, Z, Angle, color1, color2, -1); // Asta e un exemplu, care pune sirena pe Infernusurile primei factiuni(de obicei factiunea cu id-ul 1 este LSPD). // MasinaInfo[i][mFactiune] si MasinaInfo[i][mModel] trebuie sa le inlocuiesti dupa cum ai tu in gamemode.
  15. Pentru a avea "sunet de sirena" pe un vehicul normal te folosesti de functia CreateVehicle: https://wiki.sa-mp.com/wiki/CreateVehicle Functia "default", nemodificata: CreateVehicle(vehicletype, Float:x, Float:y, Float:z, Float:rotation, color1, color2, respawn_delay, addsiren=0); Daca observi ultimul parametru este "addsiren=0". Asta inseamna ca vehiculul creeat nu va avea "sunet de sirena". Fara sirena (1): CreateVehicle(411, 613.7783, -2.9987, 1000.5500, 75.7200, 205, 222, -1); // acelasi lucru cu Fara sirena (2) Fara sirena (2): CreateVehicle(411, 613.7783, -2.9987, 1000.5500, 75.7200, 205, 222, -1, 0); // acelasi lucru cu Fara sirena (1) Cu sirena: CreateVehicle(411, 613.7783, -2.9987, 1000.5500, 75.7200, 205, 222, -1, 1); Explicatie 'Fara sirena(1)': // 411 - modelul vehiculului // 613.7783 - pozitia X a vehicului // -2.9987 - pozitia Y a vehicului // 1000.5500 - pozitia Z a vehicului // 75.7200 - rotatia vehicului // 205 - prima culoare a vehiculului // 222 - a doua culoare vehiculului // -1 - timpul in care se respawneaza vehiculul, daca pui 60 masina se va respawna in 60 secunde de la creearea ei, iar daca e -1 nu se va mai respawna // in cazu asta dupa cum e "definita" functia CreateVehicle(uita-te mai sus) "addsiren=0" ceea ce inseamna ca nu va exista sirena pe vehiculul creeat. Explicatie 'Fara sirena(2)': // acelasi lucru ca si la explicatia de mai sus doar ca, daca vezi am mai adaugat inca o valoare dupa '-1' si anume valoarea '0' care reprezinta parametrul "addsiren", si cu/si fara ultimul element care este '0' vehiculul creeat nu va avea sirena. Explicatie "Cu sirena": // acelasi lucru cu explicatia de mai sus(a doua) doar ca, daca vrei sa ai sirena pe vehiculul creeat trebuie sa pui pui valoarea '1' la ultimul parametru("addsiren"). ATENTIE: Daca vrei sirena trebuie sa pui intotdeauna valoarea '1' la ultimul parametru. Sper ca ai inteles, ti-am explicat functia mura in gura ????
  16. Intrebare: Am uitat o paranteza intr-un cod mai mare si nu mai stiu exact unde, exista un anumit program care ar putea detecta problema asta?Ai încercat să faci ceva înainte să postezi?: Nu mai tin minte ce am modificat de primesc 26 erori. T/C AM REZOLVAT!
  17. Esti sigur ca ai pus exact cum ti-am dat eu? Am testat, functioneaza si nu primesc nicio eroare/warning in consola.
  18. Nu oricine poate da flood la un server de sa:mp, trebuie sa ai unelte puternice(IRC/BOTNET care au multi boți), nu poți face asta cu un simplu ROOT. I-ar fi de ajutor daca ar adăuga un sistem anti-flood(aici intrand si de ex: spammul). Mai pot fi si greseli din script, care poate duce la lucrul asta. EDIT: Floodul pe sa:mp nu se refera doar la picat servere. Lui nu ii pica ip-ul serverului de tot(atunci poti zice ca e flood - DDoS), doar reconecteaza anumiti jucatori.
  19. Username: DiBlaine. Nume real: Mă numesc Alex. Vârstă: Am vârsta de 17 ani. Unde locuiești: Locuiesc în Oradea, județul Bihor. Ocupație: Deocamdata școala(liceu clsasa a 11-a). Hobby-uri: Designul, programarea și culturismul. Cum ai aflat de comunitate?: Am aflat-o singur, pawno.ro s-a afiliat cu leaks.ro ????. Ce limbaje de programere cunoști?: PAWN - deocamdată mă încadrez la cunoștinte de nivel mediu, ținând cont că am făcut atâtea pauze; am început să învăț acest limbaj de programare acum vreo 3 ani, însă am făcut multe pauze(până la 5-6 pauze/an care durau cate 1 lună, chiar și 2 luni), iar acum m-am decis să revin și să mă pun pe treabă ????, mai cunosc puțin HTML & PHP - am cunoștințe minime, pe aceste 2 limbaje nu prea am insistat insă voi face asta cât de curând. Alte precizări: Am zis să mă prezint și eu, așa mi se pare normal să se cunoască membrii unei comunități între ei ????, mulțumesc cititorilor pentru timpul acordat.
  20. Ah, imi cer scuze sincer nu prea am citit cu multa atentie. Dar ma refer la faptul ca, toti pica simultan? EDIT: Ai vreun sistem anti flood in GM?
  21. Ai aici un link in care gasesti explicatiile unor probleme aparute legate de SA:MP: https://wiki.sa-mp.com/wiki/Common_Problems De obicei dupa cum vezi(explicatia) in acel link, acel mesaj este trimis in consola de cele mai multe ori atunci cand un player are probleme cu internetul. Nu ai precizat faptul ca, doar tu patesti lucrul asta sau toti playerii de pe server?
  22. Poti da link de la gamemode? Il voi descarca, iar dupa aceea o sa te ajut(acest script este adaugat de obicei intr-un timer, cand e ora 00 atunci sa pluseze nr. actual de zile cu +1). EDIT: Infine, am descarcat eu gamemode-ul, fi atent aici e problema: mysql_tquery(SQL, "UPDATE `users` SET `Days` = `Days` + '1' WHERE `Member` = '0'", "", ""); Odata ce aceasta interogare este trimisa, apoi executata va plusa zilele membrilor doar la factiunea cu id 0(0 - nu e o factiune asadar e civilul, astfel doar daca esti civil zilele din "factiune" cresc) si daca observi ai: WHERE `Member` = '0' Modifica din = '0' in > '0' pentru a plusa zilele membrilor din toate factiunile, atata tot; la final va trebuii sa iti iasa asa: mysql_tquery(SQL, "UPDATE `users` SET `Days` = `Days` + '1' WHERE `Member` > '0'", "", "");
  23. Deasupra functiei: ShowPlayerDialog(playerid, DIALOG_GARAGE, DIALOG_STYLE_LIST, szTitle, szDialog2, "Ok", "Exit"); adaugi: strcat(szDialog2, "Spawn All Vehicles"); Ar trebuii sa arate cam asa dupa ce faci ce ti-am zis eu: strcat(szDialog2, "Spawn All Vehicles"); ShowPlayerDialog(playerid, DIALOG_GARAGE, DIALOG_STYLE_LIST, szTitle, szDialog2, "Ok", "Exit"); Apoi inlocuiesti case DIALOG_GARAGE cu asta: case DIALOG_GARAGE: { if(!response) return 1; if(strfind(inputtext, "Spawn All Vehicles", true) != -1) { new respawntax = GetVehicles(playerid) * 1000; format(string, sizeof(string), "Nu ai $%d.", respawntax); if(GetPlayerCash(playerid) < respawntax) return SendClientMessage(playerid, COLOR_GREY, string); for(new i = 0; i < 10; i++) { if(PlayerInfo[playerid][pCarKey][i] != 0) { new carid = PlayerInfo[playerid][pCarKey][i]; if(CarInfo[carid][Spawned] != 0 && CarInfo[carid][Confiscated] != 1 && !IsAttached(CarInfo[carid][Spawned]) && !IsVehicleOccupied(CarInfo[carid][Spawned])) { SetVehicleToRespawn(CarInfo[carid][Spawned]); SetTunning(carid); } else SpawnPlayerCar(carid); } } GivePlayerCash(playerid, -respawntax); BizzInfo[19][bBalance] += respawntax; mysql_format(SQL, query, sizeof(query), "UPDATE bizz SET Till = %d WHERE ID = %d", BizzInfo[19][bBalance], 30); mysql_tquery(SQL, query, "", ""); SCM(playerid, COLOR_GOLD, "[Manage vehicle] Your cars have been respawned."); } new idd; if(PlayerInfo[playerid][pCarKey][listitem] == 0) return 1; else idd = PlayerInfo[playerid][pCarKey][listitem]; sVehicle[5][playerid] = idd; SetPVarInt(playerid, "VehicleSlot", listitem); if(CarInfo[idd][Spawned] != 0) strcat(string, "Vehicle Info\nFind Vehicle\nTow Vehicle (/park)\nTow Vehicle (last known location)\nDespawn\nDebug\nSell Vehicle\nBuy Insurance\nUpgrade to VIP Vehicle - {FFFF00}1008 premium points{FFFFFF}\n{FF0000}Remove tuning"); else if(CarInfo[idd][Spawned] == 0) strcat(string, "Vehicle Info\nFind Vehicle\nTow Vehicle (/park)\nTow Vehicle (last known location)\nSpawn vehicle\nDebug\nSell Vehicle\nBuy Insurance\nUpgrade to VIP Vehicle - {FFFF00}1008 premium points{FFFFFF}\n{FF0000}Remove tuning"); if(CarInfo[idd][Confiscated] == 1) strcat(string, "\n{FFFFFF}Pay fine to TTC"); ShowPlayerDialog(playerid, DIALOG_GARAGE1, DIALOG_STYLE_LIST, "Options", string, "Ok", "Back"); } Lasa un reply dupa ce testezi.
  24. Ti-am facut doar codul de la dialog, cu restul cred ca te descurci. Mai ai de facut sa afiseze acea optiune `Spawn All Vehicles`. Nu am testat, revino cu un reply dupa ce testezi sa stiu daca merge sau nu. new respawntax = GetVehicles(playerid) * 1000; format(string, sizeof(string), "Nu ai $%d.", respawntax); if(GetPlayerCash(playerid) < respawntax) return SendClientMessage(playerid, COLOR_GREY, string); for(new i = 0; i < 10; i++) { if(PlayerInfo[playerid][pCarKey][i] != 0) { new carid = PlayerInfo[playerid][pCarKey][i]; if(CarInfo[carid][Spawned] != 0 && CarInfo[carid][Confiscated] != 1 && !IsAttached(CarInfo[carid][Spawned]) && !IsVehicleOccupied(CarInfo[carid][Spawned])) { SetVehicleToRespawn(CarInfo[carid][Spawned]); SetTunning(carid); } else SpawnPlayerCar(carid); } } GivePlayerCash(playerid, -respawntax); BizzInfo[19][bBalance] += respawntax; mysql_format(SQL, query, sizeof(query), "UPDATE bizz SET Till = %d WHERE ID = %d", BizzInfo[19][bBalance], 30); mysql_tquery(SQL, query, "", ""); SCM(playerid, COLOR_GOLD, "[Manage vehicle] Your cars have been respawned.");
×
×
  • Create New...