[FilterScript] Detectar quando Jogador foge pra ammu-nation
#1

Sabe aquele momento chato que vocк ficб horas duelando com uma pessoa na frente da ammu-nation e quando vocк chega PERTO de matar ela, a pessoa simplesmente corre para ammu-nation comprar colete? Seus problemas acabaram!

Й, й um momento realmente chato. Por este motivo criei este Filterscript/Include que serve para detectar quando um jogador corre para ammu! Й bem simples e eficiente.

Cуdigo:
pawn Code:
/*
 *  Copyright © 2012 [iPs]TeaM
 *  Bruno da Silva (brunoemail@r7.com)
 *  Detectar quando jogador foge para ammu em meio a um duelo na rua
 *
 * http://www.brunodasilva.com.br
 * http://www.ips-team.forumeiros.com
*/

 

new gIssuerid  [MAX_PLAYERS];
new gTickshoot [MAX_PLAYERS];

public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
    //detectar tiros recentes
    gTickshoot[playerid] = gettime();
    gIssuerid [playerid] = issuerid ;
    return true;
}


public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{

// Ammunation IDS
    if(newinteriorid == 1 || newinteriorid == 7 || newinteriorid == 4 || newinteriorid == 6) {

// Detectar se jogador que o playerid estava duelando estб online e o duelo foi ao menos de 3 segundps
        if((gettime() - gTickshoot[playerid]) < 3 && IsPlayerConnected(gIssuerid[playerid])) {
            static
                Float:Health1,
                Float:Health2,
                Float:Armour
            ;

            GetPlayerHealth(playerid, Health1);
            GetPlayerHealth(gIssuerid[playerid], Health2);
            GetPlayerArmour(playerid, Armour);

// Detectar se fugiu com vida baixa. aqui vocк pode editar.
            if( (Health1 < Health2 && Health1 < 55.0) || (Armour < 20.0 && 30.0 > Health1 && Health1  < Health2)) {
// Chamar callback
                CallLocalFunction("OnPlayerEscapeInAmmu", "ii", playerid, gIssuerid[playerid]);
            }
        }
    }
    return true;
}
Entгo basta editar a callback a gosto:
pawn Code:
forward OnPlayerEscapeInAmmu(playerid, shooter);
public OnPlayerEscapeInAmmu(playerid, shooter) {
    static
        string[128]
    ;
    format(string, 128, "O jogador id %d correu para ammu  (noob para de correr)", playerid);
    return SendClientMessageToAll(-1, string);
}
A idйia surgiu apуs eu estar jogando no servidor Global Match (minha assinatura) e o pessoal sу ficar correndo pra ammunation, nunca conseguindo mata-las.



Inicialmente parecia um bicho-de-sete-cabeзas, porque "como detectar com quem estava duelando e quando ele fugiu pra ammu" Foi ai que lembrei da nova callback da sa:mp e com alguns filtrozinhos, estб feito.

Espero que tenham gostado

Crйditos
Bruno da Silva (criador e idealizador do projeto)
Schocc (me ajudou a testar e a encontrar novos erros)
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)