Skip to content

Instantly share code, notes, and snippets.

@JuniorDjjr
Last active January 5, 2024 17:57
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/bb03504decd505e76390b16fc2b7f002 to your computer and use it in GitHub Desktop.
Save JuniorDjjr/bb03504decd505e76390b16fc2b7f002 to your computer and use it in GitHub Desktop.
/*
By Junior_Djjr - MixMods.com.br
You need: https://forum.mixmods.com.br/f16-utilidades/t179-gta3script-while-true-return_true-e-return_false
*/
SCRIPT_START
{
LVAR_INT curWeather nextWeather sprite hour min weather night_start_hour stats iniDrawShadow iniSnow usingMobileHud pPed scplayer
LVAR_FLOAT posX posY sizX sizY iniPosX iniPosY iniSizX iniSizY
// Sprites const
CONST_INT SPRITE_FOG 1
CONST_INT SPRITE_NIGHT 2
CONST_INT SPRITE_NIGHT_PARTLY_CLOUDY 3
CONST_INT SPRITE_NIGHT_RAIN 4
CONST_INT SPRITE_CLOUDY 5
CONST_INT SPRITE_CLOUDY_NIGHT 6
CONST_INT SPRITE_CLOUDY_S_RAIN 7
CONST_INT SPRITE_CLOUDY_S_SUNNY 8
CONST_INT SPRITE_RAIN 9
CONST_INT SPRITE_RAIN_NIGHT 10
CONST_INT SPRITE_RAIN_S_CLOUDY 11
CONST_INT SPRITE_RAIN_S_SUNNY 12
CONST_INT SPRITE_THUNDERSTORMS 13
CONST_INT SPRITE_SUNNY 14
CONST_INT SPRITE_PARTLY_CLOUD 15
CONST_INT SPRITE_SUNNY_S_CLOUDY 16
CONST_INT SPRITE_SUNNY_S_RAIN 17
CONST_INT SPRITE_WINDY 18
IF READ_FLOAT_FROM_INI_FILE "cleo\Weather Forecast.ini" "Icon" "PosX" (iniPosX)
AND READ_FLOAT_FROM_INI_FILE "cleo\Weather Forecast.ini" "Icon" "PosY" (iniPosY)
AND READ_FLOAT_FROM_INI_FILE "cleo\Weather Forecast.ini" "Icon" "SizX" (iniSizX)
AND READ_FLOAT_FROM_INI_FILE "cleo\Weather Forecast.ini" "Icon" "SizY" (iniSizY)
AND READ_INT_FROM_INI_FILE "cleo\Weather Forecast.ini" "Icon" "DrawShadow" (iniDrawShadow)
ELSE
PRINT_STRING_NOW "~r~Error: Fail to read 'cleo\weather forecast.ini'" 6000
TERMINATE_THIS_CUSTOM_SCRIPT
ENDIF
IF NOT READ_INT_FROM_INI_FILE "cleo\Weather Forecast.ini" "Icon" "SnowVersion" (iniSnow)
iniSnow = FALSE
ENDIF
// Load sprites
LOAD_TEXTURE_DICTIONARY WEAFORE
IF iniSnow = FALSE
LOAD_SPRITE SPRITE_NIGHT night
LOAD_SPRITE SPRITE_NIGHT_PARTLY_CLOUDY night_p_cldy
LOAD_SPRITE SPRITE_NIGHT_RAIN night_rain
LOAD_SPRITE SPRITE_CLOUDY cloudy
LOAD_SPRITE SPRITE_CLOUDY_NIGHT cloudy_night
LOAD_SPRITE SPRITE_CLOUDY_S_RAIN cloudy_s_rain
LOAD_SPRITE SPRITE_CLOUDY_S_SUNNY cloudy_s_sunny
LOAD_SPRITE SPRITE_RAIN rain
LOAD_SPRITE SPRITE_RAIN_NIGHT rain_night
LOAD_SPRITE SPRITE_RAIN_S_CLOUDY rain_s_cloudy
LOAD_SPRITE SPRITE_RAIN_S_SUNNY rain_s_sunny
LOAD_SPRITE SPRITE_THUNDERSTORMS thunderstorms
LOAD_SPRITE SPRITE_FOG fog
LOAD_SPRITE SPRITE_WINDY windy
LOAD_SPRITE SPRITE_SUNNY sunny
LOAD_SPRITE SPRITE_PARTLY_CLOUD partly_cloudy
LOAD_SPRITE SPRITE_SUNNY_S_CLOUDY sunny_s_cloudy
LOAD_SPRITE SPRITE_SUNNY_S_RAIN sunny_s_rain
ELSE
LOAD_SPRITE SPRITE_NIGHT night_snow
LOAD_SPRITE SPRITE_NIGHT_PARTLY_CLOUDY night_snow
LOAD_SPRITE SPRITE_NIGHT_RAIN night_rain
LOAD_SPRITE SPRITE_CLOUDY snow_s_cloudy
LOAD_SPRITE SPRITE_CLOUDY_NIGHT night_snow
LOAD_SPRITE SPRITE_CLOUDY_S_RAIN cloudy_s_rain
LOAD_SPRITE SPRITE_CLOUDY_S_SUNNY snow_light
LOAD_SPRITE SPRITE_RAIN rain
LOAD_SPRITE SPRITE_RAIN_NIGHT rain_night
LOAD_SPRITE SPRITE_RAIN_S_CLOUDY rain_s_cloudy
LOAD_SPRITE SPRITE_RAIN_S_SUNNY rain_s_sunny
LOAD_SPRITE SPRITE_THUNDERSTORMS thunderstorms
LOAD_SPRITE SPRITE_FOG snow
LOAD_SPRITE SPRITE_WINDY windy
LOAD_SPRITE SPRITE_SUNNY snow_light
LOAD_SPRITE SPRITE_PARTLY_CLOUD snow_s_cloudy
LOAD_SPRITE SPRITE_SUNNY_S_CLOUDY snow_s_cloudy
LOAD_SPRITE SPRITE_SUNNY_S_RAIN sunny_s_rain
ENDIF
// Weathers const
CONST_INT EXTRASUNNY_LA 0
CONST_INT SUNNY_LA 1
CONST_INT EXTRASUNNY_SMOG_LA 2
CONST_INT SUNNY_SMOG_LA 3
CONST_INT CLOUDY_LA 4
CONST_INT SUNNY_SF 5
CONST_INT EXTRASUNNY_SF 6
CONST_INT CLOUDY_SF 7
CONST_INT RAINY_SF 8
CONST_INT FOGGY_SF 9
CONST_INT SUNNY_VEGAS 10
CONST_INT EXTRASUNNY_VEGAS 11
CONST_INT CLOUDY_VEGAS 12
CONST_INT EXTRASUNNY_COUNTRYSIDE 13
CONST_INT SUNNY_COUNTRYSIDE 14
CONST_INT CLOUDY_COUNTRYSIDE 15
CONST_INT RAINY_COUNTRYSIDE 16
CONST_INT EXTRASUNNY_DESERT 17
CONST_INT SUNNY_DESERT 18
CONST_INT SANDSTORM_DESERT 19
GET_PLAYER_CHAR 0 scplayer
/////////////////////////////////////////////////
WHILE TRUE
WAIT 0
//__int16 __thiscall CPad::GetDisplayVitalStats(CPad *this, CPed *a2)
GET_PED_POINTER scplayer (pPed)
CALL_METHOD_RETURN 0x5408B0 0xB73458 1 0 (pPed)(stats)
IF stats = TRUE
AND NOT IS_CHAR_IN_ANY_CAR scplayer
/*
IF IS_KEY_PRESSED 107
weather++
FORCE_WEATHER_NOW weather
WHILE IS_KEY_PRESSED 107
WAIT 0
ENDWHILE
ENDIF
IF IS_KEY_PRESSED 109
weather--
FORCE_WEATHER_NOW weather
WHILE IS_KEY_PRESSED 109
WAIT 0
ENDWHILE
ENDIF
*/
GET_TIME_OF_DAY hour min
READ_MEMORY 0xC81320 2 FALSE (curWeather)
READ_MEMORY 0xC8131C 2 FALSE (nextWeather)
SWITCH curWeather
CASE EXTRASUNNY_LA
CASE EXTRASUNNY_SMOG_LA
CASE EXTRASUNNY_SF
CASE EXTRASUNNY_VEGAS
CASE EXTRASUNNY_COUNTRYSIDE
CASE EXTRASUNNY_DESERT
SWITCH nextWeather
CASE CLOUDY_LA
CASE CLOUDY_SF
CASE CLOUDY_VEGAS
CASE CLOUDY_COUNTRYSIDE
sprite = SPRITE_SUNNY_S_CLOUDY
BREAK
CASE RAINY_SF
CASE RAINY_COUNTRYSIDE
sprite = SPRITE_SUNNY_S_RAIN
BREAK
DEFAULT
sprite = SPRITE_SUNNY
BREAK
ENDSWITCH
BREAK
CASE SUNNY_LA
CASE SUNNY_SMOG_LA
CASE SUNNY_SF
CASE SUNNY_VEGAS
CASE SUNNY_COUNTRYSIDE
CASE SUNNY_DESERT
SWITCH nextWeather
CASE CLOUDY_LA
CASE CLOUDY_SF
CASE CLOUDY_VEGAS
CASE CLOUDY_COUNTRYSIDE
sprite = SPRITE_SUNNY_S_CLOUDY
BREAK
CASE RAINY_SF
CASE RAINY_COUNTRYSIDE
sprite = SPRITE_SUNNY_S_RAIN
BREAK
DEFAULT
sprite = SPRITE_PARTLY_CLOUD
BREAK
ENDSWITCH
BREAK
CASE CLOUDY_LA
CASE CLOUDY_SF
CASE CLOUDY_VEGAS
CASE CLOUDY_COUNTRYSIDE
SWITCH nextWeather
CASE SUNNY_LA
CASE SUNNY_SMOG_LA
CASE SUNNY_SF
CASE SUNNY_VEGAS
CASE SUNNY_COUNTRYSIDE
CASE SUNNY_DESERT
CASE EXTRASUNNY_LA
CASE EXTRASUNNY_SMOG_LA
CASE EXTRASUNNY_SF
CASE EXTRASUNNY_VEGAS
CASE EXTRASUNNY_COUNTRYSIDE
CASE EXTRASUNNY_DESERT
sprite = SPRITE_CLOUDY_S_SUNNY
BREAK
CASE RAINY_SF
CASE RAINY_COUNTRYSIDE
sprite = SPRITE_CLOUDY_S_RAIN
BREAK
DEFAULT
sprite = SPRITE_CLOUDY
BREAK
ENDSWITCH
BREAK
CASE RAINY_SF
CASE RAINY_COUNTRYSIDE
SWITCH nextWeather
CASE SUNNY_LA
CASE SUNNY_SMOG_LA
CASE SUNNY_SF
CASE SUNNY_VEGAS
CASE SUNNY_COUNTRYSIDE
CASE SUNNY_DESERT
CASE EXTRASUNNY_LA
CASE EXTRASUNNY_SMOG_LA
CASE EXTRASUNNY_SF
CASE EXTRASUNNY_VEGAS
CASE EXTRASUNNY_COUNTRYSIDE
CASE EXTRASUNNY_DESERT
sprite = SPRITE_RAIN_S_SUNNY
BREAK
CASE CLOUDY_LA
CASE CLOUDY_SF
CASE CLOUDY_VEGAS
CASE CLOUDY_COUNTRYSIDE
sprite = SPRITE_RAIN_S_CLOUDY
BREAK
DEFAULT
sprite = SPRITE_THUNDERSTORMS
BREAK
ENDSWITCH
BREAK
CASE FOGGY_SF
sprite = SPRITE_FOG
BREAK
CASE SANDSTORM_DESERT
sprite = SPRITE_WINDY
BREAK
DEFAULT
sprite = SPRITE_SUNNY
BREAK
ENDSWITCH
READ_MEMORY 0x713D2C 1 FALSE (night_start_hour) // stars render (compatible with Change Night Hour mod)
// night
IF hour >= night_start_hour
OR hour <= 5
SWITCH sprite
CASE SPRITE_CLOUDY_S_SUNNY
CASE SPRITE_SUNNY_S_CLOUDY
CASE SPRITE_PARTLY_CLOUD
sprite = SPRITE_NIGHT_PARTLY_CLOUDY
BREAK
CASE SPRITE_SUNNY
sprite = SPRITE_NIGHT
BREAK
CASE SPRITE_RAIN
CASE SPRITE_RAIN_S_SUNNY
CASE SPRITE_RAIN_S_CLOUDY
CASE SPRITE_SUNNY_S_RAIN
sprite = SPRITE_RAIN_NIGHT
BREAK
ENDSWITCH
ENDIF
//PRINT_FORMATTED_NOW "%i %i - sprite %i" 2000 curWeather nextWeather sprite
CLEO_CALL GetXYSizeInScreen4x3ScaleBy640x480 0 (iniSizX iniSizY) (sizX sizY)
IF iniDrawShadow = TRUE
posX = iniPosX + 1.0
posY = iniPosY + 1.0
DRAW_SPRITE sprite (posX posY) (sizX sizY) (0 0 0 180)
ENDIF
DRAW_SPRITE sprite (iniPosX iniPosY) (sizX sizY) (255 255 255 255)
USE_TEXT_COMMANDS 0
ENDIF
ENDWHILE
}
SCRIPT_END
/////////////////////////////////////////////////
// by fastman92
{
LVAR_FLOAT x y // In
LVAR_FLOAT fresX fresY
LVAR_INT iresX iresY
GetXYSizeInScreen4x3ScaleBy640x480:
READ_MEMORY 0x00C17044 4 FALSE (iresX) // Get current resolution X
READ_MEMORY 0x00C17048 4 FALSE (iresY) // Y
fresX =# iresX
fresY =# iresY
fresY *= 1.33333333
fresX /= fresY
x /= fresX
y /= 1.07142857
CLEO_RETURN 0 (x y)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment