SA-MP Forums Archive
[Pedido] Anti Db drive - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Pedido] Anti Db drive (/showthread.php?tid=618216)



Anti Db drive - galazoiadria - 02.10.2016

Alguem conhece algum sistema de anti db que exemplo se o player atropelar o outro player ranca vida dele alguem conhece algum sistema assim


Re: Anti Db drive - GuilhermeW - 02.10.2016

@Edit:
Deletem esta mensagem por favor, cliquei sem querer e fiz uma nova abaixo, esqueci de dar edit nessa, desculpem pelo double-post, nгo foi intencional.


Re: Anti Db drive - GuilhermeW - 02.10.2016

Estб aqui uma base para vocк desenvolver o seu cуdigo:

Na callback OnPlayerDeath:

PHP код:
    SendDeathMessage(playeridkilleridreason);
    new 
string[128];
    
SendDeathMessage(playeridkilleridreason);
    new 
killername[MAX_PLAYER_NAME], playername[MAX_PLAYER_NAME];
    
GetPlayerName(playeridkillernamesizeof(killername)); GetPlayerName(playeridplayernamesizeof(playername));
    if(
killerid != INVALID_PLAYER_ID)
    {
    new 
playerstate GetPlayerState(killerid);
    if(
playerstate == PLAYER_STATE_DRIVER)
    {
    
GivePlayerMoney(killerid, -5000);
    
SetPlayerScore(killeridGetPlayerScore(killerid) -5);
    
SendClientMessage(killerid0xFF0000AA"| ANTI - DB | Vocк foi punido em 5 scores e R$: 5000,00 por matar os jogadores atropelando-os");
    
format(stringsizeof(string), "| ANTI - DB | %s foi punido em 5 scores e R$: 5000,00 por matar %s utilizando veнculo (Driver by)"killernameplayername);
    
SendClientMessageToAll(0xFF0000AAstring);
    }
    } 
O que o cуdigo acima faz?
R: Basicamente ele retira 5 scores e $5000 do jogador(a) que praticou o DB, vocк pode adaptar para mostrar um GameText para o jogador que praticou o DB, e prender ele usando um sistema de salvamento, recomendo DOF2, se caso ele sair do servidor, pare de rodar o tempo, e sу volte, quando ele se conectar, para evitar que o jogador(a) burle o sistema.

Aceito crнticas, desenvolvi o cуdigo, e o mesmo aparentemente, em minha visгo nгo contйm erros, caso alguйm ache algum, favor me avisar.


Re: Anti Db drive - galazoiadria - 02.10.2016

Posso por em qualquer lugar da gm?


Re: Anti Db drive - GuilhermeW - 02.10.2016

Nгo, vocк tem que por na callback OnPlayerDeath pois sу ela possui os parвmetros para este cуdigo ser utilizado, alйm do mais vocк quer que algo aconteзa quando houver mortes, й lб que deve ser colado o cуdigo.

Qualquer error/warning que der, poste as linhas, e o nome do error/warning que eu farei o mбximo possнvel para ajudб-lo.


Re: Anti Db drive - ViDaLoKa1 - 02.10.2016

Fiz esse bem rбpido aqui use como base acho que й oque procura:

Код:
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
{


if(GetPlayerState(issuerid) == PLAYER_STATE_DRIVER){
	if(weaponid == WEAPON_VEHICLE)
	{
		
		static dbname[MAX_PLAYER_NAME], vname[MAX_PLAYER_NAME];
		static Float:X, Float:Y, Float:Z, Float:Health, Float:Armour;
		static str[128];
		GetPlayerName(issuerid, dbname, MAX_PLAYER_NAME);
		GetPlayerName(playerid, vname, MAX_PLAYER_NAME);
		GetPlayerPos(issuerid, X, Y, Z);
		GetPlayerPos(playerid, X, Y, Z);
		SetPlayerPos(playerid, X, Y, Z+4); //Tira o player debaixo do carro
		SetPlayerPos(issuerid, X, Y, Z+5); //Ejeta o motorista
		GetPlayerHealth(issuerid, Health);
		GetPlayerArmour(issuerid, Armour);
		SetPlayerHealth(issuerid, Health - 30); //Tira -30 de HP do motorista
		SetPlayerArmour(issuerid, Armour - 30); //Tira -30 de Colete do motorista
		format(str, sizeof(str), "INFO: %s fez DB em %s | Foi ejetado do seu veнculo e perdeu Vida e Colete |", dbname,vname);
		SendClientMessageToAll(0xFFFF00FF, str);
	}
}


	return 1;
}



Re: Anti Db drive - RedMF - 02.10.2016

Quote:
Originally Posted by ViDaLoKa1
Посмотреть сообщение
Fiz esse bem rбpido aqui use como base acho que й oque procura:

Код:
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
{

	if(GetPlayerState(issuerid) == PLAYER_STATE_DRIVER)
	{

		static dbname[MAX_PLAYER_NAME], vname[MAX_PLAYER_NAME];
		static Float:X, Float:Y, Float:Z, Float:Health, Float:Armour;
		static str[128];
		GetPlayerName(issuerid, dbname, sizeof(dbname))
		GetPlayerName(playerid, vname, sizeof(vname))
		GetPlayerPos(playerid, X, Y, Z);
		SetPlayerPos(playerid, X, Y, Z+4); //Tira o player debaixo do carro
		GetPlayerPos(issuerid, X, Y, Z);
		SetPlayerPos(issuerid, X, Y, Z+5); //Ejeta o motorista
		GetPlayerHealth(issuerid, Health);
		GetPlayerArmour(issuerid, Armour);
		SetPlayerHealth(issuerid, Health - 30); //Tira -30 de HP do motorista
		SetPlayerArmour(issuerid, Armour - 30); //Tira -30 de Colete do motorista
		format(str, sizeof(str), "INFO: %s fez DB em %s | Foi ejetado do seu veнculo e perdeu Vida e Colete |", dbname,vname);
		SendClientMessageToAll(0xFFFF00FF, str);

	}

	return 1;
}
So nгo pode atirar de dentro de um veiculo porque se nгo ele acusa drive-by


Re: Anti Db drive - ViDaLoKa1 - 02.10.2016

Quote:
Originally Posted by RedMF
Посмотреть сообщение
So nгo pode atirar de dentro de um veiculo porque se nгo ele acusa drive-by
Ah entendi, se o motorista atirar ne. Cуdigo atualizado.


Re: Anti Db drive - galazoiadria - 02.10.2016

Deu erro symbol already defined: "OnPlayerTakeDamage"


Re: Anti Db drive - ViDaLoKa1 - 02.10.2016

Quote:
Originally Posted by galazoiadria
Посмотреть сообщение
Deu erro symbol already defined: "OnPlayerTakeDamage"
a public OnPlayerTakeDamage jб estб definida em seu gamemode apenas procure ela e coloque esse cуdigo dentro, antes do return 1;

Код:
if(GetPlayerState(issuerid) == PLAYER_STATE_DRIVER)
{
	if(weaponid == WEAPON_VEHICLE)
	{
		
		static dbname[MAX_PLAYER_NAME], vname[MAX_PLAYER_NAME];
		static Float:X, Float:Y, Float:Z, Float:Health, Float:Armour;
		static str[128];
		GetPlayerName(issuerid, dbname, MAX_PLAYER_NAME);
		GetPlayerName(playerid, vname, MAX_PLAYER_NAME);
		GetPlayerPos(issuerid, X, Y, Z);
		GetPlayerPos(playerid, X, Y, Z);
		SetPlayerPos(playerid, X, Y, Z+4); //Tira o player debaixo do carro
		SetPlayerPos(issuerid, X, Y, Z+5); //Ejeta o motorista
		GetPlayerHealth(issuerid, Health);
		GetPlayerArmour(issuerid, Armour);
		SetPlayerHealth(issuerid, Health - 30); //Tira -30 de HP do motorista
		SetPlayerArmour(issuerid, Armour - 30); //Tira -30 de Colete do motorista
		format(str, sizeof(str), "INFO: %s fez DB em %s | Foi ejetado do seu veнculo e perdeu Vida e Colete |", dbname,vname);
		SendClientMessageToAll(0xFFFF00FF, str);
	}
}