Jump to content

[REZOLVAT] Intrebare[/bonus]


Stunt3r47
 Share

Recommended Posts

Salut!

Playerii pot intra cu mai multe conturi de pe acelasi IP si sa foloseasca /bonus si isi fac averi prea mari, ma puteti ajuta sa fac cumva ca un singur cont de pe acelasi  IP sa primeasca bonusul?Adica sa poata da /bonus pe un singur cont, am incercat mai multe chestii da nu mi-a iesit!

Comanda /bonus este urmatoarea:

CMD:bonus(playerid, params[])
{
    if(gPlayerLogged[playerid] == 0) return SendClientMessage(playerid, COLOR_LIGHTRED, "You need to login first.");
    if(IsPlayerConnected(playerid))
     {
        if(BonusActiv > 0)
         {
            if(PlayerInfo[playerid][pLevel] <= 2)
             {
                 GivePlayerCash(playerid, 10000000);
                 PlayerInfo[playerid][pLevel] = 4;
                 PlayerInfo[playerid][pConnectTime] = 3;
                 PlayerInfo[playerid][pCarLic] = 1;
                PlayerInfo[playerid][pCarLicT] = 10;
                PlayerInfo[playerid][pFlyLic] = 1;
                PlayerInfo[playerid][pFlyLicT] = 10;
                PlayerInfo[playerid][pBoatLic] = 1;
                PlayerInfo[playerid][pBoatLicT] = 10;
                PlayerInfo[playerid][pGunLic] = 1;
                PlayerInfo[playerid][pGunLicT] = 10;
                PlayerInfo[playerid][pCasesShop] += 1;
                PlayerInfo[playerid][pKeyShop] += 1;
                PlayerInfo[playerid][pPremiumPoints] += 80;
                Update(playerid, pPremiumPointsx);
                 Update(playerid, pLevelx);
                 Update(playerid, pCashx);
                Update(playerid, pCasesShopx);
                Update(playerid, pKeyShopx);
                 SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
                 SendClientMessage(playerid, COLOR_LIGHTBLUE, "Ai primit $10.000.000, toate licentele pentru 10 ore, 80 PP si level 3!");
            }
            else return SendClientMessage(playerid, COLOR_LIGHTRED, "Ai primit deja bonusul de incepator!");
        }
         if(BonusActiv <= 0)
        {
            SendClientMessage(playerid, COLOR_LIGHTRED,"Bonusul pentru incepatori nu este activ!");
        }
         
    }
    return 1;
}

 

Link to comment
Share on other sites

  • Ambassador

daca imi fac 3 conturi am 30kk+240PP, deci

si n-am cerut critici, am nevoie de ajutor

pai cum iti transferi tu pp-urile pe un singur cont?

 

vezi ca e deja un tutorial pe leaks cum sa faci asta

31.01.2021 - Screenshot_2.png.5f501f90804eeb62e521947c70a7ec33.png

25.04.2019 - 25042019.png.8ef89887beda7e6c9addd541a4d84b04.png

15.12.2018 - 15122018.png.bb0bee5f4e69a60412a15978c6d8b8d0.png

 

Discord : krv1337

Instagram : click

 

Link to comment
Share on other sites

  • Administrator

@@Kramppers next warn pentru off-topic.

 

@@Stunt3r47 hai sa-ti explic cum poti face o manevra ca sa nu dea [/bonus] in prostie de pe mai multe conturi.

 

Banuiesc ca ai deja o variabila care stocheaza IP-ului unui jucator si dupa il salveaza in baza de date.

 

Bun, pentru inceput, faci o variabila de tip boolean pe care o initializezi pe false.

new bool: playerTakeBonus[ MAX_PLAYERS ] = false;

La public-ul OnPlayerDisconnect( playerid, reason ), resetezi variabila.

playerTakeBonus[ playerid ] = false;

Acum, dupa ce ai facut toti pasii de mai sus, te duci la functia care preia din baza de date datele jucatorului, si faci urmatoarea verificare.

new playerIP[ 16 ]; GetPlayerIp( playerid, playerID, sizeof playerID );

if( PlayerInfo[ playerid ][ pIP ] == playerIP ) {
	playerTakeBonus[ playerid ] = true;
} else playerTakeBonus[ playerid ] = false;

* Ce am facut mai sus? 

Am stocat IP-ul jucatorului cu care s-a logat folosindu-ma de functia 'GetPlayerIp' intr-o variabila de tip intiger. 

Dupa aceea am facut o verificare cu ajutorul careia aflam daca IP-ul cu care jucatorul s-a logat in sesiunea curenta este la fel cu IP-ul inserat in baza de date la ultima logare, daca sunt la fel, variabila de tip boolean pe care am creat-o mai sus va fi setata pe 'true' si mai tarziu ai sa vezi la ce ne ajuta asta, iar daca IP-ul inserat in baza de date nu este egal cu IP-ul din sesiunea curenta, sa seteze variabila de tip boolean pe 'false'.

 

Acum, pentru urmatorul pas, trebuie sa facem o verificare pentru comanda de bonus.

if( playerTakeBonus[ playerid ] == true ) return SendClientMessage( playerid, -1, "Ai primit deja bonusul pe acest IP." );

* Ce am facut mai exact?

Pai, am verificat daca variabila de tip boolean pe care noi am setat-o anterior pe 'true' daca IP-ul inserat in baza de date este la fel ca cel din sesiunea curenta si pe 'false' daca IP-ul inserat in baza de date nu este la fel ca cel din sesiunea curenta.

 

In verificarea de mai sus, am verificat daca variabila mentionata este setata pe 'true' sa returneze un mesaj, "Ai primit deja bonusul pe acest IP." si sa opreasca orice actiune.

 

Iar comanda ta ar trebuii sa arate in felul urmator:

CMD:bonus(playerid, params[])
{
    if(gPlayerLogged[playerid] == 0) return SendClientMessage(playerid, COLOR_LIGHTRED, "You need to login first.");

    if( playerTakeBonus[ playerid ] == true ) return SendClientMessage( playerid, -1, "Ai primit deja bonusul pe acest IP." ); // verificarea de care ziceam

    if(IsPlayerConnected(playerid))
     {
        if(BonusActiv > 0)
         {
            if(PlayerInfo[playerid][pLevel] <= 2)
             {
                 GivePlayerCash(playerid, 10000000);
                 PlayerInfo[playerid][pLevel] = 4;
                 PlayerInfo[playerid][pConnectTime] = 3;
                 PlayerInfo[playerid][pCarLic] = 1;
                PlayerInfo[playerid][pCarLicT] = 10;
                PlayerInfo[playerid][pFlyLic] = 1;
                PlayerInfo[playerid][pFlyLicT] = 10;
                PlayerInfo[playerid][pBoatLic] = 1;
                PlayerInfo[playerid][pBoatLicT] = 10;
                PlayerInfo[playerid][pGunLic] = 1;
                PlayerInfo[playerid][pGunLicT] = 10;
                PlayerInfo[playerid][pCasesShop] += 1;
                PlayerInfo[playerid][pKeyShop] += 1;
                PlayerInfo[playerid][pPremiumPoints] += 80;
                Update(playerid, pPremiumPointsx);
                 Update(playerid, pLevelx);
                 Update(playerid, pCashx);
                Update(playerid, pCasesShopx);
                Update(playerid, pKeyShopx);
                 SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
                 SendClientMessage(playerid, COLOR_LIGHTBLUE, "Ai primit $10.000.000, toate licentele pentru 10 ore, 80 PP si level 3!");
            }
            else return SendClientMessage(playerid, COLOR_LIGHTRED, "Ai primit deja bonusul de incepator!");
        }
         if(BonusActiv <= 0)
        {
            SendClientMessage(playerid, COLOR_LIGHTRED,"Bonusul pentru incepatori nu este activ!");
        }
         
    }
    return 1;
}

Sper ca ai inteles, eventual mai creezi o variabila pe care o initializezi cu 0 si cand foloseste deja comanda [/bonus] o setezi pe 1 ca sa nu se creeze bug-uri.

Link to comment
Share on other sites

@@Kramppers next warn pentru off-topic.

 

@@Stunt3r47 hai sa-ti explic cum poti face o manevra ca sa nu dea [/bonus] in prostie de pe mai multe conturi.

 

Banuiesc ca ai deja o variabila care stocheaza IP-ului unui jucator si dupa il salveaza in baza de date.

 

Bun, pentru inceput, faci o variabila de tip boolean pe care o initializezi pe false.

new bool: playerTakeBonus[ MAX_PLAYERS ] = false;

La public-ul OnPlayerDisconnect( playerid, reason ), resetezi variabila.

playerTakeBonus[ playerid ] = false;

Acum, dupa ce ai facut toti pasii de mai sus, te duci la functia care preia din baza de date datele jucatorului, si faci urmatoarea verificare.

new playerIP[ 16 ]; GetPlayerIp( playerid, playerID, sizeof playerID );

if( PlayerInfo[ playerid ][ pIP ] == playerIP ) {
	playerTakeBonus[ playerid ] = true;
} else playerTakeBonus[ playerid ] = false;

* Ce am facut mai sus? 

Am stocat IP-ul jucatorului cu care s-a logat folosindu-ma de functia 'GetPlayerIp' intr-o variabila de tip intiger. 

Dupa aceea am facut o verificare cu ajutorul careia aflam daca IP-ul cu care jucatorul s-a logat in sesiunea curenta este la fel cu IP-ul inserat in baza de date la ultima logare, daca sunt la fel, variabila de tip boolean pe care am creat-o mai sus va fi setata pe 'true' si mai tarziu ai sa vezi la ce ne ajuta asta, iar daca IP-ul inserat in baza de date nu este egal cu IP-ul din sesiunea curenta, sa seteze variabila de tip boolean pe 'false'.

 

Acum, pentru urmatorul pas, trebuie sa facem o verificare pentru comanda de bonus.

if( playerTakeBonus[ playerid ] == true ) return SendClientMessage( playerid, -1, "Ai primit deja bonusul pe acest IP." );

* Ce am facut mai exact?

Pai, am verificat daca variabila de tip boolean pe care noi am setat-o anterior pe 'true' daca IP-ul inserat in baza de date este la fel ca cel din sesiunea curenta si pe 'false' daca IP-ul inserat in baza de date nu este la fel ca cel din sesiunea curenta.

 

In verificarea de mai sus, am verificat daca variabila mentionata este setata pe 'true' sa returneze un mesaj, "Ai primit deja bonusul pe acest IP." si sa opreasca orice actiune.

 

Iar comanda ta ar trebuii sa arate in felul urmator:

CMD:bonus(playerid, params[])
{
    if(gPlayerLogged[playerid] == 0) return SendClientMessage(playerid, COLOR_LIGHTRED, "You need to login first.");

    if( playerTakeBonus[ playerid ] == true ) return SendClientMessage( playerid, -1, "Ai primit deja bonusul pe acest IP." ); // verificarea de care ziceam

    if(IsPlayerConnected(playerid))
     {
        if(BonusActiv > 0)
         {
            if(PlayerInfo[playerid][pLevel] <= 2)
             {
                 GivePlayerCash(playerid, 10000000);
                 PlayerInfo[playerid][pLevel] = 4;
                 PlayerInfo[playerid][pConnectTime] = 3;
                 PlayerInfo[playerid][pCarLic] = 1;
                PlayerInfo[playerid][pCarLicT] = 10;
                PlayerInfo[playerid][pFlyLic] = 1;
                PlayerInfo[playerid][pFlyLicT] = 10;
                PlayerInfo[playerid][pBoatLic] = 1;
                PlayerInfo[playerid][pBoatLicT] = 10;
                PlayerInfo[playerid][pGunLic] = 1;
                PlayerInfo[playerid][pGunLicT] = 10;
                PlayerInfo[playerid][pCasesShop] += 1;
                PlayerInfo[playerid][pKeyShop] += 1;
                PlayerInfo[playerid][pPremiumPoints] += 80;
                Update(playerid, pPremiumPointsx);
                 Update(playerid, pLevelx);
                 Update(playerid, pCashx);
                Update(playerid, pCasesShopx);
                Update(playerid, pKeyShopx);
                 SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
                 SendClientMessage(playerid, COLOR_LIGHTBLUE, "Ai primit $10.000.000, toate licentele pentru 10 ore, 80 PP si level 3!");
            }
            else return SendClientMessage(playerid, COLOR_LIGHTRED, "Ai primit deja bonusul de incepator!");
        }
         if(BonusActiv <= 0)
        {
            SendClientMessage(playerid, COLOR_LIGHTRED,"Bonusul pentru incepatori nu este activ!");
        }
         
    }
    return 1;
}

Sper ca ai inteles, eventual mai creezi o variabila pe care o initializezi cu 0 si cand foloseste deja comanda [/bonus] o setezi pe 1 ca sa nu se creeze bug-uri.

Am inteles! Multumesc mult

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...