Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save JuniorDjjr/c92849b8c76fc054b548414ce1fe2c32 to your computer and use it in GitHub Desktop.
Save JuniorDjjr/c92849b8c76fc054b548414ce1fe2c32 to your computer and use it in GitHub Desktop.
// 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