156 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			156 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
//----------------------------------------------------------------------------------------------------
 | 
						|
// Purpose:
 | 
						|
//----------------------------------------------------------------------------------------------------
 | 
						|
public Action Command_Jumper(int client, int argc)
 | 
						|
{
 | 
						|
	float fOrigin[3];
 | 
						|
 | 
						|
	if (argc < 1)
 | 
						|
	{
 | 
						|
		GetClientEyePosition(client, fOrigin);
 | 
						|
		SpawnJumper(fOrigin);
 | 
						|
		LogAction(client, -1, "\"%L\" spawned Jumper at <%f><%f><%f>.", client, fOrigin[0], fOrigin[1], fOrigin[2]);
 | 
						|
		return Plugin_Handled;
 | 
						|
	}
 | 
						|
 | 
						|
	char sArgs[64];
 | 
						|
	char sTargetName[MAX_TARGET_LENGTH];
 | 
						|
	int iTargets[MAXPLAYERS];
 | 
						|
	int iTargetCount;
 | 
						|
	bool bIsML;
 | 
						|
 | 
						|
	GetCmdArg(1, sArgs, sizeof(sArgs));
 | 
						|
 | 
						|
	if ((iTargetCount = ProcessTargetString(sArgs, client, iTargets, MAXPLAYERS, COMMAND_FILTER_CONNECTED, sTargetName, sizeof(sTargetName), bIsML)) <= 0)
 | 
						|
	{
 | 
						|
		ReplyToTargetError(client, iTargetCount);
 | 
						|
		return Plugin_Handled;
 | 
						|
	}
 | 
						|
 | 
						|
	for (int i = 0; i < iTargetCount; i++)
 | 
						|
	{
 | 
						|
		if(IsClientInGame(iTargets[i]) && IsPlayerAlive(iTargets[i]))
 | 
						|
		{
 | 
						|
			GetClientEyePosition(iTargets[i], fOrigin);
 | 
						|
			SpawnJumper(fOrigin);
 | 
						|
			LogAction(client, -1, "\"%L\" gave Jumper to \"%L\".", client, iTargets[i]);
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return Plugin_Handled;
 | 
						|
}
 | 
						|
 | 
						|
//----------------------------------------------------------------------------------------------------
 | 
						|
// Purpose:
 | 
						|
//----------------------------------------------------------------------------------------------------
 | 
						|
public void SpawnJumper(float fOrigin[3])
 | 
						|
{
 | 
						|
	float fOriginTemp[3];
 | 
						|
 | 
						|
	// weapon_knife.
 | 
						|
	int iKnife = CreateEntityAtOrigin("weapon_knife", fOrigin);
 | 
						|
	DispatchKeyFormat(iKnife, "targetname",             "item_jumper_knife_%d", g_iCounter);
 | 
						|
	DispatchKeyFormat(iKnife, "hammerid",               "11051995%d", g_iCounter);
 | 
						|
	DispatchKeyFormat(iKnife, "spawnflags",             "1");
 | 
						|
	DispatchKeyFormat(iKnife, "angles",                 "0 0 0");
 | 
						|
	DispatchKeyFormat(iKnife, "OnPlayerPickup",         "item_jumper_controls_%d,Activate,,0,1", g_iCounter);
 | 
						|
 | 
						|
	SpawnAndActivate(iKnife);
 | 
						|
 | 
						|
	HookSingleEntityOutput(iKnife, "OnPlayerPickup", JumperPickup, true);
 | 
						|
 | 
						|
	// light origin.
 | 
						|
	fOriginTemp[0] = fOrigin[0] + 0.0;
 | 
						|
	fOriginTemp[1] = fOrigin[1] + 0.0;
 | 
						|
	fOriginTemp[2] = fOrigin[2] + 6.0;
 | 
						|
 | 
						|
	// light.
 | 
						|
	int iLight = CreateEntityAtOrigin("light_dynamic", fOriginTemp);
 | 
						|
	DispatchKeyFormat(iLight, "targetname",             	"item_jumper_light_%d", g_iCounter);
 | 
						|
	DispatchKeyFormat(iLight, "style",                  	"0");
 | 
						|
	DispatchKeyFormat(iLight, "spotlight_radius",       	"180");
 | 
						|
	DispatchKeyFormat(iLight, "spawnflags",             	"1");
 | 
						|
	DispatchKeyFormat(iLight, "pitch",                  	"-90");
 | 
						|
	DispatchKeyFormat(iLight, "distance",               	"130");
 | 
						|
	DispatchKeyFormat(iLight, "brightness",             	"10");
 | 
						|
	DispatchKeyFormat(iLight, "angles",                  	"0 0 0");
 | 
						|
	DispatchKeyFormat(iLight, "_zero_percent_distance",     "50");
 | 
						|
	DispatchKeyFormat(iLight, "_quadratic_attn",            "115");
 | 
						|
	DispatchKeyFormat(iLight, "_linear_attn",               "70");
 | 
						|
	DispatchKeyFormat(iLight, "_lightHDR",                  "-1 -1 -1 1");
 | 
						|
	DispatchKeyFormat(iLight, "_light",                  	"255 128 0 1");
 | 
						|
	DispatchKeyFormat(iLight, "_inner_cone",                "0");
 | 
						|
	DispatchKeyFormat(iLight, "_fifty_percent_distance",    "42");
 | 
						|
	DispatchKeyFormat(iLight, "_constant_attn",             "50");
 | 
						|
	DispatchKeyFormat(iLight, "_cone",                  	"0");
 | 
						|
	SpawnAndActivate(iLight);
 | 
						|
	ParentToEntity(iLight, iKnife);
 | 
						|
 | 
						|
	// trigger_once strip.
 | 
						|
	int iTriggerStrip = CreateEntityAtOrigin("trigger_once", fOrigin);
 | 
						|
	DispatchKeyFormat(iTriggerStrip, "targetname",      "item_jumper_strip_%d", g_iCounter);
 | 
						|
	DispatchKeyFormat(iTriggerStrip, "spawnflags",      "1");
 | 
						|
	DispatchKeyFormat(iTriggerStrip, "startdisabled",   "1");
 | 
						|
	DispatchKeyFormat(iTriggerStrip, "OnStartTouch",    "item_spawn_weaponstrip,StripWeaponsAndSuit,,0,1");
 | 
						|
	SpawnAndActivate(iTriggerStrip);
 | 
						|
	ParentToEntity(iTriggerStrip, iKnife);
 | 
						|
 | 
						|
	// make the trigger work.
 | 
						|
	SetEntityBBox(iTriggerStrip, view_as<float>({-8.0, -8.0, -8.0}), view_as<float>({8.0, 8.0, 8.0}));
 | 
						|
	SetEntityProps(iTriggerStrip);
 | 
						|
 | 
						|
	// logic_relay jump.
 | 
						|
	int iRelayJump = CreateEntityAtOrigin("logic_relay", fOrigin);
 | 
						|
	DispatchKeyFormat(iRelayJump, "targetname",        "item_jumper_relay_%d", g_iCounter);
 | 
						|
	DispatchKeyFormat(iRelayJump, "spawnflags",        "0");
 | 
						|
	DispatchKeyFormat(iRelayJump, "OnTrigger",         "!self,Disable,,0,-1");
 | 
						|
	DispatchKeyFormat(iRelayJump, "OnTrigger",         "!self,Enable,,5,-1");
 | 
						|
	SpawnAndActivate(iRelayJump);
 | 
						|
	ParentToEntity(iRelayJump, iKnife);
 | 
						|
	
 | 
						|
	HookSingleEntityOutput(iRelayJump, "OnTrigger", JumperUse, false);
 | 
						|
 | 
						|
	
 | 
						|
	// game_ui.
 | 
						|
	int iControls = CreateEntityAtOrigin("game_ui", fOrigin);
 | 
						|
	DispatchKeyFormat(iControls, "targetname",          "item_jumper_controls_%d", g_iCounter);
 | 
						|
	DispatchKeyFormat(iControls, "spawnflags",          "0");
 | 
						|
	DispatchKeyFormat(iControls, "fieldofview",         "-1.0");
 | 
						|
	DispatchKeyFormat(iControls, "PressedAttack2",      "item_jumper_relay_%d,Trigger,,0,-1", g_iCounter);
 | 
						|
	SpawnAndActivate(iControls);
 | 
						|
	ParentToEntity(iControls, iKnife);
 | 
						|
 | 
						|
	AcceptEntityInput(iTriggerStrip, "Enable");
 | 
						|
	g_iCounter++;
 | 
						|
}
 | 
						|
 | 
						|
//----------------------------------------------------------------------------------------------------
 | 
						|
// Purpose:
 | 
						|
//----------------------------------------------------------------------------------------------------
 | 
						|
public void JumperPickup(const char[] output, int caller, int activator, float delay)
 | 
						|
{
 | 
						|
	ServerCommand("say ** %N has picked up Jumper **", activator);
 | 
						|
	PrintToChat(activator, "RIGHT CLICK = Jump Boost");
 | 
						|
	
 | 
						|
	if(ZR_IsClientHuman(activator))
 | 
						|
		CreateTimer(2.0, EquipWeapons, GetClientUserId(activator), TIMER_FLAG_NO_MAPCHANGE);
 | 
						|
}
 | 
						|
 | 
						|
//----------------------------------------------------------------------------------------------------
 | 
						|
// Purpose:
 | 
						|
//----------------------------------------------------------------------------------------------------
 | 
						|
public void JumperUse(const char[] output, int caller, int activator, float delay)
 | 
						|
{
 | 
						|
	float fPushVector[3];
 | 
						|
	fPushVector[0] = 0.0;
 | 
						|
	fPushVector[1] = 0.0;
 | 
						|
	fPushVector[2] = 500.0;
 | 
						|
	
 | 
						|
	float fCurrentVector[3];
 | 
						|
	GetEntPropVector(activator, Prop_Data, "m_vecVelocity", fCurrentVector);
 | 
						|
	
 | 
						|
	fPushVector[0] += fCurrentVector[0];
 | 
						|
	fPushVector[1] += fCurrentVector[1];
 | 
						|
	fPushVector[2] += fCurrentVector[2];
 | 
						|
					
 | 
						|
	TeleportEntity(activator, NULL_VECTOR, NULL_VECTOR, fPushVector);
 | 
						|
} |