Created
September 17, 2019 00:50
-
-
Save JuniorDjjr/a1ffcb4e9eb63b2161ea595310dd485f 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
// Script for Tuning Mod by Junior_Djjr - MixMods.com.br | |
// Compiled as .tms | |
// You need: https://forum.mixmods.com.br/f16-utilidades/t179-gta3script-while-true-return_true-e-return_false | |
SCRIPT_START | |
{ | |
LVAR_INT hVeh pExternalLabel //In | |
LVAR_INT scplayer nModel slot type pLabel itemPrice i j k opacity curModel flags totalCost paintjobCost colorCost installedPaintjob wheelShopSelected | |
LVAR_FLOAT x y z sx sy slotsPosX slotsPosY slotsSizeX slotsSizeY majorSlotWidth tempx | |
LVAR_TEXT_LABEL itemName | |
// Wheel sets | |
CONST_INT ANY_SET -1 | |
CONST_INT WHEEL_SET_TF 0 // Transfender | |
CONST_INT WHEEL_SET_WAA 1 // Wheel Arch Angel | |
CONST_INT WHEEL_SET_LLC 2 // Loco Low Co. | |
CONST_INT WHEEL_SET_MORE 3 // More... | |
// Upgrade types | |
CONST_INT UPGRADE_HOOD 0 | |
CONST_INT UPGRADE_VENT 1 | |
CONST_INT UPGRADE_SPOIL 2 | |
CONST_INT UPGRADE_SIDESKIRT 3 | |
CONST_INT UPGRADE_BULLFRNT 4 | |
CONST_INT UPGRADE_BULLREAR 5 | |
CONST_INT UPGRADE_LIGHTS 6 | |
CONST_INT UPGRADE_ROOF 7 | |
CONST_INT UPGRADE_NITRO 8 | |
CONST_INT UPGRADE_HYDRAULICS 9 | |
CONST_INT UPGRADE_STEREO 10 | |
CONST_INT UPGRADE_UNKNOWN 11 | |
CONST_INT UPGRADE_WHEELS 12 | |
CONST_INT UPGRADE_EXHAUST 13 | |
CONST_INT UPGRADE_BUMPFRNT 14 | |
CONST_INT UPGRADE_BUMPREAR 15 | |
CONST_INT UPGRADE_MISC 16 | |
CONST_INT UPGRADE_ALLWHEELS 17 | |
// Sprites | |
CONST_INT SPRITE_TUNING0 1 | |
CONST_INT SPRITE_TUNING1 2 | |
CONST_INT SPRITE_TUNING2 3 | |
CONST_INT SPRITE_TUNING3 4 | |
CONST_INT SPRITE_TUNING4 5 | |
CONST_INT SPRITE_TUNING5 6 | |
CONST_INT SPRITE_TUNING6 7 | |
CONST_INT SPRITE_TUNING7 8 | |
CONST_INT SPRITE_TUNING8 9 | |
CONST_INT SPRITE_TUNING9 10 | |
CONST_INT SPRITE_TUNING10 11 | |
//CONST_INT SPRITE_TUNING11 12 | |
CONST_INT SPRITE_TUNING12 13 | |
CONST_INT SPRITE_TUNING13 14 | |
CONST_INT SPRITE_TUNING14 15 | |
CONST_INT SPRITE_TUNING15 16 | |
CONST_INT SPRITE_TUNINGC 17 | |
CONST_INT SPRITE_TUNINGP 18 | |
CONST_INT SPRITE_TUNINGO 19 | |
CONST_INT SPRITE_BLANK 20 | |
CONST_INT SPRITE_SHOPCART 21 | |
CONST_INT SPRITE_CAR 22 | |
CONST_INT SPRITE_DEFAULT 23 | |
// Flags | |
CONST_INT DISABLE_CMD_ARROW 1 | |
CONST_INT DISABLE_CMD 2 | |
// Addresses | |
CONST_INT CModelInfo__GetModelInfo 0x00403DA0 | |
/////////////////////////////////////////////////////////////////////////////////////////////////// | |
GET_PLAYER_CHAR 0 (scplayer) | |
/*IF pExternalLabel = 0 // auto started by .cs | |
WHILE NOT TEST_CHEAT UG | |
WAIT 0 | |
ENDWHILE | |
IF IS_CHAR_SITTING_IN_ANY_CAR scplayer | |
STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer hVeh | |
ELSE | |
REQUEST_MODEL ELEGY | |
LOAD_ALL_MODELS_NOW | |
GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 3.0 0.0 x y z | |
CREATE_CAR ELEGY x y z (hVeh) | |
WARP_CHAR_INTO_CAR scplayer hVeh | |
ENDIF | |
GET_LABEL_POINTER Test pExternalLabel | |
ENDIF*/ | |
//CLEO_CALL show 0 (hVeh) | |
flags = 0 | |
GOSUB LoadFiles | |
GET_CAR_MODEL hVeh (nModel) | |
CLEO_CALL StoreAllUpgradesToCar 0 (nModel)() | |
CLEO_CALL StoreAllWheels 0 ()() | |
CLEO_CALL StoreAllInstalledParts 0 (hVeh)() | |
CLEO_CALL StoreAllInstalledColors 0 (hVeh)() | |
GET_CURRENT_VEHICLE_PAINTJOB hVeh installedPaintjob | |
LOAD_PRICES CARMODS | |
totalCost = 0 | |
slot = 0 | |
type = -2 | |
wheelShopSelected = -1 | |
WHILE TRUE | |
IF type > -1 // not color or paintjob | |
IF IS_KEY_PRESSED VK_UP | |
AND NOT IS_LOCAL_VAR_BIT_SET_CONST flags DISABLE_CMD_ARROW | |
SET_LOCAL_VAR_BIT_CONST flags DISABLE_CMD_ARROW | |
slot-- | |
IF slot < 0 | |
CLEO_CALL GetLabelFromType 0 (type wheelShopSelected)(pLabel) | |
CLEO_CALL CountSlots 0 (pLabel type wheelShopSelected)(slot) | |
slot-- | |
ENDIF | |
ENDIF | |
IF IS_KEY_PRESSED VK_DOWN | |
AND NOT IS_LOCAL_VAR_BIT_SET_CONST flags DISABLE_CMD_ARROW | |
SET_LOCAL_VAR_BIT_CONST flags DISABLE_CMD_ARROW | |
slot++ | |
CLEO_CALL GetLabelFromType 0 (type wheelShopSelected)(pLabel) | |
CLEO_CALL CountSlots 0 (pLabel type wheelShopSelected)(j) | |
j-- | |
IF slot > j | |
slot = 0 | |
ENDIF | |
ENDIF | |
ENDIF | |
IF IS_KEY_PRESSED VK_RIGHT | |
AND NOT IS_LOCAL_VAR_BIT_SET_CONST flags DISABLE_CMD_ARROW | |
SET_LOCAL_VAR_BIT_CONST flags DISABLE_CMD_ARROW | |
wheelShopSelected = -1 | |
slot = 0 | |
WHILE TRUE | |
type++ | |
GET_CAR_MODEL hVeh j | |
IF IS_THIS_MODEL_A_BOAT J | |
j = 16 | |
ELSE | |
j = 17 | |
ENDIF | |
IF type > j | |
type = -2 | |
BREAK | |
ENDIF | |
IF type < 0 // color or paintjob | |
IF type = -1 | |
GET_NUM_AVAILABLE_PAINTJOBS hVeh i | |
IF NOT i > 0 | |
CONTINUE | |
ENDIF | |
ENDIF | |
BREAK | |
ENDIF | |
CLEO_CALL GetLabelFromType 0 (type wheelShopSelected)(pLabel) | |
IF CLEO_CALL LabelNotEmpty 0 (pLabel) | |
BREAK | |
ENDIF | |
ENDWHILE | |
ENDIF | |
IF IS_KEY_PRESSED VK_LEFT | |
AND NOT IS_LOCAL_VAR_BIT_SET_CONST flags DISABLE_CMD_ARROW | |
SET_LOCAL_VAR_BIT_CONST flags DISABLE_CMD_ARROW | |
wheelShopSelected = -1 | |
slot = 0 | |
WHILE TRUE | |
type-- | |
GET_CAR_MODEL hVeh j | |
IF IS_THIS_MODEL_A_BOAT J | |
j = 16 | |
ELSE | |
j = 17 | |
ENDIF | |
IF type < -2 | |
type = j | |
ENDIF | |
IF type < 0 // color or paintjob | |
IF type = -1 | |
GET_NUM_AVAILABLE_PAINTJOBS hVeh i | |
IF NOT i > 0 | |
CONTINUE | |
ENDIF | |
ENDIF | |
BREAK | |
ENDIF | |
CLEO_CALL GetLabelFromType 0 (type wheelShopSelected)(pLabel) | |
IF CLEO_CALL LabelNotEmpty 0 (pLabel) | |
BREAK | |
ENDIF | |
ENDWHILE | |
ENDIF | |
IF type < 0 // color or paintjob | |
IF IS_KEY_PRESSED VK_KEY_Y | |
AND NOT IS_LOCAL_VAR_BIT_SET_CONST flags DISABLE_CMD | |
IF type = -2 // Color | |
//WRITE_MEMORY pExternalLabel 4 2 FALSE | |
USE_TEXT_COMMANDS 0 | |
CLEO_CALL ChooseColors 0 (hVeh) | |
CLEO_CALL CountNewInstalledColors 0 (hVeh)(colorCost) | |
colorCost *= 150 | |
ENDIF | |
IF type = -1 // Paintjob | |
GET_NUM_AVAILABLE_PAINTJOBS hVeh i | |
IF i > 0 | |
//WRITE_MEMORY pExternalLabel 4 3 FALSE | |
USE_TEXT_COMMANDS 0 | |
CLEO_CALL ChoosePaintjob 0 (hVeh installedPaintjob) | |
paintjobCost = 0 | |
GET_CURRENT_VEHICLE_PAINTJOB hVeh i | |
IF NOT i = installedPaintjob | |
paintjobCost += 500 | |
ENDIF | |
ENDIF | |
ENDIF | |
ENDIF | |
ELSE | |
CLEO_CALL FixedGetCurrentCarMod 0 (hVeh type)(curModel) | |
IF type = UPGRADE_ALLWHEELS | |
CLEO_CALL GetWheelMajorTextWidth 0 ()(majorSlotWidth) | |
ENDIF | |
IF type = UPGRADE_ALLWHEELS | |
AND wheelShopSelected < 0 | |
IF IS_KEY_PRESSED VK_KEY_Y | |
AND NOT IS_LOCAL_VAR_BIT_SET_CONST flags DISABLE_CMD | |
SET_LOCAL_VAR_BIT_CONST flags DISABLE_CMD | |
wheelShopSelected = slot | |
slot = 0 | |
CLEO_CALL GetLabelFromType 0 (type wheelShopSelected)(pLabel) | |
ENDIF | |
ELSE | |
CLEO_CALL GetLabelFromType 0 (type wheelShopSelected)(pLabel) | |
CLEO_CALL GetMajorSlotTextWidth 0 (pLabel)(majorSlotWidth) | |
CLEO_CALL GetUpgradeIDFromMemorySlot 0 (pLabel slot)(nModel) | |
IF IS_KEY_PRESSED VK_KEY_Y | |
AND NOT IS_LOCAL_VAR_BIT_SET_CONST flags DISABLE_CMD | |
SET_LOCAL_VAR_BIT_CONST flags DISABLE_CMD | |
IF curModel = nModel | |
REMOVE_VEHICLE_MOD hVeh nModel | |
IF CLEO_CALL ThisModelIsOriginallyInstalled 0 (curModel) | |
ELSE | |
GET_PRICE_OF_ITEM curModel (itemPrice) | |
totalCost -= itemPrice | |
ENDIF | |
ELSE | |
IF curModel > 0 | |
IF CLEO_CALL ThisModelIsOriginallyInstalled 0 (curModel) | |
ELSE | |
GET_PRICE_OF_ITEM curModel (itemPrice) | |
totalCost -= itemPrice | |
ENDIF | |
ENDIF | |
REQUEST_VEHICLE_MOD nModel | |
LOAD_ALL_MODELS_NOW | |
ADD_VEHICLE_MOD hVeh nModel i | |
MARK_VEHICLE_MOD_AS_NO_LONGER_NEEDED nModel | |
IF CLEO_CALL ThisModelIsOriginallyInstalled 0 (nModel) | |
ELSE | |
GET_PRICE_OF_ITEM nModel (itemPrice) | |
totalCost += itemPrice | |
ENDIF | |
ENDIF | |
ENDIF | |
ENDIF | |
ENDIF | |
IF NOT IS_KEY_PRESSED VK_KEY_Y | |
AND NOT IS_KEY_PRESSED VK_KEY_N | |
CLEAR_LOCAL_VAR_BIT_CONST flags DISABLE_CMD | |
ENDIF | |
IF NOT IS_KEY_PRESSED VK_LEFT | |
AND NOT IS_KEY_PRESSED VK_RIGHT | |
AND NOT IS_KEY_PRESSED VK_UP | |
AND NOT IS_KEY_PRESSED VK_DOWN | |
CLEAR_LOCAL_VAR_BIT_CONST flags DISABLE_CMD_ARROW | |
ENDIF | |
IF IS_KEY_PRESSED VK_KEY_N | |
AND NOT IS_LOCAL_VAR_BIT_SET_CONST flags DISABLE_CMD | |
IF wheelShopSelected >= 0 | |
slot = wheelShopSelected | |
wheelShopSelected = -1 | |
SET_LOCAL_VAR_BIT_CONST flags DISABLE_CMD | |
CONTINUE | |
ENDIF | |
WHILE IS_KEY_PRESSED VK_KEY_N | |
GOSUB ShowInterface | |
ENDWHILE | |
totalCost += colorCost | |
totalCost += paintjobCost | |
IF totalCost > 0 | |
totalCost *= -1 | |
ADD_SCORE 0 totalCost | |
IF paintjobCost > 0 | |
OR colorCost > 0 | |
CLEAR_WANTED_LEVEL_IN_GARAGE | |
SET_VEHICLE_DIRT_LEVEL hVeh 0.0 | |
ENDIF | |
tempx =# totalCost | |
INCREMENT_FLOAT_STAT 55 tempx | |
ENDIF | |
USE_TEXT_COMMANDS 0 | |
WRITE_MEMORY pExternalLabel 4 1 FALSE | |
BREAK | |
ENDIF | |
GOSUB ShowInterface | |
ENDWHILE | |
//CLEO_CALL FreeMemory 0 | |
TERMINATE_THIS_CUSTOM_SCRIPT | |
Test: | |
DUMP | |
00 00 00 00 | |
ENDDUMP | |
/////////////////////////////////////////////////////////////////////////////////////////////////// | |
ShowInterface: | |
WAIT 0 | |
USE_TEXT_COMMANDS 1 | |
SET_SPRITES_DRAW_BEFORE_FADE ON | |
DRAW_SPRITE SPRITE_BLANK (320.0 20.0)(640.0 60.0)(0 0 0 180) | |
//SET_SPRITES_DRAW_BEFORE_FADE ON | |
DRAW_RECT (320.0 50.0)(640.0 2.0)(200 200 200 255) | |
// Show money | |
STORE_SCORE 0 i | |
GOSUB FormatMoney | |
DISPLAY_TEXT_WITH_NUMBER (630.0 54.0) _TM_07 i | |
i = totalCost + colorCost | |
i += paintjobCost | |
GOSUB FormatMoney | |
SET_TEXT_COLOUR 255 100 100 255 | |
DISPLAY_TEXT_WITH_NUMBER (630.0 66.0) _TM_07 i | |
x = 23.0 | |
y = 25.0 | |
k = -1 | |
WHILE k <= 18 | |
j = k - 1 | |
CLEO_CALL GetLabelFromType 0 (j wheelShopSelected)(pLabel) | |
IF j = type | |
IF type > 0 | |
GOSUB ProcessSlots | |
ENDIF | |
opacity = 255 | |
sx = 34.5 | |
sy = 40.0 | |
ELSE | |
opacity = 80 | |
sx = 33.0 | |
sy = 38.0 | |
ENDIF | |
IF k = -1 // color | |
SET_SPRITES_DRAW_BEFORE_FADE ON | |
DRAW_SPRITE SPRITE_TUNINGC (x y)(sx sy)(255 255 255 opacity) | |
CLEO_CALL CountNewInstalledColors 0 (hVeh)(j) | |
IF j > 0 | |
tempx = x | |
tempx -= 12.0 | |
slotsPosY = y | |
slotsPosY += 14.0 | |
SET_SPRITES_DRAW_BEFORE_FADE ON | |
DRAW_SPRITE SPRITE_SHOPCART (tempx slotsPosY) (10.0 8.0) (200 200 200 opacity) | |
ENDIF | |
ELSE | |
IF k = 0 // paintjob | |
GET_NUM_AVAILABLE_PAINTJOBS hVeh j | |
IF j > 0 | |
SET_SPRITES_DRAW_BEFORE_FADE ON | |
DRAW_SPRITE SPRITE_TUNINGP (x y)(sx sy)(255 255 255 opacity) | |
GET_CURRENT_VEHICLE_PAINTJOB hVeh j | |
IF NOT j = installedPaintjob | |
tempx = x | |
tempx -= 12.0 | |
slotsPosY = y | |
slotsPosY += 14.0 | |
SET_SPRITES_DRAW_BEFORE_FADE ON | |
DRAW_SPRITE SPRITE_SHOPCART (tempx slotsPosY) (10.0 8.0) (200 200 200 opacity) | |
ENDIF | |
IF j >= 0 | |
tempx = x | |
tempx += 12.0 | |
slotsPosY = y | |
slotsPosY += 14.0 | |
SET_SPRITES_DRAW_BEFORE_FADE ON | |
DRAW_SPRITE SPRITE_CAR (tempx slotsPosY) (10.0 8.0) (200 200 200 opacity) | |
ENDIF | |
ELSE | |
k++ | |
CONTINUE | |
ENDIF | |
ELSE | |
IF CLEO_CALL LabelNotEmpty 0 (pLabel) | |
IF k = 12 // unknown | |
OR k = 17 // misc | |
SET_SPRITES_DRAW_BEFORE_FADE ON | |
DRAW_SPRITE SPRITE_TUNINGO (x y)(sx sy)(255 255 255 opacity) | |
ELSE | |
SET_SPRITES_DRAW_BEFORE_FADE ON | |
IF k = 18 // all wheels | |
GET_CAR_MODEL hVeh j | |
IF NOT IS_THIS_MODEL_A_BOAT J | |
DRAW_SPRITE SPRITE_TUNING12 (x y)(sx sy)(255 255 255 opacity) | |
ENDIF | |
ELSE | |
DRAW_SPRITE k (x y)(sx sy)(255 255 255 opacity) | |
ENDIF | |
ENDIF | |
ELSE | |
k++ | |
CONTINUE | |
ENDIF | |
ENDIF | |
ENDIF | |
x += 35.0 | |
k++ | |
ENDWHILE | |
USE_TEXT_COMMANDS 0 | |
RETURN | |
ProcessSlots: | |
CLEO_CALL CountSlots 0 (pLabel type wheelShopSelected)(j) | |
slotsSizeY =# j | |
slotsSizeY *= 20.0 // y of each item | |
slotsSizeY += 20.0 // margin bottom | |
//slotsPosY = slotsSizeY / 2.0 | |
//slotsPosY += 50.0 // padding top | |
i = 0 | |
slotsPosY = 62.0 | |
slotsPosX = x | |
tempx = majorSlotWidth | |
tempx /= 2.0 | |
tempx += x | |
IF tempx > 640.0 | |
tempx -= 640.0 | |
slotsPosX -= tempx | |
ENDIF | |
WHILE i < j | |
IF i = slot | |
opacity = 255 | |
ELSE | |
opacity = 180 | |
ENDIF | |
DRAW_RECT (slotsPosX slotsPosY)(majorSlotWidth 25.0)(0 0 0 opacity) | |
// Show item name | |
IF k = 18 | |
AND NOT wheelShopSelected >= 0 | |
SWITCH i | |
CASE 0 | |
itemName = CARMOD1 // Transfender | |
BREAK | |
CASE 1 | |
itemName = CARMOD3 // Loco Low Co | |
BREAK | |
CASE 2 | |
itemName = CARMOD2 // Wheel Arch Angels | |
BREAK | |
CASE 3 | |
itemName = _TM_640 // More... | |
BREAK | |
ENDSWITCH | |
slotsPosY -= 5.0 | |
GOSUB FormatSlotItem | |
DISPLAY_TEXT (slotsPosX slotsPosY) $itemName | |
slotsPosY += 5.0 | |
ELSE | |
CLEO_CALL GetUpgradeIDFromMemorySlot 0 (pLabel i)(nModel) | |
GET_NAME_OF_ITEM nModel (itemName) | |
slotsPosY -= 10.0 | |
GOSUB FormatSlotItem | |
IF curModel = nModel // currently installed | |
SET_TEXT_COLOUR 160 160 160 120 | |
ENDIF | |
DISPLAY_TEXT (slotsPosX slotsPosY) $itemName | |
slotsPosY += 15.0 | |
GET_PRICE_OF_ITEM nModel (itemPrice) | |
GOSUB FormatSlotPrice | |
IF CLEO_CALL ThisModelIsOriginallyInstalled 0 (nModel) | |
tempx = majorSlotWidth | |
tempx /= 2.0 | |
tempx -= 6.5 // right margin | |
tempx += x | |
DRAW_SPRITE SPRITE_CAR (tempx slotsPosY) (10.0 8.0) (200 200 200 255) | |
SET_TEXT_COLOUR 160 160 160 120 | |
slotsPosY -= 5.0 | |
ELSE | |
slotsPosY -= 5.0 | |
IF curModel = nModel // currently installed | |
tempx = 0.0 | |
tempx -= majorSlotWidth | |
tempx /= 2.0 | |
tempx += 6.5 // left margin | |
tempx += x | |
slotsPosY += 5.0 | |
DRAW_SPRITE SPRITE_SHOPCART (tempx slotsPosY) (10.0 8.0) (200 200 200 255) | |
slotsPosY -= 5.0 | |
ENDIF | |
ENDIF | |
DISPLAY_TEXT_WITH_NUMBER (slotsPosX slotsPosY) _TM_07 itemPrice | |
ENDIF | |
// Next line | |
slotsPosY += 25.0 | |
i++ | |
ENDWHILE | |
RETURN | |
FormatMoney: | |
SET_TEXT_FONT 1 | |
SET_TEXT_SCALE 0.3 1.1 | |
SET_TEXT_RIGHT_JUSTIFY ON | |
SET_TEXT_WRAPX 640.0 | |
SET_TEXT_COLOUR 100 200 100 255 | |
SET_TEXT_EDGE 1 0 0 0 200 | |
RETURN | |
FormatSlotItem: | |
SET_TEXT_FONT 1 | |
SET_TEXT_SCALE 0.22 1.02 | |
SET_TEXT_CENTRE ON | |
SET_TEXT_CENTRE_SIZE 640.0 | |
SET_TEXT_COLOUR 200 200 200 opacity | |
SET_TEXT_EDGE 1 0 0 0 200 | |
RETURN | |
FormatSlotPrice: | |
SET_TEXT_FONT 1 | |
SET_TEXT_SCALE 0.22 1.02 | |
SET_TEXT_CENTRE ON | |
SET_TEXT_CENTRE_SIZE 640.0 | |
SET_TEXT_COLOUR 100 200 100 opacity | |
SET_TEXT_EDGE 1 0 0 0 200 | |
RETURN | |
LoadFiles: | |
LOAD_TEXTURE_DICTIONARY TUNINGM | |
LOAD_SPRITE 1 TUNING0 | |
LOAD_SPRITE 2 TUNING1 | |
LOAD_SPRITE 3 TUNING2 | |
LOAD_SPRITE 4 TUNING3 | |
LOAD_SPRITE 5 TUNING4 | |
LOAD_SPRITE 6 TUNING5 | |
LOAD_SPRITE 7 TUNING6 | |
LOAD_SPRITE 8 TUNING7 | |
LOAD_SPRITE 9 TUNING8 | |
LOAD_SPRITE 10 TUNING9 | |
LOAD_SPRITE 11 TUNING10 | |
//LOAD_SPRITE 12 TUNING11 | |
LOAD_SPRITE 13 TUNING12 | |
LOAD_SPRITE 14 TUNING13 | |
LOAD_SPRITE 15 TUNING14 | |
LOAD_SPRITE 16 TUNING15 | |
LOAD_SPRITE 17 TUNINGC | |
LOAD_SPRITE 18 TUNINGP | |
LOAD_SPRITE 19 TUNINGO | |
LOAD_SPRITE 20 BLANK | |
LOAD_SPRITE 21 SHOPCART | |
LOAD_SPRITE 22 CAR | |
LOAD_SPRITE 23 DEFAULT | |
RETURN | |
} | |
SCRIPT_END | |
/////////////////////////////////////////////////////////////////////////////////////////////////// | |
/* | |
{ | |
LVAR_INT veh frame id | |
show: | |
GET_VEHICLE_POINTER veh veh | |
veh += 0x18 | |
READ_MEMORY veh 4 FALSE (veh) | |
WHILE TRUE | |
WAIT 0 | |
IF IS_KEY_PRESSED 107 | |
IF IS_KEY_PRESSED VK_LSHIFT | |
id += 10 | |
ELSE | |
id++ | |
ENDIF | |
WHILE IS_KEY_PRESSED 107 | |
wait 0 | |
ENDWHILE | |
ENDIF | |
IF IS_KEY_PRESSED 109 | |
IF IS_KEY_PRESSED VK_LSHIFT | |
id -= 10 | |
ELSE | |
id-- | |
ENDIF | |
WHILE IS_KEY_PRESSED 109 | |
wait 0 | |
ENDWHILE | |
ENDIF | |
CALL_FUNCTION_RETURN 0x4C53C0 2 2 (id veh)(frame) | |
PRINT_FORMATTED_NOW "%d %x" 100 id frame | |
ENDWHILE | |
CLEO_RETURN 0 | |
} | |
*/ | |
{ | |
LVAR_INT hVeh type // In | |
LVAR_INT curModel id clump frame pLabel | |
FixedGetCurrentCarMod: | |
IF type >= 12 | |
IF type = 17 //internal | |
type = 12 | |
ENDIF | |
SWITCH type | |
CASE 12 | |
id = 2 | |
BREAK | |
CASE 13 | |
id = 19 | |
BREAK | |
CASE 14 | |
id = 12 | |
BREAK | |
CASE 15 | |
id = 13 | |
BREAK | |
CASE 16 | |
id = 20 | |
BREAK | |
ENDSWITCH | |
GET_VEHICLE_POINTER hVeh clump | |
clump += 0x18 | |
READ_MEMORY clump 4 FALSE (clump) | |
CALL_FUNCTION_RETURN 0x004C53C0 2 2 (id clump)(frame) //_rpClumpFindFrameById | |
IF NOT frame > 0 | |
CLEO_RETURN 0 (-1) | |
ENDIF | |
ENDIF | |
GET_CURRENT_CAR_MOD hVeh type curModel | |
CLEO_RETURN 0 (curModel) | |
} | |
{ | |
LVAR_INT nModel // In | |
LVAR_INT type value pLabel | |
ThisModelIsOriginallyInstalled: | |
GET_LABEL_POINTER InstalledParts pLabel | |
REPEAT 16 type | |
READ_MEMORY pLabel 2 FALSE value | |
IF value = nModel | |
RETURN_TRUE | |
CLEO_RETURN 0 | |
ENDIF | |
pLabel += 0x2 | |
ENDREPEAT | |
RETURN_FALSE | |
CLEO_RETURN 0 | |
} | |
{ | |
LVAR_INT color // In | |
LVAR_INT colorId value pLabel | |
ThisColorIsOriginallyInstalled: | |
GET_LABEL_POINTER InstalledColors pLabel | |
REPEAT 4 colorId | |
READ_MEMORY pLabel 1 FALSE value | |
IF value = color | |
RETURN_TRUE | |
CLEO_RETURN 0 | |
ENDIF | |
pLabel += 0x1 | |
ENDREPEAT | |
RETURN_FALSE | |
CLEO_RETURN 0 | |
} | |
{ | |
LVAR_INT color slot // In | |
LVAR_INT colorId value pLabel | |
ThisColorIsOriginallyInstalledInSlot: | |
GET_LABEL_POINTER InstalledColors pLabel | |
pLabel += slot | |
READ_MEMORY pLabel 1 FALSE value | |
IF value = color | |
RETURN_TRUE | |
CLEO_RETURN 0 | |
ENDIF | |
RETURN_FALSE | |
CLEO_RETURN 0 | |
} | |
{ | |
LVAR_INT hVeh // In | |
LVAR_INT colorId colors[4] installedColors value pLabel | |
CountNewInstalledColors: | |
GET_CAR_COLOURS hVeh colors[0] colors[1] | |
GET_EXTRA_CAR_COLOURS hVeh colors[2] colors[3] | |
REPEAT 4 colorId | |
IF CLEO_CALL ThisColorIsOriginallyInstalled 0 (colors[colorId]) | |
ELSE | |
installedColors++ | |
ENDIF | |
ENDREPEAT | |
CLEO_RETURN 0 (installedColors) | |
} | |
{ | |
LVAR_INT hVeh // In | |
LVAR_INT type nModel pLabel | |
StoreAllInstalledParts: | |
GET_LABEL_POINTER InstalledParts pLabel | |
REPEAT 16 type | |
CLEO_CALL FixedGetCurrentCarMod 0 (hVeh type)(nModel) | |
WRITE_MEMORY pLabel 2 nModel FALSE | |
pLabel += 0x2 | |
ENDREPEAT | |
CLEO_RETURN 0 | |
} | |
{ | |
LVAR_INT hVeh // In | |
LVAR_INT colorId colors[4] pLabel | |
StoreAllInstalledColors: | |
GET_LABEL_POINTER InstalledColors pLabel | |
GET_CAR_COLOURS hVeh colors[0] colors[1] | |
GET_EXTRA_CAR_COLOURS hVeh colors[2] colors[3] | |
REPEAT 4 colorId | |
WRITE_MEMORY pLabel 1 colors[colorId] FALSE | |
pLabel += 0x1 | |
ENDREPEAT | |
CLEO_RETURN 0 | |
} | |
{ | |
LVAR_INT label // In | |
LVAR_INT iWidth nModel | |
LVAR_FLOAT fWidth fMajorWidth | |
LVAR_TEXT_LABEL itemName | |
GetMajorSlotTextWidth: | |
WHILE TRUE | |
READ_MEMORY label 2 FALSE (nModel) | |
IF nModel > 0 | |
GET_NAME_OF_ITEM nModel (itemName) | |
GET_STRING_WIDTH $itemName (iWidth) | |
fWidth =# iWidth | |
IF fWidth > fMajorWidth | |
fMajorWidth = fWidth | |
ENDIF | |
ELSE | |
BREAK | |
ENDIF | |
label += 0x2 | |
ENDWHILE | |
fMajorWidth /= 2.0 | |
fMajorWidth += 10.0 | |
IF fMajorWidth < 70.0 | |
fMajorWidth = 70.0 | |
ENDIF | |
CLEO_RETURN 0 (fMajorWidth) | |
} | |
{ | |
LVAR_INT iWidth nModel | |
LVAR_FLOAT fWidth fMajorWidth | |
LVAR_TEXT_LABEL itemName | |
GetWheelMajorTextWidth: | |
GET_STRING_WIDTH CARMOD1 (iWidth) | |
GOSUB GetWheelMajorTextWidth_UpdateMajor | |
GET_STRING_WIDTH CARMOD2 (iWidth) | |
GOSUB GetWheelMajorTextWidth_UpdateMajor | |
GET_STRING_WIDTH CARMOD3 (iWidth) | |
GOSUB GetWheelMajorTextWidth_UpdateMajor | |
GET_STRING_WIDTH _TM_640 (iWidth) | |
GOSUB GetWheelMajorTextWidth_UpdateMajor | |
fMajorWidth /= 2.0 | |
fMajorWidth += 10.0 | |
IF fMajorWidth < 70.0 | |
fMajorWidth = 70.0 | |
ENDIF | |
CLEO_RETURN 0 (fMajorWidth) | |
GetWheelMajorTextWidth_UpdateMajor: | |
fWidth =# iWidth | |
IF fWidth > fMajorWidth | |
fMajorWidth = fWidth | |
ENDIF | |
RETURN | |
} | |
{ | |
LVAR_INT label type nShop // In | |
LVAR_INT totalSlots value i j | |
CountSlots: | |
IF type = UPGRADE_ALLWHEELS | |
AND nShop < 0 | |
REPEAT 4 i | |
CLEO_CALL GetLabelFromType 0 (17 i)(label) | |
IF CLEO_CALL LabelNotEmpty 0 (label) | |
totalSlots++ | |
ENDIF | |
ENDREPEAT | |
CLEO_RETURN 0 (totalSlots) | |
ENDIF | |
WHILE TRUE | |
READ_MEMORY label 2 FALSE (value) | |
IF value > 0 | |
totalSlots++ | |
ELSE | |
BREAK | |
ENDIF | |
label += 0x2 | |
ENDWHILE | |
CLEO_RETURN 0 (totalSlots) | |
} | |
{ | |
LVAR_INT label //In | |
LVAR_INT value | |
LabelNotEmpty: | |
READ_MEMORY label 2 FALSE (value) | |
IS_THING_GREATER_THAN_THING value 0 | |
CLEO_RETURN 0 | |
} | |
{ | |
LVAR_INT label slot //In | |
LVAR_INT id offset | |
GetUpgradeIDFromMemorySlot: | |
offset = slot * 2 | |
offset += label | |
READ_MEMORY offset 2 FALSE (id) | |
CLEO_RETURN 0 (id) | |
} | |
{ | |
LVAR_INT memory | |
FreeMemory: | |
GET_LABEL_POINTER TMemory_Start (memory) | |
WRITE_MEMORY memory 400 (0) FALSE | |
CLEO_RETURN 0 | |
} | |
{ | |
LVAR_INT nVehModelID // In | |
StoreAllUpgradesToCar: | |
LVAR_INT i nModel nVehModType pVehModelInfo pVehMods pLabel nMemorySlot offset value | |
CALL_FUNCTION_RETURN CModelInfo__GetModelInfo 1 1 (nVehModelID)(pVehModelInfo) | |
pVehMods = pVehModelInfo + 0x2D6 // carMods | |
REPEAT 18 i | |
READ_MEMORY pVehMods 2 FALSE (nModel) | |
IF nModel = 0xFFFF | |
BREAK | |
ENDIF | |
// Store upgrade by type | |
GET_VEHICLE_MOD_TYPE nModel (nVehModType) | |
IF NOT nVehModType = UPGRADE_WHEELS | |
CLEO_CALL GetLabelFromType 0 (nVehModType -1)(pLabel) | |
nMemorySlot = 0 | |
WHILE nMemorySlot <= 8 | |
offset = nMemorySlot * 2 | |
offset += pLabel | |
READ_MEMORY offset 2 FALSE (value) | |
IF value = 0 | |
WRITE_MEMORY offset 2 (nModel) FALSE | |
BREAK | |
ENDIF | |
nMemorySlot++ | |
ENDWHILE | |
ENDIF | |
pVehMods += 0x2 | |
ENDREPEAT | |
CLEO_RETURN 0 | |
} | |
{ | |
LVAR_INT nVehModType nShop //In | |
LVAR_INT pLabel | |
GetLabelFromType: | |
IF nShop >= 0 | |
AND nVehModType = UPGRADE_ALLWHEELS | |
SWITCH nShop | |
CASE WHEEL_SET_TF | |
GET_LABEL_POINTER TMemory_Wheels_TF (pLabel) | |
BREAK | |
CASE WHEEL_SET_WAA | |
GET_LABEL_POINTER TMemory_Wheels_WAA (pLabel) | |
BREAK | |
CASE WHEEL_SET_LLC | |
GET_LABEL_POINTER TMemory_Wheels_LLC (pLabel) | |
BREAK | |
CASE WHEEL_SET_MORE | |
GET_LABEL_POINTER TMemory_Wheels_MORE (pLabel) | |
BREAK | |
ENDSWITCH | |
CLEO_RETURN 0 (pLabel) | |
ENDIF | |
IF nVehModType < 0 | |
CLEO_RETURN 0 (-1) | |
ENDIF | |
SWITCH nVehModType | |
CASE UPGRADE_HOOD | |
GET_LABEL_POINTER TMemory_HOOD (pLabel) | |
BREAK | |
CASE UPGRADE_VENT | |
GET_LABEL_POINTER TMemory_VENT (pLabel) | |
BREAK | |
CASE UPGRADE_SPOIL | |
GET_LABEL_POINTER TMemory_SPOIL (pLabel) | |
BREAK | |
CASE UPGRADE_SIDESKIRT | |
GET_LABEL_POINTER TMemory_SIDESKIRT (pLabel) | |
BREAK | |
CASE UPGRADE_BULLFRNT | |
GET_LABEL_POINTER TMemory_BULLFRNT (pLabel) | |
BREAK | |
CASE UPGRADE_BULLREAR | |
GET_LABEL_POINTER TMemory_BULLREAR (pLabel) | |
BREAK | |
CASE UPGRADE_LIGHTS | |
GET_LABEL_POINTER TMemory_LIGHTS (pLabel) | |
BREAK | |
CASE UPGRADE_ROOF | |
GET_LABEL_POINTER TMemory_ROOF (pLabel) | |
BREAK | |
CASE UPGRADE_NITRO | |
GET_LABEL_POINTER TMemory_NITRO (pLabel) | |
BREAK | |
CASE UPGRADE_HYDRAULICS | |
GET_LABEL_POINTER TMemory_HYDRAULICS (pLabel) | |
BREAK | |
CASE UPGRADE_STEREO | |
GET_LABEL_POINTER TMemory_STEREO (pLabel) | |
BREAK | |
CASE UPGRADE_WHEELS | |
GET_LABEL_POINTER TMemory_WHEELS (pLabel) | |
BREAK | |
CASE UPGRADE_EXHAUST | |
GET_LABEL_POINTER TMemory_EXHAUST (pLabel) | |
BREAK | |
CASE UPGRADE_BUMPFRNT | |
GET_LABEL_POINTER TMemory_BUMPFRNT (pLabel) | |
BREAK | |
CASE UPGRADE_BUMPREAR | |
GET_LABEL_POINTER TMemory_BUMPREAR (pLabel) | |
BREAK | |
CASE UPGRADE_MISC | |
GET_LABEL_POINTER TMemory_MISC (pLabel) | |
BREAK | |
CASE UPGRADE_ALLWHEELS | |
GET_LABEL_POINTER TMemory_ALLWHEELS (pLabel) | |
BREAK | |
DEFAULT | |
GET_LABEL_POINTER TMemory_MISC (pLabel) | |
BREAK | |
ENDSWITCH | |
CLEO_RETURN 0 (pLabel) | |
} | |
{ | |
LVAR_INT nTotal i pLabel wheel[15] | |
StoreAllWheels: | |
REPEAT 4 i | |
CLEO_CALL GetLabelFromType 0 (17 i)(pLabel) | |
CLEO_CALL StoreWheelsInSet 0 (i pLabel)() | |
ENDREPEAT | |
CLEO_RETURN 0 | |
} | |
{ | |
LVAR_INT nSetID pLabel // In | |
LVAR_INT nTotal x pSet wheelId | |
StoreWheelsInSet: | |
pSet = nSetID * 0x1E | |
pSet = pSet + 0x00B4E3F8 | |
nSetID = nSetID * 2 | |
nSetID = nSetID + 0x00B4E470 | |
READ_MEMORY nSetID 2 FALSE nTotal | |
IF NOT nTotal = 0 | |
x = 0 | |
WHILE x < nTotal | |
READ_MEMORY pSet 2 FALSE wheelId | |
WRITE_MEMORY pLabel 2 wheelId FALSE | |
pSet += 0x2 | |
pLabel += 0x2 | |
x++ | |
ENDWHILE | |
ENDIF | |
CLEO_RETURN 0 | |
} | |
/////////////////////////////////////////////////////////////////////////////////////////////////// | |
{ | |
LVAR_INT hVeh installedPaintjob // In | |
LVAR_INT totalPaintjobs maxSpriteId selected originalPaintjob i j forceColorWhite curSpriteId primaryColor secondaryColor | |
LVAR_FLOAT f posx posy | |
ChoosePaintjob: | |
DO_FADE 0 100 | |
WAIT 150 | |
WHILE IS_KEY_PRESSED VK_KEY_Y | |
WAIT 0 | |
ENDWHILE | |
DO_FADE 1 150 | |
CONST_FLOAT fSize 150.0 | |
GET_NUM_AVAILABLE_PAINTJOBS hVeh totalPaintjobs | |
maxSpriteId = totalPaintjobs | |
maxSpriteId += 100 | |
IF NOT totalPaintjobs > 0 | |
CLEO_RETURN 0 | |
ENDIF | |
selected = 0 | |
GET_CURRENT_VEHICLE_PAINTJOB hVeh originalPaintjob | |
selected = originalPaintjob + 1 // set current selected | |
i = 1 | |
WHILE i <= totalPaintjobs | |
CLEO_CALL Load_Paintjob_As_Sprite 0 (hVeh i) | |
i++ | |
ENDWHILE | |
IF CLEO_CALL CheckIFPaintjobColorWhiteDisabled 0 | |
forceColorWhite = false | |
ELSE | |
forceColorWhite = true | |
ENDIF | |
GET_CAR_COLOURS hVeh primaryColor secondaryColor | |
WHILE TRUE | |
GOSUB ChoosePaintjob_Interface | |
IF IS_KEY_PRESSED VK_RIGHT | |
selected++ | |
IF selected > totalPaintjobs | |
selected = 0 | |
ENDIF | |
GOSUB ChoosePaintjob_Set | |
WHILE IS_KEY_PRESSED VK_RIGHT | |
GOSUB ChoosePaintjob_Interface | |
ENDWHILE | |
ENDIF | |
IF IS_KEY_PRESSED VK_LEFT | |
selected-- | |
IF selected < 0 | |
selected = totalPaintjobs | |
ENDIF | |
GOSUB ChoosePaintjob_Set | |
WHILE IS_KEY_PRESSED VK_LEFT | |
GOSUB ChoosePaintjob_Interface | |
ENDWHILE | |
ENDIF | |
IF IS_KEY_PRESSED VK_KEY_B | |
IF forceColorWhite = true | |
forceColorWhite = false | |
GOSUB ChoosePaintjob_ResetCarColor | |
ELSE | |
forceColorWhite = true | |
GOSUB ChoosePaintjob_SetCarColorWhite | |
ENDIF | |
WHILE IS_KEY_PRESSED VK_KEY_B | |
GOSUB ChoosePaintjob_Interface | |
ENDWHILE | |
ENDIF | |
IF IS_KEY_PRESSED VK_KEY_Y | |
BREAK | |
ENDIF | |
IF IS_KEY_PRESSED VK_KEY_N | |
GOSUB ChoosePaintjob_Set | |
GIVE_VEHICLE_PAINTJOB hVeh originalPaintjob | |
BREAK | |
ENDIF | |
ENDWHILE | |
DO_FADE 0 100 | |
WAIT 100 | |
USE_TEXT_COMMANDS 0 | |
i = 1 | |
WHILE i <= totalPaintjobs | |
CLEO_CALL Get_TXD_Index 0 (hVeh i)(j) | |
CALL_FUNCTION 0x731A30 1 1 (j) // RemoveRef | |
CLEO_CALL Unload_Paintjob_As_Sprite 0 (hVeh i)() | |
i++ | |
ENDWHILE | |
WHILE IS_KEY_PRESSED VK_KEY_Y | |
WAIT 0 | |
ENDWHILE | |
WHILE IS_KEY_PRESSED VK_KEY_N | |
WAIT 0 | |
ENDWHILE | |
DO_FADE 1 150 | |
CLEO_RETURN 0 | |
///////////////////////////////////////////// | |
ChoosePaintjob_Interface: | |
WAIT 0 | |
// Selection | |
IF totalPaintjobs > 5 // IF some mod increases the max paintjobs | |
posx = 60.0 | |
ELSE | |
f =# totalPaintjobs | |
f *= 30.0 | |
posx = 300.0 | |
posx -= f | |
ENDIF | |
posy = 60.0 | |
curSpriteId = 100 | |
WHILE curSpriteId <= maxSpriteId | |
i = curSpriteId - 100 | |
IF selected = i | |
//CLEO_CALL GUI_DrawBoxOutline_WithText 20 PosX posx PosY posy SizeX 52.0 SizeY 62.0 RGBA 0 0 0 0 OutlineSize 2.0 OutlineSides 1 1 1 1 OutlineRGBA -2 -2 -2 -2 TextID -1 FormatID -1 Padding -1 | |
SET_SPRITES_DRAW_BEFORE_FADE TRUE | |
DRAW_RECT posx posy 55.0 65.0 (255 255 255 255) | |
ENDIF | |
SET_SPRITES_DRAW_BEFORE_FADE TRUE | |
IF curSpriteId = 100 | |
DRAW_SPRITE SPRITE_DEFAULT posx posy 50.0 60.0 (255 255 255 255) | |
ELSE | |
IF selected = i | |
DRAW_SPRITE curSpriteId posx posy 52.0 62.0 (255 255 255 255) | |
ELSE | |
DRAW_SPRITE curSpriteId posx posy 50.0 60.0 (255 255 255 255) | |
ENDIF | |
ENDIF | |
i-- | |
IF installedPaintjob = i | |
posy += 38.0 | |
DRAW_SPRITE SPRITE_CAR (posx posy) (10.0 8.0) (200 200 200 255) | |
posy -= 38.0 | |
ENDIF | |
i++ | |
posx += 60.0 | |
IF i = 10 | |
OR i = 20 | |
posx = 60.0 | |
posy += 70.0 | |
ENDIF | |
curSpriteId++ | |
ENDWHILE | |
//Footer | |
//CLEO_CALL GUI_DrawBoxOutline_WithText 20 PosX 320.0 PosY 440.0 SizeX 640.0 SizeY 55.0 RGBA 0 0 0 255 OutlineSize 1.4 OutlineSides 1 0 0 0 OutlineRGBA 200 200 200 200 TextID -1 FormatID -1 Padding -1 | |
DRAW_RECT 320.0 440.0 640.0 55.0 (0 0 0 255) | |
DRAW_RECT 320.0 412.0 640.0 1.2 (255 255 255 255) | |
GOSUB FormatTip | |
IF forceColorWhite = true | |
DISPLAY_TEXT 30.0 390.0 _TM_631 | |
ELSE | |
DISPLAY_TEXT 30.0 390.0 _TM_632 | |
ENDIF | |
GOSUB FormatDescription | |
DISPLAY_TEXT 320.0 425.0 _TM_177 | |
//CLEO_CALL MouseCamera 2 hVeh -1 | |
//CLEO_CALL GUI_ItemMenuActive_PulseColor_Update 0 | |
USE_TEXT_COMMANDS 0 | |
RETURN | |
FormatDescription: | |
SET_TEXT_FONT 1 | |
SET_TEXT_SCALE 0.22 1.02 | |
SET_TEXT_CENTRE ON | |
SET_TEXT_CENTRE_SIZE 640.0 | |
SET_TEXT_COLOUR 200 200 200 255 | |
SET_TEXT_EDGE 1 0 0 0 200 | |
RETURN | |
FormatTip: | |
SET_TEXT_FONT 1 | |
SET_TEXT_SCALE 0.22 1.02 | |
SET_TEXT_WRAPX 640.0 | |
SET_TEXT_COLOUR 200 200 200 255 | |
SET_TEXT_EDGE 1 0 0 0 200 | |
RETURN | |
ChoosePaintjob_Set: | |
i = selected + -1 | |
GIVE_VEHICLE_PAINTJOB hVeh i | |
IF forceColorWhite = true | |
GOSUB ChoosePaintjob_SetCarColorWhite | |
ELSE | |
GOSUB ChoosePaintjob_ResetCarColor | |
ENDIF | |
RETURN | |
ChoosePaintjob_SetCarColorWhite: | |
GOSUB EnablePaintjobColorWhite | |
CHANGE_CAR_COLOUR hVeh 1 secondaryColor | |
RETURN | |
ChoosePaintjob_ResetCarColor: | |
GOSUB DisablePaintjobColorWhite | |
CHANGE_CAR_COLOUR hVeh primaryColor secondaryColor | |
RETURN | |
EnablePaintjobColorWhite: | |
WRITE_MEMORY 0x6D65C5 1 0xA8 TRUE | |
WRITE_MEMORY 0x6D65C6 1 0x4 TRUE | |
WRITE_MEMORY 0x6D65C7 1 0x75 TRUE | |
WRITE_MEMORY 0x6D65C8 1 0x22 TRUE | |
WRITE_MEMORY 0x6D65C9 1 0xC6 TRUE | |
WRITE_MEMORY 0x6D65CA 1 0x86 TRUE | |
WRITE_MEMORY 0x6D65CB 1 0x34 TRUE | |
WRITE_MEMORY 0x6D65CC 1 0x4 TRUE | |
WRITE_MEMORY 0x6D65CD 1 0x0 TRUE | |
WRITE_MEMORY 0x6D65CE 1 0x0 TRUE | |
WRITE_MEMORY 0x6D65CF 1 0x1 TRUE | |
RETURN | |
DisablePaintjobColorWhite: | |
WRITE_MEMORY 0x6D65C5 11 0x90 TRUE | |
RETURN | |
} | |
{ | |
LVAR_INT hVeh id | |
LVAR_INT i | |
Get_TXD_Index: | |
GET_CAR_MODEL hVeh i | |
CALL_FUNCTION_RETURN 0x403DA0 1 1 (i)(i) // CBaseModelInfo | |
i += 0x2FA // CVehicleModelInfo->Paintjobs (dw 5 dup) | |
id-- | |
id *= 0x2 | |
i += id | |
READ_MEMORY i 2 FALSE (i) | |
CLEO_RETURN 0 i | |
} | |
//by Kevin Prestes | |
{ | |
LVAR_INT hVeh id //In | |
LVAR_INT i txd j p | |
Load_Paintjob_As_Sprite: | |
CLEO_CALL Get_TXD_Index 0 (hVeh id)(i) | |
READ_MEMORY 0x407106 4 FALSE (txd) // .txd offset | |
txd += i | |
REQUEST_MODEL txd | |
LOAD_ALL_MODELS_NOW | |
CALL_FUNCTION 0x731A00 1 1 (i) // AddRef | |
CALL_FUNCTION_RETURN 0x408340 1 1 (i) (i) // retorna RwTexDictionary | |
CALL_FUNCTION_RETURN 0x734940 1 1 (i) (i) // GetFirstTexture - retorna RwTexture | |
READ_MEMORY 0x4840DD 4 FALSE (p) // Ponteiro para o inicio dos CTexture utilizados pelo script | |
j = id | |
j += 100 // start of free sprite ids on tuning mod | |
j *= 0x4 | |
p += j | |
WRITE_MEMORY p 4 i FALSE | |
CLEO_RETURN 0 | |
} | |
{ | |
LVAR_INT hVeh id //In | |
LVAR_INT p j | |
Unload_Paintjob_As_Sprite: | |
READ_MEMORY 0x4840DD 4 FALSE (p) // Ponteiro para o inicio dos CTexture utilizados pelo script | |
j = id | |
j += 100 // start of free sprite ids on tuning mod | |
j *= 0x4 | |
p += j | |
WRITE_MEMORY p 4 0 FALSE | |
CLEO_RETURN 0 | |
} | |
{ | |
LVAR_INT i | |
CheckIFPaintjobColorWhiteDisabled: | |
READ_MEMORY 0x6D65C5 1 FALSE (i) | |
IF i = 0x90 | |
RETURN_TRUE | |
ELSE | |
RETURN_FALSE | |
ENDIF | |
CLEO_RETURN 0 | |
} | |
/////////////////////////////////////////////////////////////////////////////////////////////////// | |
{ | |
LVAR_INT hVeh //In | |
LVAR_INT curColors[4] | |
LVAR_INT bakColors[4] | |
LVAR_INT tempColors[4] | |
LVAR_INT curIndex showingList i j curColorID r g b startColorId endColorId maxColors | |
LVAR_FLOAT posX posY | |
ChooseColors: | |
DO_FADE 0 150 | |
WAIT 150 | |
DO_FADE 1 250 | |
GET_CAR_COLOURS hVeh curColors[0] curColors[1] | |
GET_EXTRA_CAR_COLOURS hVeh curColors[2] curColors[3] | |
bakColors[0] = curColors[0] | |
bakColors[1] = curColors[1] | |
bakColors[2] = curColors[2] | |
bakColors[3] = curColors[3] | |
READ_MEMORY 0x582220 1 FALSE (maxColors) | |
IF maxColors = 128 | |
maxColors = 126 // fix default limit | |
ENDIF | |
WHILE TRUE | |
GOSUB ChooseColors_Interface | |
IF IS_KEY_PRESSED VK_RIGHT | |
curIndex++ | |
IF curIndex > 3 | |
curIndex = 0 | |
ENDIF | |
WHILE IS_KEY_PRESSED VK_RIGHT | |
GOSUB ChooseColors_Interface | |
ENDWHILE | |
ENDIF | |
IF IS_KEY_PRESSED VK_LEFT | |
curIndex-- | |
IF curIndex < 0 | |
curIndex = 3 | |
ENDIF | |
WHILE IS_KEY_PRESSED VK_LEFT | |
GOSUB ChooseColors_Interface | |
ENDWHILE | |
ENDIF | |
IF IS_KEY_PRESSED 49 | |
curIndex = 0 | |
ENDIF | |
IF IS_KEY_PRESSED 50 | |
curIndex = 1 | |
ENDIF | |
IF IS_KEY_PRESSED 51 | |
curIndex = 2 | |
ENDIF | |
IF IS_KEY_PRESSED 52 | |
curIndex = 3 | |
ENDIF | |
// Open color list | |
IF IS_KEY_PRESSED VK_KEY_Y | |
WHILE IS_KEY_PRESSED VK_KEY_Y | |
GOSUB ChooseColors_Interface | |
ENDWHILE | |
showingList = 1 | |
tempColors[0] = curColors[0] | |
tempColors[1] = curColors[1] | |
tempColors[2] = curColors[2] | |
tempColors[3] = curColors[3] | |
curColorID = curColors[curIndex] | |
WHILE TRUE | |
GOSUB ChooseColors_Interface | |
IF timera > 10 | |
IF IS_KEY_PRESSED VK_UP | |
IF IS_KEY_PRESSED VK_LSHIFT | |
curColorID -= 2 | |
ELSE | |
curColorID-- | |
ENDIF | |
timera = 0 | |
ENDIF | |
IF IS_KEY_PRESSED VK_DOWN | |
IF IS_KEY_PRESSED VK_LSHIFT | |
curColorID += 2 | |
ELSE | |
curColorID++ | |
ENDIF | |
timera = 0 | |
ENDIF | |
ENDIF | |
IF curColorID > maxColors | |
curColorID = 0 | |
ENDIF | |
IF curColorID < 0 | |
curColorID = maxColors | |
ENDIF | |
curColors[curIndex] = curColorID | |
GOSUB ChooseColors_ShowAllColors | |
GOSUB ChooseColors_Set | |
IF IS_KEY_PRESSED VK_KEY_Y | |
showingList = 0 | |
GET_CAR_COLOURS hVeh curColors[0] curColors[1] | |
GET_EXTRA_CAR_COLOURS hVeh curColors[2] curColors[3] | |
WHILE IS_KEY_PRESSED VK_KEY_Y | |
GOSUB ChooseColors_Interface | |
ENDWHILE | |
BREAK | |
ENDIF | |
IF IS_KEY_PRESSED VK_KEY_N | |
showingList = 0 | |
curColors[0] = tempColors[0] | |
curColors[1] = tempColors[1] | |
curColors[2] = tempColors[2] | |
curColors[3] = tempColors[3] | |
GOSUB ChooseColors_Set | |
WHILE IS_KEY_PRESSED VK_KEY_N | |
GOSUB ChooseColors_Interface | |
ENDWHILE | |
BREAK | |
ENDIF | |
IF NOT IS_KEY_PRESSED VK_UP | |
AND NOT IS_KEY_PRESSED VK_DOWN | |
timerb = 0 | |
ELSE | |
WHILE IS_KEY_PRESSED VK_UP | |
GOSUB ChooseColors_Interface | |
GOSUB ChooseColors_ShowAllColors | |
IF timerb < 200 | |
ELSE | |
BREAK | |
ENDIF | |
ENDWHILE | |
WHILE IS_KEY_PRESSED VK_DOWN | |
GOSUB ChooseColors_Interface | |
GOSUB ChooseColors_ShowAllColors | |
IF timerb < 200 | |
ELSE | |
BREAK | |
ENDIF | |
ENDWHILE | |
ENDIF | |
ENDWHILE | |
ENDIF | |
/* | |
IF IS_KEY_PRESSED VK_G | |
GET_LABEL_POINTER 16bytes (15@) | |
IF CLEO_CALL Keyboard 0 Pointer 15@ MaxChars 3 OnlyNumbers true Interface 5 | |
IF SCAN_STRING bakTempOne 15@ "%i" i | |
IF i > 255 | |
i = 255 | |
ENDIF | |
curOne[curIndex] = i | |
GOSUB ChooseColors_Set | |
ENDIF | |
ENDIF | |
ENDIF | |
*/ | |
IF IS_KEY_PRESSED VK_KEY_N | |
BREAK | |
ENDIF | |
ENDWHILE | |
DO_FADE 0 150 | |
WAIT 150 | |
USE_TEXT_COMMANDS 0 | |
WHILE IS_KEY_PRESSED VK_KEY_Y | |
WAIT 0 | |
ENDWHILE | |
WHILE IS_KEY_PRESSED VK_KEY_N | |
WAIT 0 | |
ENDWHILE | |
DO_FADE 1 200 | |
CLEO_RETURN 0 | |
ChooseColors_Interface: | |
WAIT 0 | |
IF showingList = 0 //main interface | |
//Footer | |
//CLEO_CALL GUI_DrawBoxOutline_WithText 0 PosX 320.0 PosY 440.0 SizeX 640.0 SizeY 55.0 RGBA 0 0 0 255 OutlineSize 1.4 OutlineSides 1 0 0 0 OutlineRGBA 200 200 200 200 TextID -1 FormatID -1 Padding -1 | |
DRAW_RECT 320.0 440.0 640.0 55.0 0 0 0 255 | |
DRAW_RECT 320.0 413.0 640.0 1.4 255 255 255 255 | |
GOSUB FormatDescCenter | |
DISPLAY_TEXT 320.0 420.0 _TM_175 | |
//GOSUB FormatDescCenter | |
//DISPLAY_TEXT 320.0 425.0 _TM_176 | |
GOSUB FormatDescCenter | |
DISPLAY_TEXT 320.0 430.0 _TM_177 | |
IF curIndex = 0 //prim | |
DRAW_RECT (240.0 100.0 60.0 60.0) (255 255 255 255) | |
ENDIF | |
CLEO_CALL GetCarcolRGB 0 (curColors[0]) (r g b) | |
DRAW_RECT (240.0 100.0 55.0 55.0) (r g b 255) | |
GOSUB FormatMonoItemCenter | |
DISPLAY_TEXT_WITH_NUMBER 240.0 100.0 NUMBER 1 | |
IF CLEO_CALL ThisColorIsOriginallyInstalledInSlot 0 (curColors[0] 0) | |
ELSE | |
CLEO_CALL DifferenciateColor 0 (r g b)(r g b) | |
DRAW_SPRITE SPRITE_SHOPCART (240.0 120.0) (10.0 8.0) (r g b 255) | |
ENDIF | |
IF curIndex = 1 //sec | |
DRAW_RECT (300.0 100.0 60.0 60.0) (255 255 255 255) | |
ENDIF | |
CLEO_CALL GetCarcolRGB 0 curColors[1] (r g b) | |
DRAW_RECT (300.0 100.0 55.0 55.0) (r g b 255) | |
GOSUB FormatMonoItemCenter | |
DISPLAY_TEXT_WITH_NUMBER 300.0 100.0 NUMBER 2 | |
IF CLEO_CALL ThisColorIsOriginallyInstalledInSlot 0 (curColors[1] 1) | |
ELSE | |
CLEO_CALL DifferenciateColor 0 (r g b)(r g b) | |
DRAW_SPRITE SPRITE_SHOPCART (300.0 120.0) (10.0 8.0) (r g b 255) | |
ENDIF | |
IF curIndex = 2 //3rd | |
DRAW_RECT (360.0 100.0 60.0 60.0) (255 255 255 255) | |
ENDIF | |
CLEO_CALL GetCarcolRGB 0 curColors[2] (r g b) | |
DRAW_RECT (360.0 100.0 55.0 55.0) (r g b 255) | |
GOSUB FormatMonoItemCenter | |
DISPLAY_TEXT_WITH_NUMBER 360.0 100.0 NUMBER 3 | |
IF CLEO_CALL ThisColorIsOriginallyInstalledInSlot 0 (curColors[2] 2) | |
ELSE | |
CLEO_CALL DifferenciateColor 0 (r g b)(r g b) | |
DRAW_SPRITE SPRITE_SHOPCART (360.0 120.0) (10.0 8.0) (r g b 255) | |
ENDIF | |
IF curIndex = 3 //4th | |
DRAW_RECT (420.0 100.0 60.0 60.0) (255 255 255 255) | |
ENDIF | |
CLEO_CALL GetCarcolRGB 0 curColors[3] (r g b) | |
DRAW_RECT (420.0 100.0 55.0 55.0) (r g b 255) | |
GOSUB FormatMonoItemCenter | |
DISPLAY_TEXT_WITH_NUMBER 420.0 100.0 NUMBER 4 | |
IF CLEO_CALL ThisColorIsOriginallyInstalledInSlot 0 (curColors[3] 3) | |
ELSE | |
CLEO_CALL DifferenciateColor 0 (r g b)(r g b) | |
DRAW_SPRITE SPRITE_SHOPCART (420.0 120.0) (10.0 8.0) (r g b 255) | |
ENDIF | |
ELSE //pal | |
//Footer | |
//CLEO_CALL GUI_DrawBoxOutline_WithText 20 PosX 287.0 PosY 440.0 SizeX 580.0 SizeY 55.0 RGBA 0 0 0 255 OutlineSize 1.4 OutlineSides 1 0 0 0 OutlineRGBA 200 200 200 200 TextID -1 FormatID -1 Padding -1 | |
DRAW_RECT 287.0 440.0 580.0 55.0 0 0 0 255 | |
DRAW_RECT 287.0 413.0 580.0 1.4 255 255 255 255 | |
GOSUB FormatDescCenter | |
DISPLAY_TEXT 320.0 420.0 _TM_179 | |
//GOSUB FormatDescCenter | |
//DISPLAY_TEXT 320.0 425.0 _TM_180 | |
GOSUB FormatDescCenter | |
DISPLAY_TEXT 320.0 430.0 _TM_366 | |
ENDIF | |
USE_TEXT_COMMANDS 0 | |
RETURN | |
FormatMonoItemCenter: | |
SET_TEXT_COLOUR 240 240 240 255 | |
SET_TEXT_FONT 2 | |
SET_TEXT_CENTRE ON | |
SET_TEXT_CENTRE_SIZE 640.0 | |
SET_TEXT_EDGE 1 0 0 0 100 | |
SET_TEXT_SCALE 0.3 1.0 | |
SET_TEXT_PROPORTIONAL ON | |
RETURN | |
FormatDescCenter: | |
SET_TEXT_FONT 1 | |
SET_TEXT_SCALE 0.22 1.02 | |
SET_TEXT_CENTRE ON | |
SET_TEXT_CENTRE_SIZE 640.0 | |
SET_TEXT_COLOUR 200 200 200 255 | |
SET_TEXT_EDGE 1 0 0 0 200 | |
RETURN | |
FormatSmallColorID: | |
SET_TEXT_FONT 1 | |
SET_TEXT_SCALE 0.18 0.95 | |
SET_TEXT_WRAPX 640.0 | |
SET_TEXT_EDGE 0 0 0 0 0 | |
RETURN | |
ChooseColors_ShowAllColors: | |
i = curColorID | |
endColorId = curColorID | |
i -= 24 | |
IF i < 0 | |
i *= -1 | |
endColorId += i | |
i = 0 | |
ENDIF | |
endColorId += 24 | |
IF endColorId > maxColors | |
endColorId = maxColors | |
ENDIF | |
startColorId = i | |
posY = 10.0 | |
DRAW_RECT (615.0 240.0 75.0 480.0) (0 0 0 150) | |
DRAW_RECT (577.0 240.0 1.6 480.0) (255 255 255 255) | |
WHILE startColorId <= endColorId | |
CLEO_CALL GetCarcolRGB 0 startColorId (r g b) | |
IF curColorID = startColorId | |
DRAW_RECT (610.0 posY) (50.0 10.0) (255 255 255 128) | |
ENDIF | |
DRAW_RECT (610.0 posY 30.0 10.0) (r g b 255) | |
CLEO_CALL DifferenciateColor 0 (r g b)(r g b) | |
IF CLEO_CALL ThisColorIsOriginallyInstalledInSlot 0 (startColorId curIndex) | |
DRAW_SPRITE SPRITE_CAR (615.0 posY) (10.0 8.0) (r g b 255) | |
ENDIF | |
GOSUB FormatSmallColorID | |
SET_TEXT_COLOUR r g b 255 | |
posY -= 5.0 | |
DISPLAY_TEXT_WITH_NUMBER 597.0 posY NUMBER startColorId | |
posY += 5.0 | |
posY += 10.0 | |
startColorId++ | |
ENDWHILE | |
DRAW_RECT (615.0 posY) (75.0 10.0) (0 0 0 255) | |
RETURN | |
ChooseColors_Set: | |
CHANGE_CAR_COLOUR hVeh curColors[0] curColors[1] | |
SET_EXTRA_CAR_COLOURS hVeh curColors[2] curColors[3] | |
RETURN | |
} | |
{ | |
LVAR_INT r g b //In | |
LVAR_INT ill med | |
DifferenciateColor: | |
ill = r + g | |
ill += b | |
ill -= 765 | |
ABS_LVAR_INT ill | |
med = ill - 384 // 3*(255/2) | |
ABS_LVAR_INT med | |
IF med < 50 // diff from the mid illumination point | |
IF ill < 384 | |
ill = 0 //black | |
ELSE | |
ill = 765 //white | |
ENDIF | |
ENDIF | |
ill /= 3 | |
r = ill | |
g = ill | |
b = ill | |
/* | |
IF r < 70 | |
r += 70 | |
ELSE | |
r -= 70 | |
ENDIF | |
IF g < 70 | |
g += 70 | |
ELSE | |
g -= 70 | |
ENDIF | |
IF b < 70 | |
b += 70 | |
ELSE | |
b -= 70 | |
ENDIF | |
*/ | |
CLEO_RETURN 0 (r g b) | |
} | |
{ | |
LVAR_INT colorId //In | |
LVAR_INT p vehicleColors | |
LVAR_INT r g b | |
GetCarcolRGB: | |
p = 4 | |
p *= colorId | |
READ_MEMORY 0x582176 4 FALSE (vehicleColors) | |
p += vehicleColors //_vehicleColors RwRGBA 80h dup | |
READ_MEMORY p 1 FALSE (r) | |
p++ | |
READ_MEMORY p 1 FALSE (g) | |
p++ | |
READ_MEMORY p 1 FALSE (b) | |
//p++ | |
//READ_MEMORY p 1 FALSE (a) | |
CLEO_RETURN 0 r g b | |
} | |
/////////////////////////////////////////////////////////////////////////////////////////////////// | |
TMemory_Start: | |
TMemory_HOOD: | |
DUMP | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //8 | |
FF FF FF FF | |
ENDDUMP | |
TMemory_VENT: | |
DUMP | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //8 | |
FF FF FF FF | |
ENDDUMP | |
TMemory_SPOIL: | |
DUMP | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //8 | |
FF FF FF FF | |
ENDDUMP | |
TMemory_SIDESKIRT: | |
DUMP | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //8 | |
FF FF FF FF | |
ENDDUMP | |
TMemory_BULLFRNT: | |
DUMP | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //8 | |
FF FF FF FF | |
ENDDUMP | |
TMemory_BULLREAR: | |
DUMP | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //8 | |
FF FF FF FF | |
ENDDUMP | |
TMemory_LIGHTS: | |
DUMP | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //8 | |
FF FF FF FF | |
ENDDUMP | |
TMemory_ROOF: | |
DUMP | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //8 | |
FF FF FF FF | |
ENDDUMP | |
TMemory_NITRO: | |
DUMP | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //8 | |
FF FF FF FF | |
ENDDUMP | |
TMemory_HYDRAULICS: | |
DUMP | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //8 | |
FF FF FF FF | |
ENDDUMP | |
TMemory_STEREO: | |
DUMP | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //8 | |
FF FF FF FF | |
ENDDUMP | |
TMemory_WHEELS: //hardcoded | |
DUMP | |
00 00 | |
ENDDUMP | |
TMemory_ALLWHEELS: //hardcoded | |
DUMP | |
00 01 | |
ENDDUMP | |
TMemory_EXHAUST: | |
DUMP | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //8 | |
FF FF FF FF | |
ENDDUMP | |
TMemory_BUMPFRNT: | |
DUMP | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //8 | |
FF FF FF FF | |
ENDDUMP | |
TMemory_BUMPREAR: | |
DUMP | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //8 | |
FF FF FF FF | |
ENDDUMP | |
TMemory_MISC: | |
DUMP | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //8 | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //16 | |
FF FF FF FF | |
ENDDUMP | |
TMemory_Wheels_TF: | |
DUMP | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //8 | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //16 | |
FF FF FF FF | |
ENDDUMP | |
TMemory_Wheels_WAA: | |
DUMP | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //8 | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //16 | |
FF FF FF FF | |
ENDDUMP | |
TMemory_Wheels_LLC: | |
DUMP | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //8 | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //16 | |
FF FF FF FF | |
ENDDUMP | |
TMemory_Wheels_MORE: | |
DUMP | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //8 | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //16 | |
FF FF FF FF | |
ENDDUMP | |
/////////////////////////////////////////////////////////////////////////////////////////////////// | |
InstalledParts: | |
DUMP | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //8 | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //16 | |
FF FF FF FF | |
ENDDUMP | |
InstalledColors: | |
DUMP | |
00 00 00 00 | |
ENDDUMP | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment