//---------------------------------------------------------------------------------------------------- // Purpose: //---------------------------------------------------------------------------------------------------- public Action Command_WhiteKnight(int client, int argc) { float fOrigin[3]; if (argc < 1) { GetClientEyePosition(client, fOrigin); SpawnWhiteKnight(fOrigin); LogAction(client, -1, "\"%L\" spawned WhiteKnight 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_IsClientZombie(iTargets[i]))) { GetClientEyePosition(iTargets[i], fOrigin); SpawnWhiteKnight(fOrigin); LogAction(client, -1, "\"%L\" gave WhiteKnight to \"%L\".", client, iTargets[i]); } } return Plugin_Handled; } //---------------------------------------------------------------------------------------------------- // Purpose: //---------------------------------------------------------------------------------------------------- public void SpawnWhiteKnight(float fOrigin[3]) { float fOriginTemp[3]; // weapon_knife. int iKnife = CreateEntityAtOrigin("weapon_knife", fOrigin); DispatchKeyFormat(iKnife, "targetname", "item_knight_knife_%d", g_iCounter); DispatchKeyFormat(iKnife, "hammerid", "11051995%d", g_iCounter); DispatchKeyFormat(iKnife, "spawnflags", "1"); DispatchKeyFormat(iKnife, "angles", "0 0 0"); SpawnAndActivate(iKnife); HookSingleEntityOutput(iKnife, "OnPlayerPickup", WhiteKnightPickup, true); // model origin. fOriginTemp[0] = fOrigin[0] + 6.0; fOriginTemp[1] = fOrigin[1] + 0.0; fOriginTemp[2] = fOrigin[2] - 30.0; // prop_dynamic model. int iModel = CreateEntityAtOrigin("prop_dynamic", fOriginTemp); DispatchKeyFormat(iModel, "targetname", "item_knight_model_%d", g_iCounter); DispatchKeyFormat(iModel, "model", "models/dog_jugger.mdl"); DispatchKeyFormat(iModel, "disablebonefollowers", "1"); DispatchKeyFormat(iModel, "defaultanim", "dog_run"); DispatchKeyFormat(iModel, "angles", "0 0 0"); DispatchKeyFormat(iModel, "solid", "0"); SpawnAndActivate(iModel); ParentToEntity(iModel, iKnife); // trigger_once strip. int iTriggerStrip = CreateEntityAtOrigin("trigger_once", fOrigin); DispatchKeyFormat(iTriggerStrip, "targetname", "item_knight_strip_%d", g_iCounter); DispatchKeyFormat(iTriggerStrip, "filtername", "item_spawn_human_filter"); 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({-8.0, -8.0, -8.0}), view_as({8.0, 8.0, 8.0})); SetEntityProps(iTriggerStrip); AcceptEntityInput(iTriggerStrip, "Enable"); g_iCounter++; } //---------------------------------------------------------------------------------------------------- // Purpose: //---------------------------------------------------------------------------------------------------- public void WhiteKnightPickup(const char[] output, int caller, int activator, float delay) { ServerCommand("say ** %N has picked up the White Knight **", activator); PrintToChat(activator, " LEFT CLICK = ATTACK and RIGHT CLICK = SHIELD."); }