Skocz do zawartości


NWayne

AutoStrafes NWayne

Rekomendowane odpowiedzi

Lecimy lecimy nie śpimy :P Tutaj tu no to Auto Strafe macie: 

 

PSSS // Nie testowane XD 

 

#include <sourcemod>
#include <sdktools>
#include <sdkhooks>

#define NAZWA "AutoStrafes by NWayne based on TechSupportJosh"
#define AUTOR "NWayne"

#define DEBUG

#pragma semicolon 1
#pragma newdecls required
/*
 	<-- based on TechSupportJosh -->
*/
public Plugin myinfo = 
{
	name = NAZWA, 
	author = AUTOR, 
	description = "AutoStrafe by NWayne (based on TechSupportJosh)", 
	version = "1.0", 
	url = "based on TechSupportJosh"
};

/* <-- Zmienne --> */
bool g_bStrafeEnabled[MAXPLAYERS + 1];
float g_flLastGain[MAXPLAYERS + 1];
float g_flSidespeed = 510.0;

/* <-- Na Polaczeniu --> */

public void OnClientConnected(int client)
{
	g_bStrafeEnabled[client] = true;
}

public void Warotsc (int client) {


}

/* <-- Menu --> */

public Action MenuToogle (int client) {
	
//	Wartosc(client);

	char sts[32]
	{
		if (g_bStrafeEnabled[client] == true)
		{
			Format(sts, sizeof(sts), "ON");
		}
		if (g_bStrafeEnabled[client] == false)
		{
			Format(sts, sizeof(sts), "OFF");
		}
	}

	if(!IsValidClient(client))
		return;

	Handle MenuHandle = CreateMenu(handlermenu);
	SetMenuTitle(MenuHandle, "~ AutoStrafe ~ \n\n --> Ustawienia <--");
	AddMenuItem(MenuHandle, ">%s<", sts, ITEMDRAW_DEFAULT);
	DisplayMenu(MenuHandle, client, 30);

}



public int handlermenu (Menu menu, MenuAction action, int client, int itemNum) {

	if (action == MenuAction_Select)
	{
		if(g_bStrafeEnabled[client] == true)
		{
				/*
				SetHudTextParams(-1.0, 1, 4, 255, 0, 0);
				ShowHudText(client, "Poprawnie wylaczyles autostrafe! ");
				*/
				
			g_bStrafeEnabled[client] = false;
				
		}
			
		if (g_bStrafeEnabled[client] == false)
		{
			
				///SetHudTextParams(-1.0, 1, 4, 255, 0, 0);
				///ShowHudText(client, "Poprawnie wlaczyles autostrafe! ");
			
			g_bStrafeEnabled[client] = true;
				

		}
	}
	
	else if (action == MenuAction_End) {
		CloseHandle(menu);
	}


}
	

public void OnPluginStart()
{
	

	if(GetEngineVersion() == Engine_CSGO)
	{
		g_flSidespeed = 510.0;
	}
	else if(GetEngineVersion() == Engine_CSS)
	{
		g_flSidespeed = 400.0;
	}
	else
	{
		/* <-- Zmienne (Wiadomosci) --> */
		char error[32];
		char disable[32];
		
		Format(error, sizeof(error), "[AutoStafe] Error plugin does not work because engine is incompatible!");
		Format(disable, sizeof(disable), "[AutoStrafe] PLugin has been disabled!");
		
		/* <-- Wiadomosci --> */
		LogError(error);
		SetFailState(disable);
	}
		
}




public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3], float angles[3])
{
	if (!IsClientInGame(client) || !IsPlayerAlive(client))
		return Plugin_Continue;
	
	if (IsFakeClient(client))
		return Plugin_Continue;
	
	if (g_bStrafeEnabled[client])
	{
		ApplyAutoStrafe(client, buttons, vel, angles);
		return Plugin_Changed;
	}
	
	return Plugin_Continue;
}

stock void ApplyAutoStrafe(int client, int &buttons, float vel[3], float angles[3])
{
	if (GetEntityMoveType(client) & MOVETYPE_LADDER)
		return;
	
	if (buttons & IN_MOVELEFT || buttons & IN_MOVERIGHT || buttons & IN_FORWARD || buttons & IN_BACK)
	{
		return;
	}
	
	float flVelocity[3];
	GetEntPropVector(client, Prop_Data, "m_vecVelocity", flVelocity);
	
	float flYVel = RadToDeg(ArcTangent2(flVelocity[1], flVelocity[0]));
	
	float flDiffAngle = NormalizeAngle(angles[1] - flYVel);
	
	vel[1] = g_flSidespeed;
	
	if (flDiffAngle > 0.0)
		vel[1] = -g_flSidespeed;
	
	float flLastGain = g_flLastGain[client];
	float flAngleGain = RadToDeg(ArcTangent(vel[1] / vel[0]));
	

	if (!((flLastGain < 0.0 && flAngleGain < 0.0) || (flLastGain > 0.0 && flAngleGain > 0.0))) 
		angles[1] -= flDiffAngle;
	
	g_flLastGain[client] = flAngleGain;
}


/* <--- Stocks --> */

public float NormalizeAngle(float angle)
{
	float temp = angle;
	
	while (temp <= -240.0)
	{
		temp += 420.0;
	}
	
	while (temp > 240.0)
	{
		temp -= 420.0;
	}
	
	return temp;
} 

bool IsValidClient(int client)
{
	if (client <= 0 || client > MaxClients) {
		return false;
	}
	
	if (!IsClientInGame(client)) {
		return false;
	}
	
	if (IsFakeClient(client)) {
		return false;
	}
	
	return true;
} 

 

@ RoberrtFinance czytanie ze zrozumieniem i jeszcze raz czytanie ze zrozumieniem bez tego daleko nie pojedziesz :P 

@ RoberrtFinance to dziękuje za to, ale chodziło mi bardziej o to, że "oskarżyłeś" mnie o chamskie skopiowanie, kiedy jednak edytowałem kod i to znacząco go przepisałem :P ale jeszcze raz dzięki 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×