Galera, como eu posso fazer um anti cheat para verificar se o dano recebido foi realmente aquele? por exemplo supondo que a desert da 24 de dano, e se caso o player usa hack e da 50 de dano de desert, como posso verificar isso?
Bom como fazer para dropar musicas para tocar no SA-MP, tipo fiz um sistema de musica em base de um que vi na internet, só que não sei como por a musica para toca, pq o sistema de base q peguei lá diz se por o link de qualquer musica do youtube toca ou mesmo só o nome da musica mais, não funcionou aqui. Alguem poderia mim ajudar pfvr
new pname[MAX_PLAYER_NAME];
new bool:PediuMusica[MAX_PLAYERS];
public OnFilterScriptInit()
{
//print("\n [FS] Música carregado by [TSVR]LeleziN.Dr ");
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
public OnPlayerConnect(playerid)
{
PediuMusica[playerid] = false;
return 1;
}
public OnPlayerSpawn(playerid)
{
static nomedoserver[64], str[128];
//GetConsoleVarAsString("hostname", nomedoserver, sizeof(nomedoserver));
format(str, sizeof(str), "O %s contém um sistema de música feito por [TSVR]LeleziN.Dr | CMD: /amusica ", nomedoserver);
SendClientMessage(playerid, COR_DICA, str);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_MUSICA)
{
if(!response)
{
SendClientMessage(playerid, COR_INFO, "DICA: Comandos do Sistema de Música: ( /amusica )");
}
else
{
if(strlen(inputtext) < 1)
{
SendClientMessage(playerid, COR_ERRO, "ERRO: Insira alguma música!");
ShowPlayerDialog(playerid, DIALOG_MUSICA, DIALOG_STYLE_INPUT, "Música para todos", "Insira o nome da música desejada!\n(AVISO): Coloque o cantor e o nome da música ou o link do youtube para melhores resultados\n", "Tocar", "Cancelar");
}
else
{
static i, str[128], str2[104+MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
for( i = GetMaxPlayers() - 1; i > -1; --i)
{
if(IsPlayerConnected(i))
{
format(str, sizeof(str), "https://6t.pe/?song=%s", inputtext);
PlayAudioStreamForPlayer(i, str);
format(str2, sizeof(str2), "[ADMIN] %s colocou a música %s, digite /pmusica se quiser parar!", pname, inputtext);
}
}
SendClientMessageToAll(COR_INFO, str2);
}
}
return 1;
}
if(dialogid == DIALOG_PEDIRMUSICA)
{
if(!response)
{
SendClientMessage(playerid, -1, "DICA: Comandos do Sistema de Música: ( /amusica )");
}
else
{
if(strlen(inputtext) < 1)
{
SendClientMessage(playerid, COR_ERRO, "ERRO: Insira alguma música!");
ShowPlayerDialog(playerid, DIALOG_PEDIRMUSICA, DIALOG_STYLE_INPUT, "Pedir uma Música", "Insira o nome da música desejada!\n[AVISO]: Coloque o cantor e o nome da música ou o link do youtube para melhores resultados\n", "Pedir", "Cancelar");
}
else
{
SendClientMessage(playerid, COR_DICA, "AVISO: Música enviada com sucesso aos ADMINS!");
PediuMusica[playerid] = true;
SetTimerEx("PedidoDeMusica", 120000, false, "d", playerid);
static i, str2[104+MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
for( i = GetMaxPlayers() - 1; i > -1; --i)
{
if(IsPlayerAdmin(i))
{
format(str2, sizeof(str2), "ATENÇÃO ADMINS: %s está pedindo a música %s", pname, inputtext);
SendClientMessage(i, COR_INFO, str2);
}
}
}
}
return 1;
}
return 1;
}
//Funções
forward PedidoDeMusica(playerid);
public PedidoDeMusica(playerid)
{
PediuMusica[playerid] = false;
return 1;
}
//Comandos
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp(cmdtext, "/tocarmusica", true)==0)
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COR_ERRO, "ERRO: Comando disponível apenas para admins RCON!");
ShowPlayerDialog(playerid, DIALOG_MUSICA, DIALOG_STYLE_INPUT, "Música para todos", "Insira o nome da música desejada!\n[AVISO]: Coloque o cantor e o nome da música ou o link do youtube para melhores resultados\n", "Tocar", "Cancelar");
return 1;
}
if (strcmp(cmdtext, "/pmusicatodos", true)==0)
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COR_ERRO, "ERRO: Comando disponível apenas para admins RCON!");
static i,str[104+MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
for( i = GetMaxPlayers() - 1; i > -1; --i)
{
if(IsPlayerConnected(i))
{
StopAudioStreamForPlayer(i);
}
}
format(str, sizeof(str), "[ADMIN] %s parou a música atual!", pname);
SendClientMessageToAll(COR_INFO, str);
return 1;
}
if (strcmp(cmdtext, "/pmusica", true)==0)
{
StopAudioStreamForPlayer(playerid);
SendClientMessage(playerid, COR_INFO, "INFO: A reprodução de sons foi parada!");
return 1;
}
if (strcmp(cmdtext, "/pedirmusica", true)==0)
{
if(PediuMusica[playerid] == false)
{
ShowPlayerDialog(playerid, DIALOG_PEDIRMUSICA, DIALOG_STYLE_INPUT, "Pedir uma Música", "Insira o nome da música desejada!\n[AVISO]: Coloque o cantor e o nome da música ou o link do youtube para melhores resultados\n", "Pedir", "Cancelar");
}
else
{
SendClientMessage(playerid, COR_ERRO, "ERRO: Aguarde 2 Minutos para pedir outra música!");
}
return 1;
}
if (strcmp(cmdtext, "/amusica", true)==0)
{
if(IsPlayerAdmin(playerid))
{
ShowPlayerDialog(playerid, DIALOG_AJUDA, DIALOG_STYLE_MSGBOX, "Comandos de Música", "COMANDOS ADM: \n\n/tocarmusica - Toca uma música para todos pelo nome ou link do youtube\n/pmusicatodos - Para a música de todos\n\nCOMANDOS PLAYER: \n\n/pmusica - Para a música atual\n/pedirmusica - Envia a música desejada para os admins online\n", "Ok", "");
}
else
{
ShowPlayerDialog(playerid, DIALOG_AJUDA, DIALOG_STYLE_MSGBOX, "Comandos de Música", "/pmusica - Para a música atual\n/pedirmusica - Envia a música desejada para os admins online\n", "Ok", "");
}
return 1;
}
return 1;
}
pela data dos tópicos, foi recuperado quase tudo, perdendo-se apenas os tópicos dos ultimos 2 anos (2019 e 2020).
Façam bom proveito e tentam resgatar algumas coisas de lá e repostar aqui para que a informação não fique concentrada em um só lugar, assim caso aqui ou lá fique offline tudo ainda estará disponível para a posteridade.
Bom queria saber porque ficou dessa forma, as barras de necessidades - Fome, Sede e Sono aparecem Vazias quando o player Spawn no Servidor, ai as barrinhas vão enchendo conforme o player for jogando, e quando o player sair e volta as barras voltam aparecer vazias novamente. O que poderá ser? Podem mim ajuda Pfvr?
Código:
#include <a_samp>
#include <progress>
new Bar:BFome, Bar:BSede, Bar:BSono;
new Text:SFome, Text:SSede, Text:SSono, Text:TelaSono, dormindo[MAX_PLAYERS];
new TimerF[MAX_PLAYERS], TimerS[MAX_PLAYERS], TimerSo[MAX_PLAYERS];
forward Fome(playerid);
public Fome(playerid)
{
SetPVarInt(playerid,"Fome",GetPVarInt(playerid,"Fome")+5);
SetProgressBarValue(BFome, GetPVarInt(playerid,"Fome"));
UpdateProgressBar(BFome,playerid);
if(GetPVarInt(playerid,"Fome") == 75)
{
new Float:Vida;
GetPlayerHealth(playerid,Vida),SetPlayerHealth(playerid,Vida-15.0);
SendClientMessage(playerid,-1,"| INFO | Vá até um restaurante comer ou você irá morrer de fome!");
}
if(GetPVarInt(playerid,"Fome") == 80)
{
new Float:Vida;
GetPlayerHealth(playerid,Vida),SetPlayerHealth(playerid,Vida-20.0);
SendClientMessage(playerid,-1,"| INFO | Vá até um restaurante comer ou você irá morrer de fome!");
}
if(GetPVarInt(playerid,"Fome") == 85)
{
new Float:Vida;
GetPlayerHealth(playerid,Vida),SetPlayerHealth(playerid,Vida-25.0);
SendClientMessage(playerid,-1,"| INFO | Vá até um restaurante comer ou você irá morrer de fome!");
}
if(GetPVarInt(playerid,"Fome") == 90)
{
new Float:Vida;
GetPlayerHealth(playerid,Vida),SetPlayerHealth(playerid,Vida-20.0);
SendClientMessage(playerid,-1,"| INFO | Vá até um restaurante comer ou você irá morrer de fome!");
}
if(GetPVarInt(playerid,"Fome") == 100)
{
new Float:Vida;
GetPlayerHealth(playerid,Vida),SetPlayerHealth(playerid,Vida-20.0);
SendClientMessage(playerid,-1,"| INFO | Vá até um restaurante comer ou você irá morrer de fome!");
}
return 1;
}
forward Sede(playerid);
public Sede(playerid)
{
SetPVarInt(playerid,"Sede",GetPVarInt(playerid,"Sede")+5);
SetProgressBarValue(BSede, GetPVarInt(playerid,"Sede"));
UpdateProgressBar(BSede,playerid);
if(GetPVarInt(playerid,"Sede") == 75)
{
new Float:Vida;
GetPlayerHealth(playerid,Vida),SetPlayerHealth(playerid,Vida-15.0);
SendClientMessage(playerid,-1,"| INFO | Vá até um restaurante beber ou você irá morrer de sede!");
}
if(GetPVarInt(playerid,"Sede") == 80)
{
new Float:Vida;
GetPlayerHealth(playerid,Vida),SetPlayerHealth(playerid,Vida-20.0);
SendClientMessage(playerid,-1,"| INFO | Vá até um restaurante beber ou você irá morrer de sede!");
}
if(GetPVarInt(playerid,"Sede") == 85)
{
new Float:Vida;
GetPlayerHealth(playerid,Vida),SetPlayerHealth(playerid,Vida-25.0);
SendClientMessage(playerid,-1,"| INFO | Vá até um restaurante beber ou você irá morrer de sede!");
}
if(GetPVarInt(playerid,"Sede") == 90)
{
new Float:Vida;
GetPlayerHealth(playerid,Vida),SetPlayerHealth(playerid,Vida-20.0);
SendClientMessage(playerid,-1,"| INFO | Vá até um restaurante beber ou você irá morrer de sede!");
}
if(GetPVarInt(playerid,"Sede") >= 100)
{
new Float:Vida;
GetPlayerHealth(playerid,Vida),SetPlayerHealth(playerid,Vida-25.0);
SendClientMessage(playerid,-1,"| INFO | Vá até um restaurante beber ou você irá morrer de sede!");
}
return 1;
}