[Pedido] Anti Db drive
#1

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

@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.
Reply
#3

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.
Reply
#4

Posso por em qualquer lugar da gm?
Reply
#5

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.
Reply
#6

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

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
Reply
#8

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.
Reply
#9

Deu erro symbol already defined: "OnPlayerTakeDamage"
Reply
#10

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


Forum Jump:


Users browsing this thread: 1 Guest(s)