[Ajuda] Bounties
#1

Eae gente beleza? eu andei estudando um gamemodes e achei um de TDM, e vi um sistema muito legal, mais eu nгo entendi, alguйm ai poderia me explicar mais ou menos como faзo isso? (Cada vez que um player matar 1 swat/exercito ele gahar 2000 de recompensa por ser morto)

Cуdigo:

pawn Код:
new Bounty[MAX_PLAYERS];
new BountyKills[MAX_PLAYERS];

public OnPlayerDeath(playerid, killerid, reason)
{
if(gTeam[killerid] != gTeam[playerid])
        {
            // Valid kill
            new str[128];
            SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
            GivePlayerMoney(killerid, 1000);
            if(IsPlayerJustice(playerid) && !IsPlayerJustice(killerid))
            {
                BountyKills[killerid]++;
                if(BountyKills[killerid] > 3)
                {
                    if(BountyKills[killerid] == 4) Bounty[killerid] = 10000;
                    else Bounty[killerid] += 2500;
                    GetName(killerid, killername);
                    format(str, sizeof(str), "%s (%d) now has a bounty of $%d", killername, killerid, Bounty[killerid]);
                    SendClientMessageToAll(COLOR_YELLOW, str);
                }
            }
            if(Bounty[playerid] > 0)
            {
                GetName(playerid, playername);
                GivePlayerMoney(killerid, Bounty[playerid]);
                format(str, sizeof(str), "You got $%d bounty reward for killing %s (%d)", Bounty[playerid], playername, playerid);
                SendClientMessage(killerid, COLOR_YELLOW, str);
            }
        }
    }
    Bounty[playerid] = 0;
    BountyKills[playerid] = 0;
    return 1;
}
Reply
#2

Espero ter ajudado.
pawn Код:
new Bounty[MAX_PLAYERS]; //Valores, normal...
new BountyKills[MAX_PLAYERS];//Valores, normal...

public OnPlayerDeath(playerid, killerid, reason)  //Quando um player morre (playerid) ...
{
        if(gTeam[killerid] != gTeam[playerid]) //... e o time de quem matou (killerid) й diferente de quem morreu (playerid)...
        {
            new str[128];//String .-.
            SetPlayerScore(killerid,GetPlayerScore(killerid)+1);//Aumenta +1 no score do cara (TAB)
            GivePlayerMoney(killerid, 1000);//Dб 1000$ de dinheiro pro mano que matou...
            if(IsPlayerJustice(playerid) && !IsPlayerJustice(killerid)) //Se o cara que morreu (playerid) for da facзгo Justice (ou qualquer que seja a facзгo que usa IsPlayerJustice) e o matador nгo for...
            {
                BountyKills[killerid]++; //... o matador ganha +1 morte de recompensa...
                if(BountyKills[killerid] > 3) // Se as mortes de recompensa forem maiores que trкs...
                {
                    if(BountyKills[killerid] == 4) Bounty[killerid] = 10000; //Se as mortes forem EXATAMENTE iguais a 4, a recompensa por matar o matador fica EXATAMENTE igual a dez..
                    else Bounty[killerid] += 2500;// Se nгo, a cabeзa do matador ganha mais 2500 de recompensa...
                    GetName(killerid, killername);//Funзгo para pegar o nome do matador.
                    format(str, sizeof(str), "%s (%d) now has a bounty of $%d", killername, killerid, Bounty[killerid]); //Mensagem que diz ' %s [matador] (%d) [id do matador] agora tem uma recompensa de $%d [quanto vale a cabeзa do matador]'
                    SendClientMessageToAll(COLOR_YELLOW, str); //Manda a mensagem pra geral.
                }
            }
            if(Bounty[playerid] > 0)//Se o cara que morreu tiver uma recompensa maior que $0 pela sua cabeзa...
            {
                GetName(playerid, playername);//Pega o nome de quem morreu...
                GivePlayerMoney(killerid, Bounty[playerid]); //Dб o dinheiro da recompensa pro matador...
                format(str, sizeof(str), "You got $%d bounty reward for killing %s (%d)", Bounty[playerid], playername, playerid);//Mensagem que diz ' Vocк ganhou $%d [dinheiro da recompensa] de recompensa por matar %s [nome do morto] (%d) [id do morto]
                SendClientMessage(killerid, COLOR_YELLOW, str);//Manda a mensagem pra galera.
            }
        }
    }
    Bounty[playerid] = 0;//Zera o quanto a cabeзa do cara que morreu vale em dinheiro, ou seja, a recompensa por matar ele vira zero.
    BountyKills[playerid] = 0;//Zera quantas pessoas da facзгo Justice o mano que acabou de morrer matou.
    return 1;
}
Reply
#3

Valeu lelete, agora outra coisa, me ajuda fazer esse sistema no meu gamemode?

NГO ESTOU PEDINDO DE MГO BEIJADO, Й POR FAVOR..
Reply
#4

Claro.

Me passa as suas funзхes que vocк utiliza para dinheiro (Sу o GetPlayerMoney e o SetPlayerMoney), o ID e a array ou funзгo que vocк usa para determinar o time que vocк quer que a recompensa seja colocada (tipo, se vocк matar um player da facзгo IsPlayerPulissa ou playerInfo[playerid][pTeam] == 2, vocк comeзa a ter uma recompensa por sua cabeзa), e eu faзo.
Reply
#5

Hmm, acho que nгo entendi muito bem, me passa seu msn pra gente conversar mehor?
Reply
#6

У.


- Sua funзгo de dinheiro. (No gm que vocк pegou, ele usa SetPlayerMoney, e GetPlayerMoney) Que funзгo vocк usa pra ver quanto de dinheiro um player tem, e qual pra dar dinheiro pra ele?

- Que facзгo vocк gostaria que tivesse uma recompensa pelos membros mortos?

Sу.
Reply
#7

Queria assim, a cada ves que o cara matar 1 swat ele ganha 2 mil de recopensa, ai quando ele for morto da a recompnsa ora quem matou ele, eu uso GetPlayerMoney e GivePlayerMoney
Reply
#8

No seu GM vocк usa

IsASwat

Ou vocк usa

PlayerInfo[playerid][pTeam] == 3

Pra determinar quem й swat?
Reply
#9

SetPlayerTeam(playerid,TEAM_SWATS);
Team[playerid] = TEAM_SWATS;

XD
Reply
#10

Topo GM:
pawn Код:
new recompensas[MAX_PLAYERS];
Em OnPlayerDeath

pawn Код:
if ( Team[playerid]   == TEAM_SWATS && killerid != INVALID_PLAYER_ ID) {
    SendClientMessage(killerid, -1, "Vocк matou um membro da SWAT");
    GivePlayerMoney(killerid, 2000); // tira essa linha se voce nao quer dar dinheiro ppara quem mata SWAT
    recompensas[killerid] += 2000 ; // aumenta a cabeзa do cara que matou para + 2000
}
else if(recompensas[playerid]  && killerid != INVALID_PLAYER_ ID) { // caso for alguem que tenha recompensa
    SendClientMessage(killerid, -1, "Vocк matou um membro com recompensa");
    GivePlayerMoney(killerid, recompensas[playerid]); // dar a grana de recompensa
    recompensas[playerid] = 0; // tira o premio, pois ele morreu
}
Em OnPlayerConnect:
pawn Код:
recompensas[playerid] = 0;
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)