Jump to content

khain.dev

Membru
  • Posts

    667
  • Joined

  • Last visited

  • Days Won

    55

Everything posted by khain.dev

  1. Fiecare are dreptul de a folosi acea metodă pe care o consideră cea mai bună.
  2. Recomand să te familiarizezi cu acest wiki - https://www.open.mp/docs/tutorials/stringmanipulation. Rezum acest wiki Format se folosește pentru a gestiona adăugarea incrementală de texte în buffer, nu doar pentru a măsura lungimea șirului, spre deosebire de strlen.
  3. Da, nu este plugin, ai dreptate.
  4. Salut! format nu returnează o valoare în codul scris de mine, ci doar actualizează buffer-ul de șiruri de caractere pe care îl primește ca parametru, adică, arăt lungimea totală a șirului len care este actualizată cu numărul de caractere adăugate de fiecare dată când format este apelată.
  5. Dar iarăși, dacă vrei sa afișezi un Dialog pentru fiecare player care solicita aceasta comanda, nu este rentabil din punct de vedere a utilizării memoriei, la un online +500 o sa ai putine probleme. Din acest motiv, majoritatea folosesc un singur dialog.
  6. Pai, dacă luăm în calcul ce ai zis, putem face puțin diferit codul CMD:players(playerid, params[]) { new string[128 * MAX_PLAYERS], playerName[24], playerScore, len = 0; for (new i = 0; i < MAX_PLAYERS; i++) { if (IsPlayerConnected(i)) { GetPlayerName(i, playerName, sizeof(playerName)); playerScore = GetPlayerScore(i); len += format(string[len], sizeof(string) - len, "%s - %d\n", playerName, playerScore); if (len >= sizeof(string) - 128) { break; } } } if (len == 0) { strcat(string, "Nu există jucători pe server.\n", sizeof(string)); } ShowPlayerDialog(playerid, DialogNoResponse, DIALOG_STYLE_LIST, "Jucatori pe server", string, ">", ""); return 1; }
  7. Salut! Iti pot propune versiunea mea pentru comanda ta. CMD:players(playerid, params[]) { new string[128 * MAX_PLAYERS], playerName[24], playerScore, len = 0; for (new i = 0; i < MAX_PLAYERS; i++) { if (IsPlayerConnected(i)) { GetPlayerName(i, playerName, sizeof(playerName)); playerScore = GetPlayerScore(i); len += format(string[len], sizeof(string) - len, "%s - %d\n", playerName, playerScore); } } if (len == 0) strcat(string, "Nu există jucători pe server.\n", sizeof(string)); ShowPlayerDialog(playerid, DialogNoResponse, DIALOG_STYLE_LIST, "Jucatori pe server", string, ">", ""); return 1; }
  8. Acest includ are și plugin
  9. Salut, descărca cea mai noua versiune de aici https://github.com/karimcambridge/samp-foreach In server.cfg nu uita sa adaugi la plugins si foreach.so (linux) sau .dll (windows) /* dupa a_samp baga acest includ */ #include <a_samp> #include <foreach> public OnGameModeInit() { foreach (new p : Player) { /* Cod pentru fiecare jucător */ } foreach (new v : Vehicle) { /* Cod pentru fiecare vehicul */ } return 1; }
  10. GG
  11. Optimizăm putin codul CMD:fly(playerid, params[]) { if(!IsPlayerConnected(playerid)) return 0; // Verificăm dacă jucătorul este conectat if(gPlayerLogged[playerid] == 0) { SendClientMessage(playerid, COLOR_LIGHTRED, "Trebuie să te conectezi."); return 1; } if(PlayerInfo[playerid][pAdmin] < 1) { SendClientMessage(playerid, COLOR_ERROR, AdminOnly); return 1; } new sendername[MAX_PLAYER_NAME], string[256]; GetPlayerName(playerid, sendername, sizeof(sendername)); if(flymode[playerid] == 0) { togfind[playerid] = 0; flymode[playerid] = 1; format(string, sizeof(string), "{DFF230}%s este acum în modul fly-mode.", sendername); ABroadCast(COLOR_ORANGE, string, 1); InitFly(playerid); StartFly(playerid); SetPlayerHealthEx(playerid, 10000000); } else { togfind[playerid] = 1; flymode[playerid] = 0; format(string, sizeof(string), "{F89AD6}Ai oprit fly-mode-ul", sendername); SCM(playerid, COLOR_GREEN, string); StopFly(playerid); SetPlayerHealthEx(playerid, 100); } return 1; }
  12. UN COD PUȚIN MAI OPTIMIZAT #include <zcmd> #define COLOR_LIGHTRED 0xFF6347AA #define COLOR_GREEN 0x0ea142FF stock GetClosestVehicle2(playerid, Float:dis) { new Float:X, Float:Y, Float:Z; if (GetPlayerPos(playerid, X, Y, Z)) { new vehicleid = INVALID_VEHICLE_ID; dis *= dis; // Evităm operațiunea de radical prin compararea dis^2 cu temp^2 for (new v, Float:VX, Float:VY, Float:VZ; v < MAX_VEHICLES; v++) { if (GetVehiclePos(v, VX, VY, VZ)) { VX -= X; VY -= Y; VZ -= Z; new temp = VX * VX + VY * VY + VZ * VZ; if (temp < dis) { dis = temp; vehicleid = v; } } } dis = floatpower(dis, 0.5); // Redundant în acest context, puteți renunța la această linie return vehicleid; } return INVALID_VEHICLE_ID; } CMD:closestcar(playerid, params[]) { if(!IsPlayerAdmin(playerid)) { SendClientMessage(playerid, COLOR_GREEN, "Nu poti folosi comanda pentru ca nu esti admin!"); return 1; } if(IsPlayerInAnyVehicle(playerid)) { SendClientMessage(playerid, COLOR_LIGHTRED, "Esti deja intr-o masina!"); return 1; } if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) { SendClientMessage(playerid, COLOR_LIGHTRED, "Nu esti in picioare langa o masina!"); return 1; } new Float:closestDistance = 50.0; new cCar = GetClosestVehicle2(playerid, closestDistance); if(cCar != INVALID_VEHICLE_ID) { PutPlayerInVehicle(playerid, cCar, 0); } else { SendClientMessage(playerid, COLOR_LIGHTRED, "Nu ai gasit nicio masina in apropiere!"); } return 1; }
  13. Ce ține de marketing și SEO, dețin o agenție de marketing în România. Din punct de vedere financiar nu mă plâng, totuși, samp-ul este o relaxare personală și revenirea mea e un subiect strict de hobby.
  14. Reacția anticheat-ului e prea bruscă, altfel vorbind, mai muncește la acest capitol, în rest e totul bine, felicitări.
  15. cumpara-ti un salam si o paine cu banii astia, invata sa prietuiesti munca, ce ceri tu costa mult mai mult decat 25 de lei amarati.
  16. Securitatea asta e inutila in momentul in care ai discordul spart
  17. Va salut, am dorinta sa deschid un server in stilul PUBG + DM si nu numai. Eu ma ocup cu realizarea GM-ului in sine ( Mapping, TextDraw, Pawn ), din partea partenerului este finantarea acestui server. Pentru mai multe detalii, discutam in privat. Discord: hemingway.dev#3221
  18. if(registrul tau de date [pinfo] < 15000) return SendClientMessage(playerid, -1, !"Nu ai bani suficienti"); Baga asta inainte de GivePlayerWeapon introducand registrul tau de bani, exemplu if(PlayerInfo[playerid][Cash] < 10000) Si vezi ca ai o ) in plus la playerid cand retragi banii jucatorului.
  19. Daca mai este actual, ds-ul meu: khain.dev#3221
  20. Pot sa spun despre autorul acestei postari in felul urmator "Vrabia mălai visează"
  21. Legat de afisarea textrawurilor, ai auzit de sizeof? Exemplu: for(new i = 0; i < sizeof(x); i ++) TextDrawShowForPlayer(playerid, x[i]);
  22. Ce versiune de MySQL folosesti?
  23. Astept o critica constructiva)
  24. Interesant ce parere o sa ai cand o sa iti returnez banii
×
×
  • 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.