2007-09-04 22:00:00 +02:00
|
|
|
/*
|
|
|
|
+=================================+
|
|
|
|
|TRIGGER_CHANGE_VIEWPOINT|
|
|
|
|
+=================================+
|
|
|
|
*/
|
|
|
|
void() info_viewpoint_destination =
|
|
|
|
{
|
|
|
|
trigger_setup();
|
|
|
|
|
2007-09-16 22:00:00 +02:00
|
|
|
setorigin(pev, pev->origin);
|
2007-09-04 22:00:00 +02:00
|
|
|
|
2007-09-16 22:00:00 +02:00
|
|
|
setmodel (pev, "progs/eyes.mdl");
|
|
|
|
pev->modelindex = 0;
|
2007-09-04 22:00:00 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
void() trigger_change_viewpoint_touch;
|
|
|
|
|
|
|
|
void() trigger_change_viewpoint_think1 =
|
|
|
|
{
|
2007-09-16 22:00:00 +02:00
|
|
|
pev->touched = FALSE;
|
|
|
|
pev->touch = trigger_change_viewpoint_touch;
|
2007-09-04 22:00:00 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
void() trigger_change_viewpoint_think =
|
|
|
|
{
|
2007-09-16 22:00:00 +02:00
|
|
|
local entity e, oldpev, oldtrig;
|
2007-09-04 22:00:00 +02:00
|
|
|
|
2007-09-16 22:00:00 +02:00
|
|
|
if(pev->touched == TRUE)
|
2007-09-04 22:00:00 +02:00
|
|
|
{
|
2007-09-16 22:00:00 +02:00
|
|
|
e = find(world, targetname, pev->target);
|
|
|
|
//e = pev->triggerer.triggerer.triggerer;
|
|
|
|
pev->triggerer.triggerer = pev->triggerer;
|
2007-09-04 22:00:00 +02:00
|
|
|
|
|
|
|
MsgBegin(SVC_SETVIEW); // Network Protocol: Set Viewpoint Entity
|
|
|
|
WriteEntity( e); // Write entity to clients.
|
2007-09-16 22:00:00 +02:00
|
|
|
MsgEnd(MSG_ONE, '0 0 0', pev );
|
2007-09-04 22:00:00 +02:00
|
|
|
|
2007-09-16 22:00:00 +02:00
|
|
|
//pev->angles = e.mangles;
|
|
|
|
//pev->fixangle = 1;
|
2007-09-04 22:00:00 +02:00
|
|
|
|
2007-09-16 22:00:00 +02:00
|
|
|
//pev->triggerer.movetype = MOVETYPE_NONE;
|
2007-09-04 22:00:00 +02:00
|
|
|
|
2007-09-16 22:00:00 +02:00
|
|
|
pev->think = trigger_change_viewpoint_think;
|
|
|
|
pev->nextthink = time + pev->wait1;
|
2007-09-04 22:00:00 +02:00
|
|
|
|
2007-09-16 22:00:00 +02:00
|
|
|
pev->touched = FALSE;
|
2007-09-04 22:00:00 +02:00
|
|
|
|
|
|
|
bprint("working\n");
|
|
|
|
}
|
2007-09-16 22:00:00 +02:00
|
|
|
else if(pev->touched == FALSE)
|
2007-09-04 22:00:00 +02:00
|
|
|
{
|
2007-09-16 22:00:00 +02:00
|
|
|
//pev->triggerer = pev->triggerer.triggerer;
|
2007-09-04 22:00:00 +02:00
|
|
|
|
|
|
|
MsgBegin(SVC_SETVIEW); // Network Protocol: Set Viewpoint Entity
|
2007-09-16 22:00:00 +02:00
|
|
|
WriteEntity(pev->triggerer.triggerer);
|
|
|
|
MsgEnd(MSG_ONE, '0 0 0', pev );
|
2007-09-04 22:00:00 +02:00
|
|
|
|
2007-09-16 22:00:00 +02:00
|
|
|
pev->triggerer.movetype = MOVETYPE_WALK;
|
2007-09-04 22:00:00 +02:00
|
|
|
|
2007-09-16 22:00:00 +02:00
|
|
|
pev->triggerer = world;
|
2007-09-04 22:00:00 +02:00
|
|
|
|
2007-09-16 22:00:00 +02:00
|
|
|
pev->touched = TRUE;
|
2007-09-04 22:00:00 +02:00
|
|
|
|
2007-09-16 22:00:00 +02:00
|
|
|
pev->think = trigger_change_viewpoint_think1;
|
|
|
|
pev->nextthink = time + 2;
|
2007-09-04 22:00:00 +02:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
void() trigger_change_viewpoint_touch =
|
|
|
|
{
|
|
|
|
if(!(other.flags & FL_CLIENT))
|
|
|
|
return;
|
|
|
|
|
2007-09-16 22:00:00 +02:00
|
|
|
if(pev->touched == FALSE)
|
2007-09-04 22:00:00 +02:00
|
|
|
{
|
2007-09-16 22:00:00 +02:00
|
|
|
pev->touched = TRUE;
|
|
|
|
pev->touch = SUB_Null;
|
|
|
|
pev->triggerer = other;
|
2007-09-04 22:00:00 +02:00
|
|
|
|
2007-09-16 22:00:00 +02:00
|
|
|
pev->think = trigger_change_viewpoint_think;
|
|
|
|
pev->nextthink = time + pev->delay;
|
2007-09-04 22:00:00 +02:00
|
|
|
|
|
|
|
bprint("touched");
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
void() trigger_change_viewpoint_use =
|
|
|
|
{
|
2007-09-16 22:00:00 +02:00
|
|
|
if(pev->touched == TRUE)
|
2007-09-04 22:00:00 +02:00
|
|
|
return;
|
|
|
|
|
2007-09-16 22:00:00 +02:00
|
|
|
pev->think = trigger_change_viewpoint_think;
|
|
|
|
pev->nextthink = time + pev->delay;
|
2007-09-04 22:00:00 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
void() trigger_change_viewpoint =
|
|
|
|
{
|
|
|
|
trigger_setup();
|
|
|
|
|
2007-09-16 22:00:00 +02:00
|
|
|
if(!pev->delay)
|
|
|
|
pev->delay = 1;
|
|
|
|
if(!pev->wait)
|
|
|
|
pev->wait = 1;
|
2007-09-04 22:00:00 +02:00
|
|
|
|
2007-09-16 22:00:00 +02:00
|
|
|
pev->touch = trigger_change_viewpoint_touch;
|
|
|
|
pev->use = trigger_change_viewpoint_use ;
|
2007-09-04 22:00:00 +02:00
|
|
|
|
2007-09-16 22:00:00 +02:00
|
|
|
if(!pev->target)
|
2007-09-04 22:00:00 +02:00
|
|
|
{
|
|
|
|
objerror("trigger_change_viewpoint: NO TARGET");
|
2007-09-16 22:00:00 +02:00
|
|
|
pev->solid = SOLID_NOT;
|
2007-09-04 22:00:00 +02:00
|
|
|
}
|
|
|
|
};
|