kubraczekk Napisano 5 Listopada 2019 (edytowane) 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 5 Listopada 2019 przez kubraczekk Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
VestSmart Napisano 5 Listopada 2019 A do czego ci potrzebny jest taki plugin? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Paweł 1 Napisano 5 Listopada 2019 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. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Gość Napisano 5 Listopada 2019 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 😛 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
kubraczekk 1 Napisano 5 Listopada 2019 3 godziny temu, VestSmart napisał: A do czego ci potrzebny jest taki plugin? Odwzorowuje TTT z garrysmoda 1 godzinę temu, SUPER TIMOR napisał: Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! 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 👍 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
kubraczekk Napisano 5 Listopada 2019 4 godziny temu, SUPER TIMOR napisał: Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! 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 🙂 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Gość Napisano 5 Listopada 2019 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 😛 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach