Jump to content

BaFFyJunior

Membru
  • Posts

    240
  • Joined

  • Last visited

  • Days Won

    4

Everything posted by BaFFyJunior

  1. Lasa comanda aia asa cum e, ma refer la comanda buybiz. Leaga-te de variabila pPbiskey Fa o noua variabila, pPbiskey2 si cand dai la buybiz sa cumpere pui restrictia asta: if(pPbiskey == 0) { // codul de la cumpararea primului business return 1; } if(pPbiskey2 == 0) { // codul de la cumpararea celui de-al doilea business return 1; } Sau te duci la enum pInfo si la pPbiskey faci asta: pPbiskey [MAX_BUSINESSPERPLAYER] Sus in gamemode, unde vrei tu, pe la defineuri defineste MAX_BUSINESSPERPLAYER. #define MAX_BUSINESSPERPLAYER 2 Daca alegi varianta asta va trebui sa iti inlocuiesti cam tot din gamemode ce tine de pPbiskey. Aceasta functie ar trebui sa iti ia slotul liber al afacerilor: Player_GetFreeBusinessSlot(playerid) { for (new BusSlots; BusSlots < MAX_BUSINESSPERPLAYER; BusSlots++) if (PlayerInfo[playerid][pPbiskey][BusSlots] == 0) return BusSlots; return -1; } O folosesti asa: La comanda buybiz pui sa verifice daca playerul are slot liber: new SlotLiber = Player_GetFreeBusinessSlot(playerid); if(SlotLiber != -1) { PlayerInfo[playerid][pPbiskey][SlotLiber] = b; //restul codului de la cumparare } Sper ca ai inteles si ca te-am ajutat. Treaba nu e atat de grea si de complicata daca o intelegi si o faci cu pasi logici.
  2. Salutari! Recent am incercat sa optimizez un gamemode. Am trecut timerele pe ysi, am redus dimensiunea fisierului amx, am redus stringurile la necesitatile mele din gamemode. Oare ce as mai putea face?
  3. Tocmai asta ti-am dat mai sus... E aceeasi chestie cu ce spui tu doar ca cu switch. Pune ce ti-am dat eu si foloseste acel string intr-o comanda si vei vedea.
  4. Faci un stock care sa iti seteze numele de la administrator. De exemplu: stock GetAdmRank( rank ) { new Rankname[ 55 ]; switch( rank ) { case 0: Rankname = "Player"; case 1: Rankname = "Admin 1"; case 2: Rankname = "Admin 2"; case 3: Rankname = "Admin 3"; case 4: Rankname = "Admin 4"; case 5: Rankname = "Co-Fondator"; case 6: Rankname = "Fondator"; case 7: Rankname = "Scripter"; } return ( Rankname ) ; } Inlocuieste cu ce vrei tu. Apoi intr-un mesaj text il folosesti astfel: format(string, sizeof(string), "%s %s a premiat jucatorii.", GetAdmRank(PlayerInfo[playerid][pAdmin]), GetName(playerid)); Sper ca ai inteles si ca te-am ajutat.
  5. Eroare spune ca in baza ta de date campul Victim nu are definita o valoare prestabilita. Ca sa rezolvi eroarea: Da-i edit la campul Victim si unde scrie default pune 0, 1, cat vrei in conformitate cu ceea la ce se refera serverul tau. De obicei banuiesc ca vrei sa pui 0.
  6. Cauta variabila care este setata jucatorului care este in turf si fa cu foreach si cu ajutorul functiei SetPlayerMarkerForPlayer sa ti-i arate. E ceva foarte basic la baza... daca nu te descurci posteaza aici variabila care este setata la turf unui jucator si te ajut.
  7. Eu i-am facut ce a cerut. De asemenea, poate folosi un timer si cu o variabila care sa verifice daca jucatorii sunt in turf sa afiseze playerii pe mapa cu orice culoare cu ajutorul functiei SetPlayerMarkerForPlayer.
  8. Foloseste-te de GetPlayerPos. De exemplu: new Float: x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); SetPlayerCheckpoint(playerid, x, y, z, 7); Asta pui daca playerul e in turf sau unde doresti tu sa o pui. Sper ca ai inteles si ca te-am ajutat. La setplayercheckpoint in loc de playerid poti face un loop pentru playerii care se afla in turful respectiv. Nu mai lucrez pe rpg, dar iti dau un exemplu orientativ. foreach(new i: Player) { if(IsInTurf[i] == 1) { SetPlayerCheckpoint(i, x, y, z, 7); } }
  9. Filmele romanesti s-au cam dus. Eu am de la ultra-h.
  10. Pai du-te la enum PlayerInfo sau pInfo cum ai definit in gamemode si defineste-le acolo. De exemplu: enum pInfo { pProgres1, pProgres2, pProgres3, pProgresn, pProgres13 } new PlayerInfo[MAX_PLAYERS][pInfo];
  11. Defineste sub cmd new szString[200]; in loc de 200 pune cat vrei.
  12. Nu am timp acum, doar de joi(saptamana viitoare).
  13. la onplayerconnect unde afisezi textdrawul trebuie sa te folosesti de functia SelectTextDraw(...). https://wiki.sa-mp.com/wiki/SelectTextDraw
  14. Faci o comanda, de exemplu: CMD:comandaacunsa sau faci ca daca jucatorul a pasa o tasta si are admin 5(if(pressed key_yes && APlayerData[playerid][PlayerAdmin] >= 5) sa dea bani fiecarui jucator. Te poti folosi de foreach si de functia GivePlayerMoney sau functia cu care setezi bani jucatorului.
  15. Si serverele unice pot ajunge "servere mari" daca s-ar si juca cineva pe ele. Garantez ca sunt mult mai bune decat cele mari.
  16. Ia coordonatele obiectului cu GetObjectPos, apoi foloseste functia isplayerinrangeofpoint si vezi daca e in raza obiectului. Daca e la 5.0 sa zicem da-i destroy la obiect cu destroyobject. Cam asta ar fi in mare povestea.
  17. Cauta sw include samp pe google, descarca-l si pune-l in pawno-include. In loc de sw poti pune numele includeului tau.
  18. Verifica daca are checkpoint activ cu variabila pe care o ai in gm(de exemplu: CP[playerid] != 0) si apoi pui DestroyPlayerCheckpoint si setezi variabila pe 0.
  19. CMD:setleader(playerid, params[]) { if(PlayerInfo[playerid][pAdmin] < 4) return SCM(playerid, COLOR_WHITE, AdminOnly); new id,level,string[180]; if(sscanf(params, "ui",id,level)) return SCM(playerid, COLOR_GREY, "USAGE: {FFFFFF}/setleader <playerid/name> <faction>"); if(!IsPlayerConnected(id) || id == INVALID_PLAYER_ID) return SCM(playerid, COLOR_GREY, "Acel player nu este conectat."); if(level > 15 || level < 0) return SCM(playerid, COLOR_WHITE, "Invalid ID. (1-15)."); if(PlayerInfo[id][pMember] > 0 && PlayerInfo[id][pLeader] > 0) return SCM(playerid,COLOR_WHITE, "Acel player este intr-o factiune."); format(string, sizeof(string), "%s este noul lider al factiunii.", GetName(id)); SendFactionMessage(level, COLOR_CLIENT, string); new ftext[50]; format(ftext, sizeof(ftext), FactionName(level)); PlayerInfo[id][pMember] = level; if(PlayerInfo[playerid][pMember] == 11) finishAchievement(id, 29); else if(IsACop(playerid)) finishAchievement(id, 30); else if(IsAMember(playerid)) finishAchievement(id, 31); else finishAchievement(id, 28); PlayerInfo[id][pLeader] = level; FactionMembers[PlayerInfo[id][pMember]] ++; if(level == 0) { PlayerInfo[id][pChar] = 0; } else if(level == 1) { PlayerInfo[id][pChar] = 265; } //Police Departament else if(level == 2) { PlayerInfo[id][pChar] = 295; } //FBI else if(level == 3) { PlayerInfo[id][pChar] = 179; } //National Guard else if(level == 4) { PlayerInfo[id][pChar] = 270; } //Triad else if(level == 5) { PlayerInfo[id][pChar] = 292; } //Los Vagos else if(level == 6) { PlayerInfo[id][pChar] = 273; } //Ballas else if(level == 7) { PlayerInfo[id][pChar] = 265; } //SFPD else if(level == 8) { PlayerInfo[id][pChar] = 59; } //Tow Car Company else if(level == 9) { PlayerInfo[id][pChar] = 228; } //News Reporters else if(level == 10) { PlayerInfo[id][pChar] = 296; } //Los Aztecas else if(level == 11) { PlayerInfo[id][pChar] = 294; } //Hitman else if(level == 12) { PlayerInfo[id][pChar] = 272; } //School Instructors else if(level == 13) { PlayerInfo[id][pChar] = 70; } //Paramedic if(IsACop(id)) SetPlayerSkinEx(id, 305); else SetPlayerSkinEx(id, PlayerInfo[id][pChar]); PlayerTextDrawSetPreviewModel(playerid, SkinPreview[ playerid ], GetPlayerSkin(playerid)); PlayerTextDrawShow(playerid, SkinPreview[ playerid ]); PlayerInfo[id][pRank] = 7; SetPlayerToTeamColor(id); new query[300]; format(string, sizeof(string), "%s este liderul factiunii %s.", GetName(id), ftext); if(PlayerInfo[id][pAdmin] < 6) { mysql_format(SQL, query, sizeof(query), "INSERT INTO faction_logs (`text`, `player`,`leader`) VALUES ('%s','%d','%d')", string, PlayerInfo[id][pSQLID],PlayerInfo[playerid][pSQLID]); mysql_tquery(SQL,query,"",""); } format(query,sizeof(query),"UPDATE users SET `Leader`='%d',`Member`='%d',`Rank`='7',`Team`='%d',`CChar`='%d' WHERE `ID`='%d'",PlayerInfo[id][pLeader],PlayerInfo[id][pMember],PlayerInfo[id][pTeam],PlayerInfo[id][pChar],PlayerInfo[id][pSQLID]); mysql_query(SQL,query); format(string, sizeof(string), "L-ai promovat pe %s ca lider la factiunea %s.", GetName(id),ftext); SCM(playerid, COLOR_LIGHTBLUE, string); format(string, sizeof(string), "Admin %s te-a promovat ca lider al factiunii %s.", GetName(playerid),ftext); SCM(id, COLOR_LIGHTBLUE, string); return 1; } Incearca si vezi daca merge.
  20. Dupa cunostintele mele exista 2 variante: 1. Mergi la structura tabelei users si la admin modifici ca la default sa fie 0. 2. Conexiunea bazei de date e facuta gresit.
  21. La onplayertext pui conditie ca la mesajul trimis daca playerul are admin > 0 sa ii scrie textul cu culoare. De exemplu: {008000}%s.
  22. Te poti folosi de functia CreateVehicle. Uite cum: Faci o comanda. Spre exemplu: CMD:spawneazamasina(playerid, params[]) { if(VehiculSpawnat[playerid] == 1) return SCM(playerid, -1, "Ai spawnat deja un vehicul."); strcat( gQuery, "Infernus\n" ); strcat( gQuery, "Cheetah\n" ); strcat( gQuery, "Roadtrain\r" ); ShowPlayerDialog( playerid, Dialog_Vehicule, DIALOG_STYLE_LIST, "Vehicles", gQuery, "Alege", "Inchide" ); return 1; } Apoi dialogul care e apelat de comanda. case Dialog_Vehicule: { switch(listitem) { case 0: VehiculSpawnat[playerid] = CreateVehicle(...), PutPlayerInVehicle(playerid, VehiculSpawnat[playerid], 0); case 1: VehiculSpawnat[playerid] = CreateVehicle(...), PutPlayerInVehicle(playerid, VehiculSpawnat[playerid], 0); case 2: VehiculSpawnat[playerid] = CreateVehicle(...), PutPlayerInVehicle(playerid, VehiculSpawnat[playerid], 0); } return 1; } La onplayerconnect recomand sa setezi variabila VehiculSpawnat[playerid] = 0. O definesti la inceputul gmului asa: new VehiculSpawnat[MAX_PLAYERS]; Sper ca te-am ajutat!
  23. Pai. Tu creezi vehiculul cu o functie. De exemplu: MasinaJob[playerid] = CreateVehicle(....); SetVehicleHealth(MasinaJob[playerid], 380.0); PutPlayerInVehicle(playerid, MasinaJob[playerid], 0); Cam asa ar trebui sa arate functia ta.
×
×
  • 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.