RE: HS floodando com ID 31 - fear - 10/12/2021
(10/12/2021 22:07)xbruno1000x Escreveu: Faça da seguinte forma:
(10/12/2021 19:26)xBruno1000x Escreveu: //RESPOSTAS DE OUTRAS PESSOAS
//SUAS RESPOSTAS AQUI, SEMPRE ABAIXO.
eu tinha editado mas como tu não viu kkk segue a mesma resposta que coloquei la..
segue o print do chat quando eu uso ex: arma id 28 como e duas akimbo conta como dois hs.. sera que teria como burlar armas akimbo contar como um hs ou ta normal isso?
RE: HS floodando com ID 31 - xbruno1000x - 11/12/2021
Agora eu vi que corrigiu.
Tente dessa forma:
Código: new bool:hasHS[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
hasHS[playerid] = 0;
}
if(bodypart == 9)
{
if(!hasHS[damagedid])
{
hasHS[damagedid] = true;
SetTimerEx("HeadshotSys", 1200, false, "ii", playerid, damagedid);
}
}
forward HeadshotSys(playerid, damagedid);
public HeadshotSys(playerid, damagedid)
{
if(hasHS[damagedid])
{
new string[128];
format(string, sizeof(string), "** ~> {FFF000}%s{A9A9A9} Deu um {FF0000}headshot {A9A9A9}no jogador {FFF000}%s{A9A9A9}.", Nome(playerid), Nome(damagedid), playerid);
SendClientMessageToAll(0xb9eec0AA, string);
SetPlayerHealth(damagedid, 0.0);
SetPlayerArmour(damagedid, 0);
hasHS[damagedid] = false;
}
}
O player ainda chamará a public duas vezes. Porém, na segunda vez, a if irá barra o texto de ser enviado novamente em função da hasHS ter se tornado falsa.
RE: HS floodando com ID 31 - fear - 11/12/2021
(11/12/2021 01:21)xbruno1000x Escreveu: Agora eu vi que corrigiu.
Tente dessa forma:
Código: new bool:hasHS[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
hasHS[playerid] = 0;
}
if(bodypart == 9)
{
if(!hasHS[damagedid])
{
hasHS[damagedid] = true;
SetTimerEx("HeadshotSys", 1200, false, "ii", playerid, damagedid);
}
}
forward HeadshotSys(playerid, damagedid);
public HeadshotSys(playerid, damagedid)
{
if(hasHS[damagedid])
{
new string[128];
format(string, sizeof(string), "** ~> {FFF000}%s{A9A9A9} Deu um {FF0000}headshot {A9A9A9}no jogador {FFF000}%s{A9A9A9}.", Nome(playerid), Nome(damagedid), playerid);
SendClientMessageToAll(0xb9eec0AA, string);
SetPlayerHealth(damagedid, 0.0);
SetPlayerArmour(damagedid, 0);
hasHS[damagedid] = false;
}
}
O player ainda chamará a public duas vezes. Porém, na segunda vez, a if irá barra o texto de ser enviado novamente em função da hasHS ter se tornado falsa.
warning:
Código PHP: warning 213: tag mismatch
linha no onplayerconnect:
RE: HS floodando com ID 31 - MarcosBrazz - 11/12/2021
(11/12/2021 10:54)fear Escreveu: (11/12/2021 01:21)xbruno1000x Escreveu: Agora eu vi que corrigiu.
Tente dessa forma:
Código: new bool:hasHS[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
hasHS[playerid] = 0;
}
if(bodypart == 9)
{
if(!hasHS[damagedid])
{
hasHS[damagedid] = true;
SetTimerEx("HeadshotSys", 1200, false, "ii", playerid, damagedid);
}
}
forward HeadshotSys(playerid, damagedid);
public HeadshotSys(playerid, damagedid)
{
if(hasHS[damagedid])
{
new string[128];
format(string, sizeof(string), "** ~> {FFF000}%s{A9A9A9} Deu um {FF0000}headshot {A9A9A9}no jogador {FFF000}%s{A9A9A9}.", Nome(playerid), Nome(damagedid), playerid);
SendClientMessageToAll(0xb9eec0AA, string);
SetPlayerHealth(damagedid, 0.0);
SetPlayerArmour(damagedid, 0);
hasHS[damagedid] = false;
}
}
O player ainda chamará a public duas vezes. Porém, na segunda vez, a if irá barra o texto de ser enviado novamente em função da hasHS ter se tornado falsa.
warning:
Código PHP: warning 213: tag mismatch
linha no onplayerconnect:
Troque por:
Código: hasHS[playerid] = false;
RE: HS floodando com ID 31 - SrBlue - 11/12/2021
remova a public HeadshotSys, e deixe somente o sistema de HS na public nativa OnPlayerGiveDamage...
RE: HS floodando com ID 31 - fear - 11/12/2021
(11/12/2021 15:17)SrBlue Escreveu: remova a public HeadshotSys, e deixe somente o sistema de HS na public nativa OnPlayerGiveDamage...
fiz assim:
INICIO DO GAMEMODE:
Código PHP: new bool:hasHS[MAX_PLAYERS];
ONPLAYERCONNECT
REMOVI O HEADSHOTSYS COMO TU FALO E PASSEI PRA GIVEDAMAGE NOVAMENTE E AGORA NEM O HS PEGA MAIS..
ONPLAYERGIVEDAMAGE
Código PHP: if(!IsPlayerPaused(damagedid)) //verifica se o jogador que levou dano não está de esc { if(hasHS[damagedid]) { new string[128]; format(string, sizeof(string), "** ~> {FFF000}%s{A9A9A9} Deu um {FF0000}headshot {A9A9A9}no jogador {FFF000}%s{A9A9A9}.", Nome(playerid), Nome(damagedid), playerid); SendClientMessageToAll(0xb9eec0AA, string); SetPlayerHealth(damagedid, 0.0); SetPlayerArmour(damagedid, 0); hasHS[damagedid] = false; } }
RE: HS floodando com ID 31 - SrBlue - 11/12/2021
zzzz, a variavel ta ficando nula...
no onplayerconnect ela deve-se vim false..
no onplyaergivdamage
no hasHS[damagedid]
bota if(hasHS[damagedid]==0)
você ta verificando se ela é true.
e no final ta passando pra false,
passa para hasHS[damagedid] = true
no onplayerspawn
passa a variavel hasHS[damagedid] = false.
RESUMIDAMENTE PRA VOSSA SENHORIA:
ONPLAYERGIVEDAMAGE:
Código: if(!IsPlayerPaused(damagedid)) //verifica se o jogador que levou dano não está de esc
{
if(hasHS[damagedid] == 0)
{
new string[128];
format(string, sizeof(string), "** ~> {FFF000}%s{A9A9A9} Deu um {FF0000}headshot {A9A9A9}no jogador {FFF000}%s{A9A9A9}.", Nome(playerid), Nome(damagedid), playerid);
SendClientMessageToAll(0xb9eec0AA, string);
SetPlayerHealth(damagedid, 0.0);
SetPlayerArmour(damagedid, 0);
hasHS[damagedid] = true;
}
}
ONPLAYERSPAWN:
Código: public OnPlayerSpawn(playerid){
hasHS[playerid] = false;
}
RE: HS floodando com ID 31 - xbruno1000x - 11/12/2021
(11/12/2021 15:17)SrBlue Escreveu: remova a public HeadshotSys, e deixe somente o sistema de HS na public nativa OnPlayerGiveDamage...
A public HeadshotSys impede que a mensagem seja enviada no chat duas vezes seguidas, então ela é essencial.
RE: HS floodando com ID 31 - fear - 11/12/2021
(11/12/2021 17:58)SrBlue Escreveu: zzzz, a variavel ta ficando nula...
no onplayerconnect ela deve-se vim false..
no onplyaergivdamage
no hasHS[damagedid]
bota if(hasHS[damagedid]==0)
você ta verificando se ela é true.
e no final ta passando pra false,
passa para hasHS[damagedid] = true
no onplayerspawn
passa a variavel hasHS[damagedid] = false.
RESUMIDAMENTE PRA VOSSA SENHORIA:
ONPLAYERGIVEDAMAGE:
Código: if(!IsPlayerPaused(damagedid)) //verifica se o jogador que levou dano não está de esc
{
if(hasHS[damagedid] == 0)
{
new string[128];
format(string, sizeof(string), "** ~> {FFF000}%s{A9A9A9} Deu um {FF0000}headshot {A9A9A9}no jogador {FFF000}%s{A9A9A9}.", Nome(playerid), Nome(damagedid), playerid);
SendClientMessageToAll(0xb9eec0AA, string);
SetPlayerHealth(damagedid, 0.0);
SetPlayerArmour(damagedid, 0);
hasHS[damagedid] = true;
}
}
ONPLAYERSPAWN:
Código: public OnPlayerSpawn(playerid){
hasHS[playerid] = false;
}
Resolveu pelo teste que fiz não ta floodando mais... porém ta matando com soco... tu da um soco e mata o player como se fosse hs e tb tem kill que tu mata e conta no chat kill como se a pessoa tivesse dado /kill
RE: HS floodando com ID 31 - SrBlue - 11/12/2021
pela logica está certa, faz uma verificação se o weaponid for igual a do soco ( 0 ) ou de qual quer armas de corpo-corpo ( bastao/socoingles/pá espadas etc ) ignorar o efeito dar um retorno 0,
utilize aqui essa tabela! _> https://open.mp/docs/scripting/resources/weaponids
exemplo:
if(hasHS[damagedid] == 0){
if(weaponid >= 0 && weaponid <= 18) return 0;
..
..
..
..
}
|