Jump to content

IosifR

Membru
  • Posts

    107
  • Joined

  • Last visited

Posts posted by IosifR

  1. Re. E foarte simplu sa faci acest lucrul doar ca uni dintre cei noi in scripting nu stiu cum. e a

    Primadata mergem la enum pInfo sau cum aveti voi.

    enum pInfo {
    	// Ce aveti voi, 
    	pAdmin
    }

    Acum, mergem la OnLogin sau OnPlayerLogin depinde cum aveti voi in gamemode. Inainte de SpawnPlayer(playerid); puneti 

    PlayerInfo[playerid][pAdmin] = cache_get_field_content_int(0, "Admin");

    Acum trebuie sa facem comanda cu care adminul va oferi admin.

    CMD:setadmin(playerid, params[])
    {
    	if(PlayerInfo[playerid][pAdmin] < 6)
    		return SendClientMessage(playerid, 0xB1BFCC80, "Eroare: Nu ai gradul administrativ necesar.");
    	
    	new id, admin, string[64];
    	if(sscanf(params, "ud", id, admin))
    		return SendClientMessage(playerid, 0xB1BFCC80, "SYNTAX: /setadmin <ID/Name> <Admin Level (0-7)>");
    	
    	if(admin < 0 || admin > 7)
    		return SendClientMessage(playerid, -1, "Invalid Admin Level.");
    	
    	format(string, sizeof(string), "Felicitari! Ai fost promovat la admin %d.", admin);
    	SendClientMessage(id, -1, string);
    	
    	new query[100];
    	PlayerInfo[playerid][pAdmin] = admin;
    	mysql_format(SQL, query, sizeof(query), "UPDATE `users` SET `Admin` = '%d' WHERE `ID` = '%d'", PlayerInfo[playerid][pAdmin], PlayerInfo[playerid][pSQLID]);
    	mysql_tquery(SQL, query);
    	
    	return 1;
    }

    In loc de PlayerInfo puneti cum aveti voi. De ex P_Data... la `users` cum aveti voi tabelul in baza de date unde se salveaza conturile.

    Acum, intram in baza de date. (localhost/phpmyadmin).

    Screenshot_1.png.eb1fd981f4a4b247c75cb870e8913f13.png

     

    Dupa ce ati intrat in baza de date apasati pe Structure.

    Dupa aceea mai jos faceti o coloana.

    Screenshot_3.png.712c5c2bba8205bcdd608d8ae1fc486c.png

     

    Screenshot_4.thumb.png.d1e2cb2b235d5eb9b22ee7fb1a418eab.png

    Ceva de genul trebuie sa arate coloana. Acum dam pe Save si suntem gata!

    Sper ca celor incepatori le-a fost de ajutor. pa

  2. Salut boiz
    kum fac comanda nre ?? ?? ??  // 

    ita aici kum am fakut komanda /n da pe nre nuj kum sho fac

    imi zike cnv?

    Citat

    CMD:n(playerid, params[])
    {
        if(P_Data[playerid][pHelper] > 1)
            return SCM(playerid, color_gray, "Faci parte din staff deja!");
        
        if(P_Data[playerid][pAdmin] > 1)
            return SCM(playerid, color_gray, "Faci parte din staff deja!");    
        
        if(IntrebareON[playerid] == 1)
            return SCM(playerid, color_gray, "Ai deja o intrebare pusa!");
            
        new intrebare[64],string[64];
        if(sscanf(params, "s[64]", intrebare))
            return SCM(playerid, color_gray, "Folosire: /n <intrebare/question>");
        
        SCM(playerid, color_yellow, "Ai pus o intrebare ! Asteapta pana raspunde un helper.");
        IntrebareON[playerid] = 1;
        
        format(string, sizeof(string), "%s[%d] a pus intrebarea: %s", GetName(playerid), playerid, intrebare);
        SendHelperMessage(color_anunt, string);
        
        return 1;
    }

     

  3. Helou, am fakut o comanda /kick, mere totu bn pana cand o testez
     

    Citat

    CMD:kick(playerid, params[])
    {
        if(P_Data[playerid][pAdmin] < 1)
            return SCM(playerid, color_gray, AdminOnly);
            
        new userID, reason[32], string[128];
        if(sscanf(params, "us[32]", userID, reason))
            return SCM(playerid, color_gray, "Folosire: /kick <player> <reason>");
        
        format(string, sizeof(string), "{E93623}({FFFFFF}AdmBot{E93623}){E93623}: Jucatorul %s a primit kick de la adminul %s, reason: %s", userID, GetName(playerid), reason);
        SendClientMessageToAll(color_red, string);
        Kick(userID);
        
        return 1;
    }

    a.png.f0f064172502ff90f0ec2efe545cd90f.png

    Stie cnv dc nu apare acolo numele la jucatoru care a loat kick?

    ms

  4. Salut sa-mp.ro! Azi am decis sa va prezint jobul Fisherman. Tin sa precizez ca sunt mai la inceput cu scriptingul.. si e primul lucru facut de mine mai 'complex' sa zic asa...
    M-am inspiriat de pe open.mp (no promo).. la unele functii,  callback-uri..  Ignorati cercul galben din mijloc.. e de la programul cu care am filmat.. Nu pot sa zic ca e 'unic' da mna..

    Am avut niste greseli gramaticale in script.. da, asta e. Enjoy! (Cand vinzi pestele la Nenea Gica si apare textdrawul, nu apare tot deoarece am facut stringul de 64 ch. si era de creo 70 cred..)

    UPDATE:

    sa-mp-007.thumb.png.da4a8e0b91a843f098c41fd2901603c7.pngsa-mp-006.thumb.png.c7e77525e8c105ff31134cc0c38ec1d3.png

    ps: interior facut de mn :)

  5. Acum 32 minute, iSkull a spus:

    @IosifR Ti-a explicat el ca la ####, iti e lene sa citesti?

    Si oricum trebuie marit string-ul la 80-85 ca are 77 de caractere

     

    @IosifR Pune mana si uita-te pe tutoriale intai de mysql, nu ca ai facut si iti da eroare sau ca nu primeste update la baza de date

     

    Cine te-a trezit din hibernare? 
    Am facut cum mi-au zis ei doi dar tot asa e.
    Si eroare cu query am rezolvato dar nu imi da levelu cand dau buylevel si nu imi ia rpurile
    trebuiea sa pun new query[100]; sus

    Nu toata lumea e asa desteapta ca tine

  6. Acum 3 minute, NERS a spus:

    mysql_tquery(handle, string, "", "");

    nah, tot asa e:

     

    Acum 35 minute, IosifR a spus:

    Salut, a mers ce mi-ai dat tu acolo. Dar... 
    Am facut comanda buylevel dar cand dau buylevel nu imi updateaza nivelul, in baza de date si nici in joc. Dar, banii ii ia. RespectPoints-urile nu mi le ia.
    Dc? ce am facut gresit in comanda asta

     

     

  7. Salut, a mers ce mi-ai dat tu acolo. Dar... 
    Am facut comanda buylevel dar cand dau buylevel nu imi updateaza nivelul, in baza de date si nici in joc. Dar, banii ii ia. RespectPoints-urile nu mi le ia.
    Dc? ce am facut gresit in comanda asta

    Citat

    CMD:buylevel(playerid, params[])
    {
        new respect = (P_Data[playerid][pLevel] * 3), money = (P_Data[playerid][pLevel] * 250);
        
        if(P_Data[playerid][pRespectPoints] <  respect)
            return SCM(playerid, color_error, "Nu ai destule respect points!");

        if(GetPlayerMoney(playerid) < money)
            return SCM(playerid, color_error, "Nu ai destui bani!");

        new string[64];
        GivePlayerMoney(playerid, -money);
        P_Data[playerid][pRespectPoints] -= respect;
        P_Data[playerid][pLevel] ++;

        
        mysql_format(playerid, "UPDATE `conturi` SET `RespectPoints` = '%d', `Level` = '%d' WHERE `ID` = '%d'", P_Data[playerid][pRespectPoints], P_Data[playerid][pLevel], P_Data[playerid][pID]);
        format(string, sizeof(string), "Ai avansat la nivel %d!", P_Data[playerid][pLevel]);
        SendClientMessage(playerid, color_gray, string);
        return 1;
    }

     

  8. Acum 27 minute, Banditul a spus:

    PS: Doar ce am recitit topicul si te intrebi cum ai putea adauga un astfel de sistem.

    Daca te referi la acest tutorial

    Din pacate in topic nu specifica nimic despre bani/level care din codul prezent in topic nu ar avea cum sa fie salvate mai ales ca nici schema bazei de date nu contine aceste date.

    Desigur totusi ne poti arata ce ai incercat sa faci si ce erori primesti ca sa iti putem indica problemele si ce poti repara dar iti ofer un mic cod eventual care sper ca te poate ajuta. Va fi nevoie sa adaugi tu in baza date cum ti-a fost explicat si in tutorial coloana pentru bani si level

    
    enum pInfo
    {
        pParola, 
        pID, 
    
        Money, // Adaugi acestea la pInfo
        Level // Evident le redenumesti cum doresti
    };
    new P_Data[MAX_PLAYERS][pInfo];
    
    GiveMoneyToPlayer(playerid, money)
    {   
        P_Data[playerid][Money] += money;
        mysql_format(handle, query, sizeof(query), "UPDATE conturi SET `Money` = %i WHERE ID = %i", P_Data[playerid][Money], P_Data[playerid][pID]);
        mysql_tquery(handle, query);
    
        ResetPlayerMoney(playerid);
        GivePlayerMoney(playerid, P_Data[playerid][Money]);
    }
    
    GivePlayerLevel(playerid, level)
    {
        P_Data[playerid][Level] += level;
        mysql_format(handle, query, sizeof(query), "UPDATE conturi SET `Level` = %i WHERE ID = %i", P_Data[playerid][Level], P_Data[playerid][pID]);
        mysql_tquery(handle, query);
    
        SetPlayerScore(playerid, P_Data[playerid][Level]) // Presupun ca level se reflecta in tabelul de score
    }
    
    forward OnLogin(playerid);
    public OnLogin(playerid)
    {
        new rows, fields,temporar[200];
        cache_get_data(rows, fields);
        if(rows)
        {
            cache_get_field_content(0, "Parola",temporar), format(P_Data[playerid][pParola], 25, temporar);
            P_Data[playerid][pID] = cache_get_field_content_int(0, "ID");
            P_Data[playerid][Money] = cache_get_field_content_int(0, "Money");
            ResetPlayerMoney(playerid);
            GivePlayerMoney(playerid, P_Data[playerid][Money]); 
            // Ii resetam bani si ii oferim ce ar in baza de date astfel incat bani pe care ii vede in joc sa fie aceiasi
    
            P_Data[playerid][Level] = cache_get_field_content_int(0, "Level");
            SetPlayerScore(playerid, P_Data[playerid][Level])
    
            SpawnPlayer(playerid);
        }
        else
        {
            ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Parola incorecta!", "Te rog sa iti introduci parola corecta, pentru a te loga pe server.", "Logare", "Exit");// ii va da dialogul cu mesajul specific.
        }
        return 1;
    }

    Poti folosi aceste 2 functii pe care ti le-am dat pentru a oferi jucatorului bani/level acolo unde ai nevoie. Astfel incat sa nu fi nevoit sa tot copiezi acelasi cod peste tot, doar chemi functia.

    Ms foarte multt. 

    Fix la astea greseam: mysql_format(handle, query, sizeof(query), "UPDATE conturi SET `Money` = %i WHERE ID = %i", P_Data[playerid][Money], P_Data[playerid][pID]);

    in loc sa pun mysql_format am pus mysql_Query 

    Si nu puneam handle

    Am sa incerc sa-l fac daca nu merge ceva bine am sa dau un edit... probabil maine

     

  9. Acum 2 ore, Banditul a spus:

    Daca arati ce cod ai facut, poate intelegem si noi ce ai facut gresit si ce trebuie reparat

    E fix codul care l-a facut WiDuAIK, doar ca eu am editat putin textele.. Si cand incerc sa fac sa salveze bani si lvlul imi da o gramada de erori..  

    (Am incercat sa-l fac singur, sa mai ma uit in alte gmuri.. pentru ca nu am gasit nik pe net) 

    Si.... uite ca am apelat la sa-mp.ro :)

  10. Acum 4 minute, Banditul a spus:

    Pentru ca daca ai windows 10 si mai ales daca instalezi si alte programe precum visual studio sau orice program sau joc care iti instaleaza aceste runtime nu trebuie sa le instalezi tu, le instaleaza programul sau chiar si steam am observat ca instaleaza daca iti lipseste pentru a rula un joc

    am windows 7 
    honestly chiar nu stiam chestia asta

     

  11. Salut sa-mp.ro! Astazi am sa va arat cum sa faceti comanda /hostname ( pentru incepatori.. astept hate de la aia 'avansati'). Cu aceasta comanda puteti schimba numele serverului.

    Pentru aceasta comanda ma voi folosi de sscanf si zcmd. (https://www103.zippyshare.com/v/Lxj6JFGI/file.html)

    Citat

    CMD:hostname(playerid, params[])
    {
        if(PlayerInfo[playerid][pAdmin] >=6) // Daca nu aveti sistem de admin, in loc de asta puneti 'if(IsPlayerAdmin(playerid))'
        {
            new string[128], name[64]; // Aici creem un string pentru a trimite textele si 'name', adica numele care il scrie playerul care foloseste comanda.
            if(sscanf(params, "s[64]", name)) return SCM(playerid,COLOR_GREY, "Folosire: {FFFFFF}/hostname <Nume>"); // Aici ne folosim de sscanf. Daca adminul scrie doar /hostname i va trimite un mesaj cum se foloseste comanda
            {
                format(string, sizeof(string), "hostname %s", name);   In loc de '%s' va fii numele care a scris adminul.
                SendRconCommand(string); Aceasta linie trimite comanda catre consola serverului
                format(string, sizeof(string), "Ai schimbat numele serverului in %s", name);
                SendClientMessage(playerid,# COLOR_RED1, string);  // Trimite mesajul de mai sus ca a schimbat numele serverului
            }
        }
        else return SCM(playerid, COLOR_YELLOW2, AdminOnly);
        return 1;
    }

    La inceput de gamemode puneti
     

    Citat

    #define AdminOnly "{FFFFCC}Eroare: Nu ai acces la aceasta comanda!"

    #define COLOR_YELLOW2       0xFFFABAFF

    #define COLOR_RED1          0x80404000

    #define COLOR_GREY             0xAFAFAFAA

    #define SCM SendClientMessage

    Si

    Citat

    #include <zcmd>
    #include <sscanf>

    pa
    <click>

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