Portal SAMP
[Ajuda] nao tomar dano em area - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] nao tomar dano em area (/showthread.php?tid=2576)



nao tomar dano em area - diggao - 15/07/2022

Ola pessoal estou tentando criar pra quando o player estiver em uma area ele nao tomar dano de outro player seja de arma ou soco e carro por exemplo passando por cima ai quando sair tomar dano normal, como eu faço isso?

estou tentando fazer na OnPlayerTakeDamage


if(issuerid != INVALID_PLAYER_ID){
  if(IsPlayerConnected(playerid)){
if(IsPlayerInRangeOfPoint(playerid, 150.0, -2453.3938,-646.9687,133.0103)){
{
if(issuerid != INVALID_PLAYER_ID){
SetPlayerHealth(playerid, 999999.0);
}


to tentando fazer assim mas na verdade nem sei oq estou fazendo, qm puder me ajudar fico grato.


RE: nao tomar dano em area - Dionzito - 15/07/2022

Tive de apagar minha mensagem pois foi completamente bugada.

Novamente.

Crie essa stock em seu GameMode:
Código:
stock BloquearDanoAreaNeutra(playerid, targetid)
{
    new Float:Vida;
    new Float:Colete;
    GetPlayerArmour(targetid,Colete);
    GetPlayerHealth(targetid, Vida);

    SetPlayerArmour(targetid, Colete);
       SetPlayerHealth(targetid, Vida);
    ShowPlayerDialog(playerid, 8724, DIALOG_STYLE_MSGBOX,
    "{7A7A7B}Anti {4371C5}Death-Math ",
    "{4371C5}Informações(Anti-DM):\n\
    {7A7A7B}Você não pode agredir um jogador neste local.\n\
    {7A7A7B}Caso o jogador for seu contrato, você poderá mata-lo.", "Entendido","");
    ApplyAnimation(playerid,"PED","handscower",4.1,0,1,1,0,0);
    return 1;
}

Coloque o identificador em sua public de dano, o codigo seguinte possui minha variavel, então você deve adaptar para sua variavel de identificar as areas neutras:
Código:
if(TaNaAreaNeutra(issuerid))
    {
          BloquearDanoAreaNeutra(issuerid,playerid);
    }



RE: nao tomar dano em area - diggao - 15/07/2022

error 017: undefined symbol "TaNaAreaNeutra"

deu isso, como eu faço pra colocar o range? perdao por nao saber kk


RE: nao tomar dano em area - Dionzito - 16/07/2022

Como eu havia dito, a TaNaAreaNeutra é uma variável que eu uso em meu GM, você deve substituir pra o que você usa no seu GameMode, ou seja, substitua o TaNaAreaNeutra(playerid) por seu IsPlayerInRangeOfPoint

if(IsPlayerInRangeOfPoint(playerid, 150.0, -2453.3938,-646.9687,133.0103))
{
BloquearDanoAreaNeutra(issuerid,playerid);
}


RE: nao tomar dano em area - LouzinDS - 23/07/2022

Opa mano use este codigo:

Código:
stock IsPlayerInSafeZone(playerid) {
    if(IsPlayerInRangeOfPoint(playerid, Distancia que o player deve estar do centro da safezone , posiçoes do centro da safe zone)) {
        return true;
    }
    return false;
}
// ai quando quiser bloquear algo se o player estiver na safe zone apenas faça como no exemplo:
public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart) {
    if(IsPlayerInSafeZone(playerid)) {
        // aqui voce pode mandar mesagens como
        new str[200];
        format(str, sizeof(str), "Voce levou um tiro do player id (%d) mas estava na safe zone entao o dano nao contou", issuerid);
        SendClientMessage(playerid, -1, str);
        return 1;
    }
    return 1;
}

// ou tambem

public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid, bodypart) {
    if(IsPlayerInSafeZone(damagedid)) { // aqui eu verifiquei o damagedid ou seja o player que foi atingido
        // aqui voce pode mandar mesagens como
        new str[200];
        format(str, sizeof(str), "Voce deu um tiro no player id (%d) mas ele estava na safe zone entao o dano nao contou", damagedid);
        SendClientMessage(playerid, -1, str);
        return 1;
    }
    return 1;
}



RE: nao tomar dano em area - diggao - 25/07/2022

segui la mano