Jump to content

Gireada

V.I.P
  • Posts

    2.689
  • Joined

  • Last visited

  • Days Won

    25

Everything posted by Gireada

  1. Aceste un gamemode pentru incepatorii care vor sa lucreze pe un server. El este un server de baza adica doar sistemul de logare care este pe mysql r33. Baza de date se creeaza automat voi doar trebuie sa il configurati. Succesc.' Poza: Download: PasteBin SolidFiles
  2. Facut aici eu ti-am explicat ce faci acuma trebuie sa modifici astfel incat sa fie pe mysql.
  3. La cererea lui GooGleTM am facut acest tutorial in care va voi explica cum sa masurati kilometrii. Sa incepem. Mai intai avem nevoie de cateva coordonate unde vom stoca distantele parcurse de vehicul. [pawn]new Float:VehicleKM[MAX_VEHICLES], Float:x1[MAX_VEHICLES], Float:y1[MAX_VEHICLES], Float:z1[MAX_VEHICLES], Float:x2[MAX_VEHICLES], Float:y2[MAX_VEHICLES], Float:z2[MAX_VEHICLES], timerkm[MAX_VEHICLES];[/pawn] Al doilea pas este sa creeam o functie care sa exprime distanta dintre doua puncte parcurse de vehicul(inceput - sfarsit) [pawn] forward km_counter(vehicleid); public km_counter(vehicleid) { //inlocuim valorile noi cu cele vechi x1[vehicleid] = x2[vehicleid]; y1[vehicleid] = y2[vehicleid]; z1[vehicleid] = z2[vehicleid]; //stocam noile valori GetVehiclePos(v, x2[vehicleid], y2[vehicleid], z2[vehicleid]); //calculam distanta dintre cele doua punce vehciul punct si cel nou x1[vehicleid] -= x2[vehicleid]; y1[vehicleid] -= y2[vehicleid]; z1[vehicleid] -= z2[vehicleid]; //acum il transformam in kilometrii(deoarece distanta este in metrii) impartind la 1000.0 VehicleKM[vehicleid] += floatsqroot((x1*x1)+(y1*y1)+(z1*z1)) / 1000.0; }[/pawn] Acum pentru a activa aceasta functie avem nevoie de callback-ul OnPlayerStateChange [pawn]public OnPlayerStateChange(playerid, newstate, oldstate) { new string[50]; if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER) { timerkm[GetPlayerVehicleID(playerid)] = SetTimerEx("km_counter", 1000, 1, "d", GetPlayerVehicleID(playerid));//pornim acel timer care masoara kilometrii parcursi } iif(oldstate == PLAYER_STATE_DRIVER && newstate == PLAYER_STATE_ONFOOT ) { format(string, sizeof(string), "Vehiculul are in total %d kilometrii parcursi",VehicleKM[vehicleid]);//afisam cati kilometrii are parcursi SendClientMessage(playerid, -1, string); KillTimer(timerkm[GetPlayerVehicleID(playerid)]);//omoram acel timer care masoara kilometrii deoarece nu mai e nici un sofer in ea } return 1; }[/pawn] Acesta este tutorialul sper ca ati inteles ceva. M-am inspirat de [url=http://pastebin.com/f50b4709b]aici
  4. Foarte bine lucrat, felicitari.
  5. Gireada

    Problema

    Nu ai pentru trece.
  6. Gireada

    Problema

    Scuze ca te jicnesc dar esti un nestiutor, nu stiu ce cauti inca in aceste sisteme de vehicule cand tu nu stii ce e aia o functie. Dute la variabiala(daca stii ce e aia) carsonserver si atribuiei(daca stii ce e aia) id-ul ultimului vehicul de pe serverul tau.
  7. Gireada

    Split sscanf

    Mersi de apreciere
  8. Gireada

    Problema

    Aratane functia IsAnOwnableCar
  9. Fa asta. new parola2[] = "salut",atent[MAX_PLAYERS] = 0; [pawn]public OnRconLoginAttempt(ip[], password[], success) { if(success) { ShowPlayerDialog(playerid, DIALOG_LOGIN_RCON, DIALOG_STYLE_PASSWORD, "Login RCON", "Te rugam sa scrii a doua parola", "Login", "kick"); } return 1; }[/pawn] La OnDialogResponse pui [pawn]if(dialogid == DIALOG_LOGIN_RCON) { if(response) { if(atent[playerid] == 3) { return KickWithMessage(playerid, COLOR_RED, "Nu stii a doua parola."); } if(strcmp(parola2, inputtext, true) == 0) { SendClientMessage(playerid, -1, "Te-ai conectat cu RCON-ul"); } else { atent[playerid]++; } } else { KickWithMessage(playerid, COLOR_RED, "Nu stii a doua parola."); } return 1; }[/pawn] Testeaza si zimi daca merge.
  10. Gireada

    Problema

    Aratane IsAnOwnableCar
  11. Asta tine de sistemul tau de login. Nu iti trebuie un tutorial pentru a face un dialog. Aici
  12. Uitate Aici
  13. Uite aici un tutorial despre functia sscanf.
  14. Gireada

    Split sscanf

    La cererea lui Legend am facut urmatorul tutoria. In acest tutorial va voi explica cum sa facei split cu functia sscanf. Nu stiu exact cu sa va explic pentru ca si eu deabia am invatat ce face functia asta. Dar voi incerca. Voi incepe cu un exemplu: [pawn]new nume[MAX_PLAYER_NAME], bani, warn, factiune[24]; sscanf("Gireada, 1000, 30, SA-MP ", "p<,>s[34]iis[6]", nume, bani, warn, factiune); printf("%s, %d, %d, %s",nume, bani, warn, factiune); [/pawn] Ok mai exact ce face functia asta? Stocheaza in variabile valori. Cred ca exemplul de mai sus este cel mai potrivit. sscanf("De unde trebuie sa luam valorile", "parametrii prin care ii stocam", variabilele in care le stocam); Cred ca toti va intrebati ce este p<,>. Cu ajutorul lui delimitam valorile cum sunt Gireada, 1000, 30, SA-MP . Daca veti rula acest exemplu veti vedea ca asa se va afisa. Pentru cei ce vor sa foloseasca aceasta functie pentru systemele de mysql veti inlociu virgula de la p<> cu | si va deveni p<|> De exemplu: avem un tabel (Users) cu urmatoarele coloane in urmatoare ordine ID, Nume, Bani, Skin, vom folosi astfel. [pawn]format(Query, sizeof(Query), "SELECT * FROM `Users` WHERE `Name` = '%s' ", pName(playerid)); mysql_query(1,Query); mysql_store_result();// stocam rezultatul mysql_fetch_row_format(Query, "|"); sscanf(Query, "p<|>is[34]ii", ID, nume, bani, skin);//stocam in variabile valorile din tablou printf("%d, %s, %d, %d",ID, nume, bani, skin);[/pawn] Sper ca ati inteles.
  15. Acesta este o problema unde o poti posta la Discutii scripting. Nu necesita sa faci un tutorial in care sa le explici ca trebuie sa scoti doua functii
  16. Exista deja un astefel de tutorial, inainte de a posta foloseste butonul Search. Uitate aici
  17. Te poti uita Aici. Iar pentru rank depinde de ce GameMode ai.
  18. La cererea lui s1N3d_28 am facut acest tutorial, unde voi explica cum sa spawnezi vehicule in diferite locuri. Pentru inceput avem nevoie de includerul a_samp #include <a_samp> Al doilea pas este sa cream doua tablouri bidemensionale unde vom stoca coordonatele si modelul vehiculelor. [pawn]new Float:SpawnVehiculeCoord[][4] = { {0.0000, 0.0000, 0.0000, 0.00000},// x, y, z, r {0.0000, 0.0000, 0.0000, 0.00000}, {0.0000, 0.0000, 0.0000, 0.00000}, {0.0000, 0.0000, 0.0000, 0.00000}, {0.0000, 0.0000, 0.0000, 0.00000}, {0.0000, 0.0000, 0.0000, 0.00000} }; new SpawnVehiculeModel[][1] = { {411},//infernus {411}, {415},//cheetah {415},//cheetah {411}, {411} };[/pawn] Atentie primul tablou este Float: deoarece noi exprimam coordonatele si in zecimale(x.00000). Al treilea pas si ultimul este sa adaugam un contor(for) care sa ne creeze vehiculele. Il vom pune in OnGameModeInit [pawn]public OnGameModeInit() { new i; for(i = 0; i < sizeof(SpawnVehiculeCoord); i++) { CreateVehicle(SpawnVehiculeModel[0], SpawnVehiculeCoord[0], SpawnVehiculeCoord[1], SpawnVehiculeCoord[2], SpawnVehiculeCoord[3], -1, -1, 300000); } printf("S-au spawnat %d vehicule aleatorii",i);// ne va afisa in consola cate vehicule am creeat. }[/pawn]
  19. Poate se incurca ID-urile vehiculelor.
  20. Nu ai includereul core
  21. Nu are nici o treaba OnPlayerConnected. Updateaza includerele.
  22. Gireada

    Wanted

    Pune la = +=
  23. Daca ai 26 de erori inseamna ca ai uitat o paranteza deschisa
  24. Aratene includerul.
  25. 1.Pune la inceputul gamemode-ului #pragma tabsize 0 pentru a rezolvat warning 217: loose indentation ( el apare atunci cand randurile nu sunt aliniate) 2.La eroarea warning 216: nested comment undeva in gamemode ai de exemplu: [pawn]new materiale,string[256]; /*if(unformat(params, "i", materiale)) { SendClientMessage(playerid, WHITE, "Foloseste: /buypies <cantitate>"); return 1; /* } // -- aici de problema ai doua /* if(!(PlayerInfo[playerid][Job] == 8)) { SendClientMessage(playerid, WHITE, "Trebuie sa fii dealer de arme."); return 1; }*/[/pawn] Uitate inainte de if(!(PlayerInfo[playerid][Job] == 8)) - asta e un exemplu. 3.Sterge variabilele BIG_str Textdraw1 si motd.
×
×
  • 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.