Jump to content

Lunoxx

Membru
  • Posts

    270
  • Joined

  • Last visited

  • Days Won

    21

Posts posted by Lunoxx

  1. 1 hour ago, alexandru2304 said:

    Am incercat sa adaug 'AddPlayerClass' (si/sau AddPlayerClassEx) am urmat modelul de la pawn (nu a functionat, imi dadea eroare "error 17, symbol "playerid" is not defined")

    2. Am pus la onplayerspawn, nimic. Tot skin 0. [CJ]

    3. La OnPlayerConnect la fel, nimic, tot skin 0.

    Asta este ceea ce am pus: 

        AddPlayerClass(playerid, PlayerInfo[playerid][pModel], 1800.1581, -1865.7731, 13.5722, 1.0000, 0 ,0 ,0 ,0 ,0 ,0);

    + imi aparea warning, ca, nu respecta "definitia"..

    Ti-am zis cu un post mai sus ce ai de facut.. Voi cititi macar cand cineva va raspunde sau o facem degeaba?

  2. 5 hours ago, Banditul said:

    https://imgur.com/3QcRjhG  (ignora fundalu, e singuru gm de pawn gasit)

    
    CMD:test(playerid, params[])
    {
        ShowPlayerDialog(playerid, 541, DIALOG_STYLE_TABLIST_HEADERS, "Caption",
    "Header 1\tHeader 2\tHeader 3\tHeader 4\tHeader 5\tHeader 6\n\
    Item 1 Column 1\tItem 1 Column 2\tItem 1 Column 3\tItem 1 Column 4\tItem 1 Column 5\tItem 1 Column 6\n\
    Item 2 Column 1\tItem 2 Column 2\tItem 2 Column 3\tItem 2 Column 4\tItem 2 Column 5\tItem 2 Column 6",
    "Button 1", "Button 2");
    	return 1;
    }

    Da. Se pare ca 4 e numarul maxim. Dar

    
    CMD:test(cmdid, playerid, params[])
    {
        ShowPlayerDialog(playerid, 541, DIALOG_STYLE_LIST, "Caption",
    "Header 1\tHeader 2\tHeader 3\tHeader 4\tHeader 5\tHeader 6\tHeader 7\tHeader 8\n\
    Item 1 Column 1\tItem 1 Column 2\tItem 1 Column 3\tItem 1 Column 4\tItem 1 Column 5\tItem 1 Column 6\n\
    Item 2 Column 1\tItem 2 Column 2\tItem 2 Column 3\tItem 2 Column 4\tItem 2 Column 5\tItem 2 Column 6",
    "Button 1", "Button 2");
    	return 1;
    }

    Acest dialog pare sa se mareasca pana la Header 7 dar exista o problema, asezarea textelor sunt pur si simplu spatiate intre ele de lungimea stringului. Cu cat stringul de pe o coloana  e mai mare cu atat impinge mai la dreapta restul stringurilor. Evident poti sta sa pui space in loc de \t pana se aseaza perfect dar nu e practic

    Varianta cu spatiu intre ele nu merge pentru ca spatiul are marime diferita pe fiecare rezolutie, adica pentru unii jucatori o sa fie ok, pentru altii o sa se vada aiurea.. m-am lovit si eu de problema asta in trecut si nu prea ai csf.

  3. Alea sunt warninguri, fisierul .amx e creat.
    Pentru primul warning, poti sterge acea linie, iti spune ca e definit si nu il folosesti.
    Dar, problema e ca nu stiu de ce pui { dupa new getcarid.. acoladele se folosesc cand verifici ceva, acolo nu isi are locul.

    Iar pentru al doilea warning, trebuie sa te uiti ce parametri ai la functia "addcodes", ca tu folosesti doar unul (adica playerid), iar functia are mai multe argumente (sau mai putine, poate fi si cazul asta).

  4. Tu trebuie sa vezi in ce variabila iti stocheaza skinul, de fapt, sa vezi daca faci asta atunci cand setezi un skin (la clothes, sau cu ceva comanda.. nu conteaza).

    De exemplu, ai PlayerInfo[playerid][pSkin] = skinid; la comanda /setskin, dupa respawn ar trebui sa ii setezi skinul stocat aici cu SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
    Apropo, nu e prea corecta metoda asta de setare a skinului dupa spawn, in mod normal trebuie folosit SetSpawnInfo, dar nu se prea practica treaba asta prin gamemode-urile de la noi, din cate am vazut.

  5. Ti-am rescris comanda, cred ca nu te superi.

    CMD:l(playerid, params[])
    {
        if(gPlayerLogged[playerid] == 0) return SendClientMessage(playerid, COLOR_LIGHTRED, "You need to login first.");
        if (PlayerInfo[playerid][pLeader] < 1 && PlayerInfo[playerid][pAdmin] < 1) return SendClientMessage(playerid, COLOR_WHITE, "{FFB870}Only leaders can use this command.");
    	new sendername[30], mesajelc[128], string[160];
    	GetPlayerName(playerid, sendername, sizeof(sendername));
    	if(sscanf(params, "s[128]", mesajelc)) return SCM(playerid,0x73a2adFF,"Syntax: /l <Message>");
    	new facN[33];
    	switch(PlayerInfo[playerid][pLeader]) {
    		case 1: facN = "Los Santos Police Departament";
    		case 2: facN = "FBI";
    		case 3: facN = "National Guard";
    		case 4: facN = "Los Aztecas";
    		case 5: facN = "Groove Street";
    		case 6: facN = "Los Vagos";
    		case 7: facN = "Las Venturas Police Departament"; // Pune ID-ul corect aici
    		case 9: facN = "News Reporters";
    		case 10: facN = "Ballas";
    		case 11: facN = "Hitmen";
    		case 12: facN = "School Instructors";
    		case 13: facN = "Taxi Cab Company";
    		case 14: facN = "Paramedics";
    		default: facN = "";
    	}
    	format(string, 160, "(/l) %s %s %s: %s", (PlayerInfo[playerid][pLeader] == 0) ? ("Admin") : ("Leader"), facN, sendername, mesajelc);
    	LeaderChat(0x73a2adFF, string);
        return 1;
    }

     

  6. 4 minutes ago, celmaismecher said:

    Dadusem un cod gresit, variabila era pusa bine. Da, folosesc r41-4. Vreau ca, cand un player sa se logheze, sa-i incarce fiecare skin detinut.

    Atunci fa-l pe skinID matrice si la load pui 

    Quote

    [skinID][ i ]   = c;


    Asa o sa poti incarca fiecare skin detinut ;).

  7. 5 minutes ago, celmaismecher said:

    Iterator:owned_skins[MAX_PLAYERS]<312>

    SkinInfo[MAX_PLAYERS][skinInfo];

    enum skinInfo {
        skinOwner, skinID,
    };
     

    https://imgur.com/a/WTqnLsT

    Indexul nu este negativ acum. Incercasem si inainte si nu mergea.

    Prin "index" nu ma refer la ceea ce ai inteles tu.
    Primul parametru dupa cache_get_value_name_int reprezinta "randul" de pe care iei informatia si incepe de la 0.. Prin "rand" vreau sa zic, rezultatele returnate de query-ul pe care l-ai trimis tu.

     

    In fine, tu ai definit SkinInfo[MAX_PLAYERS][skinInfo]; si l-ai folosit asa: SkinInfo[skinID], ai uitat de [playerid].

    Pe langa asta, incearca sa extragi informatile din query intr-o variabila simpla si abea dupa sa o introduci in array, sunt situatii in care nu merge direct, la r39-6 face figuri de-astea, tu cred ca folosesti r40 +, probabil face la fel si acolo.

    Deci:

    Quote

    function LoadPlayerSkins(playerid) {
        new c;
        for(new i = 0, j = cache_num_rows(); i != j; i++) {
            cache_get_value_name_int(i, "ownedSkin", c); 
            Iter_Add(owned_skins[playerid], c);
            SkinInfo[playerid][skinID] = c;
            printf("skin loaded %d", SkinInfo[playerid][skinID]);
        }
        return true;
    }

     

    Oricum, nu am inteles exact ce vrei sa faci cu asta, tu poti extrage doar un skin cu modul in care ai facut array-ul, de ce l-ai pus intr-un loop?

  8. Prima data trebuie sa creezi textdraw-urile, sunt cateva filterscript-uri care iti usureaza munca (iPLEOMAX, TDE [TextDrawEditor].
    Il poti folosi pe care vrei. Important e sa faci diferenta intre cele globale si cele perplayer, foarte multa lume le foloseste total gresit. Cand un textdraw are ceva diferit pentru fiecare jucator in parte, textdraw-ul trebuie sa fie de tipul perplayer, nu global si definit cu MAX_PLAYERS, pentru ca in timp vor aparea probleme daca nu se respecta regula asta. Acel "ceva" diferit poate sa fie textul, marimea, pozitia, culoarea background-ului, etc..practic, orice.

    Deci, un sistem de register sau login pe textdraw-uri o sa foloseasca atat TD-uri globale, cat si perplayer, poti folosi TD-uri globale la butoane [cel mai probabil o sa fie "statice"], sau background, sau.. cine stie, cred ca ai inteles ideea.
    Textdraw-urile perplayer o sa le folosesti acolo unde ai de afisat numele jucatorului sau ceva informatie pe care tu il pui sa o selecteze si au mai multe variante.. de exemplu, parola, sexul, varsta, email-ul, etc.

    Dupa ce ai facut textdraw-urile, trebuie sa le pui in gamemode. Cele globale de obicei se creeaza la OnGameModeInit, iar cele perplayer la OnPlayerConnect. De afisat le afisezi cu TextDrawShowForPlayer, respectiv PlayerTextDrawShow, o faci atunci cand doresti.. de aici trebuie sa-ti folosesti imaginatia, incearca sa faci ceva si daca ai nevoie de ajutor suplimentar cauta-ma pe pagina mea de facebook, te voi ajuta cu tot dragul, asta daca ai intrebari si nu ma pui sa ti-l fac eu cu anumite programe de-astea de remote control. Daca preferi comoditatea si vrei sa-ti fie facut fara ca tu sa-ti bati prea mult capul, ofer si servicii contracost, dar de ajutat, ajut gratuit. Succes!

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