-
Posts
646 -
Joined
-
Last visited
-
Days Won
50
Content Type
Profiles
Forums
News
Documentation
Posts posted by khain.dev
-
-
Nu va mai pierdeți ambii timpul cu acest subiect, în caz contrar, fratele @-=[Vyorel]=- vă rezolvă rapid
- 1
-
2 hours ago, Sancky said:
da nu e vorba frt de metode, e vorba ca ai o greseala in cod, adica mai multe daca stau sa ma uit mai bine
Ok.
-
1 minute ago, Sancky said:
ma omule.. tu vrei sa iei si lungimea string-ului cu functia format dar ea nu returneaza nimic... si format nu este facut pentru a unii string-uri (dar intr-adevar se poate), strcat e facut pentru asta
Fiecare are dreptul de a folosi acea metodă pe care o consideră cea mai bună.
-
8 minutes ago, Sancky said:
daca ai nevoie de marimea string-ului, folosesti strlen
Recomand să te familiarizezi cu acest wiki - https://www.open.mp/docs/tutorials/stringmanipulation.
Rezum acest wikiFormat 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.
-
13 hours ago, Sancky said:
unde
Da, nu este plugin, ai dreptate.
-
13 hours ago, Sancky said:
format nu returneaza nimic
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ă.
-
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.
-
7 minutes ago, Maichh said:
Esti singurul care s-a gandit la mai multe pagini in dialog pentru jucatori, pentru ca daca sunt mai multi jucatori pe server nu se pot afisa intr-un singur string in dialog, trebuie facute mai multe pagini. Nu i-ai facut tu treaba asta, dar i-ai dat indiciul ala din primul buton ">", poate isi da seama.
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; }
-
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; }
-
1 hour ago, Sancky said:
actually, e cea mai veche versiune de foreach, cel din YSI este updatat, si nu e plugin, e doar un include
Acest includ are și plugin
-
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; }
-
-
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; }
-
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; }
-
4 hours ago, segmentationfault said:
văd că te ocupi pe marketing și SEO, de ce nu te specializezi pe asta și îți vinzi serviciile? pari bărbat în toată firea, nu trebuie să pui mâncare pe masă? sa-mp-ul este și va rămâne un joc pentru copiii, nu un business de viitor.
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.
-
UPD! Am revenit.
-
Reacția anticheat-ului e prea bruscă, altfel vorbind, mai muncește la acest capitol, în rest e totul bine, felicitări.
-
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.
-
Securitatea asta e inutila in momentul in care ai discordul spart
-
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 -
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. -
Daca mai este actual, ds-ul meu: khain.dev#3221
-
Pot sa spun despre autorul acestei postari in felul urmator "Vrabia mălai visează"
-
Legat de afisarea textrawurilor, ai auzit de sizeof?
Exemplu:for(new i = 0; i < sizeof(x); i ++) TextDrawShowForPlayer(playerid, x[i]);
Caut scripter pentru un proiect de lunga durata
in Caut servicii / partener / etc.
Posted
Este posibil să estimezi capacitatea de rezistență sa îi spun așa ce ține de playeri pe server. La o deschidere de server unde te aștepți că o să se conecteze în același timp +200 playeri, atunci poti face un DDos test asupra serverului tău inainte să il deschizi, practic printr-un test ddos asupra serverului poti vedea daca la deschidere o sa reziste sau nu în momentul unor conectari multiple. O altă metodă la care mulți ajung pentru a testa funcitonalitatea bună a GM-ului este adăugarea de boti fizici pe server, după cum știm un bot față de un player real folosește mai multe resurse ale serverului, respectiv poti adăuga un minim de 300 playeri și daca rezistă atât gm-ul cât și serverul, atunci e bine. Revenind la mentiunea ta, este greu sa estimezi cat de bine o sa tina server-ul tau la solicitari mari, totusi metodele mentionate mai sus simuleaza un test asupra functionalității optime al gm-ului și permite să vezi dacă poate rezista la solicitări mari sau nu.