AMX Mod X Plugin Approver
Join Date: Aug 2005
Location: Decapod 10
|
01-29-2014
, 20:00
Re: Hostage Creator
|
#11
|
Here is some code that I was using to create fake hostages, thought it might help you out.
Hostages can be created on non-hostage maps if you precache the following sounds:
Code:
"hostage/hos1.wav"
"hostage/hos2.wav"
"hostage/hos3.wav"
"hostage/hos4.wav"
"hostage/hos5.wav"
Creating hostage rescue zones
Code:
ent = fm_create_entity("func_hostage_rescue");
resting_ent = fm_create_entity("info_target");
set_pev( resting_ent, pev_classname, "hostage_resting" );
pev( temp_ent, pev_origin, origin );
fm_entity_set_origin( ent, origin );
fm_entity_set_origin( resting_ent, origin );
pev( temp_ent, pev_angles, angles );
set_pev(resting_ent, pev_angles, angles);
set_pev(resting_ent, pev_v_angle, angles);
set_pev(resting_ent, pev_fixangle, 1);
set_pev(resting_ent, pev_skin, random(2));
fm_entity_set_model( resting_ent, "models/hostage.mdl" );
engfunc(EngFunc_SetSize, resting_ent, Float:{-10.0,-10.0,0.0}, Float:{10.0,10.0,31.0});
switch( random(3) )
{
case 0: set_pev(resting_ent, pev_sequence, 78);
case 1: set_pev(resting_ent, pev_sequence, 89);
case 2: set_pev(resting_ent, pev_sequence, 113);
}
set_pev(resting_ent, pev_animtime, 2.0);
set_pev(resting_ent, pev_framerate, 1.0);
set_pev( ent, pev_solid, SOLID_TRIGGER );
SetBrushSize(ent, origin);
fm_drop_to_floor(resting_ent);
set_pev( resting_ent, pev_controller_0, 127 );
Creating hostage entities
Code:
ent = fm_create_entity("hostage_entity");
fm_entity_set_model( ent, "models/hostage.mdl" );
engfunc(EngFunc_SetOrigin, ent, origin);
set_pev(ent, pev_angles, angles);
set_pev(ent, pev_v_angle, angles);
set_pev(ent, pev_fixangle, 1);
set_pev(ent, pev_skin, random(2));
set_pev( ent, pev_health, 100 );
set_pev( ent, pev_max_health, 100 );
set_pev( ent, pev_takedamage, DAMAGE_AIM );
set_pev( ent, pev_deadflag, DEAD_NO );
set_pev( ent, pev_solid, SOLID_SLIDEBOX );
set_pev( ent, pev_movetype, MOVETYPE_STEP );
fm_entity_set_size(ent, Float:{-16.0,-16.0,0.0},Float:{16.0,16.0,64.0});
set_pev( ent, pev_nextthink, time );
cs_set_hostage_foll(ent);
cs_set_hostage_nextuse(ent, time);
dllfunc(DLLFunc_Spawn, ent);
fm_drop_to_floor(ent);
set_pev( ent, pev_controller_0, 127 );
if( hostage_num < sizeof hostage )
hostage[ hostage_num++ ] = ent;
//show hostage in radar
message_begin(MSG_BROADCAST, gmsgHostagePos)
write_byte(1)
write_byte(1+j++) //The number of the hostage, 1-4
write_coord( floatround(origin[0]) ) //X Coordinate
write_coord( floatround(origin[1]) ) //Y Coordinate
write_coord( floatround(origin[2]) ) //Z Coordinate
message_end()
|
|