-
Posts
2.689 -
Joined
-
Last visited
-
Days Won
25
Content Type
Profiles
Forums
News
Documentation
Everything posted by Gireada
-
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
-
Facut aici eu ti-am explicat ce faci acuma trebuie sa modifici astfel incat sa fie pe mysql.
-
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
-
Foarte bine lucrat, felicitari.
-
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.
-
Aratane functia IsAnOwnableCar
-
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.
-
Asta tine de sistemul tau de login. Nu iti trebuie un tutorial pentru a face un dialog. Aici
-
Uite aici un tutorial despre functia 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.
-
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
-
Exista deja un astefel de tutorial, inainte de a posta foloseste butonul Search. Uitate aici
-
Te poti uita Aici. Iar pentru rank depinde de ce GameMode ai.
-
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]
-
Poate se incurca ID-urile vehiculelor.
-
Nu are nici o treaba OnPlayerConnected. Updateaza includerele.
-
Daca ai 26 de erori inseamna ca ai uitat o paranteza deschisa
-
Aratene includerul.
-
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.
