b9efc06bba
either not used at all or in disabled
175 lines
7.4 KiB
PHP
175 lines
7.4 KiB
PHP
//----------------------------------------------------------------------------------------------------
|
|
// Purpose:
|
|
//----------------------------------------------------------------------------------------------------
|
|
public Action Command_Earth(int client, int argc)
|
|
{
|
|
float fOrigin[3];
|
|
|
|
if (argc < 1)
|
|
{
|
|
GetClientEyePosition(client, fOrigin);
|
|
SpawnEarthStaff(fOrigin);
|
|
LogAction(client, -1, "\"%L\" spawned Earth-Staff 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]) && (ZR_IsClientHuman(iTargets[i])))
|
|
{
|
|
GetClientEyePosition(iTargets[i], fOrigin);
|
|
SpawnEarthStaff(fOrigin, iTargets[i]);
|
|
LogAction(client, -1, "\"%L\" gave Earth-Staff to \"%L\".", client, iTargets[i]);
|
|
}
|
|
}
|
|
return Plugin_Handled;
|
|
}
|
|
|
|
//----------------------------------------------------------------------------------------------------
|
|
// Purpose:
|
|
//----------------------------------------------------------------------------------------------------
|
|
void SpawnEarthStaff(float fOrigin[3], int client = -1)
|
|
{
|
|
float fOriginTemp[3];
|
|
|
|
// weapon_knife.
|
|
int iPistol = CreateEntityAtOrigin("weapon_elite", fOrigin);
|
|
DispatchKeyFormat(iPistol, "targetname", "item_earth_staff_pistol_%d", g_iCounter);
|
|
DispatchKeyFormat(iPistol, "hammerid", "11051995%d", g_iCounter);
|
|
DispatchKeyFormat(iPistol, "spawnflags", "1");
|
|
DispatchKeyFormat(iPistol, "angles", "0 0 0");
|
|
DispatchKeyFormat(iPistol, "ammo", "999");
|
|
DispatchKeyFormat(iPistol, "OnPlayerPickup", "item_earth_staff_controls_%d,Activate,,0,1", g_iCounter);
|
|
SpawnAndActivate(iPistol);
|
|
|
|
HookSingleEntityOutput(iPistol, "OnPlayerPickup", EarthStaffPickup, false);
|
|
|
|
// model origin.
|
|
fOriginTemp[0] = fOrigin[0] + 24.0;
|
|
fOriginTemp[1] = fOrigin[1] - 16.0;
|
|
fOriginTemp[2] = fOrigin[2] - 32.0;
|
|
|
|
// prop_dynamic model.
|
|
int iModel = CreateEntityAtOrigin("prop_dynamic", fOriginTemp);
|
|
DispatchKeyFormat(iModel, "targetname", "item_earth_staff_model_%d", g_iCounter);
|
|
DispatchKeyFormat(iModel, "model", "models/staff/staff.mdl");
|
|
DispatchKeyFormat(iModel, "disablebonefollowers", "1");
|
|
DispatchKeyFormat(iModel, "defaultanim", "idle");
|
|
DispatchKeyFormat(iModel, "angles", "0 270 0");
|
|
DispatchKeyFormat(iModel, "solid", "0");
|
|
SpawnAndActivate(iModel);
|
|
ParentToEntity(iModel, iPistol);
|
|
|
|
|
|
// ambient_generic earth.
|
|
int iSoundEarth = CreateEntityAtOrigin("ambient_generic", fOrigin);
|
|
DispatchKeyFormat(iSoundEarth, "targetname", "item_earth_staff_sound_%d", g_iCounter);
|
|
DispatchKeyFormat(iSoundEarth, "spawnflags", "48");
|
|
DispatchKeyFormat(iSoundEarth, "radius", "1250");
|
|
DispatchKeyFormat(iSoundEarth, "sourceentityname", "item_earth_staff_model_%d", g_iCounter);
|
|
DispatchKeyFormat(iSoundEarth, "message", "physics/concrete/boulder_impact_hard1.wav");
|
|
DispatchKeyFormat(iSoundEarth, "volume", "10");
|
|
DispatchKeyFormat(iSoundEarth, "health", "10");
|
|
DispatchKeyFormat(iSoundEarth, "pitch", "100");
|
|
DispatchKeyFormat(iSoundEarth, "pitchstart", "100");
|
|
SpawnAndActivate(iSoundEarth);
|
|
ParentToEntity(iSoundEarth, iPistol);
|
|
|
|
// logic_relay earth.
|
|
int iRelayEarth = CreateEntityAtOrigin("logic_relay", fOrigin);
|
|
DispatchKeyFormat(iRelayEarth, "targetname", "item_earth_staff_relay_%d", g_iCounter);
|
|
DispatchKeyFormat(iRelayEarth, "spawnflags", "0");
|
|
DispatchKeyFormat(iRelayEarth, "OnTrigger", "!self,Disable,,0,-1");
|
|
DispatchKeyFormat(iRelayEarth, "OnTrigger", "!self,Enable,,5,-1");
|
|
DispatchKeyFormat(iRelayEarth, "OnTrigger", "item_earth_staff_sound_%d,PlaySound,,0.75,-1", g_iCounter);
|
|
DispatchKeyFormat(iRelayEarth, "OnTrigger", "item_earth_staff_model_%d,SetAnimation,Earth,0,-1", g_iCounter);
|
|
SpawnAndActivate(iRelayEarth);
|
|
ParentToEntity(iRelayEarth, iPistol);
|
|
|
|
HookSingleEntityOutput(iRelayEarth, "OnTrigger", EarthStaffUse, false);
|
|
|
|
// game_ui.
|
|
int iControls = CreateEntityAtOrigin("game_ui", fOrigin);
|
|
DispatchKeyFormat(iControls, "targetname", "item_earth_staff_controls_%d", g_iCounter);
|
|
DispatchKeyFormat(iControls, "spawnflags", "0");
|
|
DispatchKeyFormat(iControls, "fieldofview", "-1.0");
|
|
DispatchKeyFormat(iControls, "PressedAttack2", "item_earth_staff_relay_%d,Trigger,,0,-1", g_iCounter);
|
|
SpawnAndActivate(iControls);
|
|
ParentToEntity(iControls, iPistol);
|
|
|
|
g_iCounter++;
|
|
|
|
if (client > 0)
|
|
{
|
|
int iWeaponSlot = SDKCall(g_hGetSlot, iPistol);
|
|
int WeaponInSlot = GetPlayerWeaponSlot(client, iWeaponSlot);
|
|
if(WeaponInSlot != -1)
|
|
CS_DropWeapon(client, WeaponInSlot, false);
|
|
|
|
if(SDKCall(g_hBumpWeapon, client, iPistol))
|
|
SDKCall(g_hOnPickedUp, iPistol, client);
|
|
}
|
|
}
|
|
|
|
//----------------------------------------------------------------------------------------------------
|
|
// Purpose:
|
|
//----------------------------------------------------------------------------------------------------
|
|
public void EarthStaffPickup(const char[] output, int caller, int activator, float delay)
|
|
{
|
|
ServerCommand("say ** %N has picked up the Earth-Staff **", activator);
|
|
PrintToChat(activator, "Right Click with Knife = Use.");
|
|
}
|
|
|
|
//----------------------------------------------------------------------------------------------------
|
|
// Purpose:
|
|
//----------------------------------------------------------------------------------------------------
|
|
public void EarthStaffUse(const char[] output, int caller, int activator, float delay)
|
|
{
|
|
CreateTimer(0.75, SpawnEarth, GetClientUserId(activator), TIMER_FLAG_NO_MAPCHANGE);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------------------------------
|
|
// Purpose:
|
|
//----------------------------------------------------------------------------------------------------
|
|
public Action SpawnEarth(Handle timer, any userid)
|
|
{
|
|
int activator = GetClientOfUserId(userid);
|
|
|
|
float fOrigin[3];
|
|
float fAngles[3];
|
|
GetClientEyeAngles(activator, fAngles);
|
|
GetClientEyePosition(activator, fOrigin);
|
|
fAngles[0] = 0.0;
|
|
fAngles[2] = 0.0;
|
|
fOrigin[0] = fOrigin[0] + Cosine(DegToRad(fAngles[1])) * 334.0;
|
|
fOrigin[1] = fOrigin[1] + Sine(DegToRad(fAngles[1])) * 334.0;
|
|
fOrigin[2] = fOrigin[2] - 23.00;
|
|
|
|
// prop_dynamic model.
|
|
int iModel = CreateEntityAtOrigin("prop_dynamic", fOrigin);
|
|
DispatchKeyFormat(iModel, "targetname", "item_earth_prop_%d", g_iCounter);
|
|
DispatchKeyFormat(iModel, "model", "models/ffxii/earthmodel1.mdl");
|
|
DispatchKeyFormat(iModel, "spawnflags", "0");
|
|
DispatchKeyFormat(iModel, "PerformanceMode", "0");
|
|
DispatchKeyFormat(iModel, "solid", "6");
|
|
DispatchKeyFormat(iModel, "OnUser1", "!self,Break,,6,-1");
|
|
DispatchKeyFormat(iModel, "OnUser1", "!self,Kill,,6,-1");
|
|
SpawnAndActivate(iModel);
|
|
AcceptEntityInput(iModel, "FireUser1");
|
|
|
|
g_iCounter ++;
|
|
} |