Skocz do zawartości

Rekomendowane odpowiedzi

Cześć, szukam pluginu na odrzucanie przeciwnika/teammate. Mianowicie mam 2 pomysły i byłbym bardzo zadowolony jakby ktoś miał któryś.

1) Odrzucanie gracza (na +use)

2) Możliwość popychania graczy


Z góry bardzo dziękuje i wynagrodzę plusikami

 

Edytowane przez kubraczekk
Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Moderator poziom 2
2 godziny temu, kubraczekk napisał:

Odrzucanie gracza (na +use)

Widziałem w którymś anit rushu funkcję do tego. Poprzeglądaj kody pluginów tego typu.

Sygnatura użytkownika

» Support: https://discord.com/invite/zMXt97R63v

» Steam: https://steamcommunity.com/id/pawelsteam/

» Discord: Paweł#8244

» PluginyCS: https://pluginycs.pl/profile/Pawel

» Przyjmuję zlecenia na paczki oraz pluginy.  «

  • Dobry pomysł!
Odnośnik do odpowiedzi
Udostępnij na innych stronach
Spoiler
#include <sourcemod>
#include <sdktools>

ConVar szybkosc_odepchniecia;
ConVar sila_odepchniecia;
ConVar odlegosc_do_odepchniecia;

public Plugin myinfo =
{
	name = "Odpychanie na E",
	author = "SUPER TIMOR",
	description = "Plugin na odpychanie graczy",
	version = "1.0",
	url = "http://goBoosting.pl"
};

public void OnPluginStart()
{
	szybkosc_odepchniecia = CreateConVar("szybkosc_odepchniecia", "30.0", "Szybkosc lotu odepchnietego");
	sila_odepchniecia = CreateConVar("sila_odepchniecia", "10.0", "Sila odepchniecia");
	odlegosc_do_odepchniecia = CreateConVar("odlegosc_do_odepchniecia", "80.0", "Ogległość, w której muszą się znajdować gracze by się odepchnąć");
	AutoExecConfig(true, "", "sourcemod");
}

public Action OnPlayerRunCmd(int client, int& buttons, int& impulse, float vel[3], float angles[3], int& weapons)
{
	if(!IsValidClient(client) || !IsPlayerAlive(client))
		return Plugin_Continue;

	if(buttons & IN_USE)
	{
		int target = GetClientAimTarget(client);
	
		if(!IsValidClient(target) || !IsPlayerAlive(target))
			return Plugin_Continue;
		
		float clientPos[3], targetPos[3], pushVel[3];
		GetClientAbsOrigin(client, clientPos);
		GetClientAbsOrigin(target, targetPos);
		float distance = GetVectorDistance(targetPos, clientPos);
		distance = (distance > 0.0) ? distance : 1.0;
		if(distance > odlegosc_do_odepchniecia.FloatValue)
			return Plugin_Continue;
		
		SubtractVectors(clientPos, targetPos, pushVel);
			
		pushVel[0] = -pushVel[0];
		pushVel[1] = -pushVel[1];
		pushVel[2] = szybkosc_odepchniecia.FloatValue;
		ScaleVector(pushVel, sila_odepchniecia.FloatValue);
		TeleportEntity(target, NULL_VECTOR, NULL_VECTOR, pushVel);
	}
	
	return Plugin_Continue;
}
public bool IsValidClient(int client)
{
	if(client >= 1 && client <= MaxClients && IsClientInGame(client))
		return true;

	return false;
}

 

Spróbuj tego, nie testowałem 😛 W razie czego jak za mocno, lub za lekko będzie odpychało kombinuj z convarami. 

Nie napisałeś czy teammate mogą się odpychać czy nie, i czy to na jedno wciśnięcie E czy cały czas 😛

Odnośnik do odpowiedzi
Udostępnij na innych stronach
3 godziny temu, VestSmart napisał:

A do czego ci potrzebny jest taki plugin? 

Odwzorowuje TTT z garrysmoda

1 godzinę temu, SUPER TIMOR napisał:
  Pokaż ukrytą zawartość

#include <sourcemod>
#include <sdktools>

ConVar szybkosc_odepchniecia;
ConVar sila_odepchniecia;
ConVar odlegosc_do_odepchniecia;

public Plugin myinfo =
{
	name = "Odpychanie na E",
	author = "SUPER TIMOR",
	description = "Plugin na odpychanie graczy",
	version = "1.0",
	url = "http://goBoosting.pl"
};

public void OnPluginStart()
{
	szybkosc_odepchniecia = CreateConVar("szybkosc_odepchniecia", "30.0", "Szybkosc lotu odepchnietego");
	sila_odepchniecia = CreateConVar("sila_odepchniecia", "10.0", "Sila odepchniecia");
	odlegosc_do_odepchniecia = CreateConVar("odlegosc_do_odepchniecia", "80.0", "Ogległość, w której muszą się znajdować gracze by się odepchnąć");
	AutoExecConfig(true, "", "sourcemod");
}

public Action OnPlayerRunCmd(int client, int& buttons, int& impulse, float vel[3], float angles[3], int& weapons)
{
	if(!IsValidClient(client) || !IsPlayerAlive(client))
		return Plugin_Continue;

	if(buttons & IN_USE)
	{
		int target = GetClientAimTarget(client);
	
		if(!IsValidClient(target) || !IsPlayerAlive(target))
			return Plugin_Continue;
		
		float clientPos[3], targetPos[3], pushVel[3];
		GetClientAbsOrigin(client, clientPos);
		GetClientAbsOrigin(target, targetPos);
		float distance = GetVectorDistance(targetPos, clientPos);
		distance = (distance > 0.0) ? distance : 1.0;
		if(distance > odlegosc_do_odepchniecia.FloatValue)
			return Plugin_Continue;
		
		SubtractVectors(clientPos, targetPos, pushVel);
			
		pushVel[0] = -pushVel[0];
		pushVel[1] = -pushVel[1];
		pushVel[2] = szybkosc_odepchniecia.FloatValue;
		ScaleVector(pushVel, sila_odepchniecia.FloatValue);
		TeleportEntity(target, NULL_VECTOR, NULL_VECTOR, pushVel);
	}
	
	return Plugin_Continue;
}
public bool IsValidClient(int client)
{
	if(client >= 1 && client <= MaxClients && IsClientInGame(client))
		return true;

	return false;
}

 

Spróbuj tego, nie testowałem 😛 W razie czego jak za mocno, lub za lekko będzie odpychało kombinuj z convarami. 

Nie napisałeś czy teammate mogą się odpychać czy nie, i czy to na jedno wciśnięcie E czy cały czas 😛

Teammate mogą się odpychać, na wciśnięcie E

 

Wroce do domu (za godzinę max) to przetestuje ale z góry bardzo dziękuje za pomoc 👍

  • Lubię to!
Odnośnik do odpowiedzi
Udostępnij na innych stronach
4 godziny temu, SUPER TIMOR napisał:
  Pokaż ukrytą zawartość

#include <sourcemod>
#include <sdktools>

ConVar szybkosc_odepchniecia;
ConVar sila_odepchniecia;
ConVar odlegosc_do_odepchniecia;

public Plugin myinfo =
{
	name = "Odpychanie na E",
	author = "SUPER TIMOR",
	description = "Plugin na odpychanie graczy",
	version = "1.0",
	url = "http://goBoosting.pl"
};

public void OnPluginStart()
{
	szybkosc_odepchniecia = CreateConVar("szybkosc_odepchniecia", "30.0", "Szybkosc lotu odepchnietego");
	sila_odepchniecia = CreateConVar("sila_odepchniecia", "10.0", "Sila odepchniecia");
	odlegosc_do_odepchniecia = CreateConVar("odlegosc_do_odepchniecia", "80.0", "Ogległość, w której muszą się znajdować gracze by się odepchnąć");
	AutoExecConfig(true, "", "sourcemod");
}

public Action OnPlayerRunCmd(int client, int& buttons, int& impulse, float vel[3], float angles[3], int& weapons)
{
	if(!IsValidClient(client) || !IsPlayerAlive(client))
		return Plugin_Continue;

	if(buttons & IN_USE)
	{
		int target = GetClientAimTarget(client);
	
		if(!IsValidClient(target) || !IsPlayerAlive(target))
			return Plugin_Continue;
		
		float clientPos[3], targetPos[3], pushVel[3];
		GetClientAbsOrigin(client, clientPos);
		GetClientAbsOrigin(target, targetPos);
		float distance = GetVectorDistance(targetPos, clientPos);
		distance = (distance > 0.0) ? distance : 1.0;
		if(distance > odlegosc_do_odepchniecia.FloatValue)
			return Plugin_Continue;
		
		SubtractVectors(clientPos, targetPos, pushVel);
			
		pushVel[0] = -pushVel[0];
		pushVel[1] = -pushVel[1];
		pushVel[2] = szybkosc_odepchniecia.FloatValue;
		ScaleVector(pushVel, sila_odepchniecia.FloatValue);
		TeleportEntity(target, NULL_VECTOR, NULL_VECTOR, pushVel);
	}
	
	return Plugin_Continue;
}
public bool IsValidClient(int client)
{
	if(client >= 1 && client <= MaxClients && IsClientInGame(client))
		return true;

	return false;
}

 

Spróbuj tego, nie testowałem 😛 W razie czego jak za mocno, lub za lekko będzie odpychało kombinuj z convarami. 

Nie napisałeś czy teammate mogą się odpychać czy nie, i czy to na jedno wciśnięcie E czy cały czas 😛

@SUPER TIMOR Działa lepiej niż myślałem, dasz rade ustawić tylko convar na ograniczenie czasowe używania tego? Podaj steama bo mam sprawe tak w ogóle 🙂

Odnośnik do odpowiedzi
Udostępnij na innych stronach

Pewnie, że da 😛

Spoiler
#include <sourcemod>
#include <sdktools>

ConVar szybkosc_odepchniecia;
ConVar sila_odepchniecia;
ConVar odlegosc_do_odepchniecia;
ConVar cooldown;

int iCooldown[MAXPLAYERS+1];

public Plugin myinfo =
{
	name = "Odpychanie na E",
	author = "SUPER TIMOR",
	description = "Plugin na odpychanie graczy",
	version = "1.0",
	url = "http://goBoosting.pl"
};

public void OnPluginStart()
{
	HookEvent("player_spawn", OdrodzenieGracza);	
	szybkosc_odepchniecia = CreateConVar("szybkosc_odepchniecia", "30.0", "Szybkosc lotu odepchnietego");
	sila_odepchniecia = CreateConVar("sila_odepchniecia", "10.0", "Sila odepchniecia");
	odlegosc_do_odepchniecia = CreateConVar("odlegosc_do_odepchniecia", "80.0", "Ogległość, w której muszą się znajdować gracze by się odepchnąć");
	cooldown = CreateConVar("odepchniecie_cooldown", "2", "Ile sekund między odepchnięciami?");	
	AutoExecConfig(true, "", "sourcemod");
}
	
public Action OnPlayerRunCmd(int client, int& buttons, int& impulse, float vel[3], float angles[3], int& weapons)
{
	if(!IsValidClient(client) || !IsPlayerAlive(client))
		return Plugin_Continue;

	if(buttons & IN_USE)
	{
		if(iCooldown[client] >= GetTime())
			return Plugin_Continue;	
			
		int target = GetClientAimTarget(client);
	
		if(!IsValidClient(target) || !IsPlayerAlive(target))
			return Plugin_Continue;
		
		float clientPos[3], targetPos[3], pushVel[3];
		GetClientAbsOrigin(client, clientPos);
		GetClientAbsOrigin(target, targetPos);
		float distance = GetVectorDistance(targetPos, clientPos);
		distance = (distance > 0.0) ? distance : 1.0;
		if(distance > odlegosc_do_odepchniecia.FloatValue)
			return Plugin_Continue;
		
		SubtractVectors(clientPos, targetPos, pushVel);
			
		pushVel[0] = -pushVel[0];
		pushVel[1] = -pushVel[1];
		pushVel[2] = szybkosc_odepchniecia.FloatValue;
		ScaleVector(pushVel, sila_odepchniecia.FloatValue);
		TeleportEntity(target, NULL_VECTOR, NULL_VECTOR, pushVel);
		iCooldown[client] = GetTime() + cooldown.IntValue;				
	}
	
	return Plugin_Continue;
}
public Action OdrodzenieGracza(Event event, char[] name, bool dontBroadcast)
{
	int client = GetClientOfUserId(GetEventInt(event, "userid"));
	iCooldown[client] = 0;
}
public bool IsValidClient(int client)
{
	if(client >= 1 && client <= MaxClients && IsClientInGame(client))
		return true;

	return false;
}

 

 

Steam u mnie na profilu, podałem również na shoutboxie 😛 

Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ostatnio przeglądający ten temat (5 użytkowników)

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...