Jump to content

Problema compilare /players


Recommended Posts

am si eu o problema 

eroarea:

C:\Users\dariu\OneDrive\Desktop\Gamemode uri, unelte etcc\Gamemode de la zero\gamemodes\dela0.pwn(65) : warning 217: loose indentation
C:\Users\dariu\OneDrive\Desktop\Gamemode uri, unelte etcc\Gamemode de la zero\gamemodes\dela0.pwn(67) : warning 217: loose indentation
C:\Users\dariu\OneDrive\Desktop\Gamemode uri, unelte etcc\Gamemode de la zero\gamemodes\dela0.pwn(96) : error 017: undefined symbol "foreach"
C:\Users\dariu\OneDrive\Desktop\Gamemode uri, unelte etcc\Gamemode de la zero\gamemodes\dela0.pwn(96) : error 029: invalid expression, assumed zero
C:\Users\dariu\OneDrive\Desktop\Gamemode uri, unelte etcc\Gamemode de la zero\gamemodes\dela0.pwn(96) : error 017: undefined symbol "Player"
C:\Users\dariu\OneDrive\Desktop\Gamemode uri, unelte etcc\Gamemode de la zero\gamemodes\dela0.pwn(96) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664              Copyright (c) 1997-2006, ITB CompuPhase


4 Errors.
[Finished in 0.6s]

codu:

CMD:players(playerid, params[])
{
    new string[600]; 
    foreach(new i: Player) { 
       format(string, sizeof(string), "%s - %d\n", GetName(playerid), Score); 
    } 
    ShowPlayerDialog(playerid, DialogNoResponse, DIALOG_STYLE_LIST, "Server players", string, "Ok", "" );
    return 1;
}
Edited by ImDariusHere
Link to comment
Share on other sites

Poftim, ti l am fct eu mai frumusel si vezi daca totusi ai #include "foreach" si fisierul .inc in path-ul de compilare al tau :)

CMD:players(playerid, params[])
{
    new string[600];
    string = "Nume\tLevel\n"; 
    foreach(new i : Player) { 
       format(string, sizeof(string), "%s%s\t%d\n", string, GetName(i), GetPlayerScore(i)); 
    } 
    ShowPlayerDialog(playerid, 0, DIALOG_STYLE_TABLIST_HEADERS, "Server players", string, "Ok", "" );
    return 1;
}

 

  • Like 1
Link to comment
Share on other sites

3 minutes ago, ImDariusHere said:

C:\Users\dariu\OneDrive\Desktop\Gamemode uri, unelte etcc\Gamemode de la zero\gamemodes\dela0.pwn(199) : error 017: undefined symbol "GetName"

asta imi da acuma

stock GetName( playerid )
{
	new name[ MAX_PLAYER_NAME ];
	GetPlayerName( playerid, name, sizeof name );
    return name;
}

 

Link to comment
Share on other sites

On 1/12/2024 at 5:00 PM, AlexxAdv said:

Poftim, ti l am fct eu mai frumusel si vezi daca totusi ai #include "foreach" si fisierul .inc in path-ul de compilare al tau :)

CMD:players(playerid, params[])
{
    new string[600];
    string = "Nume\tLevel\n"; 
    foreach(new i : Player) { 
       format(string, sizeof(string), "%s%s\t%d\n", string, GetName(i), GetPlayerScore(i)); 
    } 
    ShowPlayerDialog(playerid, 0, DIALOG_STYLE_TABLIST_HEADERS, "Server players", string, "Ok", "" );
    return 1;
}

 

Dialog-ul cu id 0 trebuie definit, altfel se pot suprapune cu altele din gm si cand va folosi comanda /players posibil sa i se afiseze peste alt dialog, spre ex cel de login :).

  • Like 1
Link to comment
Share on other sites

2 hours ago, MihaiT11 said:

Dialog-ul cu id 0 trebuie definit, altfel se pot suprapune cu altele din gm si cand va folosi comanda /players posibil sa i se afiseze peste alt dialog, spre ex cel de login :).

nu vrei sa ii rescriu tot gm?

Link to comment
Share on other sites

2 minutes ago, MihaiT11 said:

Tinere, ce te ambalezi asa?Am zis doar ca trebuie definit acel dialog, nu ti-am zis sa-i rescrii gm.

Eram ironic, ma gandesc ca atata lucru ar putea sti si el, sa defineasca un dialog cu un id la misto care nu exista..

Link to comment
Share on other sites

14 minutes ago, AlexxAdv said:

Eram ironic, ma gandesc ca atata lucru ar putea sti si el, sa defineasca un dialog cu un id la misto care nu exista..

bine, imi retrag cuvintele atunci.

  • Upvote 1
Link to comment
Share on other sites

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;
}

 

Link to comment
Share on other sites

2 minutes ago, khain.dev said:

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;
}

 

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. :D

Link to comment
Share on other sites

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. :D

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;
}

 

Link to comment
Share on other sites

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.

Edited by khain.dev
Link to comment
Share on other sites

25 minutes ago, khain.dev said:

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;
}

 

format nu returneaza nimic

Link to comment
Share on other sites

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ă.

Link to comment
Share on other sites

1 minute ago, khain.dev said:

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ă.

no hate, parca vorbesc cu un AI

ce rost are 'len += format(...);' daca format nu iti returneaza nimic in schimb

Screenshot_20240115_100755_Chrome.thumb.jpg.5c706c8f546f2a1616233265981ed209.jpg

Link to comment
Share on other sites

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 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.

Edited by khain.dev
Link to comment
Share on other sites

4 minutes ago, khain.dev said:

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.

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

Link to comment
Share on other sites

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ă. 

Link to comment
Share on other sites

3 minutes ago, khain.dev said:

Fiecare are dreptul de a folosi acea metodă pe care o consideră cea mai bună. 

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.