mirror of
https://github.com/GTAmodding/re3.git
synced 2024-12-25 17:45:41 +00:00
Merge pull request #865 from Nick007J/miami
script from other platforms and unused commands
This commit is contained in:
commit
b5cdc33e7c
5 changed files with 328 additions and 1 deletions
|
@ -17,6 +17,9 @@
|
||||||
#include "FileMgr.h"
|
#include "FileMgr.h"
|
||||||
#include "Frontend.h"
|
#include "Frontend.h"
|
||||||
#include "General.h"
|
#include "General.h"
|
||||||
|
#ifdef MISSION_REPLAY
|
||||||
|
#include "GenericGameStorage.h"
|
||||||
|
#endif
|
||||||
#include "HandlingMgr.h"
|
#include "HandlingMgr.h"
|
||||||
#include "Heli.h"
|
#include "Heli.h"
|
||||||
#include "Hud.h"
|
#include "Hud.h"
|
||||||
|
@ -93,6 +96,10 @@ uint32 CTheScripts::LastMissionPassedTime;
|
||||||
uint16 CTheScripts::NumberOfExclusiveMissionScripts;
|
uint16 CTheScripts::NumberOfExclusiveMissionScripts;
|
||||||
bool CTheScripts::bPlayerHasMetDebbieHarry;
|
bool CTheScripts::bPlayerHasMetDebbieHarry;
|
||||||
bool CTheScripts::bPlayerIsInTheStatium;
|
bool CTheScripts::bPlayerIsInTheStatium;
|
||||||
|
#if (defined GTA_PC && !defined GTAVC_JP_PATCH || defined GTA_XBOX || defined SUPPORT_XBOX_SCRIPT || defined GTA_MOBILE || defined SUPPORT_MOBILE_SCRIPT)
|
||||||
|
int16 CTheScripts::CardStack[CARDS_IN_DECK * MAX_DECKS];
|
||||||
|
int16 CTheScripts::CardStackPosition;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef MISSION_REPLAY
|
#ifdef MISSION_REPLAY
|
||||||
|
|
||||||
|
@ -123,6 +130,9 @@ float oldTargetX;
|
||||||
float oldTargetY;
|
float oldTargetY;
|
||||||
int missionRetryScriptIndex;
|
int missionRetryScriptIndex;
|
||||||
bool doingMissionRetry;
|
bool doingMissionRetry;
|
||||||
|
bool gbTryingPorn4Again;
|
||||||
|
int IsInAmmunation;
|
||||||
|
int MissionSkipLevel;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1568,6 +1578,39 @@ const tScriptCommandData commands[] = {
|
||||||
REGISTER_COMMAND(COMMAND_REGISTER_FIRE_LEVEL, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
|
REGISTER_COMMAND(COMMAND_REGISTER_FIRE_LEVEL, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
|
||||||
REGISTER_COMMAND(COMMAND_IS_AUSTRALIAN_GAME, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""),
|
REGISTER_COMMAND(COMMAND_IS_AUSTRALIAN_GAME, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""),
|
||||||
REGISTER_COMMAND(COMMAND_DISARM_CAR_BOMB, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
|
REGISTER_COMMAND(COMMAND_DISARM_CAR_BOMB, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
|
||||||
|
#if (defined GTAVC_JP_PATCH || defined SUPPORT_JAPANESE_SCRIPT)
|
||||||
|
REGISTER_COMMAND(COMMAND_IS_JAPANESE_GAME, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""),
|
||||||
|
#elif (!defined GTA_PS2)
|
||||||
|
REGISTER_COMMAND(COMMAND_SET_ONSCREEN_COUNTER_FLASH_WHEN_FIRST_DISPLAYED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
|
||||||
|
#endif
|
||||||
|
#if (defined GTA_PC && !defined GTAVC_JP_PATCH || defined GTA_XBOX || defined SUPPORT_XBOX_SCRIPT || defined GTA_MOBILE || defined SUPPORT_MOBILE_SCRIPT)
|
||||||
|
REGISTER_COMMAND(COMMAND_SHUFFLE_CARD_DECKS, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
|
||||||
|
REGISTER_COMMAND(COMMAND_FETCH_NEXT_CARD, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT, ), false, -1, ""),
|
||||||
|
REGISTER_COMMAND(COMMAND_GET_OBJECT_VELOCITY, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), false, -1, ""),
|
||||||
|
REGISTER_COMMAND(COMMAND_IS_DEBUG_CAMERA_ON, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""),
|
||||||
|
REGISTER_COMMAND(COMMAND_ADD_TO_OBJECT_ROTATION_VELOCITY, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
|
||||||
|
REGISTER_COMMAND(COMMAND_SET_OBJECT_ROTATION_VELOCITY, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
|
||||||
|
REGISTER_COMMAND(COMMAND_IS_OBJECT_STATIC, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), true, -1, ""),
|
||||||
|
REGISTER_COMMAND(COMMAND_GET_ANGLE_BETWEEN_2D_VECTORS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ), false, -1, ""),
|
||||||
|
REGISTER_COMMAND(COMMAND_DO_2D_RECTANGLES_COLLIDE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), true, -1, ""),
|
||||||
|
REGISTER_COMMAND(COMMAND_GET_OBJECT_ROTATION_VELOCITY, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), false, -1, ""),
|
||||||
|
REGISTER_COMMAND(COMMAND_ADD_VELOCITY_RELATIVE_TO_OBJECT_VELOCITY, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
|
||||||
|
REGISTER_COMMAND(COMMAND_GET_OBJECT_SPEED, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ), false, -1, ""),
|
||||||
|
#endif
|
||||||
|
#if (defined GTA_XBOX || defined SUPPORT_XBOX_SCRIPT)
|
||||||
|
REGISTER_COMMAND(COMMAND_MARK_CUTSCENE_START, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
|
||||||
|
REGISTER_COMMAND(COMMAND_MARK_CUTSCENE_END, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
|
||||||
|
REGISTER_COMMAND(COMMAND_CUTSCENE_SCROLL, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
|
||||||
|
#elif (defined GTA_MOBILE || defined SUPPORT_MOBILE_SCRIPT)
|
||||||
|
REGISTER_COMMAND(COMMAND_IS_MISSION_SKIP, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT, ), false, -1, ""),
|
||||||
|
REGISTER_COMMAND(COMMAND_SET_IN_AMMUNATION, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
|
||||||
|
REGISTER_COMMAND(COMMAND_DO_SAVE_GAME, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
|
||||||
|
REGISTER_COMMAND(COMMAND_IS_RETRY, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT, ), false, -1, ""),
|
||||||
|
REGISTER_COMMAND(COMMAND_DUMMY, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
|
||||||
|
REGISTER_COMMAND(COMMAND_MARK_CUTSCENE_START, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
|
||||||
|
REGISTER_COMMAND(COMMAND_MARK_CUTSCENE_END, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
|
||||||
|
REGISTER_COMMAND(COMMAND_CUTSCENE_SCROLL, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
#undef REGISTER_COMMAND
|
#undef REGISTER_COMMAND
|
||||||
#undef INPUT_ARGUMENTS
|
#undef INPUT_ARGUMENTS
|
||||||
|
@ -4802,7 +4845,7 @@ void RetryMission(int type, int unk)
|
||||||
{
|
{
|
||||||
if (type == 0) {
|
if (type == 0) {
|
||||||
doingMissionRetry = true;
|
doingMissionRetry = true;
|
||||||
FrontEndMenuManager.m_nCurrScreen = MENUPAGE_MISSION_RETRY;
|
FrontEndMenuManager.m_nCurrScreen = 57; // MENUPAGE_MISSION_RETRY
|
||||||
FrontEndMenuManager.RequestFrontEndStartUp();
|
FrontEndMenuManager.RequestFrontEndStartUp();
|
||||||
}
|
}
|
||||||
else if (type == 2) {
|
else if (type == 2) {
|
||||||
|
|
|
@ -306,6 +306,15 @@ class CTheScripts
|
||||||
static uint16 ScriptsUpdated;
|
static uint16 ScriptsUpdated;
|
||||||
static uint32 LastMissionPassedTime;
|
static uint32 LastMissionPassedTime;
|
||||||
static uint16 NumberOfExclusiveMissionScripts;
|
static uint16 NumberOfExclusiveMissionScripts;
|
||||||
|
#if (defined GTA_PC && !defined GTAVC_JP_PATCH || defined GTA_XBOX || defined SUPPORT_XBOX_SCRIPT || defined GTA_MOBILE || defined SUPPORT_MOBILE_SCRIPT)
|
||||||
|
#define CARDS_IN_SUIT (13)
|
||||||
|
#define NUM_SUITS (4)
|
||||||
|
#define MAX_DECKS (6)
|
||||||
|
#define CARDS_IN_DECK (CARDS_IN_SUIT * NUM_SUITS)
|
||||||
|
#define CARDS_IN_STACK (CARDS_IN_DECK * MAX_DECKS)
|
||||||
|
static int16 CardStack[CARDS_IN_STACK];
|
||||||
|
static int16 CardStackPosition;
|
||||||
|
#endif
|
||||||
public:
|
public:
|
||||||
static bool bPlayerIsInTheStatium;
|
static bool bPlayerIsInTheStatium;
|
||||||
static uint8 RiotIntensity;
|
static uint8 RiotIntensity;
|
||||||
|
@ -547,12 +556,16 @@ private:
|
||||||
extern int scriptToLoad;
|
extern int scriptToLoad;
|
||||||
#endif
|
#endif
|
||||||
#ifdef MISSION_REPLAY
|
#ifdef MISSION_REPLAY
|
||||||
|
static_assert(false, "Mission replay is not supported");
|
||||||
extern int AllowMissionReplay;
|
extern int AllowMissionReplay;
|
||||||
extern uint32 WaitForMissionActivate;
|
extern uint32 WaitForMissionActivate;
|
||||||
extern uint32 WaitForSave;
|
extern uint32 WaitForSave;
|
||||||
extern uint32 MissionStartTime;
|
extern uint32 MissionStartTime;
|
||||||
extern int missionRetryScriptIndex;
|
extern int missionRetryScriptIndex;
|
||||||
extern bool doingMissionRetry;
|
extern bool doingMissionRetry;
|
||||||
|
extern bool gbTryingPorn4Again;
|
||||||
|
extern int IsInAmmunation;
|
||||||
|
extern int MissionSkipLevel;
|
||||||
|
|
||||||
uint32 AddExtraDeathDelay();
|
uint32 AddExtraDeathDelay();
|
||||||
void RetryMission(int, int);
|
void RetryMission(int, int);
|
||||||
|
|
|
@ -4,8 +4,18 @@
|
||||||
#include "ScriptCommands.h"
|
#include "ScriptCommands.h"
|
||||||
|
|
||||||
#include "DMAudio.h"
|
#include "DMAudio.h"
|
||||||
|
#if ((defined GTAVC_JP_PATCH || defined SUPPORT_JAPANESE_SCRIPT) && defined MORE_LANGUAGES)
|
||||||
|
#include "Frontend.h"
|
||||||
|
#endif
|
||||||
#include "GameLogic.h"
|
#include "GameLogic.h"
|
||||||
#include "Garages.h"
|
#include "Garages.h"
|
||||||
|
#ifdef MISSION_REPLAY
|
||||||
|
#include "GenericGameStorage.h"
|
||||||
|
#endif
|
||||||
|
#if (defined GTA_PC && !defined GTAVC_JP_PATCH || defined GTA_XBOX || defined SUPPORT_XBOX_SCRIPT || defined GTA_MOBILE || defined SUPPORT_MOBILE_SCRIPT)
|
||||||
|
#include "General.h"
|
||||||
|
#include "maths.h"
|
||||||
|
#endif
|
||||||
#include "Hud.h"
|
#include "Hud.h"
|
||||||
#include "Pad.h"
|
#include "Pad.h"
|
||||||
#include "PedAttractor.h"
|
#include "PedAttractor.h"
|
||||||
|
@ -373,6 +383,228 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#if (defined GTAVC_JP_PATCH || defined SUPPORT_JAPANESE_SCRIPT)
|
||||||
|
case COMMAND_IS_JAPANESE_GAME:
|
||||||
|
#ifdef MORE_LANGUAGES
|
||||||
|
UpdateCompareFlag(FrontEndMenuManager.m_PrefsLanguage == LANGUAGE_JAPANESE);
|
||||||
|
#elif (defined GTAVC_JP_PATCH)
|
||||||
|
UpdateCompareFlag(true);
|
||||||
|
#else
|
||||||
|
UpdateCompareFlag(false);
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
#elif (!defined GTA_PS2)
|
||||||
|
case COMMAND_SET_ONSCREEN_COUNTER_FLASH_WHEN_FIRST_DISPLAYED:
|
||||||
|
script_assert(CTheScripts::ScriptSpace[m_nIp++] == ARGUMENT_GLOBALVAR);
|
||||||
|
uint16 var = CTheScripts::Read2BytesFromScript(&m_nIp);
|
||||||
|
CollectParameters(&m_nIp, 1);
|
||||||
|
//CUserDisplay::OnscnTimer.SetCounterFlashWhenFirstDisplayed(var, ScriptParams[0]);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#if (defined GTA_PC && !defined GTAVC_JP_PATCH || defined GTA_XBOX || defined SUPPORT_XBOX_SCRIPT || defined GTA_MOBILE || defined SUPPORT_MOBILE_SCRIPT)
|
||||||
|
case COMMAND_SHUFFLE_CARD_DECKS:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 1);
|
||||||
|
script_assert(ScriptParams[0] >= 0 && ScriptParams[0] <= 6);
|
||||||
|
for (int i = 0; i < CARDS_IN_STACK; i++)
|
||||||
|
CTheScripts::CardStack[i] = 0;
|
||||||
|
int16 seq[CARDS_IN_STACK];
|
||||||
|
for (int i = 0; i < MAX_DECKS * CARDS_IN_DECK; i++)
|
||||||
|
seq[i] = i;
|
||||||
|
int cards_left = CARDS_IN_DECK * ScriptParams[0];
|
||||||
|
for (int k = 1; k < CARDS_IN_DECK + 1; k++) {
|
||||||
|
for (int deck = 0; deck < ScriptParams[0]; deck++) {
|
||||||
|
int index = CGeneral::GetRandomNumberInRange(0, cards_left);
|
||||||
|
CTheScripts::CardStack[seq[index]] = k;
|
||||||
|
for (int l = index; l < cards_left; l++) {
|
||||||
|
if (l + 1 < CARDS_IN_STACK)
|
||||||
|
seq[l] = seq[l + 1];
|
||||||
|
else
|
||||||
|
seq[l] = 0;
|
||||||
|
}
|
||||||
|
--cards_left;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CTheScripts::CardStackPosition = 0;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_FETCH_NEXT_CARD:
|
||||||
|
{
|
||||||
|
if (CTheScripts::CardStack[CTheScripts::CardStackPosition] == 0)
|
||||||
|
CTheScripts::CardStackPosition = 0;
|
||||||
|
ScriptParams[0] = CTheScripts::CardStack[CTheScripts::CardStackPosition++];
|
||||||
|
if (CTheScripts::CardStackPosition == CARDS_IN_DECK * MAX_DECKS)
|
||||||
|
CTheScripts::CardStackPosition = 0;
|
||||||
|
StoreParameters(&m_nIp, 1);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_GET_OBJECT_VELOCITY:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 1);
|
||||||
|
CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
|
||||||
|
*(CVector*)ScriptParams[0] = GAME_SPEED_TO_METERS_PER_SECOND * pObject->GetMoveSpeed();
|
||||||
|
StoreParameters(&m_nIp, 3);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_IS_DEBUG_CAMERA_ON:
|
||||||
|
UpdateCompareFlag(TheCamera.WorldViewerBeingUsed);
|
||||||
|
return 0;
|
||||||
|
case COMMAND_ADD_TO_OBJECT_ROTATION_VELOCITY:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 4);
|
||||||
|
CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
|
||||||
|
CVector newSpeed = pObject->GetTurnSpeed() + *(CVector*)ScriptParams[1] / GAME_SPEED_TO_METERS_PER_SECOND;
|
||||||
|
if (pObject->bIsStatic) {
|
||||||
|
pObject->SetIsStatic(false);
|
||||||
|
pObject->AddToMovingList();
|
||||||
|
}
|
||||||
|
pObject->SetTurnSpeed(newSpeed.x, newSpeed.y, newSpeed.z);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_SET_OBJECT_ROTATION_VELOCITY:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 4);
|
||||||
|
CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
|
||||||
|
CVector newSpeed = *(CVector*)ScriptParams[1] / GAME_SPEED_TO_METERS_PER_SECOND;
|
||||||
|
if (pObject->bIsStatic) {
|
||||||
|
pObject->SetIsStatic(false);
|
||||||
|
pObject->AddToMovingList();
|
||||||
|
}
|
||||||
|
pObject->SetTurnSpeed(newSpeed.x, newSpeed.y, newSpeed.z);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_IS_OBJECT_STATIC:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 1);
|
||||||
|
CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
|
||||||
|
UpdateCompareFlag(pObject->GetIsStatic());
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_GET_ANGLE_BETWEEN_2D_VECTORS:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 4);
|
||||||
|
CVector2D v1 = *(CVector2D*)ScriptParams[0];
|
||||||
|
CVector2D v2 = *(CVector2D*)ScriptParams[2];
|
||||||
|
float c = DotProduct2D(v1, v2) / (v1.Magnitude() * v2.Magnitude());
|
||||||
|
#ifdef FIX_BUGS // command is a SA leftover where it was fixed to this
|
||||||
|
*(float*)ScriptParams[0] = RADTODEG(Acos(c));
|
||||||
|
#else
|
||||||
|
*(float*)ScriptParams[0] = Acos(c);
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_DO_2D_RECTANGLES_COLLIDE:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 8);
|
||||||
|
float infX1 = *(float*)&ScriptParams[0] - *(float*)&ScriptParams[2] * 0.5; // NB: not float
|
||||||
|
float supX1 = *(float*)&ScriptParams[0] + *(float*)&ScriptParams[2] * 0.5;
|
||||||
|
float infX2 = *(float*)&ScriptParams[4] - *(float*)&ScriptParams[6] * 0.5;
|
||||||
|
float supX2 = *(float*)&ScriptParams[4] + *(float*)&ScriptParams[6] * 0.5;
|
||||||
|
float infY1 = *(float*)&ScriptParams[1] - *(float*)&ScriptParams[3] * 0.5;
|
||||||
|
float supY1 = *(float*)&ScriptParams[1] + *(float*)&ScriptParams[3] * 0.5;
|
||||||
|
float infY2 = *(float*)&ScriptParams[5] - *(float*)&ScriptParams[7] * 0.5;
|
||||||
|
float supY2 = *(float*)&ScriptParams[5] + *(float*)&ScriptParams[7] * 0.5;
|
||||||
|
bool collide = true;
|
||||||
|
if (infY2 > supY1)
|
||||||
|
collide = false;
|
||||||
|
if (infY1 > supY2)
|
||||||
|
collide = false;
|
||||||
|
if (infX2 > supX1)
|
||||||
|
collide = false;
|
||||||
|
if (infX1 > supX2)
|
||||||
|
collide = false;
|
||||||
|
UpdateCompareFlag(collide);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_GET_OBJECT_ROTATION_VELOCITY:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 1);
|
||||||
|
CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
|
||||||
|
*(CVector*)ScriptParams[0] = pObject->GetTurnSpeed() * GAME_SPEED_TO_METERS_PER_SECOND;
|
||||||
|
StoreParameters(&m_nIp, 3);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_ADD_VELOCITY_RELATIVE_TO_OBJECT_VELOCITY:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 4);
|
||||||
|
CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
|
||||||
|
CVector vecAddition = *(CVector*)&ScriptParams[1] * CTimer::GetTimeStep() / GAME_SPEED_TO_METERS_PER_SECOND;
|
||||||
|
if (!pObject->bIsStatic) {
|
||||||
|
CVector vecCurrSpeed = pObject->GetSpeed();
|
||||||
|
vecCurrSpeed.Normalise();
|
||||||
|
if (vecCurrSpeed.z != 1.0) { // NB: not float!
|
||||||
|
CVector vx = CrossProduct(vecCurrSpeed, CVector(0.0f, 0.0f, 1.0f));
|
||||||
|
vx.Normalise();
|
||||||
|
CVector vz = CrossProduct(vx, vecCurrSpeed);
|
||||||
|
vz.Normalise();
|
||||||
|
CVector vecNewSpeed = pObject->GetSpeed() + vecAddition.x * vx + vecAddition.y * vecCurrSpeed + vecAddition.z * vecCurrSpeed;
|
||||||
|
if (pObject->bIsStatic) {
|
||||||
|
pObject->SetIsStatic(false);
|
||||||
|
pObject->AddToMovingList();
|
||||||
|
}
|
||||||
|
pObject->SetMoveSpeed(vecNewSpeed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_GET_OBJECT_SPEED:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 1);
|
||||||
|
CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
|
||||||
|
*(float*)ScriptParams[0] = pObject->GetMoveSpeed().Magnitude() * GAME_SPEED_TO_METERS_PER_SECOND;
|
||||||
|
StoreParameters(&m_nIp, 1);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if (defined GTA_MOBILE || defined SUPPORT_MOBILE_SCRIPT)
|
||||||
|
case COMMAND_IS_MISSION_SKIP:
|
||||||
|
#ifdef MISSION_REPLAY
|
||||||
|
ScriptParams[0] = MissionSkipLevel;
|
||||||
|
#else
|
||||||
|
ScriptParams[0] = 0;
|
||||||
|
#endif
|
||||||
|
StoreParameters(&m_nIp, 1);
|
||||||
|
return 0;
|
||||||
|
case COMMAND_SET_IN_AMMUNATION:
|
||||||
|
CollectParameters(&m_nIp, 1);
|
||||||
|
#ifdef MISSION_REPLAY
|
||||||
|
IsInAmmunation = ScriptParams[0];
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
case COMMAND_DO_SAVE_GAME:
|
||||||
|
CollectParameters(&m_nIp, 1);
|
||||||
|
#ifdef MISSION_REPLAY
|
||||||
|
SaveGameForPause(ScriptParams[0]);
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
case COMMAND_IS_RETRY:
|
||||||
|
#ifdef MISSION_REPLAY
|
||||||
|
if (strcmp(m_abScriptName, "porno4") != 0)
|
||||||
|
ScriptParams[0] = AllowMissionReplay;
|
||||||
|
#ifdef FIX_BUGS
|
||||||
|
else
|
||||||
|
ScriptParams[0] = gbTryingPorn4Again;
|
||||||
|
#else
|
||||||
|
else if (gbTryingPorn4Again)
|
||||||
|
ScriptParams[0] = 1;
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
ScriptParams[0] = 0;
|
||||||
|
#endif
|
||||||
|
StoreParameters(&m_nIp, 1);
|
||||||
|
return 0;
|
||||||
|
case COMMAND_DUMMY:
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
#if (defined GTA_XBOX || defined SUPPORT_XBOX_SCRIPT || defined GTA_MOBILE || defined SUPPORT_MOBILE_SCRIPT)
|
||||||
|
// it is unknown what these commands do but they don't take parameters
|
||||||
|
case COMMAND_MARK_CUTSCENE_START:
|
||||||
|
return 0;
|
||||||
|
case COMMAND_MARK_CUTSCENE_END:
|
||||||
|
return 0;
|
||||||
|
case COMMAND_CUTSCENE_SCROLL:
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
default:
|
default:
|
||||||
script_assert(0);
|
script_assert(0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1437,6 +1437,39 @@ enum {
|
||||||
COMMAND_REGISTER_FIRE_LEVEL,
|
COMMAND_REGISTER_FIRE_LEVEL,
|
||||||
COMMAND_IS_AUSTRALIAN_GAME,
|
COMMAND_IS_AUSTRALIAN_GAME,
|
||||||
COMMAND_DISARM_CAR_BOMB,
|
COMMAND_DISARM_CAR_BOMB,
|
||||||
|
#if (defined GTAVC_JP_PATCH || defined SUPPORT_JAPANESE_SCRIPT)
|
||||||
|
COMMAND_IS_JAPANESE_GAME,
|
||||||
|
#elif (!defined GTA_PS2)
|
||||||
|
COMMAND_SET_ONSCREEN_COUNTER_FLASH_WHEN_FIRST_DISPLAYED,
|
||||||
|
#endif
|
||||||
|
#if (defined GTA_PC && !defined GTAVC_JP_PATCH || defined GTA_XBOX || defined SUPPORT_XBOX_SCRIPT || defined GTA_MOBILE || defined SUPPORT_MOBILE_SCRIPT)
|
||||||
|
COMMAND_SHUFFLE_CARD_DECKS,
|
||||||
|
COMMAND_FETCH_NEXT_CARD,
|
||||||
|
COMMAND_GET_OBJECT_VELOCITY,
|
||||||
|
COMMAND_IS_DEBUG_CAMERA_ON,
|
||||||
|
COMMAND_ADD_TO_OBJECT_ROTATION_VELOCITY,
|
||||||
|
COMMAND_SET_OBJECT_ROTATION_VELOCITY,
|
||||||
|
COMMAND_IS_OBJECT_STATIC,
|
||||||
|
COMMAND_GET_ANGLE_BETWEEN_2D_VECTORS,
|
||||||
|
COMMAND_DO_2D_RECTANGLES_COLLIDE,
|
||||||
|
COMMAND_GET_OBJECT_ROTATION_VELOCITY,
|
||||||
|
COMMAND_ADD_VELOCITY_RELATIVE_TO_OBJECT_VELOCITY,
|
||||||
|
COMMAND_GET_OBJECT_SPEED,
|
||||||
|
#endif
|
||||||
|
#if (defined GTA_XBOX || defined SUPPORT_XBOX_SCRIPT)
|
||||||
|
COMMAND_MARK_CUTSCENE_START,
|
||||||
|
COMMAND_MARK_CUTSCENE_END,
|
||||||
|
COMMAND_CUTSCENE_SCROLL,
|
||||||
|
#elif (defined GTA_MOBILE || defined SUPPORT_MOBILE_SCRIPT)
|
||||||
|
COMMAND_IS_MISSION_SKIP,
|
||||||
|
COMMAND_SET_IN_AMMUNATION,
|
||||||
|
COMMAND_DO_SAVE_GAME,
|
||||||
|
COMMAND_IS_RETRY,
|
||||||
|
COMMAND_DUMMY,
|
||||||
|
COMMAND_MARK_CUTSCENE_START,
|
||||||
|
COMMAND_MARK_CUTSCENE_END,
|
||||||
|
COMMAND_CUTSCENE_SCROLL,
|
||||||
|
#endif
|
||||||
#ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT
|
#ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT
|
||||||
LAST_SCRIPT_COMMAND
|
LAST_SCRIPT_COMMAND
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -310,6 +310,12 @@ enum Config {
|
||||||
#define USE_DEBUG_SCRIPT_LOADER // Loads main.scm by default. Hold R for main_freeroam.scm and D for main_d.scm
|
#define USE_DEBUG_SCRIPT_LOADER // Loads main.scm by default. Hold R for main_freeroam.scm and D for main_d.scm
|
||||||
#define USE_MEASUREMENTS_IN_METERS // makes game use meters instead of feet in script
|
#define USE_MEASUREMENTS_IN_METERS // makes game use meters instead of feet in script
|
||||||
#define USE_PRECISE_MEASUREMENT_CONVERTION // makes game convert feet to meeters more precisely
|
#define USE_PRECISE_MEASUREMENT_CONVERTION // makes game convert feet to meeters more precisely
|
||||||
|
#define SUPPORT_JAPANESE_SCRIPT
|
||||||
|
//#define SUPPORT_XBOX_SCRIPT
|
||||||
|
//#define SUPPORT_MOBILE_SCRIPT
|
||||||
|
#if (defined SUPPORT_XBOX_SCRIPT && defined SUPPORT_MOBILE_SCRIPT)
|
||||||
|
static_assert(false, "SUPPORT_XBOX_SCRIPT and SUPPORT_MOBILE_SCRIPT are mutually exclusive");
|
||||||
|
#endif
|
||||||
//#define MISSION_REPLAY // mobile feature
|
//#define MISSION_REPLAY // mobile feature
|
||||||
#endif
|
#endif
|
||||||
//#define SIMPLIER_MISSIONS // apply simplifications from mobile
|
//#define SIMPLIER_MISSIONS // apply simplifications from mobile
|
||||||
|
|
Loading…
Reference in a new issue