[Tutorial] Anti Drive-By
#1

Anti drive-By
sistema simples

public usada quando jogadores matam uns aos outros.

PHP код:
public OnPlayerDeath(playeridkilleridreason)
/*
playerid =  Acusado
killerid = Vнtima
*/ 
Obtйm o ID do veiculo que o acusado ocupa.

PHP код:
GetPlayerVehicleID(playerid
Aqui serб definido o ID das aeronaves.
PHP код:
IsAAviao(carid)
IsAHelicoptero(carid
Nossa string definida com o valor dela.
PHP код:
new string[256
Nossa new definida, irб definir o nome do acusado e da vнtima.
PHP код:
new acusado[MAX_PLAYER_NAME], vitima[MAX_PLAYER_NAME]; 
Obtйm o nome do acusado e da vнtima.
PHP код:
GetPlayerName(killeridacusadoMAX_PLAYER_NAME);
GetPlayerName(playeridvitimaMAX_PLAYER_NAME); 
Verifica se o assassino esta em um veнculo.
PHP код:
GetPlayerState(killerid) == PLAYER_STATE_DRIVER 
Manda a mensagem para todos online no servidor e assim desmascarando o acusado.
PHP код:
format(stringsizeof(string), "[Anti drive-by]: %s cometeu drive-by em %s e serб punido por um admin."acusadovitima);
SendClientMessageToAll(0xE60000FFstring); 
Para que os jogadores em aeronaves nгo sejam acusados, adicione as seguintes stock em seu gamemode!
PHP код:
stock IsAHelicoptero(carid)
{
    new 
modelid GetVehicleModel(carid);
    if(
modelid == 563 || modelid == 548 || modelid == 497 || modelid == 488 || modelid == 487)
    {
        return 
1;
    }
    if(
modelid == 425 || modelid == 417 || modelid == 447 || modelid == 469)
    {
        return 
1;
    }
    return 
0;
}
stock IsAAviao(carid)
{
    new 
modelid GetVehicleModel(carid);
    if(
modelid == 460 || modelid == 476 || modelid == 511 || modelid == 512)
    {
        return 
1;
    }
    if(
modelid == 513 || modelid == 519 || modelid == 520 || modelid == 553)
    {
        return 
1;
    }
    if(
modelid == 577 || modelid == 592 || modelid == 593)
    {
        return 
1;
    }
    return 
0;


Nosso anti-drive by foi feito com sucesso, adicione em sua OnPlayerDeath, e adicione tambйm as duas seguintes stock, IsAAviao e IsAHelicoptero em seu gamemode.

PHP код:
public OnPlayerDeath(playeridkilleridreason){
    if (
GetPlayerState(killerid) == PLAYER_STATE_DRIVER){
    
        if(
IsAHelicoptero(GetPlayerVehicleID(killerid)) || IsAAviao(GetPlayerVehicleID(killerid))) return 1;
        new 
string[256], acusado[MAX_PLAYER_NAME], vitima[MAX_PLAYER_NAME];
        
GetPlayerName(killeridacusadoMAX_PLAYER_NAME);
        
GetPlayerName(playeridvitimaMAX_PLAYER_NAME);
        
format(stringsizeof(string), "[Anti drive-by]: %s cometeu drive-by em %s e serб punido por um admin."acusadovitima);
        
SendClientMessageToAll(0xE60000FFstring);
    }
    return 
1;

Reply
#2

tem como eu colocar para o acusado ir para a prisгo ao matar a vitima ?
Reply
#3

Quote:
Originally Posted by Feio
Посмотреть сообщение
tem como eu colocar para o acusado ir para a prisгo ao matar a vitima ?
Claro que tem '-' mas aconselho estudar um pouco de pawn antes de pedir isto aki no proximo post
Reply
#4

Bom, nгo via tanta necessidade de criar um tutorial, jб que existe diversos sistemas de Anti Drive-By, e tutoriais tambйm . Pelo menos deveria ter feito algo mais complexo ao meu ver, como uma puniзгo automбtica .
Reply
#5

Quote:
Originally Posted by Feio
Посмотреть сообщение
tem como eu colocar para o acusado ir para a prisгo ao matar a vitima ?
Com certeza, seria mais ou menos isso.

pawn Код:
public OnPlayerDeath(playerid, killerid, reason) {
    if (IsPlayerInAnyVehicle(killerid)) {
        new string[100];
        new acusado[MAX_PLAYER_NAME];
        new vitima[MAX_PLAYER_NAME];
        GetPlayerName(killerid, acusado, MAX_PLAYER_NAME);
        GetPlayerName(playerid, vitima, MAX_PLAYER_NAME);
        format(string, sizeof(string), "[Anti Drive-By]: %s cometeu Drive-by em %s e serб punido por um administrador.", acusado, vitima);
        SendClientMessageToAll(0xE60000FF, string);
        MandarPrisao(playerid);
    }
    return 1;
}

forward MandarPrisao(playerid);
public MandarPrisao(playerid) {
    print("O jogador foi preso");
    return 1;
}
Reply
#6

Quote:
Originally Posted by Feio
Посмотреть сообщение
tem como eu colocar para o acusado ir para a prisгo ao matar a vitima ?
Sim.
Reply
#7

E seu estiver dentro de um Hydra?
E se o jogador morto estiver dentro de um veнculo tambйm?

O cуdigo й falho em alguns sentidos.

Quanto a explicaзгo, acho que poderia dar uma melhorada.

No mais, parabйns.
Reply
#8

Quote:
Originally Posted by iCasTiel
Посмотреть сообщение
E seu estiver dentro de um Hydra?
E se o jogador morto estiver dentro de um veнculo tambйm?

O cуdigo й falho em alguns sentidos.

Quanto a explicaзгo, acho que poderia dar uma melhorada.

No mais, parabйns.
Agradeзo pelo alerta, nгo pensei nisso.

@edit

Resolvido!
Reply
#9

Quote:
Originally Posted by Learning
Посмотреть сообщение
Bom, nгo via tanta necessidade de criar um tutorial
O tutorial й para quem estб com dificuldade, ou seja nгo tem ideia onde comeзar, isso й uma base, apensar do cуdigo ser pequeno o assunto "Anti Drive-By" й bastante procurado e muita gente nгo sabe como fazer.
Reply
#10

Achei que poderia otimizar mais, sу que bom trabalho, sendo que jб fiz um tutorial neste naipe e todos me
condenaram, acho que й sу eu mesmo tenho essa sorte.

Enfim, parabйns.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)