Portal SAMP
[Pedido] alguém me ajuda nisso? - 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: [Pedido] alguém me ajuda nisso? (/showthread.php?tid=2512)



alguém me ajuda nisso? - Mateus - 25/06/2022

Eu queria um fs ou txt alguma coisa do tipo do sistema de proteção área safe exemplo: quem tiver na área safe no ninguém poderá matar ninguém nem um soco quem tenta dá um soco aparecia uma msg pro player isso e uma área safe e tal alguém me ajuda nisso pfv? Angel


RE: alguém me ajuda nisso? - Mathews - 01/07/2022

Tudo certo cara?
Deixo algumas dicas de como resolver o seu problema, já está em 90% ai.

Desconheço filescript, tanto que é uma coisa rápida de ser feita.

"quem tiver na área safe no ninguém poderá matar ninguém nem um soco"
Zonas de gangues
OnGameModeInit
GangZoneCreate - Crie uma zona de gangue
https://team.sa-mp.com/wiki/GangZoneCreate.html

GangZoneShowForAll - Mostra um gangzone para todos os jogadores
https://team.sa-mp.com/wiki/GangZoneShowForAll.html


OnGameModeExit
GangZoneDestroy - Destrua uma gangzone
https://team.sa-mp.com/wiki/GangZoneDestroy.html

"quem tenta dá um soco aparecia uma msg pro player isso e uma área safe e tal"
OnPlayerGiveDamage - Este callback é chamado quando um jogador causa dano a outro jogador.
https://team.sa-mp.com/wiki/OnPlayerGiveDamage.html

OnPlayerTakeDamage - Este retorno de chamada é chamado quando um jogador sofre dano.
https://team.sa-mp.com/wiki/OnPlayerTakeDamage.html


stock IsPlayerInAreasSafes(playerid){
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid, x, y, z);
if(x >= 1683.59375 && y >= -2160.15625 && x <= 1958.984375 && y <= -1960.9375) return 1;
        else if(x >= 1683.59375 && y >= -2160.15625 && x <= 1958.984375 && y <= -1960.9375) return 1;
else return 0;
}


RE: alguém me ajuda nisso? - Mateus - 07/07/2022

Po mano e isso mermo obrigado so uma duvida que nao to entendendo como funciona esse if(x >= 1683.59375 && y >= -2160.15625 && x <= 1958.984375 && y <= -1960.9375) return 1;

E pq ta com operadores ai nao to entendendo nadinha e eu tenho que pega a posição no meio da gang zone ou tem que pega das 2 posicao

Me chama no zap por favor la e melhor que tu me ensinar melhor 21966946832

Tu podia fazer esse sistema em text pra mim por favor nao e querendo abusar nem nada mano nmrl tavo procurando tanto isso vey at que fim achei pfv

Meu discord qulquer coisa Mateus_Fait#8448


RE: alguém me ajuda nisso? - Mathews - 17/07/2022

Malz por não te responder antes, fiquei um tempo sem entrar.

Então cara, essas cordenadas são pegas na transversal, você pega a primeira coordenada no ponto A e depois anda/corre em linha reta e pega a segunda coordenada no ponto B.
Observação: Só vai preicsar de X e Y.

Ex.:

Ponto A: X, Y

1683.59375, -2160.15625,-33.5000000

Ponto B: X, Y

1958.984375, -1960.9375,-20.5000000




Ponto A: X
X Mínimo1683.59375
Ponto B: X
X Máximo1958.984375

Ponto A: Y
Y Máximo: -1960.9375
Ponto B: Y
Y Mínimo: -2160.15625
Lembrete: Quando o numeral está negativo o que se aproximar mais de ZERO é maior, -1960.9375 > -2160.15625.


if(x >= Mínimo1683.59375 && y >= Y Mínimo: -2160.15625 && x <= Máximo1958.984375 && y <= -Y Máximo: -1960.9375) return 1;





if(x >= 1683.59375 && y >= -2160.15625 && x <= 1958.984375 && y <= -1960.9375) return 1;

if(x >= minx && y >= miny && x <= maxx && y <= -maxy) return 1;



OU



Você pode usar esse site para pegar as posições com mais facilidade,

https://dev.prineside.com/en/gtasa_gangzone_editor/


RE: alguém me ajuda nisso? - Mateus - 23/07/2022

Po mano tbm não entendi muito pq sou burro eu tento evoluir no pawn mais sou burro pra crlh eu não entendi esses negócio de a b sla vey tenta tipo ser mais plausível chegar ao ponto tipo e pra pegar a posição de uma ponta a outra? Igual quando agente vai cria uma gangzone? Por isso pedi pra vc me chamar no ZAP pq lá vc pode me explicar melhor tlgd!

(01/07/2022 08:44)Mathews Escreveu: Tudo certo cara?
Deixo algumas dicas de como resolver o seu problema, já está em 90% ai.

Desconheço filescript, tanto que é uma coisa rápida de ser feita.

"quem tiver na área safe no ninguém poderá matar ninguém nem um soco"
Zonas de gangues
OnGameModeInit
GangZoneCreate - Crie uma zona de gangue
https://team.sa-mp.com/wiki/GangZoneCreate.html

GangZoneShowForAll - Mostra um gangzone para todos os jogadores
https://team.sa-mp.com/wiki/GangZoneShowForAll.html


OnGameModeExit
GangZoneDestroy - Destrua uma gangzone
https://team.sa-mp.com/wiki/GangZoneDestroy.html

"quem tenta dá um soco aparecia uma msg pro player isso e uma área safe e tal"
OnPlayerGiveDamage - Este callback é chamado quando um jogador causa dano a outro jogador.
https://team.sa-mp.com/wiki/OnPlayerGiveDamage.html

OnPlayerTakeDamage - Este retorno de chamada é chamado quando um jogador sofre dano.
https://team.sa-mp.com/wiki/OnPlayerTakeDamage.html


stock IsPlayerInAreasSafes(playerid){
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid, x, y, z);
if(x >= 1683.59375 && y >= -2160.15625 && x <= 1958.984375 && y <= -1960.9375) return 1;
        else if(x >= 1683.59375 && y >= -2160.15625 && x <= 1958.984375 && y <= -1960.9375) return 1;
else return 0;
}

Vey e eu tô precisando muito desse sistema me ajuda nessa pfv


RE: alguém me ajuda nisso? - Mathews - 23/07/2022

Borther, area safe é uma gangzone.
Você vai fazer igual.

"pq sou burro"
Nâo é ser burro; é só querer quebrar mais a cabeça, tanto que você chegou a uma resposta, "pra pegar a posição de uma ponta a outra? Igual quando agente vai cria uma gangzone".


RE: alguém me ajuda nisso? - LouzinDS - 23/07/2022

se nao quiser criar uma gangzone apenas use o codigo de exemplo:

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;
}