Last active
January 5, 2024 17:38
-
-
Save JuniorDjjr/9cb8bf9d4d8d57af0afc82cd6aa381e9 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
// by Junior_Djjr - MixMods.com.br | |
// v0.6 | |
// You need: https://forum.mixmods.com.br/f141-gta3script-cleo/t5206-como-criar-scripts-com-cleo | |
SCRIPT_START | |
{ | |
LVAR_INT scplayer hFile i j k hObject pColPoint pObject iEditMode iEditModeBackup lObjectsList iModelId pBuffer bSelectDisabled bUpdateDisabled bForceUpdate bLoadOnEnable bAlreadyTeleported | |
LVAR_FLOAT x y z x2 y2 z2 fPointX fPointY fPointZ fCurSens fMouseMoveSensMult fMouseRotateSensMult fMouseSensDivButton fSelectedCoronaSize | |
CONST_INT EDIT_SURFACE 0 | |
CONST_INT EDIT_MOVE_XY 1 | |
CONST_INT EDIT_MOVE_Z 2 | |
CONST_INT EDIT_ROTATE_XY 3 | |
CONST_INT EDIT_ROTATE_Z 4 | |
CONST_INT STRUCT_ORIGIN_COORD_X 0 | |
CONST_INT STRUCT_ORIGIN_COORD_Y 1 | |
CONST_INT STRUCT_ORIGIN_COORD_Z 2 | |
CONST_INT STRUCT_OFFSET_COORD_X 3 | |
CONST_INT STRUCT_OFFSET_COORD_Y 4 | |
CONST_INT STRUCT_OFFSET_COORD_Z 5 | |
CONST_INT STRUCT_ROTATION_X 6 | |
CONST_INT STRUCT_ROTATION_Y 7 | |
CONST_INT STRUCT_ROTATION_Z 8 | |
CONST_INT STRUCT_QUAT_X 9 | |
CONST_INT STRUCT_QUAT_Y 10 | |
CONST_INT STRUCT_QUAT_Z 11 | |
CONST_INT STRUCT_QUAT_W 12 | |
WAIT 0 | |
WAIT 0 | |
GET_PLAYER_CHAR 0 scplayer | |
GET_LABEL_POINTER Buffer (pBuffer) | |
WHILE TRUE | |
WAIT 0 | |
IF TEST_CHEAT IGME | |
PRINT_STRING_NOW "~y~In-Game Map Editor activated." 2000 | |
MAKE_NOP 0x536145 5 // disable wind, to fix rotation for trees etc | |
READ_FLOAT_FROM_INI_FILE "CLEO\In-Game Map Editor.ini" "Settings" "MouseMoveSensMult" fMouseMoveSensMult | |
READ_FLOAT_FROM_INI_FILE "CLEO\In-Game Map Editor.ini" "Settings" "MouseRotateSensMult" fMouseRotateSensMult | |
READ_FLOAT_FROM_INI_FILE "CLEO\In-Game Map Editor.ini" "Settings" "MouseSensDivButton" fMouseSensDivButton | |
READ_FLOAT_FROM_INI_FILE "CLEO\In-Game Map Editor.ini" "Settings" "SelectedCoronaSize" fSelectedCoronaSize | |
READ_INT_FROM_INI_FILE "CLEO\In-Game Map Editor.ini" "Project" "LoadOnEnable" bLoadOnEnable | |
i = FALSE | |
READ_INT_FROM_INI_FILE "CLEO\In-Game Map Editor.ini" "Project" "TeleportOnEnableOnce" i | |
IF bAlreadyTeleported = FALSE | |
OR i = FALSE // TeleportOnEnableOnce | |
IF READ_STRING_FROM_INI_FILE "CLEO\In-Game Map Editor.ini" "Project" "TeleportOnEnable" pBuffer | |
SCAN_STRING $pBuffer "%f %f %f" i (x y z) | |
IF i = 3 | |
SET_CHAR_COORDINATES scplayer x y z | |
bAlreadyTeleported = TRUE | |
WAIT 200 | |
ENDIF | |
ENDIF | |
ENDIF | |
CREATE_LIST DATATYPE_INT (lObjectsList) | |
GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_PISTOL 999 | |
SET_CAR_DENSITY_MULTIPLIER 0.0 | |
SET_PED_DENSITY_MULTIPLIER 0.0 | |
IF bLoadOnEnable = TRUE | |
CLEO_CALL Load 0 (lObjectsList 17)() | |
ENDIF | |
iEditMode = EDIT_SURFACE | |
iEditModeBackup = iEditMode | |
WHILE NOT TEST_CHEAT IGME | |
WAIT 0 | |
IF TEST_CHEAT LOAD | |
CLEO_CALL Load 0 (lObjectsList 17)() | |
ENDIF | |
IF TEST_CHEAT SAVE | |
CLEO_CALL Save 0 (lObjectsList)() | |
ENDIF | |
// Reset each frame | |
SET_CAMERA_CONTROL ON | |
SET_PLAYER_CYCLE_WEAPON_BUTTON 0 ON | |
SET_PLAYER_DUCK_BUTTON 0 ON | |
// Force | |
SET_PLAYER_FIRE_BUTTON 0 OFF | |
bForceUpdate = FALSE | |
IF IS_KEY_PRESSED VK_LCONTROL | |
OR IS_KEY_PRESSED VK_RCONTROL | |
SET_PLAYER_DUCK_BUTTON 0 OFF | |
IF IS_KEY_PRESSED VK_KEY_V | |
IF IS_KEY_JUST_PRESSED VK_LCONTROL | |
OR IS_KEY_JUST_PRESSED VK_RCONTROL | |
OR IS_KEY_JUST_PRESSED VK_KEY_V | |
READ_CLIPBOARD_DATA_TO pBuffer 32 | |
SCAN_STRING $pBuffer "%i" i (j) | |
IF i = 1 | |
IF CLEO_CALL ModelExist 0 (j)() | |
iModelId = j | |
//GOSUB DeleteCurrentObject | |
PRINT_FORMATTED_NOW "Paste ID:~y~ %i" 2000 iModelId | |
IF IS_CHAR_USING_GUN scplayer | |
bForceUpdate = TRUE | |
ENDIF | |
GOTO ForceCreateNewObject | |
ENDIF | |
PRINT_FORMATTED_NOW "~r~Model ID '%i' doesn't exist." 2000 j | |
ENDIF | |
ENDIF | |
ENDIF | |
IF IS_KEY_PRESSED VK_KEY_C | |
IF IS_KEY_JUST_PRESSED VK_LCONTROL | |
OR IS_KEY_JUST_PRESSED VK_RCONTROL | |
OR IS_KEY_JUST_PRESSED VK_KEY_C | |
/*IF DOES_OBJECT_EXIST hObject | |
GET_OBJECT_MODEL hObject j | |
STRING_FORMAT pBuffer "%i" j | |
WRITE_CLIPBOARD_DATA_FROM pBuffer 16 | |
PRINT_FORMATTED_NOW "Copied ID:~y~ %s" 2000 $pBuffer | |
ELSE*/ | |
GET_CHAR_COORDINATES scplayer x y z | |
GET_VAR_POINTER fPointX (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 200.0)() | |
GET_LABEL_POINTER ColPoint (pColPoint) | |
IF GET_COLLISION_BETWEEN_POINTS x2 y2 z2 fPointX fPointY fPointZ TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE -1 pColPoint x y z i | |
IF NOT i = -1 | |
READ_STRUCT_OFFSET i 0x22 2 (j) | |
STRING_FORMAT pBuffer "%i" j | |
WRITE_CLIPBOARD_DATA_FROM pBuffer 16 | |
PRINT_FORMATTED_NOW "Copied ID:~y~ %s" 2000 $pBuffer | |
ENDIF | |
ENDIF | |
//ENDIF | |
ENDIF | |
ENDIF | |
ENDIF | |
IF bSelectDisabled = TRUE | |
IF NOT IS_BUTTON_JUST_PRESSED PAD1 TRIANGLE | |
AND NOT IS_KEY_JUST_PRESSED VK_KEY_Y | |
AND NOT IS_KEY_JUST_PRESSED VK_DELETE | |
bSelectDisabled = FALSE | |
ENDIF | |
ENDIF | |
IF bUpdateDisabled = TRUE | |
IF NOT IS_ANY_FIRE_BUTTON_PRESSED PAD1 | |
bUpdateDisabled = FALSE | |
ENDIF | |
ENDIF | |
IF IS_BUTTON_JUST_PRESSED PAD1 TRIANGLE | |
OR IS_KEY_JUST_PRESSED VK_KEY_Y | |
GOSUB CancelSaveCurrentObject | |
PRINT_STRING_NOW "~y~Object OK." 1000 | |
bSelectDisabled = TRUE | |
ENDIF | |
IF IS_KEY_JUST_PRESSED VK_DELETE | |
IF DOES_OBJECT_EXIST hObject | |
GOSUB DeleteCurrentObject | |
PRINT_STRING_NOW "~r~Object Deleted." 1000 | |
ENDIF | |
bSelectDisabled = TRUE | |
ENDIF | |
// Edit mode enabled | |
IF IS_CHAR_USING_GUN scplayer | |
SET_PLAYER_CYCLE_WEAPON_BUTTON 0 OFF | |
iEditMode = iEditModeBackup | |
IF IS_MOUSE_WHEEL_UP | |
++iEditMode | |
CLAMP_INT iEditMode EDIT_SURFACE EDIT_ROTATE_Z (iEditMode) | |
ENDIF | |
IF IS_MOUSE_WHEEL_DOWN | |
--iEditMode | |
CLAMP_INT iEditMode EDIT_SURFACE EDIT_ROTATE_Z (iEditMode) | |
ENDIF | |
iEditModeBackup = iEditMode // store for reset after hotkey | |
// Hotkeys | |
IF IS_KEY_PRESSED VK_KEY_Z | |
iEditMode = EDIT_MOVE_Z | |
ENDIF | |
IF IS_KEY_PRESSED VK_KEY_X | |
iEditMode = EDIT_ROTATE_Z | |
ENDIF | |
GOSUB ShowInterface | |
IF DOES_OBJECT_EXIST hObject | |
IF IS_KEY_JUST_PRESSED 4 | |
GET_OBJECT_MODEL hObject (iModelId) | |
ForceCreateNewObject: | |
i = hObject | |
IF CLEO_CALL NewObject 0 (iModelId lObjectsList)(hObject) | |
IF IS_KEY_JUST_PRESSED 4 // created by duplication | |
CLEO_CALL CloneObject 0 (hObject i)() | |
ENDIF | |
bForceUpdate = TRUE | |
GOTO UpdateOnSurface | |
ELSE | |
CONTINUE | |
ENDIF | |
ENDIF | |
IF IS_ANY_FIRE_BUTTON_PRESSED PAD1 | |
AND bUpdateDisabled = FALSE | |
IF NOT IS_KEY_PRESSED VK_LCONTROL | |
AND NOT IS_KEY_PRESSED VK_RCONTROL | |
IF iEditMode = EDIT_SURFACE | |
UpdateOnSurface: | |
GET_CHAR_COORDINATES scplayer x y z | |
GET_VAR_POINTER fPointX (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 200.0)() | |
GET_LABEL_POINTER ColPoint (pColPoint) | |
GET_OBJECT_POINTER hObject (pObject) | |
IF GET_COLLISION_BETWEEN_POINTS x2 y2 z2 fPointX fPointY fPointZ TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE pObject pColPoint x y z i | |
CLEO_CALL SetObjectOriginCoord 0 (hObject x y z) | |
ENDIF | |
ENDIF | |
IF iEditMode = EDIT_MOVE_XY | |
OR iEditMode = EDIT_MOVE_Z | |
OR iEditMode = EDIT_ROTATE_XY | |
OR iEditMode = EDIT_ROTATE_Z | |
SET_CAMERA_CONTROL OFF | |
GET_PC_MOUSE_MOVEMENT x2 y2 | |
GET_MOUSE_SENSIBILITY (fCurSens) | |
IF NOT IS_MOUSE_USING_VERTICAL_INVERSION | |
y2 *= -1.0 | |
ENDIF | |
IF fCurSens > 0.0 | |
IF iEditMode = EDIT_MOVE_XY | |
OR iEditMode = EDIT_MOVE_Z | |
fCurSens *= fMouseMoveSensMult | |
ELSE // Rotate | |
fCurSens *= fMouseRotateSensMult | |
ENDIF | |
IF IS_KEY_PRESSED VK_LSHIFT | |
OR IS_KEY_PRESSED VK_RSHIFT | |
fCurSens /= fMouseSensDivButton | |
ENDIF | |
ENDIF | |
ENDIF | |
IF NOT fCurSens = 0.0 | |
OR bForceUpdate = TRUE | |
IF iEditMode = EDIT_MOVE_XY | |
OR iEditMode = EDIT_MOVE_Z | |
CLEO_CALL GetObjectOffsetCoord 0 (hObject x y z) | |
x2 *= fCurSens | |
y2 *= fCurSens | |
IF iEditMode = EDIT_MOVE_XY | |
x +=@ x2 | |
y +=@ y2 | |
ELSE //EDIT_MOVE_Z | |
z +=@ y2 | |
ENDIF | |
CLEO_CALL SetObjectOffsetCoord 0 (hObject x y z) | |
ENDIF | |
IF iEditMode = EDIT_ROTATE_XY | |
OR iEditMode = EDIT_ROTATE_Z | |
CLEO_CALL GetObjectRotation 0 (hObject x y z) | |
x2 *= fCurSens | |
y2 *= fCurSens | |
IF iEditMode = EDIT_ROTATE_XY | |
x +=@ x2 | |
y +=@ y2 | |
WHILE x >= 360.0 | |
x -= 360.0 | |
ENDWHILE | |
WHILE y >= 360.0 | |
y -= 360.0 | |
ENDWHILE | |
WHILE x < 0.0 | |
x += 360.0 | |
ENDWHILE | |
WHILE y < 0.0 | |
y += 360.0 | |
ENDWHILE | |
ELSE //EDIT_ROTATE_Z | |
z +=@ x2 | |
z +=@ y2 | |
WHILE z < 0.0 | |
z += 360.0 | |
ENDWHILE | |
WHILE z >= 360.0 | |
z -= 360.0 | |
ENDWHILE | |
ENDIF | |
CLEO_CALL SetObjectRotation 0 (hObject x y z) | |
ENDIF | |
ENDIF | |
ENDIF | |
ENDIF | |
IF IS_KEY_PRESSED VK_KEY_R | |
IF iEditMode = EDIT_ROTATE_XY | |
OR iEditMode = EDIT_ROTATE_Z | |
CLEO_CALL GetObjectRotation 0 (hObject x y z) | |
IF x > 45.0 | |
AND x < 135.0 | |
x = 90.0 | |
ENDIF | |
IF x > 135.0 | |
AND x < 225.0 | |
x = 180.0 | |
ENDIF | |
IF x > 225.0 | |
AND x < 315.0 | |
x = 270.0 | |
ENDIF | |
IF x > 315.0 | |
OR x < 45.0 | |
x = 0.0 | |
ENDIF | |
IF y > 45.0 | |
AND y < 135.0 | |
y = 90.0 | |
ENDIF | |
IF y > 135.0 | |
AND y < 225.0 | |
y = 180.0 | |
ENDIF | |
IF y > 225.0 | |
AND y < 315.0 | |
y = 270.0 | |
ENDIF | |
IF y > 315.0 | |
OR y < 45.0 | |
y = 0.0 | |
ENDIF | |
IF z > 45.0 | |
AND z < 135.0 | |
z = 90.0 | |
ENDIF | |
IF z > 135.0 | |
AND z < 225.0 | |
z = 180.0 | |
ENDIF | |
IF z > 225.0 | |
AND z < 315.0 | |
z = 270.0 | |
ENDIF | |
IF z > 315.0 | |
OR z < 45.0 | |
z = 0.0 | |
ENDIF | |
CLEO_CALL SetObjectRotation 0 (hObject x y z) | |
ENDIF | |
IF iEditMode = EDIT_MOVE_XY | |
OR iEditMode = EDIT_MOVE_Z | |
OR iEditMode = EDIT_SURFACE | |
CLEO_CALL SetObjectOffsetCoord 0 (hObject 0.0 0.0 0.0)() | |
ENDIF | |
IF iEditMode = EDIT_MOVE_XY | |
CLEO_CALL GetObjectOffsetCoord 0 (hObject)(x y z) | |
CLEO_CALL SetObjectOffsetCoord 0 (hObject 0.0 0.0 z)() | |
ENDIF | |
IF iEditMode = EDIT_MOVE_Z | |
CLEO_CALL GetObjectOffsetCoord 0 (hObject)(x y z) | |
CLEO_CALL SetObjectOffsetCoord 0 (hObject x y 0.0)() | |
ENDIF | |
ENDIF | |
IF fSelectedCoronaSize > 0.0 | |
CLEO_CALL GetObjectOriginCoord 0 (hObject x y z) | |
IF bUpdateDisabled = FALSE | |
IF iEditMode = EDIT_SURFACE | |
DRAW_WEAPONSHOP_CORONA x y z fSelectedCoronaSize CORONATYPE_SHINYSTAR FLARETYPE_NONE 255 0 255 | |
ENDIF | |
IF iEditMode = EDIT_MOVE_XY | |
DRAW_WEAPONSHOP_CORONA x y z fSelectedCoronaSize CORONATYPE_SHINYSTAR FLARETYPE_NONE 0 50 255 | |
ENDIF | |
IF iEditMode = EDIT_MOVE_Z | |
DRAW_WEAPONSHOP_CORONA x y z fSelectedCoronaSize CORONATYPE_SHINYSTAR FLARETYPE_NONE 0 150 255 | |
ENDIF | |
IF iEditMode = EDIT_ROTATE_XY | |
DRAW_WEAPONSHOP_CORONA x y z fSelectedCoronaSize CORONATYPE_SHINYSTAR FLARETYPE_NONE 0 255 0 | |
ENDIF | |
IF iEditMode = EDIT_ROTATE_Z | |
DRAW_WEAPONSHOP_CORONA x y z fSelectedCoronaSize CORONATYPE_SHINYSTAR FLARETYPE_NONE 130 255 0 | |
ENDIF | |
ELSE | |
DRAW_WEAPONSHOP_CORONA x y z fSelectedCoronaSize CORONATYPE_SHINYSTAR FLARETYPE_NONE 255 255 255 | |
ENDIF | |
ENDIF | |
ELSE | |
IF bSelectDisabled = FALSE | |
AND IS_ANY_FIRE_BUTTON_PRESSED PAD1 | |
GET_CHAR_COORDINATES scplayer x y z | |
GET_VAR_POINTER fPointX (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 200.0)() | |
GET_LABEL_POINTER ColPoint (pColPoint) | |
IF GET_COLLISION_BETWEEN_POINTS x2 y2 z2 fPointX fPointY fPointZ TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE -1 pColPoint x y z i | |
IF NOT i = -1 | |
GET_ENTITY_TYPE i (j) | |
IF j = ENTITY_TYPE_OBJECT | |
GET_OBJECT_REF i (j) | |
IF GET_EXTENDED_OBJECT_VAR j AUTO 1 (i) | |
hObject = j | |
GET_OBJECT_MODEL hObject (j) | |
bUpdateDisabled = TRUE | |
PRINT_FORMATTED_NOW "~y~Selected Object %i ID %i" 2000 hObject j | |
ENDIF | |
ENDIF | |
ENDIF | |
ENDIF | |
ENDIF | |
ENDIF | |
ENDIF | |
ENDWHILE | |
IF READ_INT_FROM_INI_FILE "CLEO\In-Game Map Editor.ini" "Project" "SaveOnDisable" i | |
AND i = TRUE | |
CLEO_CALL Save 0 (lObjectsList)() | |
ENDIF | |
SET_CAMERA_CONTROL ON | |
SET_PLAYER_CYCLE_WEAPON_BUTTON 0 ON | |
SET_PLAYER_FIRE_BUTTON 0 ON | |
SET_PLAYER_DUCK_BUTTON 0 ON | |
SET_CAR_DENSITY_MULTIPLIER 1.0 | |
SET_PED_DENSITY_MULTIPLIER 1.0 | |
bForceUpdate = FALSE | |
GET_LIST_SIZE lObjectsList (j) | |
i = 0 | |
WHILE i < j | |
GET_LIST_VALUE_BY_INDEX lObjectsList i (hObject) | |
DELETE_OBJECT hObject | |
++i | |
ENDWHILE | |
RESET_LIST lObjectsList | |
hObject = -1 | |
// reset wind for trees | |
WRITE_MEMORY 0x536145 1 0xE8 TRUE | |
WRITE_MEMORY 0x536146 4 0xFFFFED46 TRUE | |
PRINT_STRING_NOW "~r~In-Game Map Editor Disabled." 2000 | |
ENDIF | |
ENDWHILE | |
CancelSaveCurrentObject: | |
hObject = -1 | |
RETURN | |
DeleteCurrentObject: | |
LIST_REMOVE_VALUE lObjectsList hObject | |
DELETE_OBJECT hObject | |
hObject = -1 | |
RETURN | |
ShowInterface: | |
DRAW_STRING_EXT "Type 'LOAD' to load .ipl file set in .ini. 'SAVE' to save it. 'IGME' to exit." DRAW_EVENT_BEFORE_HUD 300.0 435.0 0.25 0.5 TRUE FONT_MENU TRUE ALIGN_CENTER 640.0 FALSE (255 255 0 255) 1 0 (0 0 0 255) FALSE (0 0 0 0) | |
IF DOES_OBJECT_EXIST hObject | |
DRAW_STRING_EXT "Edit Mode" DRAW_EVENT_BEFORE_HUD 400.0 300.0 0.5 1.0 TRUE FONT_MENU TRUE ALIGN_LEFT 640.0 FALSE (255 255 0 255) 1 0 (0 0 0 255) FALSE (0 0 0 0) | |
IF bUpdateDisabled = TRUE | |
DRAW_STRING_EXT "RELEASE BUTTON TO EDIT" DRAW_EVENT_BEFORE_HUD 400.0 320.0 0.4 0.8 TRUE FONT_MENU TRUE ALIGN_LEFT 640.0 FALSE (255 255 255 180) 1 0 (0 0 0 255) FALSE (0 0 0 0) | |
ELSE | |
SWITCH iEditMode | |
CASE EDIT_SURFACE | |
DRAW_STRING "SURFACE" DRAW_EVENT_BEFORE_HUD 400.0 320.0 0.4 0.8 TRUE FONT_MENU | |
BREAK | |
CASE EDIT_MOVE_XY | |
DRAW_STRING "MOVE XY" DRAW_EVENT_BEFORE_HUD 400.0 320.0 0.4 0.8 TRUE FONT_MENU | |
BREAK | |
CASE EDIT_MOVE_Z | |
DRAW_STRING "MOVE Z" DRAW_EVENT_BEFORE_HUD 400.0 320.0 0.4 0.8 TRUE FONT_MENU | |
BREAK | |
CASE EDIT_ROTATE_XY | |
DRAW_STRING "ROTATE XY" DRAW_EVENT_BEFORE_HUD 400.0 320.0 0.4 0.8 TRUE FONT_MENU | |
BREAK | |
CASE EDIT_ROTATE_Z | |
DRAW_STRING "ROTATE Z" DRAW_EVENT_BEFORE_HUD 400.0 320.0 0.4 0.8 TRUE FONT_MENU | |
BREAK | |
ENDSWITCH | |
ENDIF | |
DRAW_STRING "(mouse wheel)" DRAW_EVENT_BEFORE_HUD 400.0 332.0 0.25 0.5 TRUE FONT_SUBTITLES | |
IF iEditMode = EDIT_SURFACE | |
OR iEditMode = EDIT_MOVE_XY | |
OR iEditMode = EDIT_MOVE_Z | |
DRAW_STRING "'R' to reset offset" DRAW_EVENT_BEFORE_HUD 400.0 340.0 0.3 0.6 TRUE FONT_SUBTITLES | |
ENDIF | |
IF iEditMode = EDIT_ROTATE_XY | |
OR iEditMode = EDIT_ROTATE_Z | |
DRAW_STRING "'R' to snap angle" DRAW_EVENT_BEFORE_HUD 400.0 340.0 0.3 0.6 TRUE FONT_SUBTITLES | |
ENDIF | |
DRAW_STRING "Middle mouse button to duplicate" DRAW_EVENT_BEFORE_HUD 400.0 350.0 0.3 0.6 TRUE FONT_SUBTITLES | |
DRAW_STRING "SHIFT for slow" DRAW_EVENT_BEFORE_HUD 400.0 360.0 0.3 0.6 TRUE FONT_SUBTITLES | |
DRAW_STRING "'Y/Action' to confirm. 'Delete' to delete." DRAW_EVENT_BEFORE_HUD 400.0 380.0 0.3 0.6 TRUE FONT_SUBTITLES | |
ELSE | |
DRAW_STRING_EXT "Select Mode" DRAW_EVENT_BEFORE_HUD 400.0 300.0 0.5 1.0 TRUE FONT_MENU TRUE ALIGN_LEFT 640.0 FALSE (0 60 255 255) 1 0 (0 0 0 255) FALSE (0 0 0 0) | |
DRAW_STRING "CTRL+C to copy aimed" DRAW_EVENT_BEFORE_HUD 400.0 320.0 0.5 1.0 TRUE FONT_SUBTITLES | |
DRAW_STRING "CTRL+V to paste new" DRAW_EVENT_BEFORE_HUD 400.0 340.0 0.5 1.0 TRUE FONT_SUBTITLES | |
DRAW_STRING "G to type (not yet)" DRAW_EVENT_BEFORE_HUD 400.0 360.0 0.5 1.0 TRUE FONT_SUBTITLES | |
DRAW_STRING "Or press Fire to select (need col)" DRAW_EVENT_BEFORE_HUD 400.0 380.0 0.5 1.0 TRUE FONT_SUBTITLES | |
ENDIF | |
RETURN | |
} | |
SCRIPT_END | |
{ | |
LVAR_INT iModelId //In | |
LVAR_INT iModelIdLimit | |
ModelExist: | |
IF iModelId > 0 | |
READ_MEMORY 0x40885A 4 TRUE (iModelIdLimit) | |
IF iModelId < iModelIdLimit | |
IF IS_MODEL_AVAILABLE iModelId | |
RETURN_TRUE | |
CLEO_RETURN 0 () | |
ENDIF | |
ENDIF | |
ENDIF | |
RETURN_FALSE | |
CLEO_RETURN 0 () | |
} | |
{ | |
LVAR_INT lObjectsList flags //In | |
LVAR_INT i j k pFilePath pBuffer hFile iModelId iArea iLOD hObject pObject pMatrix | |
LVAR_FLOAT x y z fRotX fRotY fRotZ fRotW | |
LVAR_INT pModelName | |
Load: | |
GET_LABEL_POINTER BufferFilePath (pFilePath) | |
GET_LABEL_POINTER Buffer (pBuffer) | |
GET_LABEL_POINTER ColPoint (pModelName) | |
READ_STRING_FROM_INI_FILE "CLEO\In-Game Map Editor.ini" "Project" "Path" pFilePath | |
IF OPEN_FILE $pFilePath 0x2b72 (hFile) //r+ | |
ELSE | |
PRINT_STRING_NOW "~r~Can't open .ipl file." 5000 | |
WAIT 2000 | |
CLEO_RETURN 0 () | |
ENDIF | |
GET_LIST_SIZE lObjectsList (j) | |
i = 0 | |
WHILE i < j | |
GET_LIST_VALUE_BY_INDEX lObjectsList i (hObject) | |
DELETE_OBJECT hObject | |
++i | |
ENDWHILE | |
RESET_LIST lObjectsList | |
WHILE READ_STRING_FROM_FILE hFile pBuffer 128 | |
IF NOT IS_STRING_COMMENT $pBuffer | |
IF IS_STRING_EQUAL $pBuffer "inst" 4 FALSE "" | |
WHILE READ_STRING_FROM_FILE hFile pBuffer 128 | |
IF NOT IS_STRING_COMMENT $pBuffer | |
IF IS_STRING_EQUAL $pBuffer "end" 3 FALSE "" | |
BREAK | |
ENDIF | |
//2912, hash_d43844be, 0, 324.520081, -1793.644897, 3.759481, 0.000000, 0.000000, 0.000000, 1.000000, -1 | |
SCAN_STRING $pBuffer "%i, %s %i, %f, %f, %f, %f, %f, %f, %f, %i" i iModelId pModelName iArea x y z fRotX fRotY fRotZ fRotW iLOD | |
//PRINT_FORMATTED_NOW "%i %i %f %f %f %f %f %f %f %i" 4000 iModelId iArea x y z fRotX fRotY fRotZ fRotW iLOD | |
//WAIT 2000 | |
IF CLEO_CALL ModelExist 0 (iModelId) | |
CLEO_CALL NewObject 0 (iModelId lObjectsList)(hObject) | |
CLEO_CALL SetObjectOriginCoord 0 (hObject x y z)() | |
fRotW *= -1.0 | |
SET_OBJECT_QUATERNION hObject fRotX fRotY fRotZ fRotW | |
GET_OBJECT_POINTER hObject (pObject) | |
READ_STRUCT_OFFSET pObject 0x14 4 (pMatrix) | |
//READ_STRUCT_OFFSET pObject 0x0 4 (pMatrix) | |
/*GET_MATRIX_X_ANGLE pMatrix (fRotX) | |
GET_MATRIX_Y_ANGLE pMatrix (fRotY) | |
GET_MATRIX_Z_ANGLE pMatrix (fRotZ)*/ | |
GET_VAR_POINTER fRotX i | |
GET_VAR_POINTER fRotY j | |
GET_VAR_POINTER fRotZ k | |
//void __thiscall CMatrix::ConvertToEulerAngles(CMatrix *this, float *pX, float *pY, float *pZ, unsigned int flags) | |
CALL_METHOD 0x59A840 pMatrix 4 0 (flags k j i)() | |
fRotX *= -57.295779513 | |
fRotY *= -57.295779513 | |
fRotZ *= -57.295779513 | |
WHILE fRotX > 360.0 | |
fRotX -= 360.0 | |
ENDWHILE | |
WHILE fRotX < 0.0 | |
fRotX += 360.0 | |
ENDWHILE | |
WHILE fRotY > 360.0 | |
fRotY -= 360.0 | |
ENDWHILE | |
WHILE fRotY < 0.0 | |
fRotY += 360.0 | |
ENDWHILE | |
WHILE fRotZ > 360.0 | |
fRotZ -= 360.0 | |
ENDWHILE | |
WHILE fRotZ < 0.0 | |
fRotZ += 360.0 | |
ENDWHILE | |
CLEO_CALL SetObjectRotation 0 (hObject fRotY fRotX fRotZ)() | |
SET_OBJECT_AREA_VISIBLE hObject iArea | |
ELSE | |
PRINT_FORMATTED_NOW "~r~Model ID '%i' doesn't exist." 2000 iModelId | |
WAIT 250 | |
ENDIF | |
ENDIF | |
ENDWHILE | |
ENDIF | |
ENDIF | |
ENDWHILE | |
PRINT_FORMATTED_NOW "~y~Loaded '%s'" 2000 $pFilePath | |
CLOSE_FILE hFile | |
CLEO_RETURN 0 () | |
} | |
{ | |
LVAR_INT lObjectsList //In | |
LVAR_INT scplayer i iCount iListSize hObject pEditorStruct pFilePath pBuffer hFile pObject pAllocMemory hFileBackup | |
LVAR_FLOAT x y z w playerCoordBackupX playerCoordBackupY playerCoordBackupZ fRotX fRotY fRotZ | |
Save: | |
GET_PLAYER_CHAR 0 scplayer | |
GET_LABEL_POINTER BufferFilePath (pFilePath) | |
GET_LABEL_POINTER Buffer (pBuffer) | |
IF NOT READ_STRING_FROM_INI_FILE "CLEO\In-Game Map Editor.ini" "Project" "SavePath" pFilePath | |
IF NOT READ_STRING_FROM_INI_FILE "CLEO\In-Game Map Editor.ini" "Project" "Path" pFilePath | |
PRINT_STRING_NOW "~r~Error: Path not set." 3000 | |
CLEO_RETURN 0 | |
ENDIF | |
ENDIF | |
/*IF DOES_FILE_EXIST $pFilePath | |
IF OPEN_FILE $pFilePath 0x2b72 (hFile) //r+ | |
GET_FILE_SIZE hFile i | |
ALLOCATE_MEMORY i pAllocMemory | |
STRING_FORMAT pBuffer "%s.backup" $pFilePath | |
IF OPEN_FILE $pBuffer 0x2b77 (hFileBackup) //w+ | |
READ_FROM_FILE hFile i pAllocMemory | |
WRITE_TO_FILE hFileBackup i pAllocMemory | |
CLOSE_FILE hFileBackup | |
ENDIF | |
CLOSE_FILE hFile | |
ENDIF | |
ENDIF*/ | |
IF OPEN_FILE $pFilePath 0x2b77 (hFile) //w+ | |
ELSE | |
PRINT_STRING_NOW "~r~Can't create .ipl file." 5000 | |
WAIT 2000 | |
CLEO_RETURN 0 () | |
ENDIF | |
GET_CHAR_COORDINATES scplayer playerCoordBackupX playerCoordBackupY playerCoordBackupZ | |
// Save instances | |
WRITE_STRING_TO_FILE hFile "inst" | |
CLEO_CALL WriteNewLineToFile 0 (hFile)() | |
GET_LIST_SIZE lObjectsList (iListSize) | |
WHILE iCount < iListSize | |
GET_LIST_VALUE_BY_INDEX lObjectsList iCount (hObject) | |
IF DOES_OBJECT_EXIST hObject | |
//PRINT_FORMATTED_NOW "Saving object %i" 2000 hObject | |
//WAIT 1000 | |
// write model ID | |
GET_OBJECT_MODEL hObject (i) | |
STRING_FORMAT pBuffer "%i, " i | |
WRITE_STRING_TO_FILE hFile $pBuffer | |
// write model name - we don't have the model name, so we use the hash | |
GET_MODEL_INFO i (i) | |
READ_STRUCT_OFFSET i 0x4 4 (i) | |
STRING_FORMAT pBuffer "hash_%x, " i | |
WRITE_STRING_TO_FILE hFile $pBuffer | |
// write flags | |
GET_OBJECT_POINTER hObject (pObject) | |
READ_STRUCT_OFFSET pObject 0x2F 1 (i) | |
IF CLEO_CALL IsObjectUsingXYRotation 0 (hObject) | |
SET_LOCAL_VAR_BIT_CONST i 9 // force use rotation | |
ENDIF | |
GET_OBJECT_COORDINATES hObject x y z | |
IF z < 1.0 | |
SET_LOCAL_VAR_BIT_CONST i 10 //Underwater | |
ENDIF | |
STRING_FORMAT pBuffer "%i, " i | |
WRITE_STRING_TO_FILE hFile $pBuffer | |
// write coord | |
GET_OBJECT_COORDINATES hObject x y z | |
STRING_FORMAT pBuffer "%f, %f, %f, " x y z | |
WRITE_STRING_TO_FILE hFile $pBuffer | |
// I don't know why but we need to adjust rotation to save on ipl | |
CLEO_CALL GetObjectRotation 0 (hObject fRotX fRotY fRotZ)() | |
fRotY *= -1.0 | |
WHILE fRotY > 360.0 | |
fRotY -= 360.0 | |
ENDWHILE | |
WHILE fRotY < 0.0 | |
fRotY += 360.0 | |
ENDWHILE | |
fRotZ *= -1.0 | |
WHILE fRotZ > 360.0 | |
fRotZ -= 360.0 | |
ENDWHILE | |
WHILE fRotZ < 0.0 | |
fRotZ += 360.0 | |
ENDWHILE | |
CLEO_CALL SetObjectRotation 0 (hObject fRotX fRotY fRotZ)() | |
// write quat rotation | |
CLEO_CALL GetObjectQuaternion 0 (hObject)(x y z w) | |
y *= -1.0 | |
z *= -1.0 | |
w *= -1.0 | |
//GET_OBJECT_QUATERNION hObject x y z w // this crashes if RwObject doesn't exist (object is far away etc) | |
STRING_FORMAT pBuffer "%f, %f, %f, %f, " x y z w | |
WRITE_STRING_TO_FILE hFile $pBuffer | |
fRotY *= -1.0 | |
WHILE fRotY > 360.0 | |
fRotY -= 360.0 | |
ENDWHILE | |
WHILE fRotY < 0.0 | |
fRotY += 360.0 | |
ENDWHILE | |
fRotZ *= -1.0 | |
WHILE fRotZ > 360.0 | |
fRotZ -= 360.0 | |
ENDWHILE | |
WHILE fRotZ < 0.0 | |
fRotZ += 360.0 | |
ENDWHILE | |
CLEO_CALL SetObjectRotation 0 (hObject fRotX fRotY fRotZ)() | |
// write LOD index | |
STRING_FORMAT pBuffer "%i" -1 | |
WRITE_STRING_TO_FILE hFile $pBuffer | |
CLEO_CALL WriteNewLineToFile 0 (hFile)() | |
//PRINT_FORMATTED_NOW "Finished saving object %i" 2000 hObject | |
//WAIT 1000 | |
ENDIF | |
++iCount | |
ENDWHILE | |
WRITE_STRING_TO_FILE hFile "end" | |
CLEO_CALL WriteNewLineToFile 0 (hFile)() | |
// End of save instances | |
PRINT_FORMATTED_NOW "~y~Saved '%s'" 2000 $pFilePath | |
SET_CHAR_COORDINATES_NO_OFFSET scplayer playerCoordBackupX playerCoordBackupY playerCoordBackupZ | |
CLOSE_FILE hFile | |
CLEO_RETURN 0 () | |
} | |
{ | |
LVAR_INT hFile //In | |
LVAR_INT pBuffer | |
WriteNewLineToFile: | |
GET_LABEL_POINTER Buffer (pBuffer) | |
WRITE_STRUCT_OFFSET pBuffer 0 1 0x0A | |
WRITE_STRUCT_OFFSET pBuffer 1 1 0x00 | |
WRITE_STRING_TO_FILE hFile $pBuffer | |
CLEO_RETURN 0 () | |
} | |
{ | |
LVAR_INT iModelId lObjectsList //In | |
LVAR_INT scplayer hObject pEditorStruct | |
LVAR_FLOAT x y z | |
NewObject: | |
IF iModelId > 0 | |
GET_PLAYER_CHAR 0 scplayer | |
GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 5.0 0.0 (x y z) | |
REQUEST_MODEL iModelId | |
LOAD_ALL_MODELS_NOW | |
CREATE_OBJECT iModelId x y z hObject | |
MARK_MODEL_AS_NO_LONGER_NEEDED iModelId | |
INIT_EXTENDED_OBJECT_VARS hObject AUTO 1 | |
ALLOCATE_MEMORY 52 (pEditorStruct) //13*4 | |
SET_EXTENDED_OBJECT_VAR hObject AUTO 1 pEditorStruct | |
CLEO_CALL SetObjectOriginCoord 0 (hObject x y z) | |
CLEO_CALL SetObjectOffsetCoord 0 (hObject 0.0 0.0 0.0) | |
CLEO_CALL SetObjectRotation 0 (hObject 0.0 0.0 0.0) | |
LIST_ADD lObjectsList hObject | |
RETURN_TRUE | |
CLEO_RETURN 0 (hObject) | |
ENDIF | |
RETURN_FALSE | |
CLEO_RETURN 0 (-1) | |
} | |
{ | |
LVAR_INT hObject //In | |
LVAR_INT pEditorStruct | |
LVAR_FLOAT x y z | |
GetObjectOriginCoord: | |
GET_EXTENDED_OBJECT_VAR hObject AUTO 1 (pEditorStruct) | |
READ_STRUCT_PARAM pEditorStruct STRUCT_ORIGIN_COORD_X (x) | |
READ_STRUCT_PARAM pEditorStruct STRUCT_ORIGIN_COORD_Y (y) | |
READ_STRUCT_PARAM pEditorStruct STRUCT_ORIGIN_COORD_Z (z) | |
CLEO_RETURN 0 (x y z) | |
} | |
{ | |
LVAR_INT hObject //In | |
LVAR_INT pEditorStruct | |
LVAR_FLOAT fOffsetX fOffsetY fOffsetZ | |
GetObjectOffsetCoord: | |
GET_EXTENDED_OBJECT_VAR hObject AUTO 1 (pEditorStruct) | |
READ_STRUCT_PARAM pEditorStruct STRUCT_OFFSET_COORD_X (fOffsetX) | |
READ_STRUCT_PARAM pEditorStruct STRUCT_OFFSET_COORD_Y (fOffsetY) | |
READ_STRUCT_PARAM pEditorStruct STRUCT_OFFSET_COORD_Z (fOffsetZ) | |
CLEO_RETURN 0 (fOffsetX fOffsetY fOffsetZ) | |
} | |
{ | |
LVAR_INT hObject //In | |
LVAR_INT pEditorStruct | |
LVAR_FLOAT fRotX fRotY fRotZ | |
GetObjectRotation: | |
GET_EXTENDED_OBJECT_VAR hObject AUTO 1 (pEditorStruct) | |
READ_STRUCT_PARAM pEditorStruct STRUCT_ROTATION_X (fRotX) | |
READ_STRUCT_PARAM pEditorStruct STRUCT_ROTATION_Y (fRotY) | |
READ_STRUCT_PARAM pEditorStruct STRUCT_ROTATION_Z (fRotZ) | |
CLEO_RETURN 0 (fRotX fRotY fRotZ) | |
} | |
{ | |
LVAR_INT hObject //In | |
LVAR_INT pEditorStruct | |
LVAR_FLOAT fRotX fRotY fRotZ | |
IsObjectUsingXYRotation: | |
CLEO_CALL GetObjectRotation 0 (hObject)(fRotX fRotY fRotZ) | |
ABS_LVAR_FLOAT fRotX | |
ABS_LVAR_FLOAT fRotY | |
IF fRotX > 0.001 | |
OR fRotY > 0.001 | |
RETURN_TRUE | |
CLEO_RETURN 0 | |
ENDIF | |
RETURN_FALSE | |
CLEO_RETURN 0 | |
} | |
{ | |
LVAR_INT hObject //In | |
LVAR_FLOAT x y z //In | |
LVAR_INT pEditorStruct | |
SetObjectOriginCoord: | |
GET_EXTENDED_OBJECT_VAR hObject AUTO 1 (pEditorStruct) | |
WRITE_STRUCT_PARAM pEditorStruct STRUCT_ORIGIN_COORD_X (x) | |
WRITE_STRUCT_PARAM pEditorStruct STRUCT_ORIGIN_COORD_Y (y) | |
WRITE_STRUCT_PARAM pEditorStruct STRUCT_ORIGIN_COORD_Z (z) | |
CLEO_CALL UpdateObject 0 (hObject)() | |
CLEO_RETURN 0 () | |
} | |
{ | |
LVAR_INT hObject //In | |
LVAR_FLOAT fOffsetX fOffsetY fOffsetZ //In | |
LVAR_INT pEditorStruct | |
SetObjectOffsetCoord: | |
GET_EXTENDED_OBJECT_VAR hObject AUTO 1 (pEditorStruct) | |
WRITE_STRUCT_PARAM pEditorStruct STRUCT_OFFSET_COORD_X (fOffsetX) | |
WRITE_STRUCT_PARAM pEditorStruct STRUCT_OFFSET_COORD_Y (fOffsetY) | |
WRITE_STRUCT_PARAM pEditorStruct STRUCT_OFFSET_COORD_Z (fOffsetZ) | |
CLEO_CALL UpdateObject 0 (hObject)() | |
CLEO_RETURN 0 () | |
} | |
{ | |
LVAR_INT hObject //In | |
LVAR_FLOAT fRotX fRotY fRotZ //In | |
LVAR_INT pEditorStruct | |
SetObjectRotation: | |
GET_EXTENDED_OBJECT_VAR hObject AUTO 1 (pEditorStruct) | |
WRITE_STRUCT_PARAM pEditorStruct STRUCT_ROTATION_X (fRotX) | |
WRITE_STRUCT_PARAM pEditorStruct STRUCT_ROTATION_Y (fRotY) | |
WRITE_STRUCT_PARAM pEditorStruct STRUCT_ROTATION_Z (fRotZ) | |
CLEO_CALL UpdateObject 0 (hObject)() | |
CLEO_RETURN 0 () | |
} | |
{ | |
LVAR_INT hObject //In | |
LVAR_INT pEditorStruct | |
LVAR_FLOAT x y z fOffsetX fOffsetY fOffsetZ | |
GetObjectFinalCoord: | |
CLEO_CALL GetObjectOriginCoord 0 (hObject x y z) | |
CLEO_CALL GetObjectOffsetCoord 0 (hObject fOffsetX fOffsetY fOffsetZ) | |
x += fOffsetX | |
y += fOffsetY | |
z += fOffsetZ | |
CLEO_RETURN 0 (x y z) | |
} | |
{ | |
LVAR_INT hObject //In | |
LVAR_INT pEditorStruct | |
LVAR_FLOAT x y z w | |
GetObjectQuaternion: | |
GET_EXTENDED_OBJECT_VAR hObject AUTO 1 (pEditorStruct) | |
READ_STRUCT_PARAM pEditorStruct STRUCT_QUAT_X (x) | |
READ_STRUCT_PARAM pEditorStruct STRUCT_QUAT_Y (y) | |
READ_STRUCT_PARAM pEditorStruct STRUCT_QUAT_Z (z) | |
READ_STRUCT_PARAM pEditorStruct STRUCT_QUAT_W (w) | |
CLEO_RETURN 0 (x y z w) | |
} | |
{ | |
LVAR_INT hObject //In | |
LVAR_INT pEditorStruct pObject pMatrix pQuat | |
LVAR_FLOAT x y z w | |
StoreObjectQuaternion: | |
GET_OBJECT_POINTER hObject pObject | |
READ_STRUCT_OFFSET pObject 0x14 4 (pMatrix) | |
IF pMatrix > 0 | |
//READ_STRUCT_OFFSET pMatrix 0 4 (pMatrix) | |
//GET_OBJECT_QUATERNION hObject x y z w | |
GET_VAR_POINTER x (pQuat) | |
//SET_QUAT_FROM_MATRIX pQuat pMatrix | |
CALL_METHOD 0x59C3E0 pQuat 1 0 (pMatrix)() | |
GET_EXTENDED_OBJECT_VAR hObject AUTO 1 (pEditorStruct) | |
WRITE_STRUCT_PARAM pEditorStruct STRUCT_QUAT_X (x) | |
WRITE_STRUCT_PARAM pEditorStruct STRUCT_QUAT_Y (y) | |
WRITE_STRUCT_PARAM pEditorStruct STRUCT_QUAT_Z (z) | |
WRITE_STRUCT_PARAM pEditorStruct STRUCT_QUAT_W (w) | |
ELSE | |
PRINT_STRING "~r~cant store quat" 1000 | |
WAIT 1000 | |
ENDIF | |
CLEO_RETURN 0 () | |
} | |
{ | |
LVAR_INT hObject //In | |
LVAR_INT i | |
LVAR_FLOAT x y z fRotX fRotY fRotZ | |
UpdateObject: | |
GET_AREA_VISIBLE i | |
SET_OBJECT_AREA_VISIBLE hObject i | |
CLEO_CALL GetObjectFinalCoord 0 (hObject x y z) | |
SET_OBJECT_COORDINATES hObject x y z | |
CLEO_CALL GetObjectRotation 0 (hObject x y z) | |
SET_OBJECT_QUATERNION hObject 0.0 0.0 0.0 1.0 | |
SET_OBJECT_ROTATION hObject x y z | |
CLEO_CALL StoreObjectQuaternion 0 (hObject)() | |
CLEO_RETURN 0 () | |
} | |
{ | |
LVAR_INT hObjectDest hObjectSource //In | |
LVAR_INT i | |
LVAR_FLOAT x y z | |
CloneObject: | |
CLEO_CALL GetObjectOriginCoord 0 (hObjectSource x y z) | |
CLEO_CALL SetObjectOriginCoord 0 (hObjectDest x y z) | |
CLEO_CALL GetObjectOffsetCoord 0 (hObjectSource x y z) | |
CLEO_CALL SetObjectOffsetCoord 0 (hObjectDest x y z) | |
CLEO_CALL GetObjectRotation 0 (hObjectSource x y z) | |
CLEO_CALL SetObjectRotation 0 (hObjectDest x y z) | |
CLEO_RETURN 0 () | |
} | |
BufferFilePath: | |
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 //64 | |
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 //128 | |
ENDDUMP | |
Buffer: | |
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 //64 | |
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 //128 | |
ENDDUMP | |
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 //64 | |
ENDDUMP |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment