Re: [ANY] EntControl(like grabbermod) (Updated 2011-05-28 v1.45pre)
To lock the hostage sounds you can try to use:
Code:
AmbientSHook
NormalSHook
AddAmbientSoundHook
AddNormalSoundHook
RemoveAmbientSoundHook
RemoveNormalSoundHook
To block + USE you can try to use EventHookMode_ Pre
http://wiki.alliedmods.net/Generic_S...nts#player_use
http://docs.sourcemod.net/api/index....d=show&id=732&
Hostage data:
Quote:
AnimTimeMustBeFirst.m_flAnimTime = 1120433602; m_flSimulationTime = 1120443433; m_vecOrigin = 1784.000000,734.000000,-159.968750; m_nModelIndex = -65361; m_Collision.m_vecMins = -13.000000,-13.000000,0.000000; m_Collision.m_vecMaxs = 13.000000,13.000000,72.000000; m_Collision.m_nSolidType = 2; m_Collision.m_usSolidFlags = 52953104; m_Collision.m_nSurroundType = 512; m_Collision.m_triggerBloat = 0; m_Collision.m_vecSpecifiedSurroundingMins = 0.000000,0.000000,0.000000; m_Collision.m_vecSpecifiedSurroundingMaxs = 0.000000,0.000000,0.000000; m_nRenderFX = 11468800; m_nRenderMode = -16732416; m_fEffects = 0; m_clrRender = -1; m_iTeamNum = 0; m_CollisionGroup = 5; m_flElasticity = 1.000000; m_flShadowCastDistance = 0.000000; m_hOwnerEntity = -1; m_hEffectEntity = -1; moveparent = -1; m_iParentAttachment = -16776448; movetype = -65533; movecollide = -256; m_angRotation = 0.000000,233.000000,0.000000; m_iTextureFrameIndex = 256; predictable_id.m_PredictableID = 0; predictable_id.m_bIsPlayerSimulated = 0; m_bSimulatedEveryTick = 1; m_bAnimatedEveryTick = 0; m_bAlternateSorting = 0; m_nForceBone = 0; m_vecForce = 0.000000,0.000000,0.000000; m_nSkin = 1; m_nBody = 0; m_nHitboxSet = 0; m_flModelWidthScale = 1.000000; m_flPoseParameter.000 = 0.852778; m_flPoseParameter.001 = 0.500000; m_flPoseParameter.002 = 0.639981; m_flPoseParameter.003 = 0.499989; m_flPoseParameter.004 = 0.499996; m_flPoseParameter.005 = 0.478465; m_flPoseParameter.006 = 0.500000; m_flPoseParameter.007 = 0.465098; m_flPoseParameter.008 = 0.502356; m_flPoseParameter.009 = 0.500000; m_flPoseParameter.010 = 0.500000; m_flPoseParameter.011 = 0.000000; m_flPoseParameter.012 = 0.000000; m_flPoseParameter.013 = 0.000000; m_flPoseParameter.014 = 0.000000; m_flPoseParameter.015 = 0.000000; m_flPoseParameter.016 = 0.000000; m_flPoseParameter.017 = 0.000000; m_flPoseParameter.018 = 0.000000; m_flPoseParameter.019 = 0.000000; m_flPoseParameter.020 = 0.000000; m_flPoseParameter.021 = 0.000000; m_flPoseParameter.022 = 0.000000; m_flPoseParameter.023 = 0.000000; m_nSequence = 3; m_flPlaybackRate = 1.000000; m_flEncodedController.000 = 0.000000; m_flEncodedController.001 = 0.000000; m_flEncodedController.002 = 0.000000; m_flEncodedController.003 = 0.000000; m_bClientSideAnimation = 1; m_bClientSideFrameReset = 83886080; m_nNewSequenceParity = 5; m_nResetEventsParity = 5; m_nMuzzleFlashParity = 0; m_hLightingOrigin = -1; m_hLightingOriginRelative = -1; serveranimdata.m_flCycle = 0.844900; m_fadeMinDist = 0.000000; m_fadeMaxDist = 0.000000; m_flFadeScale = 0.000000; overlay_vars.m_AnimOverlay.000.m_nSequence = 249370544; overlay_vars.m_AnimOverlay.000.m_flCycle = 0.000000; overlay_vars.m_AnimOverlay.000.m_flPrevCycle = 0.000000; overlay_vars.m_AnimOverlay.000.m_flWeight = 0.000000; overlay_vars.m_AnimOverlay.000.m_nOrder = 252412336; overlay_vars.m_AnimOverlay.001.m_nSequence = 249370544; overlay_vars.m_AnimOverlay.001.m_flCycle = 0.000000; overlay_vars.m_AnimOverlay.001.m_flPrevCycle = 0.000000; overlay_vars.m_AnimOverlay.001.m_flWeight = 0.000000; overlay_vars.m_AnimOverlay.001.m_nOrder = 252412336; overlay_vars.m_AnimOverlay.002.m_nSequence = 249370544; overlay_vars.m_AnimOverlay.002.m_flCycle = 0.000000; overlay_vars.m_AnimOverlay.002.m_flPrevCycle = 0.000000; overlay_vars.m_AnimOverlay.002.m_flWeight = 0.000000; overlay_vars.m_AnimOverlay.002.m_nOrder = 252412336; overlay_vars.m_AnimOverlay.003.m_nSequence = 249370544; overlay_vars.m_AnimOverlay.003.m_flCycle = 0.000000; overlay_vars.m_AnimOverlay.003.m_flPrevCycle = 0.000000; overlay_vars.m_AnimOverlay.003.m_flWeight = 0.000000; overlay_vars.m_AnimOverlay.003.m_nOrder = 252412336; overlay_vars.m_AnimOverlay.004.m_nSequence = 249370544; overlay_vars.m_AnimOverlay.004.m_flCycle = 0.000000; overlay_vars.m_AnimOverlay.004.m_flPrevCycle = 0.000000; overlay_vars.m_AnimOverlay.004.m_flWeight = 0.000000; overlay_vars.m_AnimOverlay.004.m_nOrder = 252412336; overlay_vars.m_AnimOverlay.005.m_nSequence = 249370544; overlay_vars.m_AnimOverlay.005.m_flCycle = 0.000000; overlay_vars.m_AnimOverlay.005.m_flPrevCycle = 0.000000; overlay_vars.m_AnimOverlay.005.m_flWeight = 0.000000; overlay_vars.m_AnimOverlay.005.m_nOrder = 252412336; overlay_vars.m_AnimOverlay.006.m_nSequence = 249370544; overlay_vars.m_AnimOverlay.006.m_flCycle = 0.000000; overlay_vars.m_AnimOverlay.006.m_flPrevCycle = 0.000000; overlay_vars.m_AnimOverlay.006.m_flWeight = 0.000000; overlay_vars.m_AnimOverlay.006.m_nOrder = 252412336; overlay_vars.m_AnimOverlay.007.m_nSequence = 249370544; overlay_vars.m_AnimOverlay.007.m_flCycle = 0.000000; overlay_vars.m_AnimOverlay.007.m_flPrevCycle = 0.000000; overlay_vars.m_AnimOverlay.007.m_flWeight = 0.000000; overlay_vars.m_AnimOverlay.007.m_nOrder = 252412336; overlay_vars.m_AnimOverlay.008.m_nSequence = 249370544; overlay_vars.m_AnimOverlay.008.m_flCycle = 0.000000; overlay_vars.m_AnimOverlay.008.m_flPrevCycle = 0.000000; overlay_vars.m_AnimOverlay.008.m_flWeight = 0.000000; overlay_vars.m_AnimOverlay.008.m_nOrder = 252412336; overlay_vars.m_AnimOverlay.009.m_nSequence = 249370544; overlay_vars.m_AnimOverlay.009.m_flCycle = 0.000000; overlay_vars.m_AnimOverlay.009.m_flPrevCycle = 0.000000; overlay_vars.m_AnimOverlay.009.m_flWeight = 0.000000; overlay_vars.m_AnimOverlay.009.m_nOrder = 252412336; overlay_vars.m_AnimOverlay.010.m_nSequence = 249370544; overlay_vars.m_AnimOverlay.010.m_flCycle = 0.000000; overlay_vars.m_AnimOverlay.010.m_flPrevCycle = 0.000000; overlay_vars.m_AnimOverlay.010.m_flWeight = 0.000000; overlay_vars.m_AnimOverlay.010.m_nOrder = 252412336; overlay_vars.m_AnimOverlay.011.m_nSequence = 249370544; overlay_vars.m_AnimOverlay.011.m_flCycle = 0.000000; overlay_vars.m_AnimOverlay.011.m_flPrevCycle = 0.000000; overlay_vars.m_AnimOverlay.011.m_flWeight = 0.000000; overlay_vars.m_AnimOverlay.011.m_nOrder = 252412336; overlay_vars.m_AnimOverlay.012.m_nSequence = 249370544; overlay_vars.m_AnimOverlay.012.m_flCycle = 0.000000; overlay_vars.m_AnimOverlay.012.m_flPrevCycle = 0.000000; overlay_vars.m_AnimOverlay.012.m_flWeight = 0.000000; overlay_vars.m_AnimOverlay.012.m_nOrder = 252412336; overlay_vars.m_AnimOverlay.013.m_nSequence = 249370544; overlay_vars.m_AnimOverlay.013.m_flCycle = 0.000000; overlay_vars.m_AnimOverlay.013.m_flPrevCycle = 0.000000; overlay_vars.m_AnimOverlay.013.m_flWeight = 0.000000; overlay_vars.m_AnimOverlay.013.m_nOrder = 252412336; overlay_vars.m_AnimOverlay.014.m_nSequence = 249370544; overlay_vars.m_AnimOverlay.014.m_flCycle = 0.000000; overlay_vars.m_AnimOverlay.014.m_flPrevCycle = 0.000000; overlay_vars.m_AnimOverlay.014.m_flWeight = 0.000000; overlay_vars.m_AnimOverlay.014.m_nOrder = 252412336; m_flexWeight.000 = 0.000000; m_flexWeight.001 = 0.000000; m_flexWeight.002 = 0.000000; m_flexWeight.003 = 0.000000; m_flexWeight.004 = 0.000000; m_flexWeight.005 = 0.000000; m_flexWeight.006 = 0.000000; m_flexWeight.007 = 0.000000; m_flexWeight.008 = 0.000000; m_flexWeight.009 = 0.000000; m_flexWeight.010 = 0.000000; m_flexWeight.011 = 0.000000; m_flexWeight.012 = 0.000000; m_flexWeight.013 = 0.000000; m_flexWeight.014 = 0.000000; m_flexWeight.015 = 0.000000; m_flexWeight.016 = 0.000000; m_flexWeight.017 = 0.000000; m_flexWeight.018 = 0.000000; m_flexWeight.019 = 0.000000; m_flexWeight.020 = 0.000000; m_flexWeight.021 = 0.000000; m_flexWeight.022 = 0.000000; m_flexWeight.023 = 0.000000; m_flexWeight.024 = 0.000000; m_flexWeight.025 = 0.000000; m_flexWeight.026 = 0.000000; m_flexWeight.027 = 0.000000; m_flexWeight.028 = 0.000000; m_flexWeight.029 = 0.000000; m_flexWeight.030 = 0.000000; m_flexWeight.031 = 0.000000; m_flexWeight.032 = 0.000000; m_flexWeight.033 = 0.000000; m_flexWeight.034 = 0.000000; m_flexWeight.035 = 0.000000; m_flexWeight.036 = 0.000000; m_flexWeight.037 = 0.000000; m_flexWeight.038 = 0.000000; m_flexWeight.039 = 0.000000; m_flexWeight.040 = 0.000000; m_flexWeight.041 = 0.000000; m_flexWeight.042 = 0.000000; m_flexWeight.043 = 0.000000; m_flexWeight.044 = 0.500000; m_flexWeight.045 = 0.500000; m_flexWeight.046 = 0.500000; m_flexWeight.047 = 0.500000; m_flexWeight.048 = 0.500000; m_flexWeight.049 = 0.500000; m_flexWeight.050 = 0.500000; m_flexWeight.051 = 0.500000; m_flexWeight.052 = 0.500000; m_flexWeight.053 = 0.500000; m_flexWeight.054 = 0.000000; m_flexWeight.055 = 0.000000; m_flexWeight.056 = 0.000000; m_flexWeight.057 = 0.000000; m_flexWeight.058 = 0.000000; m_flexWeight.059 = 0.000000; m_flexWeight.060 = 0.000000; m_flexWeight.061 = 0.000000; m_flexWeight.062 = 0.000000; m_flexWeight.063 = 0.000000; m_flexWeight.064 = 0.000000; m_flexWeight.065 = 0.000000; m_flexWeight.066 = 0.000000; m_flexWeight.067 = 0.000000; m_flexWeight.068 = 0.000000; m_flexWeight.069 = 0.000000; m_flexWeight.070 = 0.000000; m_flexWeight.071 = 0.000000; m_flexWeight.072 = 0.000000; m_flexWeight.073 = 0.000000; m_flexWeight.074 = 0.000000; m_flexWeight.075 = 0.000000; m_flexWeight.076 = 0.000000; m_flexWeight.077 = 0.000000; m_flexWeight.078 = 0.000000; m_flexWeight.079 = 0.000000; m_flexWeight.080 = 0.000000; m_flexWeight.081 = 0.000000; m_flexWeight.082 = 0.000000; m_flexWeight.083 = 0.000000; m_flexWeight.084 = 0.000000; m_flexWeight.085 = 0.000000; m_flexWeight.086 = 0.000000; m_flexWeight.087 = 0.000000; m_flexWeight.088 = 0.000000; m_flexWeight.089 = 0.000000; m_flexWeight.090 = 0.000000; m_flexWeight.091 = 0.000000; m_flexWeight.092 = 0.000000; m_flexWeight.093 = 0.000000; m_flexWeight.094 = 0.000000; m_flexWeight.095 = 0.000000; m_blinktoggle = 0; m_viewtarget = 0.000000,0.000000,0.000000; bcc_localdata.m_flNextAttack = 0.000000; m_hActiveWeapon = -1; m_hMyWeapons.000 = -1; m_hMyWeapons.001 = -1; m_hMyWeapons.002 = -1; m_hMyWeapons.003 = -1; m_hMyWeapons.004 = -1; m_hMyWeapons.005 = -1; m_hMyWeapons.006 = -1; m_hMyWeapons.007 = -1; m_hMyWeapons.008 = -1; m_hMyWeapons.009 = -1; m_hMyWeapons.010 = -1; m_hMyWeapons.011 = -1; m_hMyWeapons.012 = -1; m_hMyWeapons.013 = -1; m_hMyWeapons.014 = -1; m_hMyWeapons.015 = -1; m_hMyWeapons.016 = -1; m_hMyWeapons.017 = -1; m_hMyWeapons.018 = -1; m_hMyWeapons.019 = -1; m_hMyWeapons.020 = -1; m_hMyWeapons.021 = -1; m_hMyWeapons.022 = -1; m_hMyWeapons.023 = -1; m_hMyWeapons.024 = -1; m_hMyWeapons.025 = -1; m_hMyWeapons.026 = -1; m_hMyWeapons.027 = -1; m_hMyWeapons.028 = -1; m_hMyWeapons.029 = -1; m_hMyWeapons.030 = -1; m_hMyWeapons.031 = -1; m_hMyWeapons.032 = -1; m_hMyWeapons.033 = -1; m_hMyWeapons.034 = -1; m_hMyWeapons.035 = -1; m_hMyWeapons.036 = -1; m_hMyWeapons.037 = -1; m_hMyWeapons.038 = -1; m_hMyWeapons.039 = -1; m_hMyWeapons.040 = -1; m_hMyWeapons.041 = -1; m_hMyWeapons.042 = -1; m_hMyWeapons.043 = -1; m_hMyWeapons.044 = -1; m_hMyWeapons.045 = -1; m_hMyWeapons.046 = -1; m_hMyWeapons.047 = -1; m_isRescued = 0; m_iHealth = 100; m_iMaxHealth = 100; m_lifeState = 512; m_leader = 0
|
To make a better patency can calculate the length of the vector and from the eyes to the obstacles
Quote:
OnGameFrame();
// trace client view to get position and angles
decl Float:start[3], Float:angle[3], Float:end[3], Float:normal[3], Float:beamend[3];
GetClientEyePosition( client, start );
GetClientEyeAngles( client, angle );
GetAngleVectors(angle, end, NULL_VECTOR, NULL_VECTOR);
NormalizeVector(end, end);
start[0]=start[0]+end[0]*24.0;
start[1]=start[1]+end[1]*24.0;
start[2]=start[2]+end[2]*24.0;
end[0]=start[0]+end[0]*64.0;
end[1]=start[1]+end[1]*64.0;
end[2]=start[2]+end[2]*64.0;
TR_TraceRayFilter(start, end, CONTENTS_SOLID, RayType_EndPoint, FilterAll, 0);
}
if (TR_DidHit(INVALID_HANDLE))
{
}
Obstacle!
|
Create point_push underfoot, turn on him and activate the animation "jump" (only works if the obstacle prop_static or static brush)
headcrab attachment:
Quote:
//zombie - client; headcrab = iEnt
decl String:Buffer[64];
new iEnt, String:szClientNum[6];
IntToString(client, szClientNum, sizeof(szClientNum)-1);
iEnt = CreateEntityByName("hostage_entity");
DispatchKeyValue(iEnt, "targetname", szClientNum);
DispatchKeyValue(iEnt, "disableshadows", "1");
DispatchKeyValue(iEnt, "solid", "0");
DispatchKeyValue(iEnt, "model", "models/headcrab.mdl");
SetEntityMoveType(iEnt, MOVETYPE_NOCLIP);
Format(Buffer, sizeof(Buffer), "Client%d", client);
DispatchKeyValue(client, "targetname", Buffer);
DispatchKeyValue(iEnt, "parentname", Buffer);
DispatchSpawn(iEnt);
SetVariantString(Buffer);
AcceptEntityInput(iEnt, "SetParent", iEnt, iEnt, 0);
// Set attachment
SetVariantString("headcrab");
//$attachment "headcrab" "ValveBiped.HC_Body_Bone" -4.49 -1.32 -0.02 rotate 0 20 29
AcceptEntityInput(iEnt, "SetParentAttachment", iEnt, iEnt, 0);
SetEntPropEnt(iEnt, Prop_Send, "m_hOwnerEntity", client);
|
Then, if the headcrab dies - a zombie dies, if the zombie dies hedсrab detaches
And add randomly sounds for zombies for the atmosphere :)
|