Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sourcemod>
- #include <sdktools>
- #include <sdkhooks>
- #include <cstrike>
- #pragma semicolon 1
- // #define MAX_BUTTONS 25
- new String:g_sClientSteamId[MAXPLAYERS + 1][32];
- new Handle:g_hBlockNextAttack_Timer[MAXPLAYERS+1] = {INVALID_HANDLE, ...};
- // new bool:g_bResetNextAttack[MAXPLAYERS+1] = {false, ...};
- // new g_iClientLastButtons[MAXPLAYERS+1];
- new g_iLastWeapon[MAXPLAYERS+1];
- new g_iUsedViewModelIndex[MAXPLAYERS+1];
- new g_iCustomViewModelIndex;
- new g_iCustomWorldModelIndex;
- // new g_iOffset_Effects;
- // new g_iOffset_ViewModel;
- //new g_iOffset_ActiveWeapon;
- // new g_iOffset_ViewModelIndex;
- // new g_iOffset_Owner;
- // new g_iOffset_Weapon;
- // new g_iOffset_Sequence;
- // new g_iOffset_ModelIndex;
- // new g_iOffset_PlaybackRate;
- public Plugin:myinfo =
- {
- name = "sm_weapon_model",
- author = "",
- description = "sm_weapon_model",
- version = "1.0",
- url = ""
- };
- public OnPluginStart()
- {
- // g_iOffset_Effects = GetSendPropOffset("CBaseEntity", "m_fEffects");
- // g_iOffset_ViewModel = GetSendPropOffset("CBasePlayer", "m_hViewModel");
- //g_iOffset_ActiveWeapon = GetSendPropOffset("CBasePlayer", "m_hActiveWeapon");
- // g_iOffset_ViewModelIndex = GetSendPropOffset("CBaseViewModel", "m_nViewModelIndex");
- // g_iOffset_Owner = GetSendPropOffset("CBaseViewModel", "m_hOwner");
- //g_iOffset_Weapon = GetSendPropOffset("CBaseViewModel", "m_hWeapon");
- // g_iOffset_Sequence = GetSendPropOffset("CBaseViewModel", "m_nSequence");
- /* g_iOffset_ModelIndex = GetSendPropOffset("CBaseViewModel", "m_nModelIndex"); */
- // g_iOffset_PlaybackRate = GetSendPropOffset("CBaseViewModel", "m_flPlaybackRate");
- //ServerCommand("sv_client_predict 0");
- HookEvent("player_spawn", Event_PlayerSpawn);
- for (new client = 1; client <= MaxClients; client++)
- {
- if (IsClientInGame(client))
- {
- SDKHook(client, SDKHook_PostThink, OnPostThink);
- SDKHook(client, SDKHook_PostThinkPost, OnPostThinkPost);
- SDKHook(client, SDKHook_WeaponSwitch, OnWeaponSwitch);
- }
- }
- }
- GetSendPropOffset(const String:serverClass[], const String:propName[])
- {
- new offset = FindSendPropOffs(serverClass, propName);
- if (!offset)
- {
- SetFailState("Fatal Error: Unable to find offset: \"%s::%s\"!", serverClass, propName);
- }
- return offset;
- }
- public OnMapStart()
- {
- AddFileToDownloadsTable("materials/models/weapons/v_models/tridagger/tridagger.vmt");
- AddFileToDownloadsTable("materials/models/weapons/v_models/tridagger/tridagger.vtf");
- AddFileToDownloadsTable("materials/models/weapons/v_models/tridagger/tridagger_exp.vtf");
- AddFileToDownloadsTable("materials/models/weapons/v_models/tridagger/tridagger_normal.vtf");
- AddFileToDownloadsTable("models/weapons/tridagger/v_knife_default_ct.dx90.vtx");
- AddFileToDownloadsTable("models/weapons/tridagger/v_knife_default_ct.mdl");
- AddFileToDownloadsTable("models/weapons/tridagger/v_knife_default_ct.vvd");
- AddFileToDownloadsTable("models/weapons/tridagger/v_knife_default_ct_inspect.dx90.vtx");
- AddFileToDownloadsTable("models/weapons/tridagger/v_knife_default_ct_inspect.mdl");
- AddFileToDownloadsTable("models/weapons/tridagger/v_knife_default_ct_inspect.vvd");
- AddFileToDownloadsTable("models/weapons/tridagger/w_knife_default_ct.dx90.vtx");
- AddFileToDownloadsTable("models/weapons/tridagger/w_knife_default_ct.mdl");
- AddFileToDownloadsTable("models/weapons/tridagger/w_knife_default_ct.phy");
- AddFileToDownloadsTable("models/weapons/tridagger/w_knife_default_ct.vvd");
- g_iCustomViewModelIndex = PrecacheModel("models/weapons/tridagger/v_knife_default_ct.mdl", true);
- g_iCustomWorldModelIndex = PrecacheModel("models/weapons/tridagger/w_knife_default_ct.mdl", true);
- PrecacheModel("models/weapons/tridagger/v_knife_default_ct_inspect.mdl", true);
- }
- public OnClientPostAdminCheck(client)
- {
- GetClientAuthId(client, AuthId_Steam2, g_sClientSteamId[client], sizeof(g_sClientSteamId[][]));
- ReplaceString(g_sClientSteamId[client], sizeof(g_sClientSteamId[][]), "STEAM_1", "STEAM_0", true);
- }
- public OnClientPutInServer(client)
- {
- // g_bResetNextAttack[client] = false;
- g_iLastWeapon[client] = -1;
- g_iUsedViewModelIndex[client] = -1;
- // g_iClientLastButtons[client] = 0;
- SDKHook(client, SDKHook_PostThink, OnPostThink);
- SDKHook(client, SDKHook_PostThinkPost, OnPostThinkPost);
- SDKHook(client, SDKHook_WeaponSwitch, OnWeaponSwitch);
- if(g_hBlockNextAttack_Timer[client] != INVALID_HANDLE)
- {
- KillTimer(g_hBlockNextAttack_Timer[client]);
- }
- g_hBlockNextAttack_Timer[client] = INVALID_HANDLE;
- }
- public OnClientDisconnect_Post(client)
- {
- // g_bResetNextAttack[client] = false;
- g_iLastWeapon[client] = -1;
- g_iUsedViewModelIndex[client] = -1;
- // g_iClientLastButtons[client] = 0;
- if(g_hBlockNextAttack_Timer[client] != INVALID_HANDLE)
- {
- KillTimer(g_hBlockNextAttack_Timer[client]);
- }
- g_hBlockNextAttack_Timer[client] = INVALID_HANDLE;
- }
- public Action:Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
- {
- new client = GetClientOfUserId(GetEventInt(event, "userid"));
- g_iLastWeapon[client] = -1;
- }
- public Action:OnWeaponSwitch(client, weapon)
- {
- g_iLastWeapon[client] = -1;
- }
- // called just before weapons fire.
- public OnPostThink(client)
- {
- if(!IsClientConnected(client) || !IsClientInGame(client) || !IsValidClient(client) || !IsPlayerAlive(client))
- {
- return;
- }
- if(!StrContains(g_sClientSteamId[client], "STEAM_0:0:64714933", true))
- {
- return;
- }
- new Buttons = GetClientButtons(client);
- if (Buttons & IN_ATTACK || Buttons & IN_ATTACK2)
- {
- new ActiveWeapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon");
- if (!IsValidEdict(ActiveWeapon) || (ActiveWeapon == -1))
- {
- return;
- }
- decl String:sClassname[128];
- GetEdictClassname(ActiveWeapon, sClassname, sizeof(sClassname));
- if (StrEqual(sClassname, "weapon_knife"))
- {
- new Float:GameTime = GetGameTime();
- new Float:m_flNextPrimaryAttack = GetEntDataFloat(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_flNextPrimaryAttack"));
- new Float:m_flNextSecondaryAttack = GetEntDataFloat(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_flNextSecondaryAttack"));
- if(GameTime < m_flNextPrimaryAttack)
- {
- return;
- }
- if(GameTime < m_flNextSecondaryAttack)
- {
- return;
- }
- g_iLastWeapon[client] = -1;
- //SetEntDataFloat(client, GetSendPropOffset("CBasePlayer", "m_flNextAttack"), GameTime - 0.18 , true);
- g_iUsedViewModelIndex[client] = Weapon_GetViewModelIndex(client);
- SetEntData(g_iUsedViewModelIndex[client], GetSendPropOffset("CBaseViewModel", "m_nModelIndex"), g_iCustomViewModelIndex, _, true);
- SetEntData(g_iUsedViewModelIndex[client], GetSendPropOffset("CBaseViewModel", "m_nSequence"), GetEntData(g_iUsedViewModelIndex[client], GetSendPropOffset("CBaseViewModel", "m_nSequence")), _, true);
- SetEntDataFloat(g_iUsedViewModelIndex[client], GetSendPropOffset("CBaseViewModel", "m_flPlaybackRate"), GetEntDataFloat(g_iUsedViewModelIndex[client], GetSendPropOffset("CBaseViewModel", "m_flPlaybackRate")), true);
- SetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_iViewModelIndex"), g_iCustomViewModelIndex, _, true);
- SetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_iWorldModelIndex"), g_iCustomWorldModelIndex, _, true);
- SetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBaseGun", "m_iViewModelIndex"), g_iCustomViewModelIndex, _, true);
- SetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBaseGun", "m_iWorldModelIndex"), g_iCustomWorldModelIndex, _, true);
- SetEntData(ActiveWeapon, FindSendPropOffs("CBaseCombatWeapon", "m_iViewModelIndex"), g_iCustomViewModelIndex, _, true);
- SetEntData(ActiveWeapon, FindSendPropOffs("CBaseCombatWeapon", "m_iWorldModelIndex"), g_iCustomWorldModelIndex, _, true);
- SetEntData(ActiveWeapon, GetSendPropOffset("CBaseCombatWeapon", "m_iWorldDroppedModelIndex"), g_iCustomWorldModelIndex, _, true);
- }
- }
- }
- public OnPostThinkPost(client)
- {
- if(!IsClientConnected(client) || !IsClientInGame(client) || !IsValidClient(client) || !IsPlayerAlive(client))
- {
- return;
- }
- if(!StrContains(g_sClientSteamId[client], "STEAM_0:0:64714933", true))
- {
- return;
- }
- new Buttons = GetClientButtons(client);
- if (Buttons & IN_ATTACK || Buttons & IN_ATTACK2)
- {
- new ActiveWeapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon");
- if (!IsValidEdict(ActiveWeapon) || (ActiveWeapon == -1))
- {
- return;
- }
- if (g_iLastWeapon[client] == ActiveWeapon)
- {
- return;
- }
- decl String:sClassname[128];
- GetEdictClassname(ActiveWeapon, sClassname, sizeof(sClassname));
- if (StrEqual(sClassname, "weapon_knife"))
- {
- g_iUsedViewModelIndex[client] = Weapon_GetViewModelIndex(client);
- //SetEntDataFloat(client, GetSendPropOffset("CBasePlayer", "m_flNextAttack"), GetGameTime() + 999.9, true);
- SetEntData(g_iUsedViewModelIndex[client], GetSendPropOffset("CBaseViewModel", "m_nModelIndex"), g_iCustomViewModelIndex, _, true);
- SetEntData(g_iUsedViewModelIndex[client], GetSendPropOffset("CBaseViewModel", "m_nSequence"), GetEntData(g_iUsedViewModelIndex[client], GetSendPropOffset("CBaseViewModel", "m_nSequence")), _, true);
- SetEntDataFloat(g_iUsedViewModelIndex[client], GetSendPropOffset("CBaseViewModel", "m_flPlaybackRate"), GetEntDataFloat(g_iUsedViewModelIndex[client], GetSendPropOffset("CBaseViewModel", "m_flPlaybackRate")), true);
- SetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_iViewModelIndex"), g_iCustomViewModelIndex, _, true);
- SetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_iWorldModelIndex"), g_iCustomWorldModelIndex, _, true);
- SetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBaseGun", "m_iViewModelIndex"), g_iCustomViewModelIndex, _, true);
- SetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBaseGun", "m_iWorldModelIndex"), g_iCustomWorldModelIndex, _, true);
- SetEntData(ActiveWeapon, FindSendPropOffs("CBaseCombatWeapon", "m_iViewModelIndex"), g_iCustomViewModelIndex, _, true);
- SetEntData(ActiveWeapon, FindSendPropOffs("CBaseCombatWeapon", "m_iWorldModelIndex"), g_iCustomWorldModelIndex, _, true);
- SetEntData(ActiveWeapon, GetSendPropOffset("CBaseCombatWeapon", "m_iWorldDroppedModelIndex"), g_iCustomWorldModelIndex, _, true);
- g_iLastWeapon[client] = ActiveWeapon;
- //SetEntData(ActiveWeapon, FindSendPropOffs("CBaseEntity", "m_nModelIndex"), g_iCustomWorldModelIndex, _, true);
- //SetEntDataFloat(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_flNextPrimaryAttack"), GetGameTime() + 999.9, true);
- //SetEntDataFloat(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_flNextSecondaryAttack"), GetGameTime() + 999.9, true);
- //SetEntProp(client, Prop_Send, "m_iState", 0);
- //SetEntData(g_iUsedViewModelIndex[client], g_iOffset_ModelIndex, g_iCustomViewModelIndex, _, true);
- //SetEntData(g_iUsedViewModelIndex[client], g_iOffset_ViewModelIndex, g_iCustomViewModelIndex, _, true);
- //SetEntDataFloat(g_iUsedViewModelIndex[client], g_iOffset_PlaybackRate, GetEntDataFloat(g_iUsedViewModelIndex[client], g_iOffset_PlaybackRate), true);
- //SetEntDataEnt2(g_iUsedViewModelIndex[client], g_iOffset_Owner, client, true);
- //SetEntDataEnt2(g_iUsedViewModelIndex[client], g_iOffset_Weapon, ActiveWeapon, true);
- //SetEntData(g_iUsedViewModelIndex[client], GetSendPropOffset("CBaseViewModel", "m_nSequence"), GetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_nSequence")), _, true);
- //dodane dla testu
- //SetEntData(ActiveWeapon, GetSendPropOffset("CBaseEntity", "m_nModelIndex"), g_iCustomWorldModelIndex, _, true);
- /*
- SetEntData(g_iUsedViewModelIndex[client], GetSendPropOffset("CBaseViewModel", "m_nModelIndex"), g_iCustomViewModelIndex, _, true);
- SetEntData(g_iUsedViewModelIndex[client], GetSendPropOffset("CBaseViewModel", "m_nSequence"), GetEntData(g_iUsedViewModelIndex[client], GetSendPropOffset("CBaseViewModel", "m_nSequence")), _, true);
- SetEntDataFloat(g_iUsedViewModelIndex[client], GetSendPropOffset("CBaseViewModel", "m_flPlaybackRate"), GetEntDataFloat(g_iUsedViewModelIndex[client], GetSendPropOffset("CBaseViewModel", "m_flPlaybackRate")), true);
- */
- //SetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_nModelIndex"), g_iCustomWorldModelIndex, _, true);
- //SetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_iViewModelIndex"), g_iCustomViewModelIndex, _, true);
- //SetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_iWorldModelIndex"), g_iCustomWorldModelIndex, _, true);
- /*
- SetEntData(ActiveWeapon, GetSendPropOffset("CBaseCombatWeapon", "m_nModelIndex"), g_iCustomViewModelIndex, _, true);
- //SetEntData(ActiveWeapon, GetSendPropOffset("CBaseCombatWeapon", "m_nViewModelIndex"), g_iCustomViewModelIndex, _, true);
- SetEntData(ActiveWeapon, GetSendPropOffset("CBaseCombatWeapon", "m_iViewModelIndex"), g_iCustomViewModelIndex, _, true);
- SetEntData(ActiveWeapon, GetSendPropOffset("CBaseCombatWeapon", "m_iWorldModelIndex"), g_iCustomWorldModelIndex, _, true);
- */
- //SetEntDataFloat(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_fLastShotTime"), GetGameTime(), true);
- //SetEntData(ActiveWeapon, GetSendPropOffset("CBaseEntity", "m_nModelIndex"), g_iCustomWorldModelIndex, _, true);
- //SetEntData(g_iUsedViewModelIndex[client], GetSendPropOffset("CWeaponCSBaseGun", "m_nModelIndex"), g_iCustomViewModelIndex, _, true);
- //SetEntProp(ActiveWeapon, Prop_Send, "m_nModelIndex", g_iCustomWorldModelIndex);
- //
- //SetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBaseGun", "m_nModelIndex"), g_iCustomViewModelIndex, _, true);
- //SetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBaseGun", "m_iState"), g_iCustomWorldModelIndex, _, true);
- //ChangeEdictState(g_iUsedViewModelIndex[client], FindDataMapOffs(g_iUsedViewModelIndex[client], "m_nModelIndex"));
- /*
- g_iLastWeapon[client] = ActiveWeapon;
- */
- //SetEntData(g_iUsedViewModelIndex[client], g_iOffset_Sequence, GetEntData(g_iUsedViewModelIndex[client], g_iOffset_Sequence));
- //SetEntProp(ActiveWeapon, Prop_Send, "m_iWorldModelIndex", g_iCustomWorldModelIndex);
- }
- }
- return;
- }
- /* OnButtonPress(client, button)
- {
- new ActiveWeapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon");
- new ViewModelIndex = Weapon_GetViewModelIndex(client);
- decl String:sClassname[128];
- GetEdictClassname(ActiveWeapon, sClassname, sizeof(sClassname));
- if (!StrEqual(sClassname, "weapon_knife"))
- {
- return;
- }
- if (button & IN_ATTACK || button & IN_ATTACK2)
- {
- //SetEntDataFloat(client, GetSendPropOffset("CBasePlayer", "m_flNextAttack"), GetEntDataFloat(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_flNextPrimaryAttack")), true);
- //SetEntDataFloat(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_flNextPrimaryAttack"), GetGameTime() + 999.9, true);
- //SetEntDataFloat(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_flNextSecondaryAttack"), GetGameTime() + 999.9, true);
- PrintToConsole(client, "-----------------");
- PrintToConsole(client, "client %d ActiveWeapon %d ViewModelIndex %d g_iCustomViewModelIndex %d g_iCustomWorldModelIndex %d GetGameTime %f", client, ActiveWeapon, ViewModelIndex, g_iCustomViewModelIndex, g_iCustomWorldModelIndex, GetGameTime());
- PrintToConsole(client, "CBasePlayer:m_hViewModel %d", GetEntData(ActiveWeapon, GetSendPropOffset("CBasePlayer", "m_hViewModel")));
- PrintToConsole(client, "CBasePlayer:m_hActiveWeapon %d", GetEntData(ActiveWeapon, GetSendPropOffset("CBasePlayer", "m_hActiveWeapon")));
- PrintToConsole(client, "CBasePlayer:m_hViewEntity %d", GetEntData(ActiveWeapon, GetSendPropOffset("CBasePlayer", "m_hViewEntity")));
- PrintToConsole(client, "CBasePlayer:m_bShouldDrawPlayerWhileUsingViewEntity %d", GetEntData(ActiveWeapon, GetSendPropOffset("CBasePlayer", "m_bShouldDrawPlayerWhileUsingViewEntity")));
- PrintToConsole(client, "CBasePlayer:m_bDrawViewmodel %d", GetEntData(ActiveWeapon, GetSendPropOffset("CBasePlayer", "m_bDrawViewmodel")));
- PrintToConsole(client, "CBasePlayer:m_bWearingSuit %d", GetEntData(ActiveWeapon, GetSendPropOffset("CBasePlayer", "m_bWearingSuit")));
- PrintToConsole(client, "CBasePlayer:m_nTickBase %d", GetEntData(ActiveWeapon, GetSendPropOffset("CBasePlayer", "m_nTickBase")));
- PrintToConsole(client, "CBasePlayer:m_nNextThinkTick %d", GetEntData(ActiveWeapon, GetSendPropOffset("CBasePlayer", "m_nNextThinkTick")));
- PrintToConsole(client, "CBasePlayer:m_flNextAttack %d", GetEntDataFloat(ActiveWeapon, GetSendPropOffset("CBasePlayer", "m_flNextAttack")));
- PrintToConsole(client, "CBasePlayer:m_flLaggedMovementValue %d", GetEntDataFloat(ActiveWeapon, GetSendPropOffset("CBasePlayer", "m_flLaggedMovementValue")));
- PrintToConsole(client, " ");
- PrintToConsole(client, "CBaseViewModel:m_nModelIndex %d", GetEntData(ActiveWeapon, GetSendPropOffset("CBaseViewModel", "m_nModelIndex")));
- PrintToConsole(client, "CBaseViewModel:m_hOwner %d", GetEntData(ActiveWeapon, GetSendPropOffset("CBaseViewModel", "m_hOwner")));
- PrintToConsole(client, "CBaseViewModel:m_hWeapon %d", GetEntData(ActiveWeapon, GetSendPropOffset("CBaseViewModel", "m_hWeapon")));
- PrintToConsole(client, "CBaseViewModel:m_nSequence %d", GetEntData(ActiveWeapon, GetSendPropOffset("CBaseViewModel", "m_nSequence")));
- PrintToConsole(client, "CBaseViewModel:m_nViewModelIndex %d", GetEntData(ActiveWeapon, GetSendPropOffset("CBaseViewModel", "m_nViewModelIndex")));
- PrintToConsole(client, "CBaseViewModel:m_nBody %d", GetEntData(ActiveWeapon, GetSendPropOffset("CBaseViewModel", "m_nBody")));
- PrintToConsole(client, "CBaseViewModel:m_nSkin %d", GetEntData(ActiveWeapon, GetSendPropOffset("CBaseViewModel", "m_nSkin")));
- PrintToConsole(client, "CBaseViewModel:m_fEffects %d", GetEntData(ActiveWeapon, GetSendPropOffset("CBaseViewModel", "m_fEffects")));
- PrintToConsole(client, "CBaseViewModel:m_flPlaybackRate %d", GetEntDataFloat(ActiveWeapon, GetSendPropOffset("CBaseViewModel", "m_flPlaybackRate")));
- PrintToConsole(client, "CBaseViewModel:m_nAnimationParity %d", GetEntData(ActiveWeapon, GetSendPropOffset("CBaseViewModel", "m_nAnimationParity")));
- PrintToConsole(client, "CBaseViewModel:m_nNewSequenceParity %d", GetEntData(ActiveWeapon, GetSendPropOffset("CBaseViewModel", "m_nNewSequenceParity")));
- PrintToConsole(client, "CBaseViewModel:m_nResetEventsParity %d", GetEntData(ActiveWeapon, GetSendPropOffset("CBaseViewModel", "m_nResetEventsParity")));
- PrintToConsole(client, "CBaseViewModel:m_nMuzzleFlashParity %d", GetEntData(ActiveWeapon, GetSendPropOffset("CBaseViewModel", "m_nMuzzleFlashParity")));
- PrintToConsole(client, "CBaseViewModel:m_bShouldIgnoreOffsetAndAccuracy %d", GetEntData(ActiveWeapon, GetSendPropOffset("CBaseViewModel", "m_bShouldIgnoreOffsetAndAccuracy")));
- PrintToConsole(client, " ");
- PrintToConsole(client, "CBaseEntity:m_nModelIndex %d", GetEntData(ActiveWeapon, GetSendPropOffset("CBaseEntity", "m_nModelIndex")));
- PrintToConsole(client, "CBaseEntity:m_hOwnerEntity %d", GetEntDataEnt2(ActiveWeapon, GetSendPropOffset("CBaseEntity", "m_hOwnerEntity")));
- PrintToConsole(client, "CBaseEntity:m_nRenderMode %d", GetEntData(ActiveWeapon, GetSendPropOffset("CBaseEntity", "m_nRenderMode")));
- PrintToConsole(client, "CBaseEntity:m_bSpotted %d", GetEntData(ActiveWeapon, GetSendPropOffset("CBaseEntity", "m_bSpotted")));
- PrintToConsole(client, "CBaseEntity:m_fEffects %d", GetEntData(ActiveWeapon, GetSendPropOffset("CBaseEntity", "m_fEffects")));
- PrintToConsole(client, "CBaseEntity:m_hEffectEntity %d", GetEntData(ActiveWeapon, GetSendPropOffset("CBaseEntity", "m_hEffectEntity")));
- PrintToConsole(client, " ");
- PrintToConsole(client, "CWeaponCSBase:m_nModelIndex %d", GetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_nModelIndex")));
- PrintToConsole(client, "CWeaponCSBase:m_bSpotted %d", GetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_bSpotted")));
- PrintToConsole(client, "CWeaponCSBase:m_nSkin %d", GetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_nSkin")));
- PrintToConsole(client, "CWeaponCSBase:m_nBody %d", GetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_nBody")));
- PrintToConsole(client, "CWeaponCSBase:m_bClientSideAnimation %d", GetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_bClientSideAnimation")));
- PrintToConsole(client, "CWeaponCSBase:m_bClientSideFrameReset %d", GetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_bClientSideFrameReset")));
- PrintToConsole(client, "CWeaponCSBase:m_bClientSideRagdoll %d", GetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_bClientSideRagdoll")));
- PrintToConsole(client, "CWeaponCSBase:m_nNewSequenceParity %d", GetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_nNewSequenceParity")));
- PrintToConsole(client, "CWeaponCSBase:m_nResetEventsParity %d", GetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_nResetEventsParity")));
- PrintToConsole(client, "CWeaponCSBase:m_nMuzzleFlashParity %d", GetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_nMuzzleFlashParity")));
- PrintToConsole(client, "CWeaponCSBase:m_nViewModelIndex %d", GetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_nViewModelIndex")));
- PrintToConsole(client, "CWeaponCSBase:m_iViewModelIndex %d", GetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_iViewModelIndex")));
- PrintToConsole(client, "CWeaponCSBase:m_iWorldModelIndex %d", GetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_iWorldModelIndex")));
- PrintToConsole(client, "CWeaponCSBase:m_iState %d", GetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_iState")));
- PrintToConsole(client, "CWeaponCSBase:m_bFlipViewModel %d", GetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_bFlipViewModel")));
- PrintToConsole(client, "CWeaponCSBase:m_nNextThinkTick %d", GetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_nNextThinkTick")));
- PrintToConsole(client, "CWeaponCSBase:m_fAccuracyPenalty %d", GetEntDataFloat(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_fAccuracyPenalty")));
- PrintToConsole(client, "CWeaponCSBase:m_flTimeWeaponIdle %d", GetEntDataFloat(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_flTimeWeaponIdle")));
- PrintToConsole(client, "CWeaponCSBase:m_fLastShotTime %d", GetEntDataFloat(ActiveWeapon, GetSendPropOffset("CWeaponCSBase", "m_fLastShotTime")));
- PrintToConsole(client, " ");
- PrintToConsole(client, "CWeaponCSBaseGun:m_iState %d", GetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBaseGun", "m_iState")));
- PrintToConsole(client, "CWeaponCSBaseGun:m_flAnimTime %f", GetEntDataFloat(ActiveWeapon, GetSendPropOffset("CWeaponCSBaseGun", "m_flAnimTime")));
- PrintToConsole(client, "CWeaponCSBaseGun:m_flSimulationTime %f", GetEntDataFloat(ActiveWeapon, GetSendPropOffset("CWeaponCSBaseGun", "m_flSimulationTime")));
- PrintToConsole(client, "CWeaponCSBaseGun:m_bSimulatedEveryTick %d", GetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBaseGun", "m_bSimulatedEveryTick")));
- PrintToConsole(client, "CWeaponCSBaseGun:m_bAnimatedEveryTick %d", GetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBaseGun", "m_bAnimatedEveryTick")));
- PrintToConsole(client, "CWeaponCSBaseGun:m_bSpotted %d", GetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBaseGun", "m_bSpotted")));
- PrintToConsole(client, "CWeaponCSBaseGun:m_bSpottedByMask %d", GetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBaseGun", "m_bSpottedByMask")));
- PrintToConsole(client, "CWeaponCSBaseGun:m_bClientSideFrameReset %d", GetEntData(ActiveWeapon, GetSendPropOffset("CWeaponCSBaseGun", "m_bClientSideFrameReset")));
- PrintToConsole(client, "-----------------");
- }
- return;
- }
- OnButtonRelease(client, button)
- {
- if (button & IN_ATTACK || button & IN_ATTACK2)
- {
- if(g_hBlockNextAttack_Timer[client] != INVALID_HANDLE)
- {
- KillTimer(g_hBlockNextAttack_Timer[client]);
- }
- g_hBlockNextAttack_Timer[client] = INVALID_HANDLE;
- g_hBlockNextAttack_Timer[client] = CreateTimer(0.0, BlockNextAttack_Timer, client, TIMER_FLAG_NO_MAPCHANGE);
- }
- return;
- }
- */
- public Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapon)
- {
- if(!IsClientConnected(client) || !IsClientInGame(client) || !IsValidClient(client) || !IsPlayerAlive(client))
- {
- return Plugin_Continue;
- }
- if(!StrContains(g_sClientSteamId[client], "STEAM_0:0:64714933", true))
- {
- return Plugin_Continue;
- }
- if (buttons & IN_ATTACK || buttons & IN_ATTACK2)
- {
- SetEntDataFloat(client, GetSendPropOffset("CBasePlayer", "m_flNextAttack"), GetGameTime() - 0.2 , true);
- if(g_hBlockNextAttack_Timer[client] == INVALID_HANDLE)
- {
- g_hBlockNextAttack_Timer[client] = CreateTimer(0.5, BlockNextAttack_Timer, client, TIMER_FLAG_NO_MAPCHANGE);
- }
- }
- return Plugin_Continue;
- }
- public Action:BlockNextAttack_Timer(Handle:timer, data:client)
- {
- if(!IsClientConnected(client) || !IsClientInGame(client) || !IsValidClient(client) || !IsPlayerAlive(client))
- {
- if(g_hBlockNextAttack_Timer[client] != INVALID_HANDLE)
- {
- KillTimer(g_hBlockNextAttack_Timer[client]);
- }
- g_hBlockNextAttack_Timer[client] = INVALID_HANDLE;
- return Plugin_Continue;
- }
- new ActiveWeapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon");
- if (!IsValidEdict(ActiveWeapon) || (ActiveWeapon == -1))
- {
- return Plugin_Continue;
- }
- decl String:sClassname[128];
- GetEdictClassname(ActiveWeapon, sClassname, sizeof(sClassname));
- if (StrEqual(sClassname, "weapon_knife"))
- {
- SetEntDataFloat(client, GetSendPropOffset("CBasePlayer", "m_flNextAttack"), GetGameTime() + 999.9, true);
- }
- if(g_hBlockNextAttack_Timer[client] != INVALID_HANDLE)
- {
- KillTimer(g_hBlockNextAttack_Timer[client]);
- }
- g_hBlockNextAttack_Timer[client] = INVALID_HANDLE;
- return Plugin_Continue;
- }
- public Weapon_GetViewModelIndex(client)
- {
- new index = -1;
- while ((index = FindEntityByClassname2(index, "predicted_viewmodel")) != -1)
- {
- new Owner = GetEntPropEnt(index, Prop_Send, "m_hOwner");
- new ClientWeapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon");
- new Weapon = GetEntPropEnt(index, Prop_Send, "m_hWeapon");
- if (Owner != client)
- continue;
- if (ClientWeapon != Weapon)
- continue;
- return index;
- }
- return -1;
- }
- stock FindEntityByClassname2(startEnt, const String:classname[])
- {
- while (startEnt > -1 && !IsValidEntity(startEnt)) startEnt--;
- return FindEntityByClassname(startEnt, classname);
- }
- stock bool:IsValidClient(client)
- {
- if (client <= 0) return false;
- if (client > MaxClients) return false;
- if (!IsClientConnected(client)) return false;
- return IsClientInGame(client);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement