From ab0a3e5f48cbe533017b73c8ad6c06b484b31415 Mon Sep 17 00:00:00 2001 From: Battlefield Duck Date: Tue, 16 Jul 2019 05:05:10 +0800 Subject: [PATCH] v1.7 - Fix Smart Copy bug - Fix some syntax - Add Set Sequences - Add Set Animation --- plugins/TF2Sandbox-ToolGun.smx | Bin 21202 -> 21958 bytes scripting/TF2Sandbox-ToolGun.sp | 244 +++++++++++++++++++++++--------- 2 files changed, 178 insertions(+), 66 deletions(-) diff --git a/plugins/TF2Sandbox-ToolGun.smx b/plugins/TF2Sandbox-ToolGun.smx index 6efd85a42496119297febedc1aa81992b0abbbe0..cbbb8ce34a0f4a455ce94c91c32dccf9a68e7cd9 100644 GIT binary patch literal 21958 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 literal 21202 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 U#~BB3o6IKx;*OaA7yG#5LYP>#`Tzg` diff --git a/scripting/TF2Sandbox-ToolGun.sp b/scripting/TF2Sandbox-ToolGun.sp index bf8d760..d8e8b14 100644 --- a/scripting/TF2Sandbox-ToolGun.sp +++ b/scripting/TF2Sandbox-ToolGun.sp @@ -3,7 +3,7 @@ #define DEBUG #define PLUGIN_AUTHOR "BattlefieldDuck" -#define PLUGIN_VERSION "1.6" +#define PLUGIN_VERSION "1.7" #include #include @@ -114,7 +114,7 @@ public void OnClientPutInServer(int client) SDKHook(client, SDKHook_WeaponSwitchPost, WeaponSwitchHookPost); g_iClientVMRef[client] = INVALID_ENT_REFERENCE; - g_iAimPointRef[client] = EntIndexToEntRef(CreateAimPoint()); + g_iAimPointRef[client] = INVALID_ENT_REFERENCE; g_iCopyEntityRef[client] = INVALID_ENT_REFERENCE; } @@ -220,6 +220,7 @@ public Action WeaponSwitchHookPost(int client, int entity) return Plugin_Continue; } +#define MAX_TOOLS 10 public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3], float angles[3], int &weapon, int &subtype, int &cmdnum, int &tickcount, int &seed, int mouse[2]) { int iViewModel = GetEntPropEnt(client, Prop_Send, "m_hViewModel"); @@ -536,6 +537,52 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3 } } } + //Set Sequences + case (9): + { + if (IsValidEntity(entity)) + { + if ((buttons & IN_ATTACK) || (buttons & IN_ATTACK2)) + { + int iSequence = GetEntProp(entity, Prop_Send, "m_nSequence"); + if (buttons & IN_ATTACK) + { + iSequence += 1; + } + else if (buttons & IN_ATTACK2 && iSequence > 0) + { + iSequence -= 1; + } + + SetEntProp(entity, Prop_Send, "m_nSequence", iSequence); + + PrintCenterText(client, "Sequence: %i", iSequence); + } + } + } + //Set Animation + case (10): + { + if (IsValidEntity(entity)) + { + if (buttons & IN_ATTACK) + { + if (SetAnimation(entity)) + { + PrintCenterText(client, "Set Animation successfully"); + } + else + { + PrintCenterText(client, "No Animation found!"); + } + } + else if (buttons & IN_ATTACK2) + { + SetVariantString("0.0"); + AcceptEntityInput(entity, "SetPlaybackRate"); + } + } + } } } else if (g_fToolsCD[client] > 0.0) @@ -552,7 +599,14 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3 EmitSoundToClient(client, SONND_TOOLGUN_SELECT, client, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 1.0, 100); - (g_iTools[client] < 8)? (g_iTools[client]++) : (g_iTools[client] = 0); + if (buttons & IN_DUCK) + { + (g_iTools[client] > 0)? (g_iTools[client]--) : (g_iTools[client] = MAX_TOOLS); + } + else + { + (g_iTools[client] < MAX_TOOLS)? (g_iTools[client]++) : (g_iTools[client] = 0); + } //Reset value if (g_iTools[client] == 3) @@ -578,7 +632,7 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3 } char display[170]; - Format(display, sizeof(display), "------------------------\n%s\n------------------------\n[MOUSE1] %s\n[MOUSE2] %s\n[RELOAD] Switch Tools (%i)" + Format(display, sizeof(display), "------------------------\n%s\n------------------------\n[MOUSE1] %s\n[MOUSE2] %s\n[RELOAD] Next Tool (%i)" , GetToolDisplay(g_iTools[client], client), GetToolMouse1(g_iTools[client]), GetToolMouse2(g_iTools[client]), g_iTools[client]); if (g_iTools[client] == 8) @@ -629,8 +683,14 @@ void TE_SendLaser(int client) int clientvm = EntRefToEntIndex(g_iClientVMRef[client]); int iAimPoint = EntRefToEntIndex(g_iAimPointRef[client]); - if (clientvm != INVALID_ENT_REFERENCE && iAimPoint != INVALID_ENT_REFERENCE) + if (clientvm != INVALID_ENT_REFERENCE) { + if (iAimPoint == INVALID_ENT_REFERENCE) + { + iAimPoint = CreateAimPoint(); + g_iAimPointRef[client] = EntIndexToEntRef(iAimPoint); + } + TeleportEntity(iAimPoint, GetClientAimPosition(client), NULL_VECTOR, NULL_VECTOR); TE_SetupBeamEnts(iAimPoint, EntRefToEntIndex(g_iClientVMRef[client]), g_iModelIndex, g_iHaloIndex, 0, 15, 0.1, 1.0, 1.0, 1, 0.0, {255, 255, 255, 255}, 10, 20); @@ -694,38 +754,17 @@ int TF2_EquipWearable(int client, int entity) int CreateAimPoint() { - int iAimPoint = CreateEntityByName("prop_dynamic_override"); - DispatchKeyValue(iAimPoint, "model", MODEL_TOOLGUNWM); + int iAimPoint = CreateEntityByName("prop_dynamic_override"); + + SetEntityModel(iAimPoint, MODEL_TOOLGUNWM); SetEntPropFloat(iAimPoint, Prop_Send, "m_flModelScale", 0.0); DispatchSpawn(iAimPoint); + return iAimPoint; } -//Normally 2 is okay but 4 is more secure -#define FRAME_DELAY 5 - -//Credits: Pelipoika -public void KillAimPointPost(int entity) -{ - static int iFrame = 0; - - if(++iFrame < FRAME_DELAY) - { - RequestFrame(KillAimPointPost, entity); - return; - } - - int iAimPoint = EntRefToEntIndex(entity); - if(iAimPoint != INVALID_ENT_REFERENCE) - { - AcceptEntityInput(iAimPoint, "Kill"); - } - - iFrame = 0; -} - //Credits: Alienmario void TE_SetupBeamEnts(int ent1, int ent2, int ModelIndex, int HaloIndex, int StartFrame, int FrameRate, float Life, float Width, float EndWidth, int FadeLength, float Amplitude, const int Color[4], int Speed, int flags) { @@ -753,6 +792,7 @@ float[] GetClientEyePositionEx(int client) { float pos[3]; GetClientEyePosition(client, pos); + return pos; } @@ -760,6 +800,7 @@ float[] GetClientEyeAnglesEx(int client) { float angles[3]; GetClientEyeAngles(client, angles); + return angles; } @@ -774,6 +815,7 @@ float[] GetClientAimPosition(int client) } CloseHandle(trace); + return endpos; } @@ -825,22 +867,27 @@ public bool TraceEntityFilter(int entity, int mask, int client) int Duplicator(int iEntity) { //Get Value - float fOrigin[3], fAngles[3], fSize; + float fOrigin[3], fAngles[3]; char szModel[64], szName[128], szClass[32]; - int iCollision, iRed, iGreen, iBlue, iAlpha, iSkin; - RenderFx EntityRenderFx; - + int iRed, iGreen, iBlue, iAlpha; + GetEntityClassname(iEntity, szClass, sizeof(szClass)); + + if (StrEqual(szClass, "prop_dynamic")) + { + szClass = "prop_dynamic_override"; + } + else if (StrEqual(szClass, "prop_physics")) + { + szClass = "prop_physics_override"; + } + GetEntPropString(iEntity, Prop_Data, "m_ModelName", szModel, sizeof(szModel)); GetEntPropVector(iEntity, Prop_Send, "m_vecOrigin", fOrigin); GetEntPropVector(iEntity, Prop_Data, "m_angRotation", fAngles); - iCollision = GetEntProp(iEntity, Prop_Data, "m_CollisionGroup", 4); - fSize = GetEntPropFloat(iEntity, Prop_Send, "m_flModelScale"); GetEntityRenderColor(iEntity, iRed, iGreen, iBlue, iAlpha); - EntityRenderFx = GetEntityRenderFx(iEntity); - iSkin = GetEntProp(iEntity, Prop_Send, "m_nSkin"); GetEntPropString(iEntity, Prop_Data, "m_iName", szName, sizeof(szName)); - + int iNewEntity = CreateEntityByName(szClass); if (iNewEntity > MaxClients && IsValidEntity(iNewEntity)) { @@ -852,24 +899,83 @@ int Duplicator(int iEntity) PrecacheModel(szModel); } - DispatchKeyValue(iNewEntity, "model", szModel); + SetEntityModel(iNewEntity, szModel); TeleportEntity(iNewEntity, fOrigin, fAngles, NULL_VECTOR); DispatchSpawn(iNewEntity); - SetEntData(iNewEntity, FindSendPropInfo("CBaseEntity", "m_CollisionGroup"), iCollision, 4, true); - SetEntPropFloat(iNewEntity, Prop_Send, "m_flModelScale", fSize); - if(iAlpha < 255) SetEntityRenderMode(iNewEntity, RENDER_TRANSCOLOR); - else SetEntityRenderMode(iNewEntity, RENDER_NORMAL); + SetEntData(iNewEntity, FindSendPropInfo("CBaseEntity", "m_CollisionGroup"), GetEntProp(iEntity, Prop_Data, "m_CollisionGroup", 4), 4, true); + SetEntPropFloat(iNewEntity, Prop_Send, "m_flModelScale", GetEntPropFloat(iEntity, Prop_Send, "m_flModelScale")); + (iAlpha < 255) ? SetEntityRenderMode(iNewEntity, RENDER_TRANSCOLOR) : SetEntityRenderMode(iNewEntity, RENDER_NORMAL); SetEntityRenderColor(iNewEntity, iRed, iGreen, iBlue, iAlpha); - SetEntityRenderFx(iNewEntity, EntityRenderFx); - SetEntProp(iNewEntity, Prop_Send, "m_nSkin", iSkin); + SetEntityRenderFx(iNewEntity, GetEntityRenderFx(iEntity)); + SetEntProp(iNewEntity, Prop_Send, "m_nSkin", GetEntProp(iEntity, Prop_Send, "m_nSkin")); SetEntPropString(iNewEntity, Prop_Data, "m_iName", szName); - + return iNewEntity; } return -1; } +bool SetAnimation(int entity) +{ + char szModel[64]; + GetEntPropString(entity, Prop_Data, "m_ModelName", szModel, sizeof(szModel)); + + if (StrContains(szModel, "pickup_powerup_") != -1 + || StrEqual(szModel, "models/items/tf_gift.mdl") + || StrEqual(szModel, "models/props_halloween/halloween_gift.mdl") + || StrEqual(szModel, "models/flag/briefcase.mdl") + || StrEqual(szModel, "models/flag/ticket_case.mdl") + || StrEqual(szModel, "models/props_doomsday/australium_container.mdl") + || StrEqual(szModel, "models/buggy.mdl")) + { + SetEntProp(entity, Prop_Send, "m_nSequence", 0); + + SetVariantString("spin"); + AcceptEntityInput(entity, "SetAnimation"); + AcceptEntityInput(entity, "Enable"); + + return true; + } + else if (StrContains(szModel, "ammopack_") != -1 + || StrContains(szModel, "medkit_") != -1 + || StrContains(szModel, "currencypack_") != -1 + || StrEqual(szModel, "models/items/plate_robo_sandwich.mdl") + || StrEqual(szModel, "models/items/plate_sandwich_xmas.mdl") + || StrEqual(szModel, "models/items/plate.mdl")) + { + SetEntProp(entity, Prop_Send, "m_nSequence", 0); + + SetVariantString("idle"); + AcceptEntityInput(entity, "SetAnimation"); + AcceptEntityInput(entity, "Enable"); + + return true; + } + else if (StrContains(szModel, "models/bots/boss_bot/tank_track") != -1) + { + SetEntProp(entity, Prop_Send, "m_nSequence", 0); + + SetVariantString("forward"); + AcceptEntityInput(entity, "SetAnimation"); + AcceptEntityInput(entity, "Enable"); + + return true; + } + else if (StrEqual(szModel, "models/bots/boss_bot/boss_tank.mdl")) + { + SetEntProp(entity, Prop_Send, "m_nSequence", 0); + + SetVariantString("movement"); + AcceptEntityInput(entity, "SetAnimation"); + AcceptEntityInput(entity, "Enable"); + + return true; + } + + return false; +} + #define SPACE " " char[] GetToolDisplay(int tool, int client) { @@ -885,6 +991,8 @@ char[] GetToolDisplay(int tool, int client) case (6):toolname = " Set Skin "; case (7):toolname = " Set Render Fx "; case (8):toolname = " Set Effect "; + case (9):toolname = " Set Sequence "; + case (10):toolname = " Set Animation "; } Format(toolname, sizeof(toolname), "%s%s%s", SPACE, toolname, SPACE); @@ -913,15 +1021,17 @@ char[] GetToolMouse1(int tool) char mouse1[30]; switch (tool) { - case (0):mouse1 = "Remove"; - case (1):mouse1 = "Larger"; - case (2):mouse1 = "Collide"; - case (3):mouse1 = "Copy"; - case (4):mouse1 = "More Transparent"; - case (5):mouse1 = "Next Color"; - case (6):mouse1 = "Next Skin"; - case (7):mouse1 = "Next Render Fx"; - case (8):mouse1 = "Apply Effect"; + case (0): mouse1 = "Remove"; + case (1): mouse1 = "Larger"; + case (2): mouse1 = "Collide"; + case (3): mouse1 = "Copy"; + case (4): mouse1 = "More Transparent"; + case (5): mouse1 = "Next Color"; + case (6): mouse1 = "Next Skin"; + case (7): mouse1 = "Next Render Fx"; + case (8): mouse1 = "Apply Effect"; + case (9): mouse1 = "Next Sequence"; + case (10): mouse1 = "Enable Animation"; } return mouse1; @@ -932,15 +1042,17 @@ char[] GetToolMouse2(int tool) char mouse2[60]; switch (tool) { - case (0):mouse2 = "Remove"; - case (1):mouse2 = "Smaller"; - case (2):mouse2 = "No Collide"; - case (3):mouse2 = "Paste"; - case (4):mouse2 = "More Visible"; - case (5):mouse2 = "Restore"; - case (6):mouse2 = "Previous Skin"; - case (7):mouse2 = "Previous Render Fx"; - case (8):mouse2 = "Remove Effect\n[MOUSE3] Change Effect"; + case (0): mouse2 = "Remove"; + case (1): mouse2 = "Smaller"; + case (2): mouse2 = "No Collide"; + case (3): mouse2 = "Paste"; + case (4): mouse2 = "More Visible"; + case (5): mouse2 = "Restore"; + case (6): mouse2 = "Previous Skin"; + case (7): mouse2 = "Previous Render Fx"; + case (8): mouse2 = "Remove Effect\n[MOUSE3] Change Effect"; + case (9): mouse2 = "Previous Sequence"; + case (10): mouse2 = "Disable Animation"; } return mouse2; @@ -971,7 +1083,7 @@ void TE_ParticleToAll(char[] Name, float origin[3] = NULL_VECTOR, float start[3] } } - if (stridx==INVALID_STRING_INDEX) + if (stridx == INVALID_STRING_INDEX) { LogError("Could not find particle: %s", Name); return;