Skip to content

Instantly share code, notes, and snippets.

@JuniorDjjr
Last active January 5, 2024 17:38
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save JuniorDjjr/70d76ef814355f7f63791e5fd48d386f to your computer and use it in GitHub Desktop.
Save JuniorDjjr/70d76ef814355f7f63791e5fd48d386f to your computer and use it in GitHub Desktop.
// by Junior_Djjr - MixMods.com.br
// You need: https://forum.mixmods.com.br/f141-gta3script-cleo/t5206-como-criar-scripts-com-cleo
SCRIPT_START
{
LVAR_INT scplayer car ped weaponType weaponState model modelInfo vehicleType i j pMatrix pCarMatrix p bLimitIncreased iLanguage iMode
LVAR_FLOAT x y z angle f x2 y2 z2 fPointX fPointY fPointZ fThrowForce
LVAR_FLOAT quatX quatY quatZ quatR
CONST_INT MODE_CAR 0
CONST_INT MODE_PED 1
GET_PLAYER_CHAR 0 scplayer
IF NOT READ_FLOAT_FROM_INI_FILE "Shoot Stuff.ini" "Settings" "ThrowForce" (fThrowForce)
fThrowForce = 200.0
ENDIF
IF NOT READ_INT_FROM_INI_FILE "Shoot Stuff.ini" "Settings" "Language" (iLanguage)
iLanguage = 1
ENDIF
IF NOT READ_INT_FROM_INI_FILE "Shoot Stuff.ini" "Settings" "Mode" (iMode)
iMode = 1
ENDIF
// TODO: Detect Open Limit Adjuster increased limit
bLimitIncreased = FALSE
READ_MEMORY 0x55102A 1 FALSE (i)
IF NOT i = 110
bLimitIncreased = TRUE
ENDIF
READ_MEMORY 0x550FF2 4 FALSE (i)
IF NOT i = 140
bLimitIncreased = TRUE
ENDIF
WHILE TRUE
WAIT 0
IF TEST_CHEAT SHOOTSTUFF
PRINT_HELP CHEAT1
IF bLimitIncreased = FALSE
IF iLanguage = 1
PRINT_STRING_NOW "~r~Warning:~s~ Too much cars/peds may crash the game. Increase the cars/ped limit from to 500 or more, if not yet." 5000
ELSE
PRINT_STRING_NOW "~r~Cuidado:~s~ Muitos carros/peds podem crashar o jogo. Aumente o limite de carros/peds para 500 ou mais, se nao ainda." 5000
ENDIF
ENDIF
WHILE NOT TEST_CHEAT SHOOTSTUFF
GOSUB ProcessUi
GET_CURRENT_CHAR_WEAPON scplayer weaponType
IF IS_WEAPON_FIRE_TYPE weaponType WEAPONFIRE_INSTANT_HIT
GET_CHAR_WEAPON_STATE scplayer weaponState
IF weaponState = WEAPONSTATE_SHOOTING
WHILE TRUE
IF iMode = MODE_CAR
GENERATE_RANDOM_INT_IN_RANGE 400 612 model
IF IS_MODEL_AVAILABLE model
AND IS_MODEL_IN_CDIMAGE model
GET_MODEL_INFO model (modelInfo)
READ_STRUCT_OFFSET modelInfo 0x3C 4 (vehicleType)
IF NOT vehicleType = VEHICLE_SUBCLASS_TRAIN
AND NOT vehicleType = VEHICLE_SUBCLASS_BOAT
REQUEST_MODEL model
LOAD_ALL_MODELS_NOW
GET_MODEL_DIMENSIONS model x y f f f z
ABS_LVAR_FLOAT x
ABS_LVAR_FLOAT y
ABS_LVAR_FLOAT z
IF x < 12.0
OR y < 6.0
OR z < 6.0
BREAK
ELSE
MARK_MODEL_AS_NO_LONGER_NEEDED model
ENDIF
ENDIF
ENDIF
ELSE
GENERATE_RANDOM_INT_IN_RANGE 6 300 model
IF IS_MODEL_AVAILABLE model
AND IS_MODEL_IN_CDIMAGE model
REQUEST_MODEL model
LOAD_ALL_MODELS_NOW
BREAK
ENDIF
ENDIF
ENDWHILE
IF iMode = MODE_CAR
y *= 2.5
ELSE
y = 0.5
ENDIF
GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 y 0.3 (x y z)
IF iMode = MODE_CAR
CREATE_CAR model x y z (car)
f = 10.0 //start range
ELSE
CREATE_CHAR PEDTYPE_CIVMALE model x y z (ped)
f = 2.0 //start range
ENDIF
GET_CHAR_COORDINATES scplayer x y z
GET_VAR_POINTER x (i)
GET_VAR_POINTER x2 (j) //Camera
//514970 double __thiscall CCamera::Find3rdPersonCamTargetVector(CCamera *this, float range, float srcx, float srcy, float srcz, CVector *pCamera, CVector *pPoint)
CALL_METHOD 0x514970 0xB6F028 6 0 (i j z y x f)()
GET_VAR_POINTER fPointX (i)
//514970 double __thiscall CCamera::Find3rdPersonCamTargetVector(CCamera *this, float range, float srcx, float srcy, float srcz, CVector *pCamera, CVector *pPoint)
CALL_METHOD 0x514970 0xB6F028 6 0 (i j z y x 50.0)()
x2 -= fPointX
y2 -= fPointY
z2 -= fPointZ
IF iMode = MODE_CAR
GET_VEHICLE_POINTER car p
ELSE
GET_PED_POINTER ped p
ENDIF
READ_STRUCT_OFFSET p 0x14 4 (pCarMatrix)
// fix start ground coord
IF iMode = MODE_CAR
z -= 3.0
GET_GROUND_Z_FOR_3D_COORD x y z (f)
IF f = 0.0
z += 10.0
GET_GROUND_Z_FOR_3D_COORD x y z (z)
ENDIF
z += 2.5
ELSE
GET_GROUND_Z_FOR_3D_COORD x y z (f)
IF f = 0.0
z += 3.0
GET_GROUND_Z_FOR_3D_COORD x y z (z)
z += 0.0
ELSE
z += 0.0
ENDIF
ENDIF
GET_VAR_POINTER x j //start
GET_VAR_POINTER x2 i //end
//RwMatrixTag *__thiscall Fx_c::CreateMatFromVec(Fx_c *this, RwMatrixTag *matrix, CVector *start, CVector *end)
CALL_METHOD_RETURN 0x49E950 0x0 3 0 (i j pCarMatrix)(pCarMatrix)
ROTATE_MATRIX_ON_AXIS pCarMatrix 0.0 0.0 1.0 180.0 RWCOMBINE_PRECONCAT
f = fThrowForce
IF IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_MINIGUN
f *= 3.0
ENDIF
IF iMode = MODE_PED
f *= 1.0
ENDIF
IF iMode = MODE_CAR
SET_CAR_FORWARD_SPEED car f
MARK_CAR_AS_NO_LONGER_NEEDED car
ELSE
//TASK_FALL_AND_GET_UP ped 0 5000
GET_CHAR_HEADING ped angle
SIN angle (x)
COS angle (y)
x *= f
y *= f
x *= -1.0
z -= z2
z -= 1.0
f *= 0.02
z *= f
SET_CHAR_VELOCITY ped x y z
MARK_CHAR_AS_NO_LONGER_NEEDED ped
GOSUB ProcessUi
IF DOES_CHAR_EXIST ped
SET_CHAR_HEALTH ped 0
TASK_DIE ped
ENDIF
ENDIF
MARK_MODEL_AS_NO_LONGER_NEEDED model
ENDIF
ENDIF
ENDWHILE
PRINT_HELP CHEAT8
ENDIF
ENDWHILE
ProcessUi:
WAIT 0
IF iLanguage = 1
IF iMode = MODE_CAR
DRAW_STRING_EXT "Mode: CAR (M)" DRAW_EVENT_BEFORE_HUD 320.0 430.0 0.4 0.8 TRUE FONT_MENU TRUE ALIGN_CENTER 640.0 FALSE (255 255 255 255) 1 0 (0 0 0 255) FALSE (0 0 0 0)
ELSE
DRAW_STRING_EXT "Mode: PED (M)" DRAW_EVENT_BEFORE_HUD 320.0 430.0 0.4 0.8 TRUE FONT_MENU TRUE ALIGN_CENTER 640.0 FALSE (255 255 255 255) 1 0 (0 0 0 255) FALSE (0 0 0 0)
ENDIF
ELSE
IF iMode = MODE_CAR
DRAW_STRING_EXT "Modo: CARRO (M)" DRAW_EVENT_BEFORE_HUD 320.0 430.0 0.4 0.8 TRUE FONT_MENU TRUE ALIGN_CENTER 640.0 FALSE (255 255 255 255) 1 0 (0 0 0 255) FALSE (0 0 0 0)
ELSE
DRAW_STRING_EXT "Modo: PEDESTRE (M)" DRAW_EVENT_BEFORE_HUD 320.0 430.0 0.4 0.8 TRUE FONT_MENU TRUE ALIGN_CENTER 640.0 FALSE (255 255 255 255) 1 0 (0 0 0 255) FALSE (0 0 0 0)
ENDIF
ENDIF
IF IS_KEY_JUST_PRESSED VK_KEY_M
IF iMode = MODE_CAR
iMode = MODE_PED
ELSE
iMode = MODE_CAR
ENDIF
ENDIF
RETURN
}
SCRIPT_END
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment