Created
March 23, 2022 20:44
-
-
Save JuniorDjjr/c92849b8c76fc054b548414ce1fe2c32 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// You need: https://forum.mixmods.com.br/f16-utilidades/t179-gta3script-while-true-return_true-e-return_false | |
// You are allowed to use this script in other mods. Keep credits: Junior_Djjr (MixMods.com.br) | |
// | |
// !!! THIS IS AN EDITED VERSION FOR VICE CITY LIGHTHOUSE FOR SA !!! | |
// | |
SCRIPT_START | |
{ | |
LVAR_INT scplayer hObj hObjDummy hSearchLight isBack isSearchlightOn hour min iInterior i j bLightObjectsCreated iCreateLightObjects hList | |
LVAR_FLOAT x y z basePosX basePosY basePosZ fObjRotZ fStartAngle fMinAngle fMaxAngle fObjSize fLightOffset fLightTargetOffset f | |
CONST_FLOAT MAX_RADIUS 800.0 | |
CONST_INT MAX_HOUR 20 | |
CONST_INT MIN_HOUR 6 | |
CONST_INT MODEL_A51_SPOTBASE 2889 | |
CONST_INT MODEL_A51_SPOTHOUSING 2888 | |
CONST_INT MODEL_A51_SPOTBULB 2887 | |
CONST_INT MODEL_TRAFFICCONE 1238 | |
GET_PLAYER_CHAR 0 scplayer | |
SET_TIME_OF_DAY 0 0 | |
WHILE TRUE | |
WAIT 750 | |
GET_AREA_VISIBLE iInterior | |
IF iInterior = 0 | |
IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2381.5232 2215.9561 20.7552 MAX_RADIUS MAX_RADIUS 500.0 FALSE | |
GOSUB Activate_Lighthouse_Bayside | |
ENDIF | |
IF LOCATE_CHAR_ANY_MEANS_3D scplayer 154.2315 -1952.0558 46.4557 MAX_RADIUS MAX_RADIUS 500.0 FALSE | |
GOSUB Activate_Lighthouse_SantaMaria | |
ENDIF | |
IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2323.7825 1283.1709 97.0 MAX_RADIUS MAX_RADIUS 500.0 FALSE | |
GET_TIME_OF_DAY hour min | |
IF hour >= 22 | |
OR hour <= 6 | |
GOSUB Activate_Light_Pyramid | |
ENDIF | |
ENDIF | |
ENDIF | |
ENDWHILE | |
Activate_Light_Pyramid: | |
basePosX = 2323.7825 | |
basePosY = 1283.1709 | |
basePosZ = 97.2 | |
iCreateLightObjects = 0 | |
CREATE_SEARCHLIGHT (basePosX basePosY basePosZ) (basePosX basePosY 200.0) 20.0 0.8 (hSearchLight) | |
SET_SEARCHLIGHT_CLIP_IF_COLLIDING hSearchLight FALSE | |
WHILE LOCATE_CHAR_ANY_MEANS_3D scplayer basePosX basePosY basePosZ MAX_RADIUS MAX_RADIUS 500.0 FALSE | |
WAIT 0 | |
GET_TIME_OF_DAY hour min | |
IF hour < 22 | |
AND hour > 6 | |
BREAK | |
ENDIF | |
ENDWHILE | |
DELETE_SEARCHLIGHT hSearchLight | |
RETURN | |
Activate_Lighthouse_Bayside: | |
basePosX = -2381.5232 | |
basePosY = 2215.9561 | |
basePosZ = 14.0 | |
fObjSize = 1.0 | |
fStartAngle = 180.0 | |
fMinAngle = 100.0 | |
fMaxAngle = 260.0 | |
fLightOffset = 3.1 | |
fLightTargetOffset = 120.0 | |
iCreateLightObjects = 0 | |
GOSUB RunSearchlight | |
RETURN | |
Activate_Lighthouse_SantaMaria: | |
basePosX = 154.1091 | |
basePosY = -1950.287 | |
basePosZ = 49.7 | |
fObjSize = 0.6 | |
fStartAngle = 180.0 | |
fMinAngle = 90.0 | |
fMaxAngle = 200.0 | |
fLightOffset = 3.1 | |
fLightTargetOffset = 100.0 | |
iCreateLightObjects = 1 | |
GOSUB RunSearchlight | |
RETURN | |
RunSearchlight: | |
isSearchlightOn = FALSE | |
CREATE_OBJECT_NO_SAVE MODEL_TRAFFICCONE basePosX basePosY basePosZ FALSE FALSE (hObjDummy) | |
SET_OBJECT_VISIBLE hObjDummy FALSE | |
CLEO_CALL DontSaveObject 0 (hObjDummy) | |
fObjRotZ = fStartAngle | |
SET_OBJECT_HEADING hObjDummy fObjRotZ | |
WHILE LOCATE_CAMERA_DISTANCE_TO_COORDINATES basePosX basePosY basePosZ 500.0 | |
AND iInterior = 0 | |
WAIT 0 | |
IF iCreateLightObjects > 0 | |
GET_ACTIVE_CAMERA_COORDINATES x y z | |
GET_DISTANCE_BETWEEN_COORDS_2D basePosX basePosY x y (f) | |
IF f < 7.0 | |
GOSUB CreateLightObjects | |
ELSE | |
GOSUB DeleteLightObjects | |
ENDIF | |
ENDIF | |
GET_TIME_OF_DAY hour min | |
GET_AREA_VISIBLE iInterior | |
IF isSearchlightOn = TRUE | |
IF isBack = TRUE | |
fObjRotZ -=@ 0.3 | |
ELSE | |
fObjRotZ +=@ 0.3 | |
ENDIF | |
IF fObjRotZ > fMaxAngle | |
isBack = TRUE | |
fObjRotZ = fMaxAngle | |
ELSE | |
IF fObjRotZ < fMinAngle | |
isBack = FALSE | |
fObjRotZ = fMinAngle | |
ENDIF | |
ENDIF | |
SET_OBJECT_HEADING hObjDummy fObjRotZ | |
GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS hObjDummy 0.0 fLightTargetOffset -30.0 (x y z) | |
POINT_SEARCHLIGHT_AT_COORD hSearchLight x y z 100.0 | |
IF hour < MAX_HOUR | |
AND hour > MIN_HOUR | |
DELETE_SEARCHLIGHT hSearchLight | |
isSearchlightOn = FALSE | |
ENDIF | |
ELSE | |
IF hour >= MAX_HOUR | |
OR hour <= MIN_HOUR | |
CREATE_SEARCHLIGHT (basePosX basePosY basePosZ) (basePosX basePosY basePosZ) 25.0 fObjSize (hSearchLight) | |
ATTACH_SEARCHLIGHT_TO_SEARCHLIGHT_OBJECT hSearchLight hObjDummy hObjDummy hObjDummy 0.0 fLightOffset 0.7 | |
SET_SEARCHLIGHT_CLIP_IF_COLLIDING hSearchLight FALSE | |
isSearchlightOn = TRUE | |
ENDIF | |
ENDIF | |
ENDWHILE | |
IF iCreateLightObjects = TRUE | |
GOSUB DeleteLightObjects | |
ENDIF | |
IF isSearchlightOn = TRUE | |
DELETE_SEARCHLIGHT hSearchLight | |
ENDIF | |
DELETE_OBJECT hObjDummy | |
RETURN | |
CreateLightObjects: | |
IF bLightObjectsCreated = FALSE | |
CREATE_LIST DATATYPE_INT hList | |
CREATE_OBJECT_NO_SAVE 3785 151.652344, -1950.193726, 47.910851 FALSE FALSE (hObj) | |
SET_OBJECT_QUATERNION hObj 0.000000, -0.000000, -0.000000, -1.000000 | |
LIST_ADD hList hObj | |
CREATE_OBJECT_NO_SAVE 3785 156.749557, -1950.202393, 48.0523411 FALSE FALSE (hObj) | |
SET_OBJECT_QUATERNION hObj 0.000000, -0.000000, -0.999202, 0.039941 | |
LIST_ADD hList hObj | |
CREATE_OBJECT_NO_SAVE 3785 154.260757, -1947.651123, 45.212471 FALSE FALSE (hObj) | |
SET_OBJECT_QUATERNION hObj 0.000000, -0.000000, -0.704086, 0.710115 | |
LIST_ADD hList hObj | |
CREATE_OBJECT_NO_SAVE 3785 156.760727, -1950.180054, 43.013443 FALSE FALSE (hObj) | |
SET_OBJECT_QUATERNION hObj 0.000000, -0.000000, -0.997201, -0.074769 | |
LIST_ADD hList hObj | |
CREATE_OBJECT_NO_SAVE 3785 154.281158, -1952.730835, 40.834290 FALSE FALSE (hObj) | |
SET_OBJECT_QUATERNION hObj 0.000000, -0.000000, 0.770208, 0.637792 | |
LIST_ADD hList hObj | |
CREATE_OBJECT_NO_SAVE 3785 151.646545, -1950.179321, 38.644890 FALSE FALSE (hObj) | |
SET_OBJECT_QUATERNION hObj 0.000000, 0.000000, 0.000000, -1.000000 | |
LIST_ADD hList hObj | |
CREATE_OBJECT_NO_SAVE 3785 154.205048, -1947.667847, 36.413845 FALSE FALSE (hObj) | |
SET_OBJECT_QUATERNION hObj 0.000000, -0.000000, -0.664960, 0.746879 | |
LIST_ADD hList hObj | |
CREATE_OBJECT_NO_SAVE 3785 156.777405, -1950.174072, 34.212898 FALSE FALSE (hObj) | |
SET_OBJECT_QUATERNION hObj 0.000000, -0.000000, -0.997538, -0.070131 | |
LIST_ADD hList hObj | |
CREATE_OBJECT_NO_SAVE 3785 151.637451, -1950.251831, 29.813972 FALSE FALSE (hObj) | |
SET_OBJECT_QUATERNION hObj 0.000000, 0.000000, 0.143811, -0.989605 | |
LIST_ADD hList hObj | |
CREATE_OBJECT_NO_SAVE 3785 154.187988, -1947.571777, 27.602905 FALSE FALSE (hObj) | |
SET_OBJECT_QUATERNION hObj 0.000000, -0.000000, -0.703054, 0.711137 | |
LIST_ADD hList hObj | |
CREATE_OBJECT_NO_SAVE 3785 156.943985, -1950.178345, 25.443392 FALSE FALSE (hObj) | |
SET_OBJECT_QUATERNION hObj 0.000000, -0.000000, -0.992960, -0.118449 | |
LIST_ADD hList hObj | |
CREATE_OBJECT_NO_SAVE 3785 154.208344, -1952.999023, 23.184752 FALSE FALSE (hObj) | |
SET_OBJECT_QUATERNION hObj 0.000000, -0.000000, 0.731489, 0.681853 | |
LIST_ADD hList hObj | |
CREATE_OBJECT_NO_SAVE 3785 151.272125, -1950.237305, 21.011803 FALSE FALSE (hObj) | |
SET_OBJECT_QUATERNION hObj 0.000000, 0.000000, 0.000000, -1.000000 | |
LIST_ADD hList hObj | |
CREATE_OBJECT_NO_SAVE 3785 154.170822, -1947.205078, 18.828203 FALSE FALSE (hObj) | |
SET_OBJECT_QUATERNION hObj 0.000000, -0.000000, -0.732578, 0.680683 | |
LIST_ADD hList hObj | |
CREATE_OBJECT_NO_SAVE 3785 157.341995, -1950.171997, 16.602566 FALSE FALSE (hObj) | |
SET_OBJECT_QUATERNION hObj 0.000000, -0.000000, -0.994901, -0.100858 | |
LIST_ADD hList hObj | |
CREATE_OBJECT_NO_SAVE 3785 154.272720, -1953.379883, 14.341207 FALSE FALSE (hObj) | |
SET_OBJECT_QUATERNION hObj 0.000000, -0.000000, 0.775879, 0.630882 | |
LIST_ADD hList hObj | |
CREATE_OBJECT_NO_SAVE 3785 150.903107, -1950.218750, 12.224789 FALSE FALSE (hObj) | |
SET_OBJECT_QUATERNION hObj 0.000000, 0.000000, 0.092423, -0.995720 | |
LIST_ADD hList hObj | |
CREATE_OBJECT_NO_SAVE 3785 154.193802, -1946.849609, 10.033941 FALSE FALSE (hObj) | |
SET_OBJECT_QUATERNION hObj 0.000000, -0.000000, -0.672977, 0.739664 | |
LIST_ADD hList hObj | |
CREATE_OBJECT_NO_SAVE 3785 157.618103, -1950.198120, 7.783394 FALSE FALSE (hObj) | |
SET_OBJECT_QUATERNION hObj 0.000000, -0.000000, -0.993892, 0.110356 | |
LIST_ADD hList hObj | |
bLightObjectsCreated = TRUE | |
ENDIF | |
RETURN | |
DeleteLightObjects: | |
IF bLightObjectsCreated = TRUE | |
GET_LIST_SIZE hList (j) | |
i = 0 | |
WHILE i < j | |
GET_LIST_VALUE_BY_INDEX hList i (hObj) | |
DELETE_OBJECT hObj | |
++i | |
ENDWHILE | |
DELETE_LIST hList | |
bLightObjectsCreated = FALSE | |
ENDIF | |
RETURN | |
} | |
SCRIPT_END | |
{ | |
LVAR_INT hObj //In | |
LVAR_INT pObj | |
DontSaveObject: | |
GET_OBJECT_POINTER hObj pObj | |
pObj += 0x13C // | |
WRITE_MEMORY pObj 1 6 FALSE | |
CLEO_RETURN 0 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment