// // A test driver NPC with very basic AI // Kye 2009 // #include new gStoppedForTraffic = 0; new gPlaybackActive = 0; public ScanTimer(); #define AHEAD_OF_CAR_DISTANCE 11.0 #define SCAN_RADIUS 11.0 //------------------------------------------ main(){} //------------------------------------------ stock GetXYInfrontOfMe(Float:distance, &Float:x, &Float:y) { new Float:z, Float:angle; GetMyPos(x,y,z); GetMyFacingAngle(angle); x += (distance * floatsin(-angle, degrees)); y += (distance * floatcos(-angle, degrees)); } //------------------------------------------ public OnNPCModeInit() { SetTimer("ScanTimer",200,1); } //------------------------------------------ LookForAReasonToPause() { new Float:X,Float:Y,Float:Z; new x=0; GetMyPos(X,Y,Z); GetXYInfrontOfMe(AHEAD_OF_CAR_DISTANCE,X,Y); while(x!=MAX_PLAYERS) { if(IsPlayerConnected(x) && IsPlayerStreamedIn(x)) { if( GetPlayerState(x) == PLAYER_STATE_DRIVER || GetPlayerState(x) == PLAYER_STATE_ONFOOT ) { if(IsPlayerInRangeOfPoint(x,SCAN_RADIUS,X,Y,Z)) { return 1; } } } x++; } //new msg[256]; //new Float:angle; //GetMyFacingAngle(angle); //format(msg,256,"My yaw/heading = %f",angle); //SendChat(msg); return 0; } //------------------------------------------ public ScanTimer() { //new ticker = GetTickCount() - g_LastTick; //printf("npctest: timer (%d)ms", ticker); //g_LastTick = GetTickCount(); new ReasonToPause = LookForAReasonToPause(); if(ReasonToPause && !gStoppedForTraffic) { //SendChat("I'm pausing"); PauseRecordingPlayback(); gStoppedForTraffic = 1; } else if(!ReasonToPause && gStoppedForTraffic) { //SendChat("I'm resuming"); ResumeRecordingPlayback(); gStoppedForTraffic = 0; } } //------------------------------------------ StartPlayback() { StartRecordingPlayback(PLAYER_RECORDING_TYPE_DRIVER,"taxi_test_1282"); gStoppedForTraffic = 0; gPlaybackActive = 1; } //------------------------------------------ public OnRecordingPlaybackEnd() { StartPlayback(); } //------------------------------------------ public OnNPCEnterVehicle(vehicleid, seatid) { StartPlayback(); } //------------------------------------------ public OnNPCExitVehicle() { StopRecordingPlayback(); } //------------------------------------------