Script:Files:script/player/player requests.script
Script:Files:script/player/player requests.script From Splash Wiki Jump to: navigation, search
object player {
void RequestDeployment( string objectName );
void RequestHusky(); void RequestIcarus();
void RequestRepair();
void RequestIconThread( float timeout ); void DeploymentFeedbackThread( boolean allow );
float creditChargeRate; boolean creditThreadActive;
vector CalcDropPosition();
boolean CheckCanRequestVehicle( string objectName );
}
/*
Contents
====
player::DeploymentFeedbackThread
====
- /
void player::DeploymentFeedbackThread( boolean allow ) {
sys.wait( 2.f );
if ( !allow ) { sys.sendQuickChat( $null_entity, declinedQuickChat, self ); } else { sys.sendQuickChat( $null_entity, vehicleWarningQuickChat, self ); }
}
/*
====
player::RequestDeployment
====
- /
void player::RequestDeployment( string objectName ) {
if ( sys.isClient() ) { return; }
boolean allowDeploy = true;
if ( !CheckCanRequestVehicle( objectName ) ) { allowDeploy = false; }
if ( allowDeploy ) { vector angles = getViewAngles(); vector pos = CalcDropPosition(); allowDeploy = sys.requestDeployment( self, GetDeployObject( objectName ), pos, angles_y, 0.f ); }
if ( allowDeploy ) { if ( objectName == "deployobject_husky" || objectName == "deployobject_icarus" ) { vUseVehicleCredit( 0.1f ); } }
thread DeploymentFeedbackThread( allowDeploy );
}
/*
====
player::RequestHusky
====
- /
void player::RequestHusky() {
if ( !IsGDF() ) { return; }
RequestDeployment( "deployobject_husky" );
}
/*
====
player::RequestIcarus
====
- /
void player::RequestIcarus() {
if ( !IsStrogg() ) { return; }
RequestDeployment( "deployobject_icarus" );
}
/*
====
player::RequestIconThread
====
- /
void player::RequestIconThread( float timeout ) {
sys.wait( timeout ); FreeRequestIcon();
}
/*
====
player::RequestRepair
====
- /
void player::RequestRepair() {
SetupRequestIcon( "mtr_cm_icon_need_repair", "require_view_repair" ); thread RequestIconThread( 5.f );
}
/*
====
player::CalcDropPosition
====
- /
vector player::CalcDropPosition() {
// TODO: if we reinstate vehicle drops for anything other than a husky or icarus, we'll need to change this float dropDist = 112;
vector pos = getWorldOrigin(); pos_z += 32.f;
vector forward = sys.angToForward( getViewAngles() ); forward_z = 0; forward = sys.vecNormalize( forward ); vector targetPos = pos + ( forward * dropDist );
if ( sys.tracePoint( pos, targetPos, MASK_VEHICLESOLID | MASK_SHOT_RENDERMODEL | CONTENTS_MONSTER, self ) < 1.f ) { // failed, default to the player's position return pos; }
return targetPos;
}
object vehicle_base;
/*
====
player::CheckCanRequestVehicle
====
- /
boolean player::CheckCanRequestVehicle( string objectName ) {
team_base team = getGameTeam();
float credit = vGetVehicleCredit(); float creditRequired = 0.1f;
entity proxy = getProxyEntity();
if ( sys.getTime() < nextDeploymentTime ) { return false; } else if ( proxy != $null_entity ) { return false; } else if ( credit < creditRequired ) { return false; } else if ( !team.CanRequestVehicle( self ) ) { return false; } else if ( sys.getTime() < team.GetNextVehicleSpawnTime() ) { return false; } else if ( getHealth() <= 0 ) { return false; } else if ( AI_INWATER ) { return false; } else { // check if we already have a vehicle float i; float num = binGetSize(); for ( i = 0; i < num; i++ ) { vehicle_base other = binGet( i ); if ( other != $null_entity ) { if ( other.inCollection( "husky" ) ) { return false; } else if ( other.inCollection( "icarus" ) ) { return false; } } }
// also check if outside vector pos = CalcDropPosition(); vector skyPos = pos + '0 0 65535'; sys.tracePoint( pos, skyPos, MASK_SHOT_BOUNDINGBOX | MASK_SHOT_RENDERMODEL, self );
if ( sys.getTraceFraction() == 1.f ) { return false; } else if ( !( sys.getTraceSurfaceFlags() & SURF_NOIMPACT ) ) { return false; } }
return true;
}
Retrieved from "http://wiki/splashwiki/index.php/Script:Files:script/player/player_requests.script" Views
* Article * Discussion * Edit * History * Move * Watch
Personal tools
* Wizz * My talk * Preferences * My watchlist * My contributions * Log out
Navigation
* Main Page * Community portal * Current events * Recent changes * Random page * Help * Donations
Search
Toolbox
* What links here * Related changes * Upload file * Special pages * Printable version * Permanent link
MediaWiki
* This page was last modified 13:20, 14 September 2007. * This page has been accessed one time. * Privacy policy * About Splash Wiki * Disclaimers