[Fixed]Mission always crashes when passed
Posted: 11 Aug 2012, 02:47
For some reason no matter what i tried so far, this mission keeps crashing the moment it has passed. I've tried a different citera for passing the mission, changing the code of how the mission ends and the cleanup part as well. But to no avail. When the player fails the mission it will not crash, despite using the same cleanup code. I must be either missing something or there's possibily something going on with GTA2's mission control functions or main script, possibily. But so far i am perfectly capable of doing any of the other missions in the same map.
Edit: Seems DISPLAY_MESSAGE was using a wrong kind of message by accident. Fixed now.
Mission wsd_zb1
[mis]//Zaibatsu mission
//Mission declares. And most of all, COUNTERS.
CAR_DATA ZB1_Truck
CAR_DATA ZB1_Truckdata //For when finding one on the street.
CAR_DATA ZB1_Tanker
CHAR_DATA ZB1_Guard1
CHAR_DATA ZB1_Guard2
CHAR_DATA ZB1_Guard3
CHAR_DATA ZB1_Guard4
ARROW_DATA ZB1_Arrow
ARROW_DATA ZB1_GreenArrow
ARROW_DATA ZB1_DataArrow
COUNTER ZB1_Progress = 0
COUNTER ZB1_Stolen = 0
COUNTER ZB1_Broken = 0
COUNTER ZB1_TruckType = 0
COUNTER ZB1_Talk = 0
COUNTER ZB1_Talk2 = 0
COUNTER ZB1_Talk3 = 0
COUNTER ZB1_Ready = 0
COUNTER ZB1_Spotted1 = 0
COUNTER ZB1_Spotted2 = 0
COUNTER ZB1_Found = 0
COUNTER ZB1_Passed = 0
COUNTER ZB1_Failed = 0
FORWARD ZB1_Cleanup: //Dont make this the first command in a mission. Try to keep it below Declares.
ZB1_Main:
EXEC
//Setup criticals beforehand.
SET Global_OnMission = 1
SET MissionLoop = 1
STOP_PHONE (Global_ZaibatsuPhone1) //Needed for Blue Phones ONLY.
//Mission stuff between this and WHILE_EXEC.
ZB1_Truck = CREATE_CAR (147.5, 165.5, 2.0) 14 0 TRUKCAB2 END
ZB1_Truckdata = CREATE_CAR (3.5, 208.5, 5.0) 1 0 TRUKCAB1 END // Placeholder.
POINT_ARROW_AT(ZB1_GreenArrow, ZB1_Truck)
SET_ARROW_COLOUR(ZB1_GreenArrow, GREEN)
ZB1_Guard1 = CREATE_CHAR (144.5, 170.5, 2.0) 1 90 CRIMINAL_TYPE1 END
ADD_PATROL_POINT (zb1_guard1, 148.5, 170.5, 2.0)
ADD_PATROL_POINT (zb1_guard1, 148.5, 171.5, 2.0)
ADD_PATROL_POINT (zb1_guard1, 148.5, 170.5, 2.0)
ADD_PATROL_POINT (zb1_guard1, 144.5, 170.5, 2.0)
ZB1_Guard2 = CREATE_CHAR (145.5, 166.5, 2.0) 1 90 CRIMINAL_TYPE1 END
ADD_PATROL_POINT (zb1_guard2, 151.5, 166.5, 2.0)
ADD_PATROL_POINT (zb1_guard2, 151.5, 164.5, 2.0)
ADD_PATROL_POINT (zb1_guard2, 153.5, 164.5, 2.0)
ADD_PATROL_POINT (zb1_guard2, 151.5, 164.5, 2.0)
ADD_PATROL_POINT (zb1_guard2, 151.5, 166.5, 2.0)
ADD_PATROL_POINT (zb1_guard2, 145.5, 166.5, 2.0)
GIVE_WEAPON(ZB1_Guard1, PISTOL)
GIVE_WEAPON(ZB1_Guard2, PISTOL)
SET_CHAR_THREAT_SEARCH(ZB1_Guard1, LINE_OF_SIGHT_PLAYER_ONLY)
SET_CHAR_THREAT_SEARCH(ZB1_Guard2, LINE_OF_SIGHT_PLAYER_ONLY)
SET_CHAR_THREAT_REACTION(ZB1_Guard1, REACT_AS_NORMAL)
SET_CHAR_THREAT_REACTION(ZB1_Guard2, REACT_AS_NORMAL)
ZB1_Tanker = CREATE_CAR (9.7, 14.5, 2.0) -1 90 TANKER END
POINT_ARROW_AT(ZB1_Arrow, ZB1_Tanker)
ZB1_Guard3 = CREATE_CHAR (6.5, 11.5, 2.0) 1 270 CRIMINAL_TYPE2 END
ADD_PATROL_POINT (zb1_guard3, 5.5, 11.5, 2.0)
ADD_PATROL_POINT (zb1_guard3, 5.5, 14.5, 2.0)
ADD_PATROL_POINT (zb1_guard3, 8.5, 14.5, 2.0)
ADD_PATROL_POINT (zb1_guard3, 5.5, 14.5, 2.0)
ADD_PATROL_POINT (zb1_guard3, 5.5, 11.5, 2.0)
ADD_PATROL_POINT (zb1_guard3, 6.5, 11.5, 2.0)
ADD_PATROL_POINT (zb1_guard3, 6.5, 10.5, 2.0)
ADD_PATROL_POINT (zb1_guard3, 6.5, 11.5, 2.0)
ZB1_Guard4 = CREATE_CHAR (9.80, 13.7, 2.0) 1 270 CRIMINAL_TYPE2 END
GIVE_WEAPON(ZB1_Guard3, PISTOL)
GIVE_WEAPON(ZB1_Guard4, PISTOL)
SET_CHAR_THREAT_SEARCH(ZB1_Guard3, LINE_OF_SIGHT_PLAYER_ONLY)
SET_CHAR_THREAT_SEARCH(ZB1_Guard4, LINE_OF_SIGHT_PLAYER_ONLY)
SET_CHAR_THREAT_REACTION(ZB1_Guard3, REACT_AS_NORMAL)
SET_CHAR_THREAT_REACTION(ZB1_Guard4, REACT_AS_NORMAL)
DISPLAY_MESSAGE (1134) //PILLS HERE!
DISPLAY_BRIEF_NOW (1132) //Go steal drugs.
DISPLAY_BRIEF_SOON(1133) //They are in a Tanker. Find a truckcab.
DISPLAY_BRIEF(1150) //Mind the guards.
ENDEXEC
WHILE_EXEC(MissionLoop = 1)
DO_NOWT //Just in case.
//Guard stuff.
IF(ZB1_Spotted1 = 0)
IF((HAS_CHAR_SPOTTED_PLAYER(ZB1_Guard1)) OR (HAS_CHAR_SPOTTED_PLAYER(ZB1_Guard2)))
SET ZB1_Spotted1 = 1
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1135) //n!We got an intruder!
IF(NOT(HAS_CHARACTER_DIED(ZB1_Guard1)))
SET_CHAR_THREAT_SEARCH(ZB1_Guard1, AREA)
SET_CHAR_OBJECTIVE(ZB1_Guard1, KILL_CHAR_ON_FOOT, Player1)
ENDIF
IF(NOT(HAS_CHARACTER_DIED(ZB1_Guard2)))
SET_CHAR_THREAT_SEARCH(ZB1_Guard2, AREA)
SET_CHAR_OBJECTIVE(ZB1_Guard2, KILL_CHAR_ON_FOOT, Player1)
ENDIF
ENDIF
ENDIF
IF(ZB1_Spotted2 = 0)
IF((HAS_CHAR_SPOTTED_PLAYER(ZB1_Guard3)) OR (HAS_CHAR_SPOTTED_PLAYER(ZB1_Guard4)))
SET ZB1_Spotted2 = 1
ALTER_WANTED_LEVEL_NO_DROP(Player1, 1)
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1137) //n!You're not allowed in here!
IF(NOT(HAS_CHARACTER_DIED(ZB1_Guard3)))
SET_CHAR_THREAT_SEARCH(ZB1_Guard3, AREA)
SET_CHAR_OBJECTIVE(ZB1_Guard3, KILL_CHAR_ON_FOOT, Player1)
ENDIF
IF(NOT(HAS_CHARACTER_DIED(ZB1_Guard4)))
SET_CHAR_THREAT_SEARCH(ZB1_Guard4, AREA)
SET_CHAR_OBJECTIVE(ZB1_Guard4, KILL_CHAR_ON_FOOT, Player1)
ENDIF
ENDIF
ENDIF
//End of guard stuff.
IF((ZB1_Found = 0) AND (IS_CHARACTER_IN_CAR(Player1, ZB1_Truck)))
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1138) //Good, you found it. Get that Tanker!
REMOVE_ARROW(ZB1_GreenArrow)
SET ZB1_Found = 1
ENDIF
IF((IS_CHARACTER_IN_MODEL(Player1, TRUKCAB1)) OR (IS_CHARACTER_IN_MODEL(Player1, TRUKCAB2)))
IF(NOT(IS_CHARACTER_IN_CAR(Player1, ZB1_Truck)))
IF(NOT(IS_CHARACTER_IN_CAR(Player1, ZB1_Truckdata)))
//IF(ZB1_Stolen = 1)
//REMOVE_ARROW(ZB1_DataArrow)
//ENDIF
IF(ZB1_Stolen = 0)
SET ZB1_Stolen = 1
ENDIF
STORE_CAR_CHARACTER_IS_IN(Player1, ZB1_Truckdata)
SET ZB1_Progress = 1
IF(ZB1_Talk2 = 0)
SET ZB1_Talk2 = 1
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1149) //Good, you found one off the streets. Get that tanker!
ENDIF
ENDIF
ENDIF
ENDIF
IF(ZB1_Stolen = 1) //Find another one!
IF(IS_CAR_WRECKED(ZB1_Truckdata))
SET ZB1_Stolen = 0
//REMOVE_ARROW(ZB1_DataArrow)
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1139) //Great job breaking it. Get a new one.
ENDIF
ENDIF
IF(ZB1_Broken = 0) // This one isnt going to be replaced.
IF(IS_CAR_WRECKED(ZB1_Truck))
REMOVE_ARROW(ZB1_Arrow)
SET ZB1_Broken = 1
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1140) //Great. Now you gotta steal one off the streets.
ENDIF
ENDIF
IF((ZB1_Progress = 0) OR (ZB1_Progress = 1))
IF(IS_TRAILER_ATTACHED(ZB1_Truck, ZB1_Tanker))
SET ZB1_Progress = 2
SET ZB1_TruckType = 1
IF(ZB1_Talk3 = 0)
SET ZB1_Talk3 = 1
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1141) //Good, bring it back with the Tanker attached.
ENDIF
REMOVE_ARROW(ZB1_Arrow)
POINT_ARROW_AT(ZB1_Arrow, 104.5, 103.5, 2.0)
ENDIF
ENDIF
IF((ZB1_Progress = 0) OR (ZB1_Progress = 1))
IF(IS_TRAILER_ATTACHED(ZB1_Truckdata, ZB1_Tanker))
SET ZB1_Progress = 2
SET ZB1_TruckType = 2
IF(ZB1_Talk3 = 0)
SET ZB1_Talk3 = 1
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1141) //Good, bring it back with the tanker attached.
ENDIF
IF(ZB1_Broken = 1)
DISPLAY_BRIEF_SOON(1142) //And dont break this one.
ENDIF
REMOVE_ARROW(ZB1_Arrow)
POINT_ARROW_AT(ZB1_Arrow, 104.5, 103.5, 2.0)
ENDIF
ENDIF
IF(ZB1_Progress = 2)
IF(ZB1_TruckType = 1)
IF(NOT(IS_TRAILER_ATTACHED(ZB1_Truck, ZB1_Tanker)))
REMOVE_ARROW(ZB1_Arrow)
SET ZB1_TruckType = 3 //Set to none.
POINT_ARROW_AT(ZB1_Arrow, ZB1_Tanker)
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1143) //Attach that tanker again!
ENDIF
ENDIF
ENDIF
IF(ZB1_Progress = 2)
IF(ZB1_TruckType = 2)
IF(NOT(IS_TRAILER_ATTACHED(ZB1_Truckdata, ZB1_Tanker)))
REMOVE_ARROW(ZB1_Arrow)
POINT_ARROW_AT(ZB1_Arrow, ZB1_Tanker)
SET ZB1_TruckType = 3
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1143) //Attach that tanker again!
ENDIF
ENDIF
ENDIF
IF((ZB1_Progress = 2) AND (ZB1_TruckType = 3))
IF(IS_TRAILER_ATTACHED(ZB1_Truck, ZB1_Tanker))
REMOVE_ARROW(ZB1_Arrow)
POINT_ARROW_AT(ZB1_Arrow, 104.5, 103.5, 2.0)
SET ZB1_TruckType = 1
ENDIF
ENDIF
IF((ZB1_Progress = 2) AND (ZB1_TruckType = 3))
IF(IS_TRAILER_ATTACHED(ZB1_Truckdata, ZB1_Tanker))
REMOVE_ARROW(ZB1_Arrow)
POINT_ARROW_AT(ZB1_Arrow, 104.5, 103.5, 2.0)
SET ZB1_TruckType = 2
ENDIF
ENDIF
IF((ZB1_Progress = 2) AND (IS_CAR_IN_BLOCK(ZB1_Tanker, 104.5, 103.5, 2.0, 1.0, 1.0)))
//IF((ZB1_TruckType = 1) OR (ZB1_TruckType = 2))
//
IF(NOT(ZB1_TruckType = 3))
//IF(CHECK_CAR_SPEED(ZB1_Truck, 0))
REMOVE_ARROW(ZB1_Arrow)
SET ZB1_Ready = 1
IF(ZB1_Talk = 0)
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1144) //Good, leave it here and exit the car.
SET ZB1_Talk = 1
ENDIF
ENDIF
ENDIF
IF(ZB1_Ready = 1)
IF(NOT(IS_CAR_IN_BLOCK(ZB1_Tanker, 104.5, 103.5, 2.0, 1.0, 1.0)))
SET ZB1_Ready = 0
POINT_ARROW_AT(ZB1_Arrow, 104.5, 103.5, 2.0)
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1148) //Wrong spot. Put it at the arrow!
ENDIF
ENDIF
IF((ZB1_Progress = 2) AND (ZB1_Ready = 1))//
IF(ZB1_TruckType = 1)
IF(NOT(IS_CHARACTER_IN_CAR(Player1, ZB1_Truck)))
//CHANGE_CAR_LOCK(ZB1_Truck, LOCKOUT_PLAYER)
SET ZB1_Passed = 1
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1146) //Well done.
DISPLAY_MESSAGE(1024) //JOB COMPLETE!
ADD_SCORE(Player1, 10000)
CLEAR_WANTED_LEVEL(Player1)
RETURN
ENDIF
ENDIF
//-
DO_NOWT
//-
IF(ZB1_TruckType = 2)
IF(NOT(IS_CHARACTER_IN_CAR(Player1, ZB1_Truckdata)))
//CHANGE_CAR_LOCK(ZB1_Truckdata, LOCKOUT_PLAYER)
SET ZB1_Passed = 1
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1146) //Well done.
DISPLAY_MESSAGE(1024) //JOB COMPLETE!
ADD_SCORE(Player1, 10000)
CLEAR_WANTED_LEVEL(Player1)
RETURN
ENDIF
ENDIF
ENDIF //End of check.
//FAILED STATES!
IF(IS_CAR_WRECKED(ZB1_Tanker))
CLEAR_ALL_BRIEFS()
DISPLAY_MESSAGE (1125) //JOB FAILED!
DISPLAY_BRIEF_NOW(1147) //You blew it!
SET ZB1_Failed = 1
RETURN
ENDIF
IF(HAS_CHAR_BEEN_ARRESTED(Player1))
DISPLAY_MESSAGE (1125) //JOB FAILED!
SET ZB1_Failed = 1
RETURN
ENDIF
IF(HAS_CHARACTER_DIED(Player1))
DISPLAY_MESSAGE (1125) //JOB FAILED!
SET ZB1_Failed = 1
RETURN
ENDIF
ENDWHILE
RETURN
//-----------------------------------CLEAN UP--------------------------------------
ZB1_Cleanup:
IF(ZB1_Passed = 1)
IF(Mission_ZB1Status = 0)
++Global_MissionsPassed
ENDIF
SET Mission_ZB1Status = 1 //Important for repeatable missions.
ENABLE_THREAD_TRIGGER(ZB1SubThread)
SET Global_OnMission = 0
SET MissionLoop = 0
//STOP_PHONE_RINGING (Global_WhateverPhone) // - Pick one.
//SET_PHONE_DEAD (Global_WhateverPhone)
ANSWER_PHONE (Player1, Global_ZaibatsuPhone1, -1)
ENDIF
IF(ZB1_Failed = 1)
ENABLE_THREAD_TRIGGER(ZB1SubThread)
SET Global_OnMission = 0
SET MissionLoop = 0
ANSWER_PHONE (Player1, Global_ZaibatsuPhone1, -1)
ENDIF
IF((ZB1_TruckType = 1) AND (ZB1_Broken = 0))
CHANGE_CAR_LOCK(ZB1_Truck, LOCKOUT_PLAYER)
ENDIF
IF((ZB1_TruckType = 2) AND (ZB1_Stolen = 1))
CHANGE_CAR_LOCK(ZB1_Truckdata, LOCKOUT_PLAYER)
ENDIF
REMOVE_ARROW(ZB1_Arrow)
REMOVE_ARROW(ZB1_GreenArrow)
REMOVE_ARROW(ZB1_DataArrow)
SET Global_OnMission = 0 //Makes the main script know a mission is no longer in progress.
SET Global_MissionFinished = 1 //Notifies the main script a mission ended!
SET MissionLoop = 0
SET ZB1_Progress = 0
SET ZB1_Stolen = 0
SET ZB1_Broken = 0
SET ZB1_TruckType = 0
SET ZB1_Talk = 0
SET ZB1_Talk3 = 0
SET ZB1_Ready = 0
SET ZB1_Spotted1 = 0
SET ZB1_Spotted2 = 0
SET ZB1_Passed = 0
SET ZB1_Failed = 0
MISSION_HAS_FINISHED()
RETURN
MISSIONSTART
GOSUB ZB1_Main:
GOSUB ZB1_Cleanup:
MISSIONEND[/mis]
If need be i can put up the main script as well but all the mission files use the same routine when it comes to shutting down save for the odd removal of arrows, objects and different counters being set to 0, and in the main script its all the same routine for each mission as well, so im not sure if that would help...
So yeah, anyone got an idea how to make it stop crashing all the damn time when it's passed? And the passed code is identical (save for different counters) to other mission's passed code, so i dont think thats it.
Edit: I'll go ahead and upload the file itself aswell with minor changes, such as adding a space before comments as apparently that screws up some of the newer editors, think i'll just stick with mis pad, though.
Edit: Seems DISPLAY_MESSAGE was using a wrong kind of message by accident. Fixed now.
Mission wsd_zb1
[mis]//Zaibatsu mission
//Mission declares. And most of all, COUNTERS.
CAR_DATA ZB1_Truck
CAR_DATA ZB1_Truckdata //For when finding one on the street.
CAR_DATA ZB1_Tanker
CHAR_DATA ZB1_Guard1
CHAR_DATA ZB1_Guard2
CHAR_DATA ZB1_Guard3
CHAR_DATA ZB1_Guard4
ARROW_DATA ZB1_Arrow
ARROW_DATA ZB1_GreenArrow
ARROW_DATA ZB1_DataArrow
COUNTER ZB1_Progress = 0
COUNTER ZB1_Stolen = 0
COUNTER ZB1_Broken = 0
COUNTER ZB1_TruckType = 0
COUNTER ZB1_Talk = 0
COUNTER ZB1_Talk2 = 0
COUNTER ZB1_Talk3 = 0
COUNTER ZB1_Ready = 0
COUNTER ZB1_Spotted1 = 0
COUNTER ZB1_Spotted2 = 0
COUNTER ZB1_Found = 0
COUNTER ZB1_Passed = 0
COUNTER ZB1_Failed = 0
FORWARD ZB1_Cleanup: //Dont make this the first command in a mission. Try to keep it below Declares.
ZB1_Main:
EXEC
//Setup criticals beforehand.
SET Global_OnMission = 1
SET MissionLoop = 1
STOP_PHONE (Global_ZaibatsuPhone1) //Needed for Blue Phones ONLY.
//Mission stuff between this and WHILE_EXEC.
ZB1_Truck = CREATE_CAR (147.5, 165.5, 2.0) 14 0 TRUKCAB2 END
ZB1_Truckdata = CREATE_CAR (3.5, 208.5, 5.0) 1 0 TRUKCAB1 END // Placeholder.
POINT_ARROW_AT(ZB1_GreenArrow, ZB1_Truck)
SET_ARROW_COLOUR(ZB1_GreenArrow, GREEN)
ZB1_Guard1 = CREATE_CHAR (144.5, 170.5, 2.0) 1 90 CRIMINAL_TYPE1 END
ADD_PATROL_POINT (zb1_guard1, 148.5, 170.5, 2.0)
ADD_PATROL_POINT (zb1_guard1, 148.5, 171.5, 2.0)
ADD_PATROL_POINT (zb1_guard1, 148.5, 170.5, 2.0)
ADD_PATROL_POINT (zb1_guard1, 144.5, 170.5, 2.0)
ZB1_Guard2 = CREATE_CHAR (145.5, 166.5, 2.0) 1 90 CRIMINAL_TYPE1 END
ADD_PATROL_POINT (zb1_guard2, 151.5, 166.5, 2.0)
ADD_PATROL_POINT (zb1_guard2, 151.5, 164.5, 2.0)
ADD_PATROL_POINT (zb1_guard2, 153.5, 164.5, 2.0)
ADD_PATROL_POINT (zb1_guard2, 151.5, 164.5, 2.0)
ADD_PATROL_POINT (zb1_guard2, 151.5, 166.5, 2.0)
ADD_PATROL_POINT (zb1_guard2, 145.5, 166.5, 2.0)
GIVE_WEAPON(ZB1_Guard1, PISTOL)
GIVE_WEAPON(ZB1_Guard2, PISTOL)
SET_CHAR_THREAT_SEARCH(ZB1_Guard1, LINE_OF_SIGHT_PLAYER_ONLY)
SET_CHAR_THREAT_SEARCH(ZB1_Guard2, LINE_OF_SIGHT_PLAYER_ONLY)
SET_CHAR_THREAT_REACTION(ZB1_Guard1, REACT_AS_NORMAL)
SET_CHAR_THREAT_REACTION(ZB1_Guard2, REACT_AS_NORMAL)
ZB1_Tanker = CREATE_CAR (9.7, 14.5, 2.0) -1 90 TANKER END
POINT_ARROW_AT(ZB1_Arrow, ZB1_Tanker)
ZB1_Guard3 = CREATE_CHAR (6.5, 11.5, 2.0) 1 270 CRIMINAL_TYPE2 END
ADD_PATROL_POINT (zb1_guard3, 5.5, 11.5, 2.0)
ADD_PATROL_POINT (zb1_guard3, 5.5, 14.5, 2.0)
ADD_PATROL_POINT (zb1_guard3, 8.5, 14.5, 2.0)
ADD_PATROL_POINT (zb1_guard3, 5.5, 14.5, 2.0)
ADD_PATROL_POINT (zb1_guard3, 5.5, 11.5, 2.0)
ADD_PATROL_POINT (zb1_guard3, 6.5, 11.5, 2.0)
ADD_PATROL_POINT (zb1_guard3, 6.5, 10.5, 2.0)
ADD_PATROL_POINT (zb1_guard3, 6.5, 11.5, 2.0)
ZB1_Guard4 = CREATE_CHAR (9.80, 13.7, 2.0) 1 270 CRIMINAL_TYPE2 END
GIVE_WEAPON(ZB1_Guard3, PISTOL)
GIVE_WEAPON(ZB1_Guard4, PISTOL)
SET_CHAR_THREAT_SEARCH(ZB1_Guard3, LINE_OF_SIGHT_PLAYER_ONLY)
SET_CHAR_THREAT_SEARCH(ZB1_Guard4, LINE_OF_SIGHT_PLAYER_ONLY)
SET_CHAR_THREAT_REACTION(ZB1_Guard3, REACT_AS_NORMAL)
SET_CHAR_THREAT_REACTION(ZB1_Guard4, REACT_AS_NORMAL)
DISPLAY_MESSAGE (1134) //PILLS HERE!
DISPLAY_BRIEF_NOW (1132) //Go steal drugs.
DISPLAY_BRIEF_SOON(1133) //They are in a Tanker. Find a truckcab.
DISPLAY_BRIEF(1150) //Mind the guards.
ENDEXEC
WHILE_EXEC(MissionLoop = 1)
DO_NOWT //Just in case.
//Guard stuff.
IF(ZB1_Spotted1 = 0)
IF((HAS_CHAR_SPOTTED_PLAYER(ZB1_Guard1)) OR (HAS_CHAR_SPOTTED_PLAYER(ZB1_Guard2)))
SET ZB1_Spotted1 = 1
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1135) //n!We got an intruder!
IF(NOT(HAS_CHARACTER_DIED(ZB1_Guard1)))
SET_CHAR_THREAT_SEARCH(ZB1_Guard1, AREA)
SET_CHAR_OBJECTIVE(ZB1_Guard1, KILL_CHAR_ON_FOOT, Player1)
ENDIF
IF(NOT(HAS_CHARACTER_DIED(ZB1_Guard2)))
SET_CHAR_THREAT_SEARCH(ZB1_Guard2, AREA)
SET_CHAR_OBJECTIVE(ZB1_Guard2, KILL_CHAR_ON_FOOT, Player1)
ENDIF
ENDIF
ENDIF
IF(ZB1_Spotted2 = 0)
IF((HAS_CHAR_SPOTTED_PLAYER(ZB1_Guard3)) OR (HAS_CHAR_SPOTTED_PLAYER(ZB1_Guard4)))
SET ZB1_Spotted2 = 1
ALTER_WANTED_LEVEL_NO_DROP(Player1, 1)
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1137) //n!You're not allowed in here!
IF(NOT(HAS_CHARACTER_DIED(ZB1_Guard3)))
SET_CHAR_THREAT_SEARCH(ZB1_Guard3, AREA)
SET_CHAR_OBJECTIVE(ZB1_Guard3, KILL_CHAR_ON_FOOT, Player1)
ENDIF
IF(NOT(HAS_CHARACTER_DIED(ZB1_Guard4)))
SET_CHAR_THREAT_SEARCH(ZB1_Guard4, AREA)
SET_CHAR_OBJECTIVE(ZB1_Guard4, KILL_CHAR_ON_FOOT, Player1)
ENDIF
ENDIF
ENDIF
//End of guard stuff.
IF((ZB1_Found = 0) AND (IS_CHARACTER_IN_CAR(Player1, ZB1_Truck)))
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1138) //Good, you found it. Get that Tanker!
REMOVE_ARROW(ZB1_GreenArrow)
SET ZB1_Found = 1
ENDIF
IF((IS_CHARACTER_IN_MODEL(Player1, TRUKCAB1)) OR (IS_CHARACTER_IN_MODEL(Player1, TRUKCAB2)))
IF(NOT(IS_CHARACTER_IN_CAR(Player1, ZB1_Truck)))
IF(NOT(IS_CHARACTER_IN_CAR(Player1, ZB1_Truckdata)))
//IF(ZB1_Stolen = 1)
//REMOVE_ARROW(ZB1_DataArrow)
//ENDIF
IF(ZB1_Stolen = 0)
SET ZB1_Stolen = 1
ENDIF
STORE_CAR_CHARACTER_IS_IN(Player1, ZB1_Truckdata)
SET ZB1_Progress = 1
IF(ZB1_Talk2 = 0)
SET ZB1_Talk2 = 1
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1149) //Good, you found one off the streets. Get that tanker!
ENDIF
ENDIF
ENDIF
ENDIF
IF(ZB1_Stolen = 1) //Find another one!
IF(IS_CAR_WRECKED(ZB1_Truckdata))
SET ZB1_Stolen = 0
//REMOVE_ARROW(ZB1_DataArrow)
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1139) //Great job breaking it. Get a new one.
ENDIF
ENDIF
IF(ZB1_Broken = 0) // This one isnt going to be replaced.
IF(IS_CAR_WRECKED(ZB1_Truck))
REMOVE_ARROW(ZB1_Arrow)
SET ZB1_Broken = 1
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1140) //Great. Now you gotta steal one off the streets.
ENDIF
ENDIF
IF((ZB1_Progress = 0) OR (ZB1_Progress = 1))
IF(IS_TRAILER_ATTACHED(ZB1_Truck, ZB1_Tanker))
SET ZB1_Progress = 2
SET ZB1_TruckType = 1
IF(ZB1_Talk3 = 0)
SET ZB1_Talk3 = 1
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1141) //Good, bring it back with the Tanker attached.
ENDIF
REMOVE_ARROW(ZB1_Arrow)
POINT_ARROW_AT(ZB1_Arrow, 104.5, 103.5, 2.0)
ENDIF
ENDIF
IF((ZB1_Progress = 0) OR (ZB1_Progress = 1))
IF(IS_TRAILER_ATTACHED(ZB1_Truckdata, ZB1_Tanker))
SET ZB1_Progress = 2
SET ZB1_TruckType = 2
IF(ZB1_Talk3 = 0)
SET ZB1_Talk3 = 1
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1141) //Good, bring it back with the tanker attached.
ENDIF
IF(ZB1_Broken = 1)
DISPLAY_BRIEF_SOON(1142) //And dont break this one.
ENDIF
REMOVE_ARROW(ZB1_Arrow)
POINT_ARROW_AT(ZB1_Arrow, 104.5, 103.5, 2.0)
ENDIF
ENDIF
IF(ZB1_Progress = 2)
IF(ZB1_TruckType = 1)
IF(NOT(IS_TRAILER_ATTACHED(ZB1_Truck, ZB1_Tanker)))
REMOVE_ARROW(ZB1_Arrow)
SET ZB1_TruckType = 3 //Set to none.
POINT_ARROW_AT(ZB1_Arrow, ZB1_Tanker)
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1143) //Attach that tanker again!
ENDIF
ENDIF
ENDIF
IF(ZB1_Progress = 2)
IF(ZB1_TruckType = 2)
IF(NOT(IS_TRAILER_ATTACHED(ZB1_Truckdata, ZB1_Tanker)))
REMOVE_ARROW(ZB1_Arrow)
POINT_ARROW_AT(ZB1_Arrow, ZB1_Tanker)
SET ZB1_TruckType = 3
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1143) //Attach that tanker again!
ENDIF
ENDIF
ENDIF
IF((ZB1_Progress = 2) AND (ZB1_TruckType = 3))
IF(IS_TRAILER_ATTACHED(ZB1_Truck, ZB1_Tanker))
REMOVE_ARROW(ZB1_Arrow)
POINT_ARROW_AT(ZB1_Arrow, 104.5, 103.5, 2.0)
SET ZB1_TruckType = 1
ENDIF
ENDIF
IF((ZB1_Progress = 2) AND (ZB1_TruckType = 3))
IF(IS_TRAILER_ATTACHED(ZB1_Truckdata, ZB1_Tanker))
REMOVE_ARROW(ZB1_Arrow)
POINT_ARROW_AT(ZB1_Arrow, 104.5, 103.5, 2.0)
SET ZB1_TruckType = 2
ENDIF
ENDIF
IF((ZB1_Progress = 2) AND (IS_CAR_IN_BLOCK(ZB1_Tanker, 104.5, 103.5, 2.0, 1.0, 1.0)))
//IF((ZB1_TruckType = 1) OR (ZB1_TruckType = 2))
//
IF(NOT(ZB1_TruckType = 3))
//IF(CHECK_CAR_SPEED(ZB1_Truck, 0))
REMOVE_ARROW(ZB1_Arrow)
SET ZB1_Ready = 1
IF(ZB1_Talk = 0)
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1144) //Good, leave it here and exit the car.
SET ZB1_Talk = 1
ENDIF
ENDIF
ENDIF
IF(ZB1_Ready = 1)
IF(NOT(IS_CAR_IN_BLOCK(ZB1_Tanker, 104.5, 103.5, 2.0, 1.0, 1.0)))
SET ZB1_Ready = 0
POINT_ARROW_AT(ZB1_Arrow, 104.5, 103.5, 2.0)
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1148) //Wrong spot. Put it at the arrow!
ENDIF
ENDIF
IF((ZB1_Progress = 2) AND (ZB1_Ready = 1))//
IF(ZB1_TruckType = 1)
IF(NOT(IS_CHARACTER_IN_CAR(Player1, ZB1_Truck)))
//CHANGE_CAR_LOCK(ZB1_Truck, LOCKOUT_PLAYER)
SET ZB1_Passed = 1
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1146) //Well done.
DISPLAY_MESSAGE(1024) //JOB COMPLETE!
ADD_SCORE(Player1, 10000)
CLEAR_WANTED_LEVEL(Player1)
RETURN
ENDIF
ENDIF
//-
DO_NOWT
//-
IF(ZB1_TruckType = 2)
IF(NOT(IS_CHARACTER_IN_CAR(Player1, ZB1_Truckdata)))
//CHANGE_CAR_LOCK(ZB1_Truckdata, LOCKOUT_PLAYER)
SET ZB1_Passed = 1
CLEAR_ALL_BRIEFS()
DISPLAY_BRIEF_NOW(1146) //Well done.
DISPLAY_MESSAGE(1024) //JOB COMPLETE!
ADD_SCORE(Player1, 10000)
CLEAR_WANTED_LEVEL(Player1)
RETURN
ENDIF
ENDIF
ENDIF //End of check.
//FAILED STATES!
IF(IS_CAR_WRECKED(ZB1_Tanker))
CLEAR_ALL_BRIEFS()
DISPLAY_MESSAGE (1125) //JOB FAILED!
DISPLAY_BRIEF_NOW(1147) //You blew it!
SET ZB1_Failed = 1
RETURN
ENDIF
IF(HAS_CHAR_BEEN_ARRESTED(Player1))
DISPLAY_MESSAGE (1125) //JOB FAILED!
SET ZB1_Failed = 1
RETURN
ENDIF
IF(HAS_CHARACTER_DIED(Player1))
DISPLAY_MESSAGE (1125) //JOB FAILED!
SET ZB1_Failed = 1
RETURN
ENDIF
ENDWHILE
RETURN
//-----------------------------------CLEAN UP--------------------------------------
ZB1_Cleanup:
IF(ZB1_Passed = 1)
IF(Mission_ZB1Status = 0)
++Global_MissionsPassed
ENDIF
SET Mission_ZB1Status = 1 //Important for repeatable missions.
ENABLE_THREAD_TRIGGER(ZB1SubThread)
SET Global_OnMission = 0
SET MissionLoop = 0
//STOP_PHONE_RINGING (Global_WhateverPhone) // - Pick one.
//SET_PHONE_DEAD (Global_WhateverPhone)
ANSWER_PHONE (Player1, Global_ZaibatsuPhone1, -1)
ENDIF
IF(ZB1_Failed = 1)
ENABLE_THREAD_TRIGGER(ZB1SubThread)
SET Global_OnMission = 0
SET MissionLoop = 0
ANSWER_PHONE (Player1, Global_ZaibatsuPhone1, -1)
ENDIF
IF((ZB1_TruckType = 1) AND (ZB1_Broken = 0))
CHANGE_CAR_LOCK(ZB1_Truck, LOCKOUT_PLAYER)
ENDIF
IF((ZB1_TruckType = 2) AND (ZB1_Stolen = 1))
CHANGE_CAR_LOCK(ZB1_Truckdata, LOCKOUT_PLAYER)
ENDIF
REMOVE_ARROW(ZB1_Arrow)
REMOVE_ARROW(ZB1_GreenArrow)
REMOVE_ARROW(ZB1_DataArrow)
SET Global_OnMission = 0 //Makes the main script know a mission is no longer in progress.
SET Global_MissionFinished = 1 //Notifies the main script a mission ended!
SET MissionLoop = 0
SET ZB1_Progress = 0
SET ZB1_Stolen = 0
SET ZB1_Broken = 0
SET ZB1_TruckType = 0
SET ZB1_Talk = 0
SET ZB1_Talk3 = 0
SET ZB1_Ready = 0
SET ZB1_Spotted1 = 0
SET ZB1_Spotted2 = 0
SET ZB1_Passed = 0
SET ZB1_Failed = 0
MISSION_HAS_FINISHED()
RETURN
MISSIONSTART
GOSUB ZB1_Main:
GOSUB ZB1_Cleanup:
MISSIONEND[/mis]
If need be i can put up the main script as well but all the mission files use the same routine when it comes to shutting down save for the odd removal of arrows, objects and different counters being set to 0, and in the main script its all the same routine for each mission as well, so im not sure if that would help...
So yeah, anyone got an idea how to make it stop crashing all the damn time when it's passed? And the passed code is identical (save for different counters) to other mission's passed code, so i dont think thats it.
Edit: I'll go ahead and upload the file itself aswell with minor changes, such as adding a space before comments as apparently that screws up some of the newer editors, think i'll just stick with mis pad, though.