Skip to content

Commit 3aa1691

Browse files
committed
CarSpeedDependantFOV
- removed option from widescreen fix
1 parent d09a467 commit 3aa1691

File tree

3 files changed

+224
-0
lines changed

3 files changed

+224
-0
lines changed

gta3/III.CarSpeedDependantFOV.sc

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
SCRIPT_START
2+
{
3+
LVAR_INT scplayer, car
4+
LVAR_INT pLib, pfGetCurrentFOV, pfSetFOVMultiplier, pfRemoveFOVMultiplier
5+
LVAR_FLOAT carSpeed, carMaxSpeed, carFOV, carFOVMult
6+
LVAR_INT tempVar1, tempVar2, tempVar3
7+
LVAR_INT crc32
8+
9+
GET_PLAYER_CHAR 0 scplayer
10+
11+
IF LOAD_DYNAMIC_LIBRARY "GTA3.WidescreenFix.asi" pLib
12+
GET_DYNAMIC_LIBRARY_PROCEDURE "GetCurrentFOV" pLib (pfGetCurrentFOV)
13+
GET_DYNAMIC_LIBRARY_PROCEDURE "SetFOVMultiplier" pLib (pfSetFOVMultiplier)
14+
GET_DYNAMIC_LIBRARY_PROCEDURE "RemoveFOVMultiplier" pLib (pfRemoveFOVMultiplier)
15+
ENDIF
16+
17+
IF NOT pfGetCurrentFOV > 0
18+
OR NOT pfSetFOVMultiplier > 0
19+
OR NOT pfRemoveFOVMultiplier > 0
20+
WHILE timera < 5000
21+
WAIT 0
22+
PRINT_STRING_NOW "~r~Unable to load GTA3.WidescreenFix.asi. Make sure you have latest Widescreen Fix installed." 1000
23+
ENDWHILE
24+
TERMINATE_THIS_CUSTOM_SCRIPT
25+
ENDIF
26+
27+
GET_VAR_POINTER carFOV (tempVar1)
28+
crc32 = 0x5cfa7496 //CarSpeedDependantFOV
29+
30+
WHILE scplayer >= 0
31+
WAIT 0
32+
33+
IF IS_PLAYER_PLAYING 0
34+
AND IS_CHAR_IN_ANY_CAR scplayer
35+
STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car
36+
GET_CAR_SPEED car carSpeed
37+
if carSpeed > 0.0f
38+
GET_VEHICLE_POINTER car (tempVar2)
39+
tempVar2 += 0x128 // m_pHandlingData
40+
READ_MEMORY tempVar2 4 FALSE (tempVar2)
41+
tempVar2 += 0x84 // m_fMaxSpeed
42+
READ_MEMORY tempVar2 4 FALSE (carMaxSpeed)
43+
carMaxSpeed *= 60.0f
44+
carFOVMult = 1.0f / carMaxSpeed
45+
carFOVMult *= carSpeed
46+
carFOVMult /= 3.0f
47+
carFOVMult += 1.0f
48+
ELSE
49+
GOSUB setDefault
50+
ENDIF
51+
ELSE
52+
GOSUB setDefault
53+
ENDIF
54+
55+
//CALL_FUNCTION pfGetCurrentFOV 1 1 (tempVar1)
56+
//PRINT_FORMATTED_NOW "%f %f %f %f" 4 carFOV carSpeed carMaxSpeed carFOVMult
57+
CALL_FUNCTION pfSetFOVMultiplier 2 2 (carFOVMult crc32)
58+
59+
ENDWHILE
60+
TERMINATE_THIS_CUSTOM_SCRIPT
61+
62+
///////////////////////////////////////////////////////////////////////////////////////////////////
63+
64+
setDefault:
65+
IF carFOVMult > 1.0f
66+
carFOVMult -= 0.1f
67+
ENDIF
68+
IF carFOVMult < 1.0f
69+
carFOVMult = 1.0f
70+
ENDIF
71+
RETURN
72+
73+
}
74+
SCRIPT_END

gtasa/SA.CarSpeedDependantFOV.sc

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
SCRIPT_START
2+
{
3+
LVAR_INT scplayer, car
4+
LVAR_INT pLib, pfGetCurrentFOV, pfSetFOVMultiplier, pfRemoveFOVMultiplier
5+
LVAR_FLOAT carSpeed, carMaxSpeed, carFOV, carFOVMult
6+
LVAR_INT tempVar1, tempVar2, tempVar3
7+
LVAR_INT crc32
8+
9+
CONST_INT player 0
10+
GET_PLAYER_CHAR player scplayer
11+
12+
IF LOAD_DYNAMIC_LIBRARY "GTASA.WidescreenFix.asi" pLib
13+
GET_DYNAMIC_LIBRARY_PROCEDURE "GetCurrentFOV" pLib (pfGetCurrentFOV)
14+
GET_DYNAMIC_LIBRARY_PROCEDURE "SetFOVMultiplier" pLib (pfSetFOVMultiplier)
15+
GET_DYNAMIC_LIBRARY_PROCEDURE "RemoveFOVMultiplier" pLib (pfRemoveFOVMultiplier)
16+
ENDIF
17+
18+
IF NOT pfGetCurrentFOV > 0
19+
OR NOT pfSetFOVMultiplier > 0
20+
OR NOT pfRemoveFOVMultiplier > 0
21+
WHILE timera < 5000
22+
WAIT 0
23+
PRINT_STRING_NOW "~r~Unable to load GTASA.WidescreenFix.asi. Make sure you have latest Widescreen Fix installed." 1000
24+
ENDWHILE
25+
TERMINATE_THIS_CUSTOM_SCRIPT
26+
ENDIF
27+
28+
GET_VAR_POINTER carFOV (tempVar1)
29+
crc32 = 0x5cfa7496 //CarSpeedDependantFOV
30+
31+
WHILE scplayer >= 0
32+
WAIT 0
33+
34+
IF IS_PLAYER_PLAYING player
35+
AND IS_CHAR_IN_ANY_CAR scplayer
36+
STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car
37+
GET_CAR_SPEED car carSpeed
38+
if carSpeed > 0.0f
39+
GET_VEHICLE_POINTER car (tempVar2)
40+
tempVar2 += 0x384 // m_pHandlingData
41+
READ_MEMORY tempVar2 4 FALSE (tempVar2)
42+
tempVar2 += 0x88 // m_fMaxSpeed
43+
READ_MEMORY tempVar2 4 FALSE (carMaxSpeed)
44+
carMaxSpeed *= 60.0f
45+
carFOVMult = 1.0f / carMaxSpeed
46+
carFOVMult *= carSpeed
47+
carFOVMult /= 3.0f
48+
carFOVMult += 1.0f
49+
ELSE
50+
GOSUB setDefault
51+
ENDIF
52+
ELSE
53+
GOSUB setDefault
54+
ENDIF
55+
56+
//CALL_FUNCTION pfGetCurrentFOV 1 1 (tempVar1)
57+
//PRINT_FORMATTED_NOW "%f %f %f %f" 4 carFOV carSpeed carMaxSpeed carFOVMult
58+
CALL_FUNCTION pfSetFOVMultiplier 2 2 (carFOVMult crc32)
59+
60+
ENDWHILE
61+
TERMINATE_THIS_CUSTOM_SCRIPT
62+
63+
///////////////////////////////////////////////////////////////////////////////////////////////////
64+
65+
setDefault:
66+
IF carFOVMult > 1.0f
67+
carFOVMult -= 0.1f
68+
ENDIF
69+
IF carFOVMult < 1.0f
70+
carFOVMult = 1.0f
71+
ENDIF
72+
RETURN
73+
74+
}
75+
SCRIPT_END

gtavc/VC.CarSpeedDependantFOV.sc

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
SCRIPT_START
2+
{
3+
LVAR_INT scplayer, car
4+
LVAR_INT pLib, pfGetCurrentFOV, pfSetFOVMultiplier, pfRemoveFOVMultiplier
5+
LVAR_FLOAT carSpeed, carMaxSpeed, carFOV, carFOVMult
6+
LVAR_INT tempVar1, tempVar2, tempVar3
7+
LVAR_INT crc32
8+
9+
CONST_INT player 0
10+
GET_PLAYER_CHAR player scplayer
11+
12+
IF LOAD_DYNAMIC_LIBRARY "GTAVC.WidescreenFix.asi" pLib
13+
GET_DYNAMIC_LIBRARY_PROCEDURE "GetCurrentFOV" pLib (pfGetCurrentFOV)
14+
GET_DYNAMIC_LIBRARY_PROCEDURE "SetFOVMultiplier" pLib (pfSetFOVMultiplier)
15+
GET_DYNAMIC_LIBRARY_PROCEDURE "RemoveFOVMultiplier" pLib (pfRemoveFOVMultiplier)
16+
ENDIF
17+
18+
IF NOT pfGetCurrentFOV > 0
19+
OR NOT pfSetFOVMultiplier > 0
20+
OR NOT pfRemoveFOVMultiplier > 0
21+
WHILE timera < 5000
22+
WAIT 0
23+
PRINT_STRING_NOW "~r~Unable to load GTAVC.WidescreenFix.asi. Make sure you have latest Widescreen Fix installed." 1000
24+
ENDWHILE
25+
TERMINATE_THIS_CUSTOM_SCRIPT
26+
ENDIF
27+
28+
GET_VAR_POINTER carFOV (tempVar1)
29+
crc32 = 0x5cfa7496 //CarSpeedDependantFOV
30+
31+
WHILE scplayer >= 0
32+
WAIT 0
33+
34+
IF IS_PLAYER_PLAYING player
35+
AND IS_CHAR_IN_ANY_CAR scplayer
36+
STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car
37+
GET_CAR_SPEED car carSpeed
38+
if carSpeed > 0.0f
39+
GET_VEHICLE_POINTER car (tempVar2)
40+
tempVar2 += 0x120 // m_pHandlingData
41+
READ_MEMORY tempVar2 4 FALSE (tempVar2)
42+
tempVar2 += 0x84 // m_fMaxSpeed
43+
READ_MEMORY tempVar2 4 FALSE (carMaxSpeed)
44+
carMaxSpeed *= 60.0f
45+
carFOVMult = 1.0f / carMaxSpeed
46+
carFOVMult *= carSpeed
47+
carFOVMult /= 3.0f
48+
carFOVMult += 1.0f
49+
ELSE
50+
GOSUB setDefault
51+
ENDIF
52+
ELSE
53+
GOSUB setDefault
54+
ENDIF
55+
56+
//CALL_FUNCTION pfGetCurrentFOV 1 1 (tempVar1)
57+
//PRINT_FORMATTED_NOW "%f %f %f %f" 4 carFOV carSpeed carMaxSpeed carFOVMult
58+
CALL_FUNCTION pfSetFOVMultiplier 2 2 (carFOVMult crc32)
59+
60+
ENDWHILE
61+
TERMINATE_THIS_CUSTOM_SCRIPT
62+
63+
///////////////////////////////////////////////////////////////////////////////////////////////////
64+
65+
setDefault:
66+
IF carFOVMult > 1.0f
67+
carFOVMult -= 0.1f
68+
ENDIF
69+
IF carFOVMult < 1.0f
70+
carFOVMult = 1.0f
71+
ENDIF
72+
RETURN
73+
74+
}
75+
SCRIPT_END

0 commit comments

Comments
 (0)