Skip to content

Instantly share code, notes, and snippets.

@JuniorDjjr
Last active January 5, 2024 17:31
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/b618f48a67d08b2ef8cbd12c7d5042b7 to your computer and use it in GitHub Desktop.
Save JuniorDjjr/b618f48a67d08b2ef8cbd12c7d5042b7 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 i iEntityType iTime hVeh hChar pEntity pPlayer iPlayer pColPoint
LVAR_FLOAT x y z destX destY destZ lastLookPlayerX[2] lastLookPlayerY[2]
WAIT 1000
GET_LABEL_POINTER Colpoint (pColPoint)
iPlayer = 0
GOSUB UpdatePlayer
WHILE TRUE
WAIT 0
IF FRAME_MOD 9 // don't runs every frame; must be odd number
IF NOT IS_ON_SCRIPTED_CUTSCENE
AND NOT IS_ON_CUTSCENE
GOSUB ProcessForPlayer
IF IS_2PLAYER_GAME_GOING_ON
// get player 2
iPlayer = 1
GOSUB UpdatePlayer
GOSUB ProcessForPlayer
// reset to player 1
iPlayer = 0
GOSUB UpdatePlayer
ENDIF
ENDIF
ENDIF
ENDWHILE
ProcessForPlayer:
// Add look at car during car entrance
IF IS_CHAR_ENTERING_ANY_CAR scplayer
GET_CAR_CHAR_IS_USING scplayer hVeh
IF hVeh > 0
TASK_LOOK_AT_VEHICLE scplayer hVeh 2000
WHILE IS_CHAR_ENTERING_ANY_CAR scplayer
WAIT 0
IF NOT DOES_CHAR_EXIST scplayer // check if still exists, because it also runs for player 2
BREAK
ENDIF
ENDWHILE
ENDIF
ELSE
IF NOT IS_CHAR_DOING_ANY_IMPORTANT_TASK scplayer INCLUDE_ANIMS_PRIMARY
IF timera > 5000 //don't look too often
//I want to avoid overwriting TASK_LOOK_AT_* but GET_SCRIPT_TASK_STATUS isn't working idkw
READ_MEMORY 0xB613FC 1 FALSE (i) //CAEPedSpeechAudioEntity::s_bPlayerConversationHappening
IF i = FALSE
GET_CHAR_COORDINATES scplayer x y z
// Avoid looking while player kinda stopped
IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer lastLookPlayerX[iPlayer] lastLookPlayerY[iPlayer] 5.0 5.0 FALSE
IF FRAME_MOD 2 //use right/left if the frame is odd/even
GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -0.6 0.6 0.0 (destX destY destZ)
//PRINT_STRING_NOW "L" 1
ELSE
GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.6 0.6 0.0 (destX destY destZ)
//PRINT_STRING_NOW "R" 1
ENDIF
// check collision for vehicles and peds
IF GET_COLLISION_BETWEEN_POINTS x y z destX destY destZ FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE pPlayer (pColPoint x y z pEntity)
GENERATE_RANDOM_INT_IN_RANGE 1000 2500 (iTime)
GET_ENTITY_TYPE pEntity (iEntityType)
IF iEntityType = ENTITY_TYPE_PED
GET_PED_REF pEntity (hChar)
TASK_LOOK_AT_CHAR scplayer hChar iTime
timera = 0
ELSE
IF iEntityType = ENTITY_TYPE_VEHICLE
GET_VEHICLE_REF pEntity (hVeh)
TASK_LOOK_AT_VEHICLE scplayer hVeh iTime
timera = 0
ENDIF
ENDIF
lastLookPlayerX[iPlayer] = x
lastLookPlayerY[iPlayer] = y
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
RETURN
UpdatePlayer:
GET_PLAYER_CHAR iPlayer scplayer
GET_PED_POINTER scplayer (pPlayer)
RETURN
}
SCRIPT_END
Colpoint:
DUMP
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ENDDUMP
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment