mirror of
https://github.com/halpz/re3.git
synced 2025-08-04 04:21:02 +00:00
Add files via upload
This commit is contained in:
parent
17872b8fc9
commit
61771d1c2c
|
@ -30,6 +30,9 @@ bool bDispColInMem;
|
||||||
// CColStore::LoadAllBoundingBoxes(void)
|
// CColStore::LoadAllBoundingBoxes(void)
|
||||||
// CColStore::Write(base::cRelocatableChunkWriter &)
|
// CColStore::Write(base::cRelocatableChunkWriter &)
|
||||||
|
|
||||||
|
//#ifdef MAZAHAKA_MAPZONE_VC
|
||||||
|
//#else
|
||||||
|
#ifndef MAZAHAKA_MAPZONE_VC
|
||||||
const CVector&
|
const CVector&
|
||||||
LevelPos(eLevelName level)
|
LevelPos(eLevelName level)
|
||||||
{
|
{
|
||||||
|
@ -61,6 +64,7 @@ PosLevel(const CVector &pos)
|
||||||
return lastOtherLevel;
|
return lastOtherLevel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
CColStore::Initialise(void)
|
CColStore::Initialise(void)
|
||||||
|
@ -251,6 +255,7 @@ CColStore::AddCollisionNeededAtPosn(const CVector &pos)
|
||||||
secondPosition = pos;
|
secondPosition = pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef MAZAHAKA_MAPZONE_VC
|
||||||
void
|
void
|
||||||
CColStore::LoadCollision(const CVector &pos, eLevelName level)
|
CColStore::LoadCollision(const CVector &pos, eLevelName level)
|
||||||
{
|
{
|
||||||
|
@ -326,7 +331,56 @@ CColStore::LoadCollision(const CVector &pos, eLevelName level)
|
||||||
}
|
}
|
||||||
bLoadAtSecondPosition = false;
|
bLoadAtSecondPosition = false;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
void
|
||||||
|
CColStore::LoadCollision(const CVector2D &pos)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if(CStreaming::ms_disableStreaming)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for(i = 1; i < COLSTORESIZE; i++){
|
||||||
|
if(GetSlot(i) == nil)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
bool wantThisOne = false;
|
||||||
|
|
||||||
|
if(GetBoundingBox(i).IsPointInside(pos) ||
|
||||||
|
bLoadAtSecondPosition && GetBoundingBox(i).IsPointInside(secondPosition, -119.0f) ||
|
||||||
|
strcmp(GetColName(i), "yacht") == 0){
|
||||||
|
wantThisOne = true;
|
||||||
|
}else{
|
||||||
|
for (int j = 0; j < MAX_CLEANUP; j++) {
|
||||||
|
CPhysical* pEntity = nil;
|
||||||
|
cleanup_entity_struct* pCleanup = &CTheScripts::MissionCleanUp.m_sEntities[j];
|
||||||
|
if (pCleanup->type == CLEANUP_CAR) {
|
||||||
|
pEntity = CPools::GetVehiclePool()->GetAt(pCleanup->id);
|
||||||
|
if (!pEntity || pEntity->GetStatus() == STATUS_WRECKED)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if (pCleanup->type == CLEANUP_CHAR) {
|
||||||
|
pEntity = CPools::GetPedPool()->GetAt(pCleanup->id);
|
||||||
|
if (!pEntity || ((CPed*)pEntity)->DyingOrDead())
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (pEntity && !pEntity->bDontLoadCollision && !pEntity->bIsFrozen) {
|
||||||
|
if (GetBoundingBox(i).IsPointInside(pEntity->GetPosition(), -80.0f))
|
||||||
|
wantThisOne = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(wantThisOne)
|
||||||
|
CStreaming::RequestCol(i, STREAMFLAGS_PRIORITY);
|
||||||
|
else
|
||||||
|
CStreaming::RemoveCol(i);
|
||||||
|
}
|
||||||
|
bLoadAtSecondPosition = false;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef MAZAHAKA_MAPZONE_VC
|
||||||
void
|
void
|
||||||
CColStore::RequestCollision(const CVector &pos)
|
CColStore::RequestCollision(const CVector &pos)
|
||||||
{
|
{
|
||||||
|
@ -336,6 +390,17 @@ CColStore::RequestCollision(const CVector &pos)
|
||||||
if(GetSlot(i) && DoScriptsWantThisIn(i) && GetBoundingBox(i).IsPointInside(LevelPos(PosLevel(pos)), -115.0f))
|
if(GetSlot(i) && DoScriptsWantThisIn(i) && GetBoundingBox(i).IsPointInside(LevelPos(PosLevel(pos)), -115.0f))
|
||||||
CStreaming::RequestCol(i, STREAMFLAGS_PRIORITY);
|
CStreaming::RequestCol(i, STREAMFLAGS_PRIORITY);
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
void
|
||||||
|
CColStore::RequestCollision(const CVector/*2D*/ &pos)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for(i = 1; i < COLSTORESIZE; i++)
|
||||||
|
if(GetSlot(i) && GetBoundingBox(i).IsPointInside(pos, -115.0f))
|
||||||
|
CStreaming::RequestCol(i, STREAMFLAGS_PRIORITY);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
CColStore::EnsureCollisionIsInMemory(const CVector &pos)
|
CColStore::EnsureCollisionIsInMemory(const CVector &pos)
|
||||||
|
@ -374,6 +439,7 @@ CColStore::DoScriptsWantThisIn(int32 slot)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef MAZAHAKA_MAPZONE_VC
|
||||||
bool
|
bool
|
||||||
CColStore::HasCollisionLoaded(eLevelName level)
|
CColStore::HasCollisionLoaded(eLevelName level)
|
||||||
{
|
{
|
||||||
|
@ -388,12 +454,28 @@ CColStore::HasCollisionLoaded(eLevelName level)
|
||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
bool
|
||||||
|
CColStore::HasCollisionLoaded(const CVector2D &pos)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for(i = 1; i < COLSTORESIZE; i++)
|
||||||
|
if(GetSlot(i) && GetBoundingBox(i).IsPointInside(pos, -115.0f) &&
|
||||||
|
!GetSlot(i)->isLoaded)
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//lcs
|
||||||
|
#ifndef MAZAHAKA_MAPZONE_VC
|
||||||
bool
|
bool
|
||||||
CColStore::HasCollisionLoaded(const CVector &pos)
|
CColStore::HasCollisionLoaded(const CVector &pos)
|
||||||
{
|
{
|
||||||
return HasCollisionLoaded(PosLevel(pos));
|
return HasCollisionLoaded(PosLevel(pos));
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
CColStore::Load(bool onlyBB, CPool<ColDef> *pool)
|
CColStore::Load(bool onlyBB, CPool<ColDef> *pool)
|
||||||
|
|
|
@ -32,12 +32,24 @@ public:
|
||||||
static void AddCollisionNeededAtPosn(const CVector &pos);
|
static void AddCollisionNeededAtPosn(const CVector &pos);
|
||||||
static void LoadAllCollision(void);
|
static void LoadAllCollision(void);
|
||||||
static void RemoveAllCollision(void);
|
static void RemoveAllCollision(void);
|
||||||
|
#ifndef MAZAHAKA_MAPZONE_VC
|
||||||
|
//lcs
|
||||||
static void LoadCollision(const CVector &pos, eLevelName level = LEVEL_GENERIC);
|
static void LoadCollision(const CVector &pos, eLevelName level = LEVEL_GENERIC);
|
||||||
|
#else
|
||||||
|
static void LoadCollision(const CVector2D &pos);
|
||||||
|
#endif
|
||||||
static void RequestCollision(const CVector &pos);
|
static void RequestCollision(const CVector &pos);
|
||||||
static void EnsureCollisionIsInMemory(const CVector &pos);
|
static void EnsureCollisionIsInMemory(const CVector &pos);
|
||||||
static bool DoScriptsWantThisIn(int32 slot);
|
static bool DoScriptsWantThisIn(int32 slot);
|
||||||
|
#ifndef MAZAHAKA_MAPZONE_VC
|
||||||
|
//lcs
|
||||||
static bool HasCollisionLoaded(eLevelName level);
|
static bool HasCollisionLoaded(eLevelName level);
|
||||||
static bool HasCollisionLoaded(const CVector &pos);
|
static bool HasCollisionLoaded(const CVector &pos);
|
||||||
|
#else
|
||||||
|
static bool HasCollisionLoaded(const CVector2D &pos);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static void Load(bool, CPool<ColDef> *pool);
|
static void Load(bool, CPool<ColDef> *pool);
|
||||||
|
|
||||||
static ColDef *GetSlot(int slot) {
|
static ColDef *GetSlot(int slot) {
|
||||||
|
@ -48,4 +60,6 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifndef MAZAHAKA_MAPZONE_VC
|
||||||
const CVector& LevelPos(eLevelName level);
|
const CVector& LevelPos(eLevelName level);
|
||||||
|
#endif
|
||||||
|
|
25
src/control/FerrisWheel.cpp
Normal file
25
src/control/FerrisWheel.cpp
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
#pragma once
|
||||||
|
#include "FerrisWheel.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void CFerrisWheel::Init()
|
||||||
|
{
|
||||||
|
//debug("CFerrisWheel::Init()\n");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CFerrisWheel::Update()
|
||||||
|
{
|
||||||
|
//debug("CFerrisWheel::Update()\n");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CFerrisWheel::Shutdown()
|
||||||
|
{
|
||||||
|
//debug("CFerrisWheel::Shutdown()\n");
|
||||||
|
|
||||||
|
}
|
12
src/control/FerrisWheel.h
Normal file
12
src/control/FerrisWheel.h
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
#pragma once
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
class CFerrisWheel // todo maybe CFerrisWheels.process -> CFerrisWheel.Update
|
||||||
|
{
|
||||||
|
//static uint32 keyTable[256];
|
||||||
|
public:
|
||||||
|
static void Init(); // 1755E0 delegate check todo if need
|
||||||
|
static void Update();
|
||||||
|
static void Shutdown();
|
||||||
|
// ops 1223 1224 1225 1226
|
||||||
|
};
|
|
@ -437,6 +437,7 @@ CPathFind::LoadPathFindData(void)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//__declspec(noinline)
|
||||||
void
|
void
|
||||||
CPathFind::PreparePathData(void)
|
CPathFind::PreparePathData(void)
|
||||||
{
|
{
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -58,7 +58,7 @@ void FlushLog();
|
||||||
#define SET_FLOAT_PARAM(i, x) *(float*)&ScriptParams[i] = x
|
#define SET_FLOAT_PARAM(i, x) *(float*)&ScriptParams[i] = x
|
||||||
#define SET_VECTOR_PARAM(i, v) { *(float*)&ScriptParams[i] = (v).x; *(float*)&ScriptParams[i+1] = (v).y; *(float*)&ScriptParams[i+2] = (v).z; }
|
#define SET_VECTOR_PARAM(i, v) { *(float*)&ScriptParams[i] = (v).x; *(float*)&ScriptParams[i+1] = (v).y; *(float*)&ScriptParams[i+2] = (v).z; }
|
||||||
|
|
||||||
#define GTA_SCRIPT_COLLECTIVE
|
//#define GTA_SCRIPT_COLLECTIVE // vcs tmp disabled ------------
|
||||||
|
|
||||||
struct intro_script_rectangle
|
struct intro_script_rectangle
|
||||||
{
|
{
|
||||||
|
@ -229,9 +229,10 @@ enum {
|
||||||
MAX_STACK_DEPTH = 16,
|
MAX_STACK_DEPTH = 16,
|
||||||
NUM_LOCAL_VARS = 96,
|
NUM_LOCAL_VARS = 96,
|
||||||
NUM_TIMERS = 2,
|
NUM_TIMERS = 2,
|
||||||
NUM_GLOBAL_SLOTS = 26
|
NUM_GLOBAL_SLOTS = 25,//string \/
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//https://gtamods.com/wiki/SCM_Instruction#Concrete_data_types
|
||||||
enum {
|
enum {
|
||||||
ARGUMENT_END = 0,
|
ARGUMENT_END = 0,
|
||||||
ARGUMENT_INT_ZERO,
|
ARGUMENT_INT_ZERO,
|
||||||
|
@ -243,7 +244,8 @@ enum {
|
||||||
ARGUMENT_INT8,
|
ARGUMENT_INT8,
|
||||||
ARGUMENT_INT16,
|
ARGUMENT_INT16,
|
||||||
ARGUMENT_FLOAT,
|
ARGUMENT_FLOAT,
|
||||||
ARGUMENT_TIMER,
|
ARGUMENT_STRING, // 0xF653F
|
||||||
|
ARGUMENT_TIMER, // 0xE5412 -=@, 0x4D6F9 -=@val
|
||||||
ARGUMENT_LOCAL = ARGUMENT_TIMER + NUM_TIMERS,
|
ARGUMENT_LOCAL = ARGUMENT_TIMER + NUM_TIMERS,
|
||||||
ARGUMENT_LOCAL_ARRAY = ARGUMENT_LOCAL + NUM_LOCAL_VARS,
|
ARGUMENT_LOCAL_ARRAY = ARGUMENT_LOCAL + NUM_LOCAL_VARS,
|
||||||
ARGUMENT_GLOBAL = ARGUMENT_LOCAL_ARRAY + NUM_LOCAL_VARS,
|
ARGUMENT_GLOBAL = ARGUMENT_LOCAL_ARRAY + NUM_LOCAL_VARS,
|
||||||
|
@ -253,6 +255,7 @@ enum {
|
||||||
|
|
||||||
static_assert(MAX_ARGUMENT <= 256, "MAX_ARGUMENT must be less or equal to 256");
|
static_assert(MAX_ARGUMENT <= 256, "MAX_ARGUMENT must be less or equal to 256");
|
||||||
|
|
||||||
|
|
||||||
struct tCollectiveData
|
struct tCollectiveData
|
||||||
{
|
{
|
||||||
int32 colIndex;
|
int32 colIndex;
|
||||||
|
@ -290,6 +293,8 @@ struct script_corona
|
||||||
int flareType;
|
int flareType;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//class CTheScripts; // ahahahh
|
||||||
|
|
||||||
class CRunningScript
|
class CRunningScript
|
||||||
{
|
{
|
||||||
enum {
|
enum {
|
||||||
|
@ -325,21 +330,22 @@ public:
|
||||||
CRunningScript* next;
|
CRunningScript* next;
|
||||||
CRunningScript* prev;
|
CRunningScript* prev;
|
||||||
int32 m_nId;
|
int32 m_nId;
|
||||||
char m_abScriptName[8];
|
//uint32 pad4; // mazahaka vcs
|
||||||
uint32 m_nIp;
|
uint32 m_nIp;
|
||||||
uint32 m_anStack[MAX_STACK_DEPTH];
|
uint32 m_anStack[MAX_STACK_DEPTH];
|
||||||
uint16 m_nStackPointer;
|
int32 m_anLocalVariables[NUM_LOCAL_VARS + 8 + NUM_TIMERS]; // TODO(VCS): figure out why 106
|
||||||
int32 m_anLocalVariables[NUM_LOCAL_VARS + 8 + NUM_TIMERS]; // TODO(LCS): figure out why 106
|
|
||||||
int32 m_nLocalsPointer;
|
int32 m_nLocalsPointer;
|
||||||
|
uint32 m_nWakeTime;
|
||||||
|
uint16 m_nStackPointer;
|
||||||
|
uint16 m_nAndOrState;
|
||||||
bool m_bIsActive;
|
bool m_bIsActive;
|
||||||
bool m_bCondResult;
|
bool m_bCondResult;
|
||||||
bool m_bIsMissionScript;
|
bool m_bIsMissionScript;
|
||||||
bool m_bSkipWakeTime;
|
bool m_bSkipWakeTime;
|
||||||
uint32 m_nWakeTime;
|
|
||||||
uint16 m_nAndOrState;
|
|
||||||
bool m_bNotFlag;
|
bool m_bNotFlag;
|
||||||
bool m_bDeatharrestEnabled;
|
bool m_bDeatharrestEnabled;
|
||||||
bool m_bDeatharrestExecuted;
|
bool m_bDeatharrestExecuted;
|
||||||
|
char m_abScriptName[8];
|
||||||
bool m_bMissionFlag;
|
bool m_bMissionFlag;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -364,9 +370,14 @@ public:
|
||||||
|
|
||||||
void CollectParameters(uint32*, int16, int* pParams = (int*)&ScriptParams);
|
void CollectParameters(uint32*, int16, int* pParams = (int*)&ScriptParams);
|
||||||
int32 CollectNextParameterWithoutIncreasingPC(uint32);
|
int32 CollectNextParameterWithoutIncreasingPC(uint32);
|
||||||
int32* GetPointerToScriptVariable(uint32*, int16);
|
int32* GetPointerToScriptVariable(uint32*);
|
||||||
void StoreParameters(uint32*, int16);
|
void StoreParameters(uint32*, int16);
|
||||||
|
|
||||||
|
// vcs todo inline. scriptspace static err
|
||||||
|
/*inline*/ const char *GetKeyFromScript(uint32 *pIp);
|
||||||
|
wchar *GetTextByKeyFromScript(uint32 *pIp);
|
||||||
|
|
||||||
|
|
||||||
int8 ProcessOneCommand();
|
int8 ProcessOneCommand();
|
||||||
void DoDeatharrestCheck();
|
void DoDeatharrestCheck();
|
||||||
void UpdateCompareFlag(bool flag)
|
void UpdateCompareFlag(bool flag)
|
||||||
|
@ -409,9 +420,6 @@ public:
|
||||||
int8 ProcessCommands1100To1199(int32);
|
int8 ProcessCommands1100To1199(int32);
|
||||||
int8 ProcessCommands1200To1299(int32);
|
int8 ProcessCommands1200To1299(int32);
|
||||||
int8 ProcessCommands1300To1399(int32);
|
int8 ProcessCommands1300To1399(int32);
|
||||||
int8 ProcessCommands1400To1499(int32);
|
|
||||||
int8 ProcessCommands1500To1599(int32);
|
|
||||||
int8 ProcessCommands1600To1699(int32);
|
|
||||||
|
|
||||||
uint32 CollectLocateParameters(uint32*, bool);
|
uint32 CollectLocateParameters(uint32*, bool);
|
||||||
void LocatePlayerCommand(int32, uint32*);
|
void LocatePlayerCommand(int32, uint32*);
|
||||||
|
@ -465,10 +473,6 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
enum {
|
|
||||||
VAR_LOCAL = 1,
|
|
||||||
VAR_GLOBAL = 2,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
MAX_NUM_SCRIPTS = 128,
|
MAX_NUM_SCRIPTS = 128,
|
||||||
|
@ -585,13 +589,18 @@ public:
|
||||||
return Read2BytesFromScript(pIp) / 16.0f;
|
return Read2BytesFromScript(pIp) / 16.0f;
|
||||||
}
|
}
|
||||||
static void ReadTextLabelFromScript(uint32* pIp, char* buf) {
|
static void ReadTextLabelFromScript(uint32* pIp, char* buf) {
|
||||||
strncpy(buf, (const char*)&CTheScripts::ScriptSpace[*pIp], KEY_LENGTH_IN_SCRIPT);
|
//script_assert(false && "LABEL RECHECK TO MY FUNCS!!");
|
||||||
}
|
script_assert(false && "REMOVE ME!!!!!!");
|
||||||
static wchar* GetTextByKeyFromScript(uint32* pIp) {
|
return; // âîçìîæíî íå íóæíà ôóíêöèÿ, usege GetTextByKeyFromScript GetKeyFromScript
|
||||||
wchar* text = TheText.Get((const char*)&CTheScripts::ScriptSpace[*pIp]);
|
//strncpy(buf, (const char*)&CTheScripts::ScriptSpace[*pIp], KEY_LENGTH_IN_SCRIPT);
|
||||||
*pIp += KEY_LENGTH_IN_SCRIPT;
|
|
||||||
return text;
|
|
||||||
}
|
}
|
||||||
|
//--------------VCS TODO PROBABLY REMOVED BY COLLECT
|
||||||
|
//static wchar* GetTextByKeyFromScript(uint32* pIp) {
|
||||||
|
// wchar* text = TheText.Get((const char*)&CTheScripts::ScriptSpace[*pIp]);
|
||||||
|
// *pIp += KEY_LENGTH_IN_SCRIPT;
|
||||||
|
// return text;
|
||||||
|
//}
|
||||||
|
|
||||||
static int32 GetSizeOfVariableSpace()
|
static int32 GetSizeOfVariableSpace()
|
||||||
{
|
{
|
||||||
uint32 tmp = 3;
|
uint32 tmp = 3;
|
||||||
|
@ -725,3 +734,11 @@ enum {
|
||||||
extern int gScriptsFile;
|
extern int gScriptsFile;
|
||||||
extern CVector gVectorSetInLua;
|
extern CVector gVectorSetInLua;
|
||||||
|
|
||||||
|
#define GetPlayerInfoByPoolHandler(pPlayerInfo, han)\
|
||||||
|
CPed *gpi_ped = CPools::GetPedPool()->GetAt(han);\
|
||||||
|
script_assert(gpi_ped);\
|
||||||
|
CPlayerInfo *pPlayerInfo = ((CPlayerPed *)gpi_ped)->GetPlayerInfoForThisPlayerPed();\
|
||||||
|
script_assert(pPlayerInfo);
|
||||||
|
|
||||||
|
// CPlayerPed *pPlayer = FindPlayerPed();
|
||||||
|
// CPlayerInfo *pPlayerInfo = &CWorld::Players[CWorld::PlayerInFocus];
|
|
@ -23,404 +23,4 @@
|
||||||
#include "Weather.h"
|
#include "Weather.h"
|
||||||
#include "World.h"
|
#include "World.h"
|
||||||
|
|
||||||
bool gDeveloperFlag;
|
|
||||||
|
|
||||||
int8 CRunningScript::ProcessCommands1600To1699(int32 command)
|
|
||||||
{
|
|
||||||
switch (command) {
|
|
||||||
case COMMAND_ADD_NOODLES_DELIVERED:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
// CStats::NoodlesDelievered += GET_INTEGER_PARAM(0);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_SCRAPYARD_CHALLENGE_SCORE:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
//CStats::TopScrapyardChallengeScore = Max(CStats::TopScrapyardChallengeScore, GET_INTEGER_PARAM(0));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_9MM_MAYHEM_SCORE:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
//CStats::Top9mmMayhemScore = Max(CStats::Top9mmMayhemScore, GET_INTEGER_PARAM(0));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_SCOOTER_SHOOTER_SCORE:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
//CStats::TopScooterShooterScore = Max(CStats::TopScooterShooterScore, GET_INTEGER_PARAM(0));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_ADD_MONEY_MADE_FROM_TOURIST:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
// CStats::MoneyMadeFromTourist += GET_INTEGER_PARAM(0);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_ADD_TOURISTS_TAKEN_TO_SPOTS:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
// CStats::TouristsTakenToSpots += GET_INTEGER_PARAM(0);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_ADD_EXPORTED_CARS:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
// CStats::NumberOfExportedCars += GET_INTEGER_PARAM(0);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_SET_TOTAL_EXPORT_CARS:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
// CStats::TotalNumberOfCarExport = GET_INTEGER_PARAM(0);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_DIRT_BIKE_FASTEST_LAP:
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
// CStats::RegisterDirtBikeFastestLap(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_DIRT_BIKE_FASTEST_TIME:
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
// CStats::RegisterDirtBikeFastestTime(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_DIRT_BIKE_AIR_TIME:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
//CStats::DirtBikeMostAir = Max(CStats::DirtBikeMostAir, GET_INTEGER_PARAM(0));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_ADD_ARROW_3D_MARKER:
|
|
||||||
{
|
|
||||||
uint32 ip = m_nIp;
|
|
||||||
uint32 id = (uint32)(uintptr)GetPointerToScriptVariable(&ip, 0);
|
|
||||||
CollectParameters(&m_nIp, 10);
|
|
||||||
CVector pos = GET_VECTOR_PARAM(0);
|
|
||||||
CVector dir = GET_VECTOR_PARAM(3);
|
|
||||||
pos.z += GET_FLOAT_PARAM(9) + 7.0f;
|
|
||||||
//C3dMarkers::PlaceMarker(id, MARKERTYPE_ARROW, pos, GET_INTEGER_PARAM(6), GET_INTEGER_PARAM(7), GET_INTEGER_PARAM(8), 200, 1, 3.2f, 1, dir, 1.0f, 0, 0); - TODO
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_PRINT_NOW_OVERRIDE_FADE:
|
|
||||||
{
|
|
||||||
wchar* key = CTheScripts::GetTextByKeyFromScript(&m_nIp);
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CMessages::AddMessageJumpQ(key, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)); // true, true
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_GET_PICKUP_VALUE:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
SET_INTEGER_PARAM(0, CPickups::GetValue(GET_INTEGER_PARAM(0)));
|
|
||||||
StoreParameters(&m_nIp, 1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_PICKUP_VALUE:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CPickups::SetValue(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_IS_DEVELOPER:
|
|
||||||
#ifdef GTA_NETWORK
|
|
||||||
UpdateCompareFlag(gDeveloperFlag || gIsMultiplayerGame);
|
|
||||||
#else
|
|
||||||
UpdateCompareFlag(gDeveloperFlag);
|
|
||||||
#endif
|
|
||||||
return 0;
|
|
||||||
case COMMAND_SET_DEVELOPER_FLAG:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
gDeveloperFlag = GET_INTEGER_PARAM(0);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_WICHITA_WIPEOUT_SCORE:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
//CStats::TopWichitaWipeoutScore = Max(CStats::TopWichitaWipeoutScore, GET_INTEGER_PARAM(0));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_ATTACH_OBJECT_TO_CAR:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 5);
|
|
||||||
CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pObject);
|
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
|
|
||||||
script_assert(pVehicle);
|
|
||||||
CVector offset = GET_VECTOR_PARAM(2);
|
|
||||||
// pObject->AttachObjectToEntity(pVehicle, offset);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_DETACH_OBJECT_FROM_CAR:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pObject);
|
|
||||||
// if (pObject && pObject->m_pAttachedTo)
|
|
||||||
// pObject->DettachObjectFromEntity();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_PAD_STICKS_MULTIPLIER:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CPad::GetPad(0)->unk_B4 = GET_FLOAT_PARAM(0);
|
|
||||||
CPad::GetPad(0)->unk_B8 = GET_FLOAT_PARAM(1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_PRINT_SUBTITLE_NOW:
|
|
||||||
{
|
|
||||||
wchar* key = CTheScripts::GetTextByKeyFromScript(&m_nIp);
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
if (FrontEndMenuManager.m_PrefsShowSubtitles)
|
|
||||||
CMessages::AddMessageJumpQ(key, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)); // false, true
|
|
||||||
else
|
|
||||||
CMessages::AddToPreviousBriefArray(key, -1, -1, -1, -1, -1, -1, nil);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_PRINT_SUBTITLE_NOW_OVERRIDE_FADE:
|
|
||||||
{
|
|
||||||
wchar* key = CTheScripts::GetTextByKeyFromScript(&m_nIp);
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
if (FrontEndMenuManager.m_PrefsShowSubtitles)
|
|
||||||
CMessages::AddMessageJumpQ(key, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)); // true, true
|
|
||||||
else
|
|
||||||
CMessages::AddToPreviousBriefArray(key, -1, -1, -1, -1, -1, -1, nil);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_PRINT_SUBTITLE_NOW_NO_BRIEF:
|
|
||||||
{
|
|
||||||
wchar* key = CTheScripts::GetTextByKeyFromScript(&m_nIp);
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
if (FrontEndMenuManager.m_PrefsShowSubtitles)
|
|
||||||
CMessages::AddMessageJumpQ(key, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)); // false, false
|
|
||||||
else
|
|
||||||
CMessages::AddToPreviousBriefArray(key, -1, -1, -1, -1, -1, -1, nil);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_PRINT_WITH_NUMBER_NOW_NO_BRIEF:
|
|
||||||
{
|
|
||||||
wchar* key = CTheScripts::GetTextByKeyFromScript(&m_nIp);
|
|
||||||
CollectParameters(&m_nIp, 3);
|
|
||||||
CMessages::AddMessageJumpQWithNumber(key, GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(0), -1, -1, -1, -1, -1); // 0
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_GET_ANGLE_BETWEEN_POINTS:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 4);
|
|
||||||
SET_FLOAT_PARAM(0, CGeneral::GetAngleBetweenPoints(GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(1), GET_FLOAT_PARAM(2), GET_FLOAT_PARAM(3)));
|
|
||||||
StoreParameters(&m_nIp, 1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_OVERRIDE_CHAR_MOVE_ANIM:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pPed);
|
|
||||||
pPed->bOverrideMoveAnim = true;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_1627:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
// something related to debug menu, not implemented
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_ENABLE_EMERGENCY_VEHICLES:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
gbEmergencyVehiclesEnabled = GET_INTEGER_PARAM(0) != 0;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_ADD_UNLOCKED_COSTUME:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
// CStats::AddUnlockedCostume(GET_INTEGER_PARAM(0));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_CLEAR_MULTIPLAYER_SPLASH_SCREEN:
|
|
||||||
// ClearMultiplayerSplashScreen();
|
|
||||||
return 0;
|
|
||||||
case COMMAND_PRINT_WITH_2_NUMBERS_NOW_NO_BRIEF:
|
|
||||||
{
|
|
||||||
wchar* key = CTheScripts::GetTextByKeyFromScript(&m_nIp);
|
|
||||||
CollectParameters(&m_nIp, 4);
|
|
||||||
CMessages::AddMessageJumpQWithNumber(key, GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3), GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), -1, -1, -1, -1); // 0
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_GET_OBJECT_ORIENTATION:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pObject);
|
|
||||||
SET_FLOAT_PARAM(1, LimitAngleOnCircle(RADTODEG(Asin(pObject->GetForward().z))));
|
|
||||||
SET_FLOAT_PARAM(2, LimitAngleOnCircle(RADTODEG(Atan2(-pObject->GetForward().x, pObject->GetForward().y))));
|
|
||||||
SET_FLOAT_PARAM(0, LimitAngleOnCircle(RADTODEG(Atan2(-pObject->GetRight().z, pObject->GetUp().z))));
|
|
||||||
StoreParameters(&m_nIp, 3);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_OBJECT_ORIENTATION:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 4);
|
|
||||||
CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pObject);
|
|
||||||
pObject->SetOrientation(DEGTORAD(GET_FLOAT_PARAM(2)), DEGTORAD(GET_FLOAT_PARAM(1)), DEGTORAD(GET_FLOAT_PARAM(3)));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_CHANGE_ONSCREEN_COUNTER_PREFIX:
|
|
||||||
{
|
|
||||||
uint16 offset = (uint8*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - CTheScripts::ScriptSpace;
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CUserDisplay::OnscnTimer.ChangeCounterPrefix(offset, GET_INTEGER_PARAM(0) != 0);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_STORE_PLAYER_OUTFIT:
|
|
||||||
{
|
|
||||||
char tmp[12]; // TODO
|
|
||||||
CTheScripts::ReadTextLabelFromScript(&m_nIp, tmp);
|
|
||||||
for (int i = 0; i < KEY_LENGTH_IN_SCRIPT; i++)
|
|
||||||
CGameLogic::mStoredPlayerOutfit[i] = tmp[i];
|
|
||||||
printf("STORED PLAYOUR OUTFIT : %s\n", CGameLogic::mStoredPlayerOutfit);
|
|
||||||
m_nIp += KEY_LENGTH_IN_SCRIPT;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_DISPLAY_ONSCREEN_TIMER_WITH_NUMBER_AND_STRING:
|
|
||||||
{
|
|
||||||
char onscreen_str1[12];
|
|
||||||
uint16 var = (uint8*)GetPointerToScriptVariable(&m_nIp, 0) - CTheScripts::ScriptSpace;
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
wchar* text = TheText.Get((char*)&CTheScripts::ScriptSpace[m_nIp]);
|
|
||||||
strncpy(onscreen_str1, (char*)&CTheScripts::ScriptSpace[m_nIp], KEY_LENGTH_IN_SCRIPT);
|
|
||||||
m_nIp += KEY_LENGTH_IN_SCRIPT;
|
|
||||||
CUserDisplay::OnscnTimer.AddCounter(var, GET_INTEGER_PARAM(1), onscreen_str1, 0, GET_INTEGER_PARAM(0), nil, 0);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_PLAYER_CURRENT_WEAPON_AMMO_IN_CLIP:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CWeapon* pWeapon = FindPlayerPed()->GetWeapon();
|
|
||||||
if (pWeapon && GET_INTEGER_PARAM(0))
|
|
||||||
pWeapon->m_nAmmoInClip = GET_INTEGER_PARAM(0);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_CHAR_WAIT_STATE_REPEAT:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 3);
|
|
||||||
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
if (pPed)
|
|
||||||
pPed->SetWaitState((eWaitState)GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2) >= 0 ? &GET_INTEGER_PARAM(2) : nil, true);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_REGISTER_BEST_TIME_GOGO_FAGGIO:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
// CStats::RegisterBestTimeGoGoFaggio(GET_INTEGER_PARAM(0));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_LOCK_GARAGE:
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CGarages::LockGarage(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_IS_FINAL_GAME:
|
|
||||||
#ifdef FINAL
|
|
||||||
UpdateCompareFlag(true);
|
|
||||||
#else
|
|
||||||
UpdateCompareFlag(false);
|
|
||||||
#endif
|
|
||||||
return 0;
|
|
||||||
case COMMAND_SET_ALLOWED_COLLISION:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CTheScripts::AllowedCollision[0] = GET_INTEGER_PARAM(0);
|
|
||||||
CTheScripts::AllowedCollision[1] = GET_INTEGER_PARAM(1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_REGISTER_GUARDIAN_ANGEL_LEVEL:
|
|
||||||
CollectParameters(&m_nIp, 3);
|
|
||||||
//CStats::GuardianAngelHighestLevel_Ind = Max(CStats::GuardianAngelHighestLevel_Ind, GET_INTEGER_PARAM(0));
|
|
||||||
//CStats::GuardianAngelHighestLevel_Com = Max(CStats::GuardianAngelHighestLevel_Com, GET_INTEGER_PARAM(1));
|
|
||||||
//CStats::GuardianAngelHighestLevel_Sub = Max(CStats::GuardianAngelHighestLevel_Sub, GET_INTEGER_PARAM(2));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_DISPLAY_ONSCREEN_TIMER_WITH_NUMBER_AND_2_STRINGS:
|
|
||||||
{
|
|
||||||
char onscreen_str1[12];
|
|
||||||
char onscreen_str2[12];
|
|
||||||
uint16 var = (uint8*)GetPointerToScriptVariable(&m_nIp, 0) - CTheScripts::ScriptSpace;
|
|
||||||
CollectParameters(&m_nIp, 3);
|
|
||||||
wchar* text = TheText.Get((char*)&CTheScripts::ScriptSpace[m_nIp]);
|
|
||||||
strncpy(onscreen_str1, (char*)&CTheScripts::ScriptSpace[m_nIp], KEY_LENGTH_IN_SCRIPT);
|
|
||||||
m_nIp += KEY_LENGTH_IN_SCRIPT;
|
|
||||||
wchar* text2 = TheText.Get((char*)&CTheScripts::ScriptSpace[m_nIp]);
|
|
||||||
strncpy(onscreen_str2, (char*)&CTheScripts::ScriptSpace[m_nIp], KEY_LENGTH_IN_SCRIPT);
|
|
||||||
m_nIp += KEY_LENGTH_IN_SCRIPT;
|
|
||||||
CUserDisplay::OnscnTimer.AddCounter(var, GET_INTEGER_PARAM(1), onscreen_str2, 0, GET_INTEGER_PARAM(0), onscreen_str1, GET_INTEGER_PARAM(2));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_GET_PLAYER_STORED_WEAPON:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
|
|
||||||
script_assert(pPed);
|
|
||||||
SET_INTEGER_PARAM(0, pPed->m_storedWeapon);
|
|
||||||
StoreParameters(&m_nIp, 1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_DISABLE_PAUSE_MENU:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
// FrontEndMenuManager.mDisablePauseMenu = GET_INTEGER_PARAM(0) != 0; // TODO: static + member
|
|
||||||
return 0;
|
|
||||||
case COMMAND_IS_CHANNEL_PLAYING:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
//UpdateCompareFlag(DMAudio.IsChannelPlaying(GET_INTEGER_PARAM(0));
|
|
||||||
UpdateCompareFlag(false);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_SET_CLOCK_EVENT_WARNING:
|
|
||||||
CollectParameters(&m_nIp, 3);
|
|
||||||
/*
|
|
||||||
if (CHud::m_ClockEventWarningMinutes || GET_INTEGER_PARAMS(2)){
|
|
||||||
CHud::m_ClockEventWarningMinutes = GET_INTEGER_PARAMS(2);
|
|
||||||
CHud::m_ClockEventMinutes = GET_INTEGER_PARAMS(1);
|
|
||||||
CHud::m_ClockEventHours = GET_INTEGER_PARAMS(0);
|
|
||||||
CHud::m_ClockEventFlashTimer = 0;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
return 0;
|
|
||||||
case COMMAND_SET_EXTRA_COLOUR_LIGHT_DIRECTION:
|
|
||||||
CollectParameters(&m_nIp, 3);
|
|
||||||
// CWeather::ExtraColourLightDir = GET_VECTOR_PARAM(0);
|
|
||||||
// CWeather::ExtraColourLightDir.Normalise();
|
|
||||||
return 0;
|
|
||||||
case COMMAND_SET_CHAR_CAN_BE_TARGETTED_BY_LEADER:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pPed);
|
|
||||||
pPed->bCanBeTargettedByLeader = GET_INTEGER_PARAM(1) != 0;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_PRINT_HELP_NO_BRIEF:
|
|
||||||
{
|
|
||||||
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
|
|
||||||
CHud::SetHelpMessage(text, false); // + false, false
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_PRINT_HELP_FOREVER_NO_BRIEF:
|
|
||||||
{
|
|
||||||
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
|
|
||||||
CHud::SetHelpMessage(text, false, true); // + false
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_PRINT_HELP_ALWAYS_NO_BRIEF:
|
|
||||||
{
|
|
||||||
// CHud::mAlwaysAllowHelpText = true;
|
|
||||||
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
|
|
||||||
CHud::SetHelpMessage(text, false); // + false, false
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_PRINT_HELP_FOREVER_ALWAYS_NO_BRIEF:
|
|
||||||
{
|
|
||||||
// CHud::mAlwaysAllowHelpText = true;
|
|
||||||
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
|
|
||||||
CHud::SetHelpMessage(text, false, true); // + false
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_CAR_IS_REWARD:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pVehicle);
|
|
||||||
pVehicle->bRewardVehicle = (GET_INTEGER_PARAM(1) != 0);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_FREEZE_ALL_PLAYER_FOLLOWERS:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CPlayerPed* pPlayerPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
|
|
||||||
script_assert(pPlayerPed);
|
|
||||||
for (int i = 0; i < CPools::GetVehiclePool()->GetSize(); i++) {
|
|
||||||
CPed* pPed = CPools::GetPedPool()->GetSlot(i);
|
|
||||||
if (pPed && IsPedPointerValid(pPed)) {
|
|
||||||
if (pPed->m_leader == pPlayerPed || (pPed->m_objective == OBJECTIVE_FOLLOW_CHAR_IN_FORMATION && pPed->m_pedInObjective == pPlayerPed))
|
|
||||||
pPed->bIsFrozen = (GET_INTEGER_PARAM(1) != 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
script_assert(0);
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -29,13 +29,13 @@ uint32 CRunningScript::CollectLocateParameters(uint32* pIp, bool b3D)
|
||||||
uint8 type = CTheScripts::Read1ByteFromScript(&ip);
|
uint8 type = CTheScripts::Read1ByteFromScript(&ip);
|
||||||
if (type >= ARGUMENT_LOCAL) {
|
if (type >= ARGUMENT_LOCAL) {
|
||||||
ip--;
|
ip--;
|
||||||
id = (uint32)(uintptr)GetPointerToScriptVariable(&ip, 0);
|
id = (uint32)(uintptr)GetPointerToScriptVariable(&ip);
|
||||||
}
|
}
|
||||||
CollectParameters(pIp, b3D ? 7 : 5, &(ScriptParams[1]));
|
CollectParameters(pIp, b3D ? 7 : 5, &(ScriptParams[1]));
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CRunningScript::LocatePlayerCommand(int32 command, uint32* pIp)
|
/*void CRunningScript::LocatePlayerCommand(int32 command, uint32* pIp)
|
||||||
{
|
{
|
||||||
bool b3D, result, debug, decided = false;
|
bool b3D, result, debug, decided = false;
|
||||||
float X, Y, Z, dX, dY, dZ;
|
float X, Y, Z, dX, dY, dZ;
|
||||||
|
@ -114,14 +114,14 @@ void CRunningScript::LocatePlayerCommand(int32 command, uint32* pIp)
|
||||||
UpdateCompareFlag(result);
|
UpdateCompareFlag(result);
|
||||||
if (debug && Abs(pos.x - X) < 80.0f && Abs(pos.y - Y) < 80.0f)
|
if (debug && Abs(pos.x - X) < 80.0f && Abs(pos.y - Y) < 80.0f)
|
||||||
CTheScripts::HighlightImportantArea(id, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
|
CTheScripts::HighlightImportantArea(id, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
|
||||||
/*
|
|
||||||
if (CTheScripts::DbgFlag) {
|
//if (CTheScripts::DbgFlag) {
|
||||||
if (b3D)
|
// if (b3D)
|
||||||
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
// CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
||||||
else
|
// else
|
||||||
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
// CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
||||||
}
|
//}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CRunningScript::LocatePlayerCharCommand(int32 command, uint32* pIp)
|
void CRunningScript::LocatePlayerCharCommand(int32 command, uint32* pIp)
|
||||||
|
@ -203,14 +203,14 @@ void CRunningScript::LocatePlayerCharCommand(int32 command, uint32* pIp)
|
||||||
#else
|
#else
|
||||||
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dX, b3D ? Z : MAP_Z_LOW_LIMIT);
|
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dX, b3D ? Z : MAP_Z_LOW_LIMIT);
|
||||||
#endif
|
#endif
|
||||||
/*
|
|
||||||
if (CTheScripts::DbgFlag) {
|
//if (CTheScripts::DbgFlag) {
|
||||||
if (b3D)
|
// if (b3D)
|
||||||
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
// CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
||||||
else
|
// else
|
||||||
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
// CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
||||||
}
|
//}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CRunningScript::LocatePlayerCarCommand(int32 command, uint32* pIp)
|
void CRunningScript::LocatePlayerCarCommand(int32 command, uint32* pIp)
|
||||||
|
@ -282,15 +282,15 @@ void CRunningScript::LocatePlayerCarCommand(int32 command, uint32* pIp)
|
||||||
UpdateCompareFlag(result);
|
UpdateCompareFlag(result);
|
||||||
if (debug)
|
if (debug)
|
||||||
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
|
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
|
||||||
/*
|
|
||||||
if (CTheScripts::DbgFlag) {
|
//if (CTheScripts::DbgFlag) {
|
||||||
if (b3D)
|
// if (b3D)
|
||||||
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
// CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
||||||
else
|
// else
|
||||||
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
// CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
||||||
}
|
//}
|
||||||
*/
|
|
||||||
}
|
}*/
|
||||||
|
|
||||||
void CRunningScript::LocateCharCommand(int32 command, uint32* pIp)
|
void CRunningScript::LocateCharCommand(int32 command, uint32* pIp)
|
||||||
{
|
{
|
||||||
|
@ -388,14 +388,14 @@ void CRunningScript::LocateCharCommand(int32 command, uint32* pIp)
|
||||||
UpdateCompareFlag(result);
|
UpdateCompareFlag(result);
|
||||||
if (debug)
|
if (debug)
|
||||||
CTheScripts::HighlightImportantArea(id, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
|
CTheScripts::HighlightImportantArea(id, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
|
||||||
/*
|
|
||||||
if (CTheScripts::DbgFlag) {
|
//if (CTheScripts::DbgFlag) {
|
||||||
if (b3D)
|
// if (b3D)
|
||||||
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
// CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
||||||
else
|
// else
|
||||||
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
// CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
||||||
}
|
//}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CRunningScript::LocateCharCharCommand(int32 command, uint32* pIp)
|
void CRunningScript::LocateCharCharCommand(int32 command, uint32* pIp)
|
||||||
|
@ -479,14 +479,14 @@ void CRunningScript::LocateCharCharCommand(int32 command, uint32* pIp)
|
||||||
#else
|
#else
|
||||||
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dX, b3D ? Z : MAP_Z_LOW_LIMIT);
|
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dX, b3D ? Z : MAP_Z_LOW_LIMIT);
|
||||||
#endif
|
#endif
|
||||||
/*
|
|
||||||
if (CTheScripts::DbgFlag) {
|
//if (CTheScripts::DbgFlag) {
|
||||||
if (b3D)
|
// if (b3D)
|
||||||
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
// CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
||||||
else
|
// else
|
||||||
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
// CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
||||||
}
|
//}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CRunningScript::LocateCharCarCommand(int32 command, uint32* pIp)
|
void CRunningScript::LocateCharCarCommand(int32 command, uint32* pIp)
|
||||||
|
@ -559,14 +559,14 @@ void CRunningScript::LocateCharCarCommand(int32 command, uint32* pIp)
|
||||||
UpdateCompareFlag(result);
|
UpdateCompareFlag(result);
|
||||||
if (debug)
|
if (debug)
|
||||||
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
|
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
|
||||||
/*
|
|
||||||
if (CTheScripts::DbgFlag) {
|
//if (CTheScripts::DbgFlag) {
|
||||||
if (b3D)
|
// if (b3D)
|
||||||
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
// CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
||||||
else
|
// else
|
||||||
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
// CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
||||||
}
|
//}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CRunningScript::LocateCharObjectCommand(int32 command, uint32* pIp)
|
void CRunningScript::LocateCharObjectCommand(int32 command, uint32* pIp)
|
||||||
|
@ -639,14 +639,14 @@ void CRunningScript::LocateCharObjectCommand(int32 command, uint32* pIp)
|
||||||
UpdateCompareFlag(result);
|
UpdateCompareFlag(result);
|
||||||
if (debug)
|
if (debug)
|
||||||
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
|
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
|
||||||
/*
|
|
||||||
if (CTheScripts::DbgFlag) {
|
//if (CTheScripts::DbgFlag) {
|
||||||
if (b3D)
|
// if (b3D)
|
||||||
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
// CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
||||||
else
|
// else
|
||||||
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
// CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
||||||
}
|
//}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CRunningScript::LocateCarCommand(int32 command, uint32* pIp)
|
void CRunningScript::LocateCarCommand(int32 command, uint32* pIp)
|
||||||
|
@ -713,14 +713,14 @@ void CRunningScript::LocateCarCommand(int32 command, uint32* pIp)
|
||||||
UpdateCompareFlag(result);
|
UpdateCompareFlag(result);
|
||||||
if (debug)
|
if (debug)
|
||||||
CTheScripts::HighlightImportantArea(id, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
|
CTheScripts::HighlightImportantArea(id, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
|
||||||
/*
|
|
||||||
if (CTheScripts::DbgFlag) {
|
//if (CTheScripts::DbgFlag) {
|
||||||
if (b3D)
|
// if (b3D)
|
||||||
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
// CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
||||||
else
|
// else
|
||||||
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
// CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
||||||
}
|
//}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CRunningScript::LocateObjectCommand(int32 command, uint32* pIp)
|
void CRunningScript::LocateObjectCommand(int32 command, uint32* pIp)
|
||||||
|
@ -773,28 +773,28 @@ void CRunningScript::LocateObjectCommand(int32 command, uint32* pIp)
|
||||||
UpdateCompareFlag(result);
|
UpdateCompareFlag(result);
|
||||||
if (debug)
|
if (debug)
|
||||||
CTheScripts::HighlightImportantArea(id, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
|
CTheScripts::HighlightImportantArea(id, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
|
||||||
/*
|
|
||||||
if (CTheScripts::DbgFlag) {
|
//if (CTheScripts::DbgFlag) {
|
||||||
if (b3D)
|
// if (b3D)
|
||||||
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
// CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
||||||
else
|
// else
|
||||||
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
// CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
||||||
}
|
//}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CRunningScript::LocateSniperBulletCommand(int32 command, uint32* pIp)
|
void CRunningScript::LocateSniperBulletCommand(int32 command, uint32* pIp)
|
||||||
{
|
{
|
||||||
bool b3D, result, debug;
|
bool b3D, result, debug;
|
||||||
float X, Y, Z, dX, dY, dZ;
|
float X, Y, Z, dX, dY, dZ;
|
||||||
switch (command) {
|
/*switch (command) { // vcs tmp TODO:----------------------------------------------
|
||||||
case COMMAND_LOCATE_SNIPER_BULLET_3D:
|
case COMMAND_LOCATE_SNIPER_BULLET_3D:
|
||||||
b3D = true;
|
b3D = true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
b3D = false;
|
b3D = false;
|
||||||
break;
|
break;
|
||||||
}
|
}*/
|
||||||
CollectParameters(pIp, b3D ? 7 : 5);
|
CollectParameters(pIp, b3D ? 7 : 5);
|
||||||
X = GET_FLOAT_PARAM(0);
|
X = GET_FLOAT_PARAM(0);
|
||||||
Y = GET_FLOAT_PARAM(1);
|
Y = GET_FLOAT_PARAM(1);
|
||||||
|
@ -814,17 +814,17 @@ void CRunningScript::LocateSniperBulletCommand(int32 command, uint32* pIp)
|
||||||
UpdateCompareFlag(result);
|
UpdateCompareFlag(result);
|
||||||
if (debug)
|
if (debug)
|
||||||
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
|
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
|
||||||
/*
|
|
||||||
if (CTheScripts::DbgFlag) {
|
//if (CTheScripts::DbgFlag) {
|
||||||
if (b3D)
|
// if (b3D)
|
||||||
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
// CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
||||||
else
|
// else
|
||||||
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
// CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
||||||
}
|
//}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CRunningScript::PlayerInAreaCheckCommand(int32 command, uint32* pIp)
|
/*void CRunningScript::PlayerInAreaCheckCommand(int32 command, uint32* pIp)
|
||||||
{
|
{
|
||||||
bool b3D, result, debug, decided = false;
|
bool b3D, result, debug, decided = false;
|
||||||
float infX, infY, infZ, supX, supY, supZ;
|
float infX, infY, infZ, supX, supY, supZ;
|
||||||
|
@ -933,14 +933,14 @@ void CRunningScript::PlayerInAreaCheckCommand(int32 command, uint32* pIp)
|
||||||
UpdateCompareFlag(result);
|
UpdateCompareFlag(result);
|
||||||
if (debug)
|
if (debug)
|
||||||
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, infX, infY, supX, supY, b3D ? (infZ + supZ) / 2 : MAP_Z_LOW_LIMIT);
|
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, infX, infY, supX, supY, b3D ? (infZ + supZ) / 2 : MAP_Z_LOW_LIMIT);
|
||||||
/*
|
|
||||||
if (CTheScripts::DbgFlag) {
|
//if (CTheScripts::DbgFlag) {
|
||||||
if (b3D)
|
// if (b3D)
|
||||||
CTheScripts::DrawDebugCube(infX, infY, infZ, supX, supY, supZ);
|
// CTheScripts::DrawDebugCube(infX, infY, infZ, supX, supY, supZ);
|
||||||
else
|
// else
|
||||||
CTheScripts::DrawDebugSquare(infX, infY, supX, supY);
|
// CTheScripts::DrawDebugSquare(infX, infY, supX, supY);
|
||||||
}
|
//}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CRunningScript::PlayerInAngledAreaCheckCommand(int32 command, uint32* pIp)
|
void CRunningScript::PlayerInAngledAreaCheckCommand(int32 command, uint32* pIp)
|
||||||
|
@ -1058,17 +1058,17 @@ void CRunningScript::PlayerInAngledAreaCheckCommand(int32 command, uint32* pIp)
|
||||||
if (debug)
|
if (debug)
|
||||||
CTheScripts::HighlightImportantAngledArea((uintptr)this + m_nIp, infX, infY, supX, supY,
|
CTheScripts::HighlightImportantAngledArea((uintptr)this + m_nIp, infX, infY, supX, supY,
|
||||||
rotatedSupX, rotatedSupY, rotatedInfX, rotatedInfY, b3D ? (infZ + supZ) / 2 : MAP_Z_LOW_LIMIT);
|
rotatedSupX, rotatedSupY, rotatedInfX, rotatedInfY, b3D ? (infZ + supZ) / 2 : MAP_Z_LOW_LIMIT);
|
||||||
/*
|
|
||||||
if (CTheScripts::DbgFlag) {
|
//if (CTheScripts::DbgFlag) {
|
||||||
if (b3D)
|
// if (b3D)
|
||||||
CTheScripts::DrawDebugAngledCube(infX, infY, infZ, supX, supY, supZ,
|
// CTheScripts::DrawDebugAngledCube(infX, infY, infZ, supX, supY, supZ,
|
||||||
rotatedSupX, rotatedSupY, rotatedInfX, rotatedInfY);
|
// rotatedSupX, rotatedSupY, rotatedInfX, rotatedInfY);
|
||||||
else
|
// else
|
||||||
CTheScripts::DrawDebugAngledSquare(infX, infY, supX, supY,
|
// CTheScripts::DrawDebugAngledSquare(infX, infY, supX, supY,
|
||||||
rotatedSupX, rotatedSupY, rotatedInfX, rotatedInfY);
|
// rotatedSupX, rotatedSupY, rotatedInfX, rotatedInfY);
|
||||||
}
|
//}
|
||||||
*/
|
|
||||||
}
|
}*/
|
||||||
|
|
||||||
void CRunningScript::CharInAreaCheckCommand(int32 command, uint32* pIp)
|
void CRunningScript::CharInAreaCheckCommand(int32 command, uint32* pIp)
|
||||||
{
|
{
|
||||||
|
@ -1528,14 +1528,14 @@ void CRunningScript::LocateCollectiveCommand(int32 command, uint32* pIp)
|
||||||
UpdateCompareFlag(result);
|
UpdateCompareFlag(result);
|
||||||
if (debug)
|
if (debug)
|
||||||
CTheScripts::HighlightImportantArea(id, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
|
CTheScripts::HighlightImportantArea(id, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
|
||||||
/*
|
|
||||||
if (CTheScripts::DbgFlag) {
|
//if (CTheScripts::DbgFlag) {
|
||||||
if (b3D)
|
// if (b3D)
|
||||||
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
// CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
||||||
else
|
// else
|
||||||
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
// CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
||||||
}
|
//}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CRunningScript::LocateCollectiveCharCommand(int32 command, uint32* pIp)
|
void CRunningScript::LocateCollectiveCharCommand(int32 command, uint32* pIp)
|
||||||
|
@ -1621,14 +1621,14 @@ void CRunningScript::LocateCollectiveCharCommand(int32 command, uint32* pIp)
|
||||||
UpdateCompareFlag(result);
|
UpdateCompareFlag(result);
|
||||||
if (debug)
|
if (debug)
|
||||||
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
|
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
|
||||||
/*
|
|
||||||
if (CTheScripts::DbgFlag) {
|
//if (CTheScripts::DbgFlag) {
|
||||||
if (b3D)
|
// if (b3D)
|
||||||
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
// CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
||||||
else
|
// else
|
||||||
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
// CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
||||||
}
|
//}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CRunningScript::LocateCollectiveCarCommand(int32 command, uint32* pIp)
|
void CRunningScript::LocateCollectiveCarCommand(int32 command, uint32* pIp)
|
||||||
|
@ -1707,14 +1707,14 @@ void CRunningScript::LocateCollectiveCarCommand(int32 command, uint32* pIp)
|
||||||
UpdateCompareFlag(result);
|
UpdateCompareFlag(result);
|
||||||
if (debug)
|
if (debug)
|
||||||
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
|
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
|
||||||
/*
|
|
||||||
if (CTheScripts::DbgFlag) {
|
//if (CTheScripts::DbgFlag) {
|
||||||
if (b3D)
|
// if (b3D)
|
||||||
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
// CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
||||||
else
|
// else
|
||||||
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
// CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
||||||
}
|
//}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CRunningScript::LocateCollectivePlayerCommand(int32 command, uint32* pIp)
|
void CRunningScript::LocateCollectivePlayerCommand(int32 command, uint32* pIp)
|
||||||
|
@ -1792,14 +1792,14 @@ void CRunningScript::LocateCollectivePlayerCommand(int32 command, uint32* pIp)
|
||||||
UpdateCompareFlag(result);
|
UpdateCompareFlag(result);
|
||||||
if (debug)
|
if (debug)
|
||||||
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
|
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
|
||||||
/*
|
|
||||||
if (CTheScripts::DbgFlag) {
|
//if (CTheScripts::DbgFlag) {
|
||||||
if (b3D)
|
// if (b3D)
|
||||||
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
// CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
|
||||||
else
|
// else
|
||||||
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
// CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
|
||||||
}
|
//}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CRunningScript::CollectiveInAreaCheckCommand(int32 command, uint32* pIp)
|
void CRunningScript::CollectiveInAreaCheckCommand(int32 command, uint32* pIp)
|
||||||
|
@ -1912,14 +1912,14 @@ void CRunningScript::CollectiveInAreaCheckCommand(int32 command, uint32* pIp)
|
||||||
UpdateCompareFlag(result);
|
UpdateCompareFlag(result);
|
||||||
if (debug)
|
if (debug)
|
||||||
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, infX, infY, supX, supY, b3D ? (infZ + supZ) / 2 : MAP_Z_LOW_LIMIT);
|
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, infX, infY, supX, supY, b3D ? (infZ + supZ) / 2 : MAP_Z_LOW_LIMIT);
|
||||||
/*
|
|
||||||
if (CTheScripts::DbgFlag) {
|
//if (CTheScripts::DbgFlag) {
|
||||||
if (b3D)
|
// if (b3D)
|
||||||
CTheScripts::DrawDebugCube(infX, infY, infZ, supX, supY, supZ);
|
// CTheScripts::DrawDebugCube(infX, infY, infZ, supX, supY, supZ);
|
||||||
else
|
// else
|
||||||
CTheScripts::DrawDebugSquare(infX, infY, supX, supY);
|
// CTheScripts::DrawDebugSquare(infX, infY, supX, supY);
|
||||||
}
|
//}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -27,783 +27,5 @@
|
||||||
#include "World.h"
|
#include "World.h"
|
||||||
#include "Zones.h"
|
#include "Zones.h"
|
||||||
|
|
||||||
// LCS: file done except TODOs (also check commented out strings)
|
|
||||||
|
|
||||||
int8 CRunningScript::ProcessCommands1400To1499(int32 command)
|
|
||||||
{
|
|
||||||
switch (command) {
|
|
||||||
case COMMAND_REGISTER_VIGILANTE_LEVEL:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CStats::RegisterLevelVigilanteMission(GET_INTEGER_PARAM(0));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_CLEAR_ALL_CHAR_ANIMS:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
if (pPed && pPed->GetPedState() != PED_DRIVING && pPed->GetPedState() != PED_AIM_GUN) {
|
|
||||||
pPed->m_pVehicleAnim = nil;
|
|
||||||
pPed->RestartNonPartialAnims();
|
|
||||||
RpAnimBlendClumpRemoveAllAssociations(pPed->GetClump());
|
|
||||||
pPed->SetPedState(PED_IDLE);
|
|
||||||
pPed->SetMoveState(PEDMOVE_STILL);
|
|
||||||
pPed->m_nLastPedState = PED_NONE;
|
|
||||||
pPed->ClearAimFlag();
|
|
||||||
pPed->ClearLookFlag();
|
|
||||||
pPed->bIsPointingGunAt = false;
|
|
||||||
if (pPed->IsPlayer())
|
|
||||||
((CPlayerPed*)pPed)->m_fMoveSpeed = 0.0f;
|
|
||||||
else
|
|
||||||
pPed->m_nStoredMoveState = PEDMOVE_STILL;
|
|
||||||
CAnimManager::AddAnimation(pPed->GetClump(), pPed->m_animGroup, ANIM_STD_IDLE);
|
|
||||||
pPed->bIsPedDieAnimPlaying = false;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_MAXIMUM_NUMBER_OF_CARS_IN_GARAGE:
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CGarages::SetMaxNumStoredCarsForGarage(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_WANTED_STARS_ARE_FLASHING:
|
|
||||||
{
|
|
||||||
CWanted* pWanted = CWorld::Players[CWorld::PlayerInFocus].m_pPed->m_pWanted;
|
|
||||||
UpdateCompareFlag(pWanted->m_nMinWantedLevel - pWanted->GetWantedLevel() > 0);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_ALLOW_HURRICANES:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CStats::NoMoreHurricanes = GET_INTEGER_PARAM(0);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_PLAY_ANNOUNCEMENT:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
DMAudio.PlayRadioAnnouncement(GET_INTEGER_PARAM(0) + STREAMED_SOUND_NEWS_A);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_PLAYER_IS_IN_STADIUM:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CTheScripts::bPlayerIsInTheStatium = GET_INTEGER_PARAM(0);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_GET_BUS_FARES_COLLECTED_BY_PLAYER:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CPlayerInfo* pPlayerInfo = &CWorld::Players[GET_INTEGER_PARAM(0)];
|
|
||||||
SET_INTEGER_PARAM(0, pPlayerInfo->m_pPed->m_nLastBusFareCollected);
|
|
||||||
pPlayerInfo->m_pPed->m_nLastBusFareCollected = 0;
|
|
||||||
StoreParameters(&m_nIp, 1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_CHAR_OBJ_BUY_ICE_CREAM:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pPed);
|
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
|
|
||||||
script_assert(pVehicle);
|
|
||||||
SET_INTEGER_PARAM(0, 0);
|
|
||||||
if (pPed->m_objective == OBJECTIVE_NONE && !pPed->bHasAlreadyUsedAttractor) {
|
|
||||||
C2dEffect* pEffect = (C2dEffect*)GetPedAttractorManager()->GetEffectForIceCreamVan(pVehicle, pPed->GetPosition()); // has to be casted, because inner methods are const
|
|
||||||
if (pEffect) {
|
|
||||||
CVector pos;
|
|
||||||
CPedAttractorManager::ComputeEffectPos(pEffect, pVehicle->GetMatrix(), pos);
|
|
||||||
if ((pPed->GetPosition() - pos).MagnitudeSqr() < SQR(20.0f)) {
|
|
||||||
if (GetPedAttractorManager()->HasEmptySlot(pEffect) && GetPedAttractorManager()->IsApproachable(pEffect, pVehicle->GetMatrix(), 0, pPed)) {
|
|
||||||
if (GetPedAttractorManager()->RegisterPedWithAttractor(pPed, pEffect, pVehicle->GetMatrix()))
|
|
||||||
SET_INTEGER_PARAM(0, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
StoreParameters(&m_nIp, 1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_DISPLAY_RADAR:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CHud::m_HideRadar = GET_INTEGER_PARAM(0) == 0;
|
|
||||||
// on PS2 two flags are set, on mobile none
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_BEST_POSITION:
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CStats::RegisterBestPosition(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_IS_PLAYER_IN_INFO_ZONE:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CPlayerInfo* pPlayerInfo = &CWorld::Players[GET_INTEGER_PARAM(0)];
|
|
||||||
char key[KEY_LENGTH_IN_SCRIPT];
|
|
||||||
memset(key, 0, KEY_LENGTH_IN_SCRIPT);
|
|
||||||
CTheScripts::ReadTextLabelFromScript(&m_nIp, key);
|
|
||||||
m_nIp += KEY_LENGTH_IN_SCRIPT;
|
|
||||||
CVector pos = pPlayerInfo->GetPos();
|
|
||||||
CZone* infoZone = CTheZones::FindInformationZoneForPosition(&pos);
|
|
||||||
UpdateCompareFlag(strncmp(key, infoZone->name, 8) == 0); // original code doesn't seem to be using strncmp in here and compare 2 ints instead
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_CLEAR_CHAR_ICE_CREAM_PURCHASE:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pPed);
|
|
||||||
if (pPed->m_attractor)
|
|
||||||
GetPedAttractorManager()->DeRegisterPed(pPed, pPed->m_attractor);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_IS_IN_CAR_FIRE_BUTTON_PRESSED:
|
|
||||||
UpdateCompareFlag(CPad::GetPad(0)->GetCarGunFired());
|
|
||||||
return 0;
|
|
||||||
case COMMAND_HAS_CHAR_ATTEMPTED_ATTRACTOR:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pPed);
|
|
||||||
UpdateCompareFlag(pPed->bHasAlreadyUsedAttractor);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_LOAD_COLLISION_FOR_CAR_FLAG:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pVehicle);
|
|
||||||
if (GET_INTEGER_PARAM(1)) {
|
|
||||||
pVehicle->bDontLoadCollision = false;
|
|
||||||
if (m_bMissionFlag) {
|
|
||||||
CWorld::Remove(pVehicle);
|
|
||||||
pVehicle->bIsStaticWaitingForCollision = true;
|
|
||||||
CWorld::Add(pVehicle);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
pVehicle->bDontLoadCollision = true;
|
|
||||||
if (pVehicle->bIsStaticWaitingForCollision) {
|
|
||||||
pVehicle->bIsStaticWaitingForCollision = false;
|
|
||||||
if (!pVehicle->GetIsStatic())
|
|
||||||
pVehicle->AddToMovingList();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_LOAD_COLLISION_FOR_CHAR_FLAG:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pPed);
|
|
||||||
if (GET_INTEGER_PARAM(1)) {
|
|
||||||
pPed->bDontLoadCollision = false;
|
|
||||||
if (m_bMissionFlag) {
|
|
||||||
CWorld::Remove(pPed);
|
|
||||||
pPed->bIsStaticWaitingForCollision = true;
|
|
||||||
CWorld::Add(pPed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
pPed->bDontLoadCollision = true;
|
|
||||||
if (pPed->bIsStaticWaitingForCollision) {
|
|
||||||
pPed->bIsStaticWaitingForCollision = false;
|
|
||||||
if (!pPed->GetIsStatic())
|
|
||||||
pPed->AddToMovingList();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
//case COMMAND_SET_LOAD_COLLISION_FOR_OBJECT_FLAG:
|
|
||||||
case COMMAND_ADD_BIG_GUN_FLASH:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 6);
|
|
||||||
CWeapon::AddGunFlashBigGuns(GET_VECTOR_PARAM(0), GET_VECTOR_PARAM(3));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_HAS_CHAR_BOUGHT_ICE_CREAM:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pPed);
|
|
||||||
UpdateCompareFlag(pPed->bBoughtIceCream);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_GET_PROGRESS_PERCENTAGE:
|
|
||||||
SET_FLOAT_PARAM(0, CStats::GetPercentageProgress());
|
|
||||||
StoreParameters(&m_nIp, 1);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_SET_SHORTCUT_PICKUP_POINT:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 4);
|
|
||||||
CGameLogic::AddShortCutPointAfterDeath(GET_VECTOR_PARAM(0), GET_FLOAT_PARAM(3));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_SHORTCUT_DROPOFF_POINT_FOR_MISSION:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 4);
|
|
||||||
CGameLogic::AddShortCutDropOffPointForMission(GET_VECTOR_PARAM(0), GET_FLOAT_PARAM(3));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_GET_RANDOM_ICE_CREAM_CUSTOMER_IN_AREA:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 7);
|
|
||||||
int ped_handle = -1;
|
|
||||||
CVector pos = FindPlayerCoors();
|
|
||||||
float x1 = GET_FLOAT_PARAM(0);
|
|
||||||
float y1 = GET_FLOAT_PARAM(1);
|
|
||||||
float x2 = GET_FLOAT_PARAM(2);
|
|
||||||
float y2 = GET_FLOAT_PARAM(3);
|
|
||||||
int i = CPools::GetPedPool()->GetSize();
|
|
||||||
while (--i && ped_handle == -1) {
|
|
||||||
CPed* pPed = CPools::GetPedPool()->GetSlot(i);
|
|
||||||
if (!pPed)
|
|
||||||
continue;
|
|
||||||
if (CTheScripts::LastRandomPedId == CPools::GetPedPool()->GetIndex(pPed))
|
|
||||||
continue;
|
|
||||||
if (pPed->CharCreatedBy != RANDOM_CHAR)
|
|
||||||
continue;
|
|
||||||
if (!pPed->IsPedInControl())
|
|
||||||
continue;
|
|
||||||
if (pPed->bRemoveFromWorld)
|
|
||||||
continue;
|
|
||||||
if (pPed->bFadeOut)
|
|
||||||
continue;
|
|
||||||
if (pPed->m_nWaitState != WAITSTATE_FALSE)
|
|
||||||
continue;
|
|
||||||
if (pPed->bHasAlreadyUsedAttractor)
|
|
||||||
continue;
|
|
||||||
if (pPed->m_attractor)
|
|
||||||
continue;
|
|
||||||
if (!ThisIsAValidRandomPed(pPed->m_nPedType, GET_INTEGER_PARAM(4), GET_INTEGER_PARAM(5), GET_INTEGER_PARAM(6)))
|
|
||||||
continue;
|
|
||||||
if (pPed->bIsLeader || pPed->m_leader)
|
|
||||||
continue;
|
|
||||||
if (!pPed->IsWithinArea(x1, y1, x2, y2))
|
|
||||||
continue;
|
|
||||||
if (pos.z - PED_FIND_Z_OFFSET > pPed->GetPosition().z)
|
|
||||||
continue;
|
|
||||||
if (pos.z + PED_FIND_Z_OFFSET < pPed->GetPosition().z)
|
|
||||||
continue;
|
|
||||||
ped_handle = CPools::GetPedPool()->GetIndex(pPed);
|
|
||||||
CTheScripts::LastRandomPedId = ped_handle;
|
|
||||||
pPed->CharCreatedBy = MISSION_CHAR;
|
|
||||||
pPed->bRespondsToThreats = false;
|
|
||||||
++CPopulation::ms_nTotalMissionPeds;
|
|
||||||
if (m_bIsMissionScript)
|
|
||||||
CTheScripts::MissionCleanUp.AddEntityToList(ped_handle, CLEANUP_CHAR);
|
|
||||||
}
|
|
||||||
SET_INTEGER_PARAM(0, ped_handle);
|
|
||||||
StoreParameters(&m_nIp, 1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
//case COMMAND_GET_RANDOM_ICE_CREAM_CUSTOMER_IN_ZONE:
|
|
||||||
case COMMAND_UNLOCK_ALL_CAR_DOORS_IN_AREA:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 4);
|
|
||||||
uint32 i = CPools::GetVehiclePool()->GetSize();
|
|
||||||
float infX = GET_FLOAT_PARAM(0);
|
|
||||||
float infY = GET_FLOAT_PARAM(1);
|
|
||||||
float supX = GET_FLOAT_PARAM(2);
|
|
||||||
float supY = GET_FLOAT_PARAM(3);
|
|
||||||
while (i--) {
|
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetSlot(i);
|
|
||||||
if (!pVehicle)
|
|
||||||
continue;
|
|
||||||
if (pVehicle->IsWithinArea(infX, infY, supX, supY))
|
|
||||||
pVehicle->m_nDoorLock = CARLOCK_UNLOCKED;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_GANG_ATTACK_PLAYER_WITH_COPS:
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CGangs::SetWillAttackPlayerWithCops((ePedType)((int)PEDTYPE_GANG1 + GET_INTEGER_PARAM(0)), !!GET_INTEGER_PARAM(1));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_SET_CHAR_FRIGHTENED_IN_JACKED_CAR:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pPed);
|
|
||||||
pPed->bHeldHostageInCar = GET_INTEGER_PARAM(1);
|
|
||||||
pPed->b1A4_2 = GET_INTEGER_PARAM(1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_VEHICLE_TO_FADE_IN:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pVehicle);
|
|
||||||
CVisibilityPlugins::SetClumpAlpha(pVehicle->GetClump(), GET_INTEGER_PARAM(1));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_REGISTER_ODDJOB_MISSION_PASSED:
|
|
||||||
++CStats::MissionsPassed;
|
|
||||||
CStats::CheckPointReachedSuccessfully();
|
|
||||||
CTheScripts::LastMissionPassedTime = CTimer::GetTimeInMilliseconds();
|
|
||||||
CGameLogic::RemoveShortCutDropOffPointForMission();
|
|
||||||
return 0;
|
|
||||||
case COMMAND_IS_PLAYER_IN_SHORTCUT_TAXI:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
|
|
||||||
script_assert(pPed);
|
|
||||||
UpdateCompareFlag(pPed->bInVehicle && pPed->m_pMyVehicle && pPed->m_pMyVehicle == CGameLogic::pShortCutTaxi);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_IS_CHAR_DUCKING:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pPed);
|
|
||||||
UpdateCompareFlag(RpAnimBlendClumpGetAssociation(pPed->GetClump(), ANIM_STD_DUCK_DOWN) != nil);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_CREATE_DUST_EFFECT_FOR_CUTSCENE_HELI:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 3);
|
|
||||||
CObject* pHeli = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
bool found = false;
|
|
||||||
float waterLevel = -1000.0f;
|
|
||||||
CVector pos = pHeli->GetPosition();
|
|
||||||
float radius = GET_FLOAT_PARAM(1);
|
|
||||||
float ground = CWorld::FindGroundZFor3DCoord(pos.x, pos.y, pos.z, &found);
|
|
||||||
if (!CWaterLevel::GetWaterLevel(pos.x, pos.y, pos.z, &waterLevel, false))
|
|
||||||
waterLevel = 0.0f;
|
|
||||||
if (waterLevel > ground)
|
|
||||||
ground = waterLevel;
|
|
||||||
if (GET_INTEGER_PARAM(2) > 8)
|
|
||||||
SET_INTEGER_PARAM(2, 8);
|
|
||||||
CVehicle::HeliDustGenerate(pHeli, (pos.z - ground - 1.0f - radius) * 0.3 + radius, ground, GET_INTEGER_PARAM(2));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_REGISTER_FIRE_LEVEL:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CStats::RegisterLevelFireMission(GET_INTEGER_PARAM(0));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_IS_AUSTRALIAN_GAME:
|
|
||||||
UpdateCompareFlag(false); // should we make some check?
|
|
||||||
return 0;
|
|
||||||
case COMMAND_DISARM_CAR_BOMB:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
if (pVehicle->IsCar()) {
|
|
||||||
if (((CAutomobile*)pVehicle)->m_bombType != CARBOMB_NONE) {
|
|
||||||
((CAutomobile*)pVehicle)->m_bombType = CARBOMB_NONE;
|
|
||||||
((CAutomobile*)pVehicle)->m_pBombRigger = nil;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#ifdef FIX_BUGS
|
|
||||||
else if (pVehicle->IsBike()) {
|
|
||||||
if (((CBike*)pVehicle)->m_bombType != CARBOMB_NONE) {
|
|
||||||
((CBike*)pVehicle)->m_bombType = CARBOMB_NONE;
|
|
||||||
((CBike*)pVehicle)->m_pBombRigger = nil;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_IS_JAPANESE_GAME:
|
|
||||||
#ifdef MORE_LANGUAGES
|
|
||||||
UpdateCompareFlag(FrontEndMenuManager.m_PrefsLanguage == CMenuManager::LANGUAGE_JAPANESE);
|
|
||||||
#elif (defined GTAVC_JP_PATCH)
|
|
||||||
UpdateCompareFlag(true);
|
|
||||||
#else
|
|
||||||
UpdateCompareFlag(false);
|
|
||||||
#endif
|
|
||||||
return 0;
|
|
||||||
case COMMAND_1442:
|
|
||||||
CollectParameters(&m_nIp, 4);
|
|
||||||
return 0;
|
|
||||||
//case COMMAND_1443:
|
|
||||||
case COMMAND_GET_DISTANCE_BETWEEN_2D_POINTS:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 4);
|
|
||||||
float X1 = GET_FLOAT_PARAM(0);
|
|
||||||
float Y1 = GET_FLOAT_PARAM(1);
|
|
||||||
float X2 = GET_FLOAT_PARAM(2);
|
|
||||||
float Y2 = GET_FLOAT_PARAM(3);
|
|
||||||
float fDistance = Sqrt((X1 - X2) * (X1 - X2) + (Y1 - Y2) * (Y1 - Y2));
|
|
||||||
SET_FLOAT_PARAM(0, fDistance);
|
|
||||||
StoreParameters(&m_nIp, 1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_GET_DISTANCE_BETWEEN_3D_POINTS:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 6);
|
|
||||||
float X1 = GET_FLOAT_PARAM(0);
|
|
||||||
float Y1 = GET_FLOAT_PARAM(1);
|
|
||||||
float Z1 = GET_FLOAT_PARAM(2);
|
|
||||||
float X2 = GET_FLOAT_PARAM(3);
|
|
||||||
float Y2 = GET_FLOAT_PARAM(4);
|
|
||||||
float Z2 = GET_FLOAT_PARAM(5);
|
|
||||||
float fDistance = Sqrt((X1 - X2) * (X1 - X2) + (Y1 - Y2) * (Y1 - Y2) + (Z1 - Z2) * (Z1 - Z2));
|
|
||||||
SET_FLOAT_PARAM(0, fDistance);
|
|
||||||
StoreParameters(&m_nIp, 1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_DOT_PRODUCT_2D:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 4);
|
|
||||||
float X1 = GET_FLOAT_PARAM(0);
|
|
||||||
float Y1 = GET_FLOAT_PARAM(1);
|
|
||||||
float X2 = GET_FLOAT_PARAM(2);
|
|
||||||
float Y2 = GET_FLOAT_PARAM(3);
|
|
||||||
float fDistance = X1 * X2 + Y1 * Y2;
|
|
||||||
SET_FLOAT_PARAM(0, fDistance);
|
|
||||||
StoreParameters(&m_nIp, 1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_DOT_PRODUCT_3D:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 6);
|
|
||||||
float X1 = GET_FLOAT_PARAM(0);
|
|
||||||
float Y1 = GET_FLOAT_PARAM(1);
|
|
||||||
float Z1 = GET_FLOAT_PARAM(2);
|
|
||||||
float X2 = GET_FLOAT_PARAM(3);
|
|
||||||
float Y2 = GET_FLOAT_PARAM(4);
|
|
||||||
float Z2 = GET_FLOAT_PARAM(5);
|
|
||||||
float fDistance = X1 * X2 + Y1 * Y2 + Z1 * Z2;
|
|
||||||
SET_FLOAT_PARAM(0, fDistance);
|
|
||||||
StoreParameters(&m_nIp, 1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_DEBUG_PRINT_WITH_1_FLOAT:
|
|
||||||
return 0;
|
|
||||||
case COMMAND_DEBUG_PRINT_WITH_2_FLOATS:
|
|
||||||
return 0;
|
|
||||||
case COMMAND_DEBUG_PRINT_WITH_3_FLOATS:
|
|
||||||
return 0;
|
|
||||||
case COMMAND_GET_PAD_BUTTON_STATE:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
switch (GET_INTEGER_PARAM(0)) {
|
|
||||||
case 0: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetOddJobTrigger()); break;
|
|
||||||
case 1: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetBrake()); break;
|
|
||||||
case 2: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetSteeringLeftRight()); break;
|
|
||||||
case 3: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetSteeringUpDown()); break;
|
|
||||||
case 4: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetCarGunLeftRight()); break;
|
|
||||||
case 5: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetCarGunUpDown()); break;
|
|
||||||
case 6: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetPedWalkLeftRight()); break;
|
|
||||||
case 7: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetPedWalkUpDown()); break;
|
|
||||||
case 8: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetLookLeft()); break;
|
|
||||||
case 9: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetLookRight()); break;
|
|
||||||
case 10: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetLookBehindForCar()); break;
|
|
||||||
case 11: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetLookBehindForPed()); break;
|
|
||||||
case 12: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetHorn()); break;
|
|
||||||
case 13: SET_INTEGER_PARAM(0, CPad::GetPad(0)->HornJustDown()); break;
|
|
||||||
case 14: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetCarGunFired()); break;
|
|
||||||
case 15: SET_INTEGER_PARAM(0, CPad::GetPad(0)->CarGunJustDown()); break;
|
|
||||||
case 16: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetHandBrake()); break;
|
|
||||||
case 17: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetBrake()); break;
|
|
||||||
case 18: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetExitVehicle()); break;
|
|
||||||
case 19: SET_INTEGER_PARAM(0, CPad::GetPad(0)->ExitVehicleJustDown()); break;
|
|
||||||
case 20: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetWeapon()); break;
|
|
||||||
case 21: SET_INTEGER_PARAM(0, CPad::GetPad(0)->WeaponJustDown()); break;
|
|
||||||
case 22: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetAccelerate()); break;
|
|
||||||
case 23: SET_INTEGER_PARAM(0, CPad::GetPad(0)->CycleCameraModeUpJustDown()); break;
|
|
||||||
case 24: SET_INTEGER_PARAM(0, CPad::GetPad(0)->CycleWeaponLeftJustDown()); break;
|
|
||||||
case 25: SET_INTEGER_PARAM(0, CPad::GetPad(0)->CycleWeaponRightJustDown()); break;
|
|
||||||
case 26: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetTarget()); break;
|
|
||||||
case 27: SET_INTEGER_PARAM(0, CPad::GetPad(0)->TargetJustDown()); break;
|
|
||||||
case 28: SET_INTEGER_PARAM(0, CPad::GetPad(0)->JumpJustDown()); break;
|
|
||||||
case 29: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetSprint()); break;
|
|
||||||
case 30: SET_INTEGER_PARAM(0, CPad::GetPad(0)->ShiftTargetLeftJustDown()); break;
|
|
||||||
case 31: SET_INTEGER_PARAM(0, CPad::GetPad(0)->ForceCameraBehindPlayer()); break;
|
|
||||||
case 32: SET_INTEGER_PARAM(0, CPad::GetPad(0)->SniperZoomIn()); break;
|
|
||||||
case 33: SET_INTEGER_PARAM(0, CPad::GetPad(0)->SniperZoomOut()); break;
|
|
||||||
case 34: SET_INTEGER_PARAM(0, CPad::GetPad(0)->SniperModeLookLeftRight()); break;
|
|
||||||
case 35: SET_INTEGER_PARAM(0, CPad::GetPad(0)->SniperModeLookUpDown()); break;
|
|
||||||
case 36: SET_INTEGER_PARAM(0, CPad::GetPad(0)->LookAroundLeftRight()); break;
|
|
||||||
case 37: SET_INTEGER_PARAM(0, CPad::GetPad(0)->LookAroundUpDown()); break;
|
|
||||||
case 38: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GuiLeft()); break;
|
|
||||||
case 39: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GuiRight()); break;
|
|
||||||
case 40: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GuiUp()); break;
|
|
||||||
case 41: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GuiDown()); break;
|
|
||||||
case 42: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GuiSelect()); break;
|
|
||||||
case 43: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GuiBack()); break;
|
|
||||||
case 44: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetSkipCutscene()); if (GET_INTEGER_PARAM(0)) TheCamera.m_bIgnoreFadingStuffForMusic = false; break; // spectacular hack
|
|
||||||
}
|
|
||||||
StoreParameters(&m_nIp, 1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_NAVIGATION_ARROW:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 3);
|
|
||||||
// cNavArrow::SetTarget(GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(0)); // TODO, although it's unused
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_CLEAR_NAVIGATION_ARROW:
|
|
||||||
{
|
|
||||||
// cNavArrow::ClearTarget(); // TODO, although it's unused
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_CALL:
|
|
||||||
case COMMAND_CALLNOT:
|
|
||||||
{
|
|
||||||
m_anStack[m_nStackPointer++] = m_nIp | BIT(STACKVALUE_IS_FUNCTION_CALL_BIT) | ((command == COMMAND_CALLNOT) ? BIT(STACKVALUE_INVERT_RETURN_BIT) : 0);
|
|
||||||
uint8 nInputParams = CTheScripts::Read1ByteFromScript(&m_nIp);
|
|
||||||
uint8 nOutputParameters = CTheScripts::Read1ByteFromScript(&m_nIp);
|
|
||||||
uint8 nLocalsOffset = CTheScripts::Read1ByteFromScript(&m_nIp);
|
|
||||||
uint32 nIPBeforeParameters = m_nIp;
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
if (nInputParams)
|
|
||||||
CollectParameters(&m_nIp, nInputParams, &m_anLocalVariables[m_nLocalsPointer + nLocalsOffset]);
|
|
||||||
m_nLocalsPointer += nLocalsOffset;
|
|
||||||
m_anStack[m_nStackPointer - 1] |= (m_nIp - nIPBeforeParameters) << STACKVALUE_IP_PARAMS_OFFSET;
|
|
||||||
if (GET_INTEGER_PARAM(0) < 0)
|
|
||||||
m_nIp = CTheScripts::MainScriptSize - GET_INTEGER_PARAM(0);
|
|
||||||
else
|
|
||||||
m_nIp = GET_INTEGER_PARAM(0);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_IS_CAR_AUTOMOBILE:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pVehicle);
|
|
||||||
UpdateCompareFlag(pVehicle->GetModelIndex() >= MI_FIRST_VEHICLE && pVehicle->GetModelIndex() < MI_FERRY);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_IS_CAR_BIKE:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pVehicle);
|
|
||||||
UpdateCompareFlag(pVehicle->GetModelIndex() >= MI_ANGEL && pVehicle->GetModelIndex() <= MI_SANCHEZ);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
case COMMAND_IS_CAR_PLANE:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pVehicle);
|
|
||||||
UpdateCompareFlag(pVehicle->GetModelIndex() >= MI_AIRTRAIN && pVehicle->GetModelIndex() <= MI_DEADDODO);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_IS_CAR_HELI:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pVehicle);
|
|
||||||
UpdateCompareFlag(pVehicle->GetModelIndex() >= MI_ESCAPE && pVehicle->GetModelIndex() <= MI_CHOPPER);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#ifdef FIX_BUGS
|
|
||||||
case COMMAND_1476: // they DO have it in script
|
|
||||||
return 0;
|
|
||||||
#endif
|
|
||||||
case COMMAND_RETURN_IF_TRUE:
|
|
||||||
if (m_bCondResult) {
|
|
||||||
ReturnFromGosubOrFunction();
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
case COMMAND_RETURN_TRUE_IF_TRUE:
|
|
||||||
if (m_bCondResult) {
|
|
||||||
UpdateCompareFlag(false);
|
|
||||||
ReturnFromGosubOrFunction();
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
case COMMAND_SET_CHAR_ONLY_ALLOWED_TO_SIT_BEHIND:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pPed);
|
|
||||||
pPed->bOnlyAllowedToSitBehind = GET_INTEGER_PARAM(1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_RC_HELI_HEIGHT_LIMIT:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CVehicle::rcHeliHeightLimit = GET_FLOAT_PARAM(0);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_CREATE_SCRIPT_CORONA:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 9);
|
|
||||||
base::cSList<script_corona>::tSItem* pCorona = new base::cSList<script_corona>::tSItem();
|
|
||||||
pCorona->item.x = GET_FLOAT_PARAM(0);
|
|
||||||
pCorona->item.y = GET_FLOAT_PARAM(1);
|
|
||||||
pCorona->item.z = GET_FLOAT_PARAM(2);
|
|
||||||
pCorona->item.id = CTheScripts::NextScriptCoronaID++;
|
|
||||||
if (pCorona->item.z <= MAP_Z_LOW_LIMIT)
|
|
||||||
pCorona->item.z = CWorld::FindGroundZForCoord(pCorona->item.x, pCorona->item.y);
|
|
||||||
pCorona->item.size = GET_FLOAT_PARAM(3);
|
|
||||||
pCorona->item.r = GET_INTEGER_PARAM(6);
|
|
||||||
pCorona->item.g = GET_INTEGER_PARAM(7);
|
|
||||||
pCorona->item.b = GET_INTEGER_PARAM(8);
|
|
||||||
pCorona->item.type = GET_INTEGER_PARAM(4);
|
|
||||||
pCorona->item.flareType = GET_INTEGER_PARAM(5);
|
|
||||||
SET_INTEGER_PARAM(0, pCorona->item.id);
|
|
||||||
CTheScripts::mCoronas.Insert(pCorona);
|
|
||||||
StoreParameters(&m_nIp, 1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_REMOVE_SCRIPT_CORONA:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
for (base::cSList<script_corona>::tSItem* i = CTheScripts::mCoronas.first; i; i = i->next) {
|
|
||||||
if (i->item.id == GET_INTEGER_PARAM(0)) {
|
|
||||||
CTheScripts::mCoronas.Remove(i);
|
|
||||||
delete i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_IS_BOAT_IN_WATER:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CBoat* pVehicle = (CBoat*)CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pVehicle && pVehicle->IsBoat());
|
|
||||||
UpdateCompareFlag(pVehicle->bBoatInWater);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_IS_CAR_DRIVER_BEING_JACKED:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pVehicle);
|
|
||||||
UpdateCompareFlag(pVehicle->bIsBeingCarJacked);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_CHAR_ONLY_ALLOWED_TO_SIT_IN_FRONT:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pPed);
|
|
||||||
pPed->bOnlyAllowedToSitInFront = GET_INTEGER_PARAM(1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_CAR_TILTED_BY_CHAR:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
|
|
||||||
script_assert(pVehicle);
|
|
||||||
pVehicle->ApplyTurnForce(0.0f, 0.0f, CGeneral::GetRandomNumberInRange(-0.8f, -1.2f)* pPed->m_fMass,
|
|
||||||
pPed->GetPosition().x - pVehicle->GetPosition().x, pPed->GetPosition().y - pVehicle->GetPosition().y, 0.0f);
|
|
||||||
DMAudio.PlayOneShot(pVehicle->m_audioEntityId, SOUND_CAR_JERK, 0.0f);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_GET_WEAPON_TYPE_FOR_PICKUP_IN_AREA:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 4);
|
|
||||||
float X = GET_FLOAT_PARAM(0);
|
|
||||||
float Y = GET_FLOAT_PARAM(1);
|
|
||||||
float Z = GET_FLOAT_PARAM(2);
|
|
||||||
float radius = GET_FLOAT_PARAM(3);
|
|
||||||
int model = -1;
|
|
||||||
bool found = false;
|
|
||||||
for (uint32 i = 0; i < NUMPICKUPS; i++) {
|
|
||||||
CPickup* pPickup = &CPickups::aPickUps[i];
|
|
||||||
if (pPickup->m_eType != PICKUP_NONE) {
|
|
||||||
CVector fDist = pPickup->m_vecPos - CVector(X, Y, Z);
|
|
||||||
#ifndef FIX_BUGS // this breaks ALL pickups!
|
|
||||||
pPickup->m_eModelIndex = 4;
|
|
||||||
#endif
|
|
||||||
if (fDist.Magnitude() < radius && pPickup->m_pObject) {
|
|
||||||
found = true;
|
|
||||||
model = CPickups::WeaponForModel(pPickup->m_pObject->GetModelIndex());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
SET_INTEGER_PARAM(0, model);
|
|
||||||
StoreParameters(&m_nIp, 1);
|
|
||||||
}
|
|
||||||
case COMMAND_IS_PLAYER_USING_FIRST_PERSON_WEAPON_CAMERA:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
UpdateCompareFlag(TheCamera.Using1stPersonWeaponMode());
|
|
||||||
return 0;
|
|
||||||
//case COMMAND_1489:
|
|
||||||
//case COMMAND_1490:
|
|
||||||
//case COMMAND_1491:
|
|
||||||
case COMMAND_SET_DEBUG_MENU_ACTIVE:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
// this sets two values on PS2 and PSP, but not on mobile - TODO?
|
|
||||||
return 0;
|
|
||||||
case COMMAND_SET_DRAW_HUD:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CHud::m_Wants_To_Draw_Hud = (GET_INTEGER_PARAM(0) != 0);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_GET_RANDOM_CHAR_IN_AREA_NO_CHECKS:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 4);
|
|
||||||
int ped_handle = -1;
|
|
||||||
CVector pos = FindPlayerCoors();
|
|
||||||
float x1 = GET_FLOAT_PARAM(0);
|
|
||||||
float y1 = GET_FLOAT_PARAM(1);
|
|
||||||
float x2 = GET_FLOAT_PARAM(2);
|
|
||||||
float y2 = GET_FLOAT_PARAM(3);
|
|
||||||
int i = CPools::GetPedPool()->GetSize();
|
|
||||||
while (--i && ped_handle == -1) {
|
|
||||||
CPed* pPed = CPools::GetPedPool()->GetSlot(i);
|
|
||||||
if (!pPed)
|
|
||||||
continue;
|
|
||||||
if (pPed->bRemoveFromWorld)
|
|
||||||
continue;
|
|
||||||
if (pPed->bFadeOut)
|
|
||||||
continue;
|
|
||||||
if (pPed->m_nWaitState != WAITSTATE_FALSE)
|
|
||||||
continue;
|
|
||||||
if (!pPed->IsWithinArea(x1, y1, x2, y2))
|
|
||||||
continue;
|
|
||||||
if (pos.z - PED_FIND_Z_OFFSET > pPed->GetPosition().z)
|
|
||||||
continue;
|
|
||||||
if (pos.z + PED_FIND_Z_OFFSET < pPed->GetPosition().z)
|
|
||||||
continue;
|
|
||||||
ped_handle = CPools::GetPedPool()->GetIndex(pPed);
|
|
||||||
CTheScripts::LastRandomPedId = ped_handle;
|
|
||||||
pPed->CharCreatedBy = MISSION_CHAR;
|
|
||||||
pPed->bRespondsToThreats = false;
|
|
||||||
++CPopulation::ms_nTotalMissionPeds;
|
|
||||||
if (m_bIsMissionScript)
|
|
||||||
CTheScripts::MissionCleanUp.AddEntityToList(ped_handle, CLEANUP_CHAR);
|
|
||||||
}
|
|
||||||
SET_INTEGER_PARAM(0, ped_handle);
|
|
||||||
StoreParameters(&m_nIp, 1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_GET_RANDOM_CAR_IN_AREA_NO_CHECKS_NO_SAVE:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 4);
|
|
||||||
int handle = -1;
|
|
||||||
uint32 i = CPools::GetVehiclePool()->GetSize();
|
|
||||||
float infX = GET_FLOAT_PARAM(0);
|
|
||||||
float infY = GET_FLOAT_PARAM(1);
|
|
||||||
float supX = GET_FLOAT_PARAM(2);
|
|
||||||
float supY = GET_FLOAT_PARAM(3);
|
|
||||||
while (i-- && handle == -1) {
|
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetSlot(i);
|
|
||||||
if (!pVehicle)
|
|
||||||
continue;
|
|
||||||
if (!pVehicle->IsWithinArea(infX, infY, supX, supY))
|
|
||||||
continue;
|
|
||||||
handle = CPools::GetVehiclePool()->GetIndex(pVehicle);
|
|
||||||
}
|
|
||||||
SET_INTEGER_PARAM(0, handle);
|
|
||||||
StoreParameters(&m_nIp, 1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_STORE_CAR_COLLIDED_WITH_NO_SAVE:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
if (!pVehicle)
|
|
||||||
printf("STORE_CAR_COLLIDED_WITH_NO_SAVE - Car doesn\'t exist\n");
|
|
||||||
else {
|
|
||||||
if (pVehicle->m_pLastDamageEntity == nil)
|
|
||||||
SET_INTEGER_PARAM(0, -1);
|
|
||||||
else {
|
|
||||||
// what they are doing is not very safe as m_pLastDamageEntity doesn't have to be CVehicle
|
|
||||||
#ifdef FIX_BUGS
|
|
||||||
if (!pVehicle->m_pLastDamageEntity->IsVehicle()) {
|
|
||||||
SET_INTEGER_PARAM(0, -1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
SET_INTEGER_PARAM(0, CPools::GetVehiclePool()->GetIndex((CVehicle*)pVehicle->m_pLastDamageEntity));
|
|
||||||
pVehicle->m_pLastDamageEntity = nil;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
StoreParameters(&m_nIp, 1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
script_assert(0);
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
|
@ -23,759 +23,4 @@
|
||||||
#include "Vehicle.h"
|
#include "Vehicle.h"
|
||||||
#include "World.h"
|
#include "World.h"
|
||||||
|
|
||||||
// LCS: file done except TODOs (also check commented out strings)
|
|
||||||
|
|
||||||
int8 CRunningScript::ProcessCommands1500To1599(int32 command)
|
|
||||||
{
|
|
||||||
switch (command) {
|
|
||||||
case COMMAND_DISABLE_FERRY_PATH:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CFerry::DissableFerryPath(GET_INTEGER_PARAM(0));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_ENABLE_FERRY_PATH:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CFerry::EnableFerryPath(GET_INTEGER_PARAM(0));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_GET_CLOSEST_DOCKED_FERRY:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CFerry* pFerry = CFerry::GetClosestFerry(GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(1));
|
|
||||||
int id = -1;
|
|
||||||
if (pFerry && pFerry->IsDocked())
|
|
||||||
id = pFerry->m_nFerryId;
|
|
||||||
SET_INTEGER_PARAM(0, id);
|
|
||||||
StoreParameters(&m_nIp, 1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_OPEN_FERRY_DOOR:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pFerry);
|
|
||||||
pFerry->OpenDoor();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_CLOSE_FERRY_DOOR:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pFerry);
|
|
||||||
pFerry->CloseDoor();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_IS_FERRY_DOOR_OPEN:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pFerry);
|
|
||||||
UpdateCompareFlag(pFerry->IsDoorOpen());
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_IS_FERRY_DOOR_CLOSED:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pFerry);
|
|
||||||
UpdateCompareFlag(pFerry->IsDoorClosed());
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SKIP_FERRY_TO_NEXT_DOCK:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pFerry);
|
|
||||||
pFerry->SkipFerryToNextDock();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_CHAR_DROPS_WEAPONS_ON_DEATH:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pPed);
|
|
||||||
pPed->bDropsWeaponsOnDeath = (GET_INTEGER_PARAM(1) != 0);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_IS_CHAR_CROUCHING:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pPed);
|
|
||||||
UpdateCompareFlag(pPed->bIsDucking);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_GET_FERRY_BOARDING_SPACE:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 4);
|
|
||||||
CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pFerry);
|
|
||||||
CVector space = pFerry->GetBoardingSpace((CFerry::eSpaceUse)GET_INTEGER_PARAM(1), (CFerry::eSpaceStyle)GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3));
|
|
||||||
SET_FLOAT_PARAM(0, space.x);
|
|
||||||
SET_FLOAT_PARAM(1, space.y);
|
|
||||||
StoreParameters(&m_nIp, 2);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_GET_FERRY_HEADING:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pFerry);
|
|
||||||
float fHeading = Atan2(-pFerry->GetForward().x, pFerry->GetForward().y);
|
|
||||||
SET_FLOAT_PARAM(0, fHeading);
|
|
||||||
StoreParameters(&m_nIp, 1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_FERRIES_DISABLED:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CFerry::SetFerriesDisabled(GET_INTEGER_PARAM(1));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_COMPLETE_FERRY_DOOR_MOVEMENT:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pFerry);
|
|
||||||
pFerry->CompleteDorrMovement();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_OVERRIDE_CAR_REMOTE_CONTROL:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pVehicle);
|
|
||||||
pVehicle->SetStatus(STATUS_PLAYER_REMOTE);
|
|
||||||
CVehicle::bDisableRemoteDetonation = true;
|
|
||||||
CWorld::Players[CWorld::PlayerInFocus].m_pRemoteVehicle = pVehicle;
|
|
||||||
pVehicle->RegisterReference((CEntity**)&CWorld::Players[CWorld::PlayerInFocus].m_pRemoteVehicle);
|
|
||||||
if (pVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_HELI || pVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_PLANE) {
|
|
||||||
TheCamera.TakeControl(pVehicle, CCam::MODE_CAM_ON_A_STRING, GET_INTEGER_PARAM(1) ? INTERPOLATION : JUMP_CUT, CAMCONTROL_SCRIPT);
|
|
||||||
TheCamera.SetZoomValueCamStringScript(0);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
TheCamera.TakeControl(pVehicle, CCam::MODE_1STPERSON, GET_INTEGER_PARAM(1) ? INTERPOLATION : JUMP_CUT, CAMCONTROL_SCRIPT);
|
|
||||||
script_assert(pVehicle->IsCar());
|
|
||||||
((CAutomobile*)pVehicle)->Damage.m_bSmashedDoorDoesntClose = true;
|
|
||||||
}
|
|
||||||
if (m_bIsMissionScript)
|
|
||||||
CTheScripts::MissionCleanUp.RemoveEntityFromList(GET_INTEGER_PARAM(0), CLEANUP_CAR);
|
|
||||||
if (FindPlayerVehicle())
|
|
||||||
FindPlayerVehicle()->bCanBeDamaged = false;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_CANCEL_REMOTE_MODE:
|
|
||||||
{
|
|
||||||
if (FindPlayerVehicle())
|
|
||||||
FindPlayerVehicle()->bCanBeDamaged = true;
|
|
||||||
CRemote::TakeRemoteControlledCarFromPlayer(false);
|
|
||||||
CWorld::Players[CWorld::PlayerInFocus].field_D6 = false;
|
|
||||||
CWorld::Players[CWorld::PlayerInFocus].m_pRemoteVehicle = nil;
|
|
||||||
TheCamera.Restore();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_REGISTER_CAR_SOLD:
|
|
||||||
// CStats::CarsSold++;
|
|
||||||
return 0;
|
|
||||||
case COMMAND_ADD_MONEY_MADE_WITH_CAR_SALES:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
// CStats::MoneyMadeWithCarSales += GET_INTEGER_PARAM(0);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_SET_BRIDGE_STATE:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
#ifdef GTA_BRIDGE
|
|
||||||
/*
|
|
||||||
* 0 = locked
|
|
||||||
* 1 = unlocked
|
|
||||||
* 2 = operational
|
|
||||||
*/
|
|
||||||
switch (GET_INTEGER_PARAM(0)) {
|
|
||||||
case 0: CBridge::ForceBridgeState(STATE_BRIDGE_LOCKED); break;
|
|
||||||
case 1: CBridge::ForceBridgeState(STATE_BRIDGE_ALWAYS_UNLOCKED); break;
|
|
||||||
case 2:
|
|
||||||
if (CBridge::State == STATE_LIFT_PART_IS_DOWN || CBridge::State == STATE_BRIDGE_ALWAYS_UNLOCKED)
|
|
||||||
CBridge::ForceBridgeState(STATE_LIFT_PART_ABOUT_TO_MOVE_UP);
|
|
||||||
else
|
|
||||||
CBridge::ForceBridgeState(STATE_LIFT_PART_MOVING_DOWN);
|
|
||||||
break;
|
|
||||||
default: script_assert(false);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_OBJECT_TURN_SPEED:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 4);
|
|
||||||
CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pObject);
|
|
||||||
CVector vSpeed = GET_VECTOR_PARAM(1) / GAME_SPEED_TO_METERS_PER_SECOND;
|
|
||||||
pObject->SetTurnSpeed(vSpeed.x, vSpeed.y, vSpeed.z);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_OBJECT_MASS:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 4);
|
|
||||||
CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pObject);
|
|
||||||
pObject->m_fMass = GET_FLOAT_PARAM(1);
|
|
||||||
pObject->m_fTurnMass = GET_FLOAT_PARAM(2);
|
|
||||||
pObject->m_fAirResistance = GET_FLOAT_PARAM(3);
|
|
||||||
if (pObject->m_fMass < 99998.0f) {
|
|
||||||
pObject->bInfiniteMass = false;
|
|
||||||
pObject->m_phy_flagA08 = false;
|
|
||||||
pObject->bAffectedByGravity = true;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
pObject->bInfiniteMass = true;
|
|
||||||
pObject->m_phy_flagA08 = true;
|
|
||||||
pObject->bAffectedByGravity = false;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_HAS_CUTSCENE_LOADED:
|
|
||||||
UpdateCompareFlag(CCutsceneMgr::ms_cutsceneLoadStatus == CUTSCENE_LOADED);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_SET_UNIQUE_JUMPS_FOUND:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CStats::NumberOfUniqueJumpsFound = GET_INTEGER_PARAM(0);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_SET_HIDDEN_PACKAGES_COLLECTED:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CWorld::Players[CWorld::PlayerInFocus].m_nCollectedPackages = GET_INTEGER_PARAM(0);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_BIKE_SOLD:
|
|
||||||
// CStats::BikesSold++;
|
|
||||||
return 0;
|
|
||||||
case COMMAND_ADD_MONEY_MADE_WITH_BIKE_SALES:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
// CStats::MoneyMadeWithBikeSales += GET_INTEGER_PARAM(0);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_PACKAGE_SMUGGLED:
|
|
||||||
// CStats::PackagesSmuggled++;
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_SMUGGLER_WASTED:
|
|
||||||
// CStats::SmugglersWasted++;
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_FASTEST_SMUGGLING_TIME:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
// CStats::RegisterFastestSmugglingTime(GET_INTEGER_PARAM(0));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_SET_CHAR_DIVE_FROM_CAR:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
|
|
||||||
script_assert(pPed);
|
|
||||||
pPed->bRespondsToThreats = true;
|
|
||||||
pPed->SetEvasiveDive(pVehicle, 1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_WRECK_CAR:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CAutomobile* pVehicle = (CAutomobile*)CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pVehicle);
|
|
||||||
script_assert(pVehicle->IsCar());
|
|
||||||
pVehicle->m_fHealth = 0.0f;
|
|
||||||
pVehicle->SetStatus(STATUS_WRECKED);
|
|
||||||
pVehicle->bRenderScorched = true;
|
|
||||||
pVehicle->Damage.FuckCarCompletely();
|
|
||||||
if (pVehicle->GetModelIndex() != MI_RCBANDIT) {
|
|
||||||
pVehicle->SetBumperDamage(CAR_BUMP_FRONT, VEHBUMPER_FRONT);
|
|
||||||
pVehicle->SetBumperDamage(CAR_BUMP_REAR, VEHBUMPER_REAR);
|
|
||||||
pVehicle->SetDoorDamage(CAR_BONNET, DOOR_BONNET);
|
|
||||||
pVehicle->SetDoorDamage(CAR_BOOT, DOOR_BOOT);
|
|
||||||
pVehicle->SetDoorDamage(CAR_DOOR_LF, DOOR_FRONT_LEFT);
|
|
||||||
pVehicle->SetDoorDamage(CAR_DOOR_RF, DOOR_FRONT_RIGHT);
|
|
||||||
pVehicle->SetDoorDamage(CAR_DOOR_LR, DOOR_REAR_LEFT);
|
|
||||||
pVehicle->SetDoorDamage(CAR_DOOR_RR, DOOR_REAR_RIGHT);
|
|
||||||
}
|
|
||||||
pVehicle->m_bombType = CARBOMB_NONE;
|
|
||||||
pVehicle->bEngineOn = false;
|
|
||||||
pVehicle->bLightsOn = false;
|
|
||||||
pVehicle->m_fHealth = 0.0f;
|
|
||||||
pVehicle->m_nBombTimer = 0;
|
|
||||||
pVehicle->m_bSirenOrAlarm = false;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_ADD_MONEY_MADE_IN_COACH:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
// CStats::MoneyMadeInCoach += GET_INTEGER_PARAM(0);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_ADD_MONEY_MADE_COLLECTING_TRASH:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
// CStats::MoneyMadeCollectingTrash += GET_INTEGER_PARAM(0);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_HITMAN_KILLED:
|
|
||||||
// CStats::HitmenKilled++;
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_GUARDIAN_ANGEL_MISSION_PASSED:
|
|
||||||
// CStats::GaurdianAngelMissionsPassed++;
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_HIGHEST_GUARDIAN_ANGEL_JUSTICE_DISHED:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
// CStats::RegisterHighestGaurdianAngelJusticeDished(GET_INTEGER_PARAM(0));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_BEST_BANDIT_LAP_TIME:
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
// CStats::RegisterBestBanditLapTime(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_BEST_BANDIT_POSITION:
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
// CStats::RegisterBestBanditPosition(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_MOST_TIME_LEFT_TRAIN_RACE:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
// CStats::RegisterMostTimeLeftTrainRace(GET_INTEGER_PARAM(0));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_HIGHEST_TRAIN_CASH_EARNED:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
// CStats::RegisterHighestTrainCashEarned(GET_INTEGER_PARAM(0));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_FASTEST_HELI_RACE_TIME:
|
|
||||||
// CStats::RegisterFastestHeliRaceTime(GET_INTEGER_PARAM(0));
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_BEST_HELI_RACE_POSITION:
|
|
||||||
// CStats::RegisterBestHeliRacePosition(GET_INTEGER_PARAM(0));
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_OUTFIT_CHANGE:
|
|
||||||
// CStats::NumberOutfitChanges++;
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_STREET_RACE_FASTEST_TIME:
|
|
||||||
// CStats::RegisterStreetRaceFastestTime(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_STREET_RACE_FASTEST_LAP:
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
// CStats::RegisterStreetRaceFastestLap(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_STREET_RACE_BEST_POSITION:
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
// CStats::RegisterStreetRaceBestPosition(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
bool result = false;
|
|
||||||
if (!pObject) {
|
|
||||||
printf("HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON - Object doesn\'t exist\n");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (GET_INTEGER_PARAM(1) == WEAPONTYPE_ANYMELEE || GET_INTEGER_PARAM(1) == WEAPONTYPE_ANYWEAPON)
|
|
||||||
result = CheckDamagedWeaponType(pObject->m_nLastWeaponToDamage, GET_INTEGER_PARAM(1));
|
|
||||||
else
|
|
||||||
result = GET_INTEGER_PARAM(1) == pObject->m_nLastWeaponToDamage;
|
|
||||||
}
|
|
||||||
UpdateCompareFlag(result);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_CLEAR_OBJECT_LAST_WEAPON_DAMAGE:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
if (!pObject)
|
|
||||||
printf("CLEAR_OBJECT_LAST_WEAPON_DAMAGE - pObject doesn\'t exist");
|
|
||||||
else
|
|
||||||
pObject->m_nLastWeaponToDamage = -1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_CAR_TURN_SPEED:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 4);
|
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pVehicle);
|
|
||||||
CVector vSpeed = GET_VECTOR_PARAM(1) / GAME_SPEED_TO_METERS_PER_SECOND;
|
|
||||||
pVehicle->SetTurnSpeed(vSpeed.x, vSpeed.y, vSpeed.z);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_CAR_MOVE_SPEED:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 4);
|
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pVehicle);
|
|
||||||
CVector vSpeed = GET_VECTOR_PARAM(1) / GAME_SPEED_TO_METERS_PER_SECOND;
|
|
||||||
pVehicle->SetMoveSpeed(vSpeed);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_OBJECT_PROOFS:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 6);
|
|
||||||
CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pObject);
|
|
||||||
pObject->bBulletProof = (GET_INTEGER_PARAM(1) != 0);
|
|
||||||
pObject->bFireProof = (GET_INTEGER_PARAM(2) != 0);
|
|
||||||
pObject->bExplosionProof = (GET_INTEGER_PARAM(3) != 0);
|
|
||||||
pObject->bCollisionProof = (GET_INTEGER_PARAM(4) != 0);
|
|
||||||
pObject->bMeleeProof = (GET_INTEGER_PARAM(5) != 0);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_GET_CAMERA_PED_ZOOM_INDICATOR:
|
|
||||||
if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_FOLLOWPED)
|
|
||||||
SET_INTEGER_PARAM(0, TheCamera.PedZoomIndicator);
|
|
||||||
else
|
|
||||||
SET_INTEGER_PARAM(0, -1);
|
|
||||||
StoreParameters(&m_nIp, 1);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_SET_CAMERA_PED_ZOOM_INDICATOR:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_FOLLOWPED)
|
|
||||||
TheCamera.PedZoomIndicator = GET_INTEGER_PARAM(0);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_GET_CAR_ORIENTATION:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pVehicle);
|
|
||||||
SET_FLOAT_PARAM(1, LimitAngleOnCircle(RADTODEG(Asin(pVehicle->GetForward().z))));
|
|
||||||
SET_FLOAT_PARAM(2, LimitAngleOnCircle(RADTODEG(Atan2(-pVehicle->GetForward().x, pVehicle->GetForward().y))));
|
|
||||||
SET_FLOAT_PARAM(0, LimitAngleOnCircle(RADTODEG(Atan2(-pVehicle->GetRight().z, pVehicle->GetUp().z))));
|
|
||||||
StoreParameters(&m_nIp, 3);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_CAR_ORIENTATION:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 4);
|
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pVehicle);
|
|
||||||
pVehicle->SetOrientation(DEGTORAD(GET_FLOAT_PARAM(2)), DEGTORAD(GET_FLOAT_PARAM(1)), DEGTORAD(GET_FLOAT_PARAM(3)));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_IS_DEBUG_MENU_ON:
|
|
||||||
// on PS2 it's something actual - TODO
|
|
||||||
UpdateCompareFlag(false);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_OPEN_VAN_BACK_DOORS:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
assert(pVehicle);
|
|
||||||
pVehicle->ProcessOpenDoor(CAR_DOOR_RR, ANIM_STD_VAN_OPEN_DOOR_REAR_RHS, 1.0f);
|
|
||||||
pVehicle->ProcessOpenDoor(CAR_DOOR_LR, ANIM_STD_VAN_OPEN_DOOR_REAR_LHS, 1.0f);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_GET_CHAR_THREAT_CHAR:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pPed);
|
|
||||||
SET_INTEGER_PARAM(0, 0);
|
|
||||||
CEntity* pThreat = pPed->m_threatEntity;
|
|
||||||
if (pThreat && pThreat->IsPed())
|
|
||||||
SET_INTEGER_PARAM(0, CPools::GetPedPool()->GetIndex((CPed*)pThreat));
|
|
||||||
StoreParameters(&m_nIp, 1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_FREEZE_PED_ZOOM_SWITCH:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
TheCamera.m_bFreezePedZoomSwitch = GET_INTEGER_PARAM(0);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_SET_OBJECT_RENDERED_DAMAGED:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pObject);
|
|
||||||
pObject->bRenderDamaged = true;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_GET_RANDOM_CAR_IN_AREA_NO_SAVE:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 5);
|
|
||||||
int handle = -1;
|
|
||||||
uint32 i = CPools::GetVehiclePool()->GetSize();
|
|
||||||
float infX = GET_FLOAT_PARAM(0);
|
|
||||||
float infY = GET_FLOAT_PARAM(1);
|
|
||||||
float supX = GET_FLOAT_PARAM(2);
|
|
||||||
float supY = GET_FLOAT_PARAM(3);
|
|
||||||
while (i-- && handle == -1) {
|
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetSlot(i);
|
|
||||||
if (!pVehicle)
|
|
||||||
continue;
|
|
||||||
if (pVehicle->GetVehicleAppearance() != VEHICLE_APPEARANCE_CAR && pVehicle->GetVehicleAppearance() != VEHICLE_APPEARANCE_BIKE)
|
|
||||||
continue;
|
|
||||||
#ifdef FIX_BUGS
|
|
||||||
if (pVehicle->m_fHealth <= 0.0f)
|
|
||||||
#else
|
|
||||||
if (pVehicle->m_fHealth == 0.0f)
|
|
||||||
#endif
|
|
||||||
continue;
|
|
||||||
if (pVehicle->GetModelIndex() != GET_INTEGER_PARAM(4) && GET_INTEGER_PARAM(4) >= 0)
|
|
||||||
continue;
|
|
||||||
if (pVehicle->VehicleCreatedBy != RANDOM_VEHICLE)
|
|
||||||
continue;
|
|
||||||
if (!pVehicle->IsWithinArea(infX, infY, supX, supY))
|
|
||||||
continue;
|
|
||||||
handle = CPools::GetVehiclePool()->GetIndex(pVehicle);
|
|
||||||
}
|
|
||||||
SET_INTEGER_PARAM(0, handle);
|
|
||||||
StoreParameters(&m_nIp, 1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_IS_PLAYER_MADE_SAFE:
|
|
||||||
{
|
|
||||||
UpdateCompareFlag(CPad::GetPad(0)->IsPlayerControlsDisabledBy(PLAYERCONTROL_PLAYERINFO));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_PRINT_IF_FREE:
|
|
||||||
{
|
|
||||||
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
//CMessages::AddMessageIfFree(text, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)); TODO
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_IS_E3_BUILD:
|
|
||||||
UpdateCompareFlag(false);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_DECLARE_FORT_STAUNTON_DESTROYED_FLAG:
|
|
||||||
CTheScripts::FSDestroyedFlag = (uint8*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - CTheScripts::ScriptSpace;
|
|
||||||
return 0;
|
|
||||||
case COMMAND_CLEAR_BIG_MESSAGES:
|
|
||||||
//CMessages::ClearBigMessagesOnly(); TODO
|
|
||||||
//CHud::ClearBigMessagesExcept(2, 2); TODO
|
|
||||||
CGarages::MessageEndTime = CGarages::MessageStartTime;
|
|
||||||
return 0;
|
|
||||||
case COMMAND_CLEAR_AREA_OF_OBJECTS:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 6);
|
|
||||||
uint32 i = CPools::GetObjectPool()->GetSize();
|
|
||||||
float infX = GET_FLOAT_PARAM(0);
|
|
||||||
float infY = GET_FLOAT_PARAM(1);
|
|
||||||
float infZ = GET_FLOAT_PARAM(2);
|
|
||||||
float supX = GET_FLOAT_PARAM(3);
|
|
||||||
float supY = GET_FLOAT_PARAM(4);
|
|
||||||
float supZ = GET_FLOAT_PARAM(5);
|
|
||||||
while (i--) {
|
|
||||||
CObject* pObject = CPools::GetObjectPool()->GetSlot(i);
|
|
||||||
if (pObject && pObject->CanBeDeleted() && pObject->IsWithinArea(infX, infY, infZ, supX, supY, supZ)) {
|
|
||||||
pObject->DeleteRwObject();
|
|
||||||
CWorld::Remove(pObject);
|
|
||||||
delete pObject;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
i = CPools::GetDummyPool()->GetSize();
|
|
||||||
while (i--) {
|
|
||||||
CDummy* pDummy = CPools::GetDummyPool()->GetSlot(i);
|
|
||||||
if (pDummy && pDummy->IsObject() && pDummy->IsWithinArea(infX, infY, infZ, supX, supY, supZ)) {
|
|
||||||
pDummy->DeleteRwObject();
|
|
||||||
CWorld::Remove(pDummy);
|
|
||||||
delete pDummy;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_LOAD_NON_STANDARD_PED_ANIM:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CPed::LoadNonStandardPedAnim((eWaitState)GET_INTEGER_PARAM(0));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_UNLOAD_NON_STANDARD_PED_ANIM:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CPed::UnloadNonStandardPedAnim((eWaitState)GET_INTEGER_PARAM(0));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_1566:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_BUILD_WORLD_GEOMETRY:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
if (/*gBuildWorldGeom*/ false) {
|
|
||||||
//base::cWorldGeom::GetInstance()->Build(GET_INTEGER_PARAM(0));
|
|
||||||
UpdateCompareFlag(true);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
UpdateCompareFlag(false);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
case COMMAND_STORE_BUILDING_SWAP:
|
|
||||||
CollectParameters(&m_nIp, 4);
|
|
||||||
// base::cWorldGeom::GetInstance()->StoreBuildingSwap(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3) != 0);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_IS_MULTIPLAYER_ACTIVE:
|
|
||||||
#ifdef GTA_NETWORK
|
|
||||||
UpdateCompareFlag(gIsMultiplayerGame);
|
|
||||||
#else
|
|
||||||
UpdateCompareFlag(false);
|
|
||||||
#endif
|
|
||||||
return 0;
|
|
||||||
case COMMAND_GET_MULTIPLAYER_MODE:
|
|
||||||
SET_INTEGER_PARAM(0, 0); // TODO
|
|
||||||
StoreParameters(&m_nIp, 1);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_MULTIPLAYER_SCRIPT_DONE:
|
|
||||||
printf("COMMAND_MULTIPLAYER_SCRIPT_DONE\n");
|
|
||||||
//gbStartingScriptsFromLua = false; TODO?
|
|
||||||
return 0;
|
|
||||||
case COMMAND_IS_MULTIPLAYER_SERVER:
|
|
||||||
UpdateCompareFlag(false); // TODO?
|
|
||||||
return 0;
|
|
||||||
case COMMAND_IS_MULTIPLAYER_TEAM_GAME:
|
|
||||||
UpdateCompareFlag(false); // TODO?
|
|
||||||
return 0;
|
|
||||||
case COMMAND_GET_MULTIPLAYER_TEAM_ID:
|
|
||||||
SET_INTEGER_PARAM(0, 0); // TODO
|
|
||||||
StoreParameters(&m_nIp, 1);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_DOES_SHORTCUT_TAXI_EXIST:
|
|
||||||
UpdateCompareFlag(CGameLogic::pShortCutTaxi != nil);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_SET_ONSCREEN_TIMER_COLOUR:
|
|
||||||
CollectParameters(&m_nIp, 4);
|
|
||||||
gbColour = CRGBA(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_SET_ONSCREEN_TIMER_BACKGROUND_COLOUR:
|
|
||||||
CollectParameters(&m_nIp, 4);
|
|
||||||
gbColour2 = CRGBA(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REMOVE_CAR_BOOT:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pVehicle);
|
|
||||||
script_assert(pVehicle->IsCar());
|
|
||||||
CAutomobile* pAutomobile = (CAutomobile*)pVehicle;
|
|
||||||
pAutomobile->Damage.SetDoorStatus(DOOR_BOOT, DOOR_STATUS_MISSING);
|
|
||||||
pAutomobile->SetDoorDamage(CAR_BOOT, DOOR_BOOT, true);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_ADD_POINT_3D_MARKER:
|
|
||||||
{
|
|
||||||
uint32 ip = m_nIp;
|
|
||||||
uint32 id = (uint32)(uintptr)GetPointerToScriptVariable(&ip, 0);
|
|
||||||
static CVector vPreviousLocation;
|
|
||||||
CollectParameters(&m_nIp, 7);
|
|
||||||
CVector pos = GET_VECTOR_PARAM(0);
|
|
||||||
if (pos.z <= MAP_Z_LOW_LIMIT)
|
|
||||||
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
|
|
||||||
if (vPreviousLocation != pos) {
|
|
||||||
//C3dMarkers::CopyMarker(id, id - 1, 1, 1);
|
|
||||||
}
|
|
||||||
// TODO: 5 is not a valid type
|
|
||||||
//C3dMarkers::PlaceMarker(id, 5, pos, GET_FLOAT_PARAM(3) * 0.7f, GET_INTEGER_PARAM(4), GET_INTEGER_PARAM(5), GET_INTEGER_PARAM(6), 255, 128, 0.0f, 1); // TODO: 0, 100.0f, 1, 0
|
|
||||||
vPreviousLocation = pos;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_GET_VECTOR_FROM_MULTIPLAYER:
|
|
||||||
SET_VECTOR_PARAM(0, gVectorSetInLua);
|
|
||||||
StoreParameters(&m_nIp, 3);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_PRINT_HELP_ALWAYS:
|
|
||||||
{
|
|
||||||
// CHud::mAlwaysAllowHelpText = true; // TODO
|
|
||||||
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
|
|
||||||
CHud::SetHelpMessage(text, false); // + false, true
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_PRINT_HELP_FOREVER_ALWAYS:
|
|
||||||
{
|
|
||||||
// CHud::mAlwaysAllowHelpText = true; // TODO
|
|
||||||
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
|
|
||||||
CHud::SetHelpMessage(text, false, true); // + true
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SWITCH_FERRY_COLLISION:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CFerry::SwitchFerryCollision(GET_INTEGER_PARAM(0));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_SET_CHAR_MAX_HEALTH:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pPed);
|
|
||||||
pPed->m_fHealth = GET_INTEGER_PARAM(1);
|
|
||||||
pPed->m_fMaxHealth = GET_INTEGER_PARAM(1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_CHAR_SHOOT_TIMER:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pPed);
|
|
||||||
pPed->m_nScriptShootTimer = GET_INTEGER_PARAM(1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_CHAR_ATTACK_TIMER:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pPed);
|
|
||||||
pPed->m_nScriptAttackTimer = GET_INTEGER_PARAM(1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_HELI_ROTOR_BLADES_FULLSPEED:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CAutomobile* pHeli = (CAutomobile*)CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pHeli);
|
|
||||||
if (pHeli->GetVehicleAppearance() == VEHICLE_APPEARANCE_HELI)
|
|
||||||
pHeli->m_aWheelSpeed[1] = 0.22f;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_CRUSHER_REWARD_MULTIPLIER:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
CGarages::CrusherRewardMultiplier = GET_INTEGER_PARAM(0);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SWAP_BUILDINGS:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
// base::cWorldStream::Instance()->SwapBuilding(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_STREAM_BUILDING_SWAPS:
|
|
||||||
{
|
|
||||||
// UpdateCompareFlag(base::cWorldStream::Instance()->StreamBuildingSwaps());
|
|
||||||
UpdateCompareFlag(true);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_IS_WORLD_STREAMING_COMPLETE:
|
|
||||||
{
|
|
||||||
// UpdateCompareFlag(base::cWorldStream::Instance()->IsStreamingComplet());
|
|
||||||
UpdateCompareFlag(true);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SWAP_TO_STREAMED_SECTOR:
|
|
||||||
{
|
|
||||||
// base::cWorldStream::Instance()->SwapToStreamedSector();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_SET_CHAR_ATTACKS_PLAYER_WITH_COPS:
|
|
||||||
{
|
|
||||||
CollectParameters(&m_nIp, 2);
|
|
||||||
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
|
|
||||||
script_assert(pPed);
|
|
||||||
pPed->bAttacksPlayerWithCops = (GET_INTEGER_PARAM(1) != 0);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case COMMAND_REGISTER_FACE_PLANT_DISTANCE:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
//CStats::LongestFacePlantDist = Max(CStats::LongestFacePlantDist, GET_FLOAT_PARAM(0));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_MAX_SECONDS_ON_CARNAGE_LEFT:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
//CStats::MaxSecondsOnCarnageLeft = Max(CStats::MaxSecondsOnCarnageLeft, GET_INTEGER_PARAM(0));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_MAX_KILLS_ON_RC_TRIAD:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
//CStats::MaxKillsOnRcTriad = Max(CStats::MaxKillsOnRcTriad, GET_INTEGER_PARAM(0));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_REGISTER_HIGHEST_LEVEL_SLASH_TV:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
//CStats::HighestLevelSlashTv = Max(CStats::HighestLevelSlashTv, GET_INTEGER_PARAM(0));
|
|
||||||
return 0;
|
|
||||||
case COMMAND_ADD_MONEY_MADE_WITH_SLASH_TV:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
//CStats::MoneyMadeWithSlashTv += GET_INTEGER_PARAM(0);
|
|
||||||
return 0;
|
|
||||||
case COMMAND_ADD_TOTAL_KILLS_ON_SLASH_TV:
|
|
||||||
CollectParameters(&m_nIp, 1);
|
|
||||||
//CStats::TotalKillsOnSlashTV += GET_INTEGER_PARAM(0);
|
|
||||||
return 0;
|
|
||||||
default:
|
|
||||||
script_assert(0);
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load diff
|
@ -24,8 +24,8 @@ uint32 CRunningScript::storedIp;
|
||||||
#define REGISTER_COMMAND(command, in, out, cond, ovrd, visual) { command, #command, in, out, cond, ovrd, visual }
|
#define REGISTER_COMMAND(command, in, out, cond, ovrd, visual) { command, #command, in, out, cond, ovrd, visual }
|
||||||
#define INPUT_ARGUMENTS(...) { __VA_ARGS__ ARGTYPE_NONE }
|
#define INPUT_ARGUMENTS(...) { __VA_ARGS__ ARGTYPE_NONE }
|
||||||
#define OUTPUT_ARGUMENTS(...) { __VA_ARGS__ ARGTYPE_NONE }
|
#define OUTPUT_ARGUMENTS(...) { __VA_ARGS__ ARGTYPE_NONE }
|
||||||
const tScriptCommandData commands[] = {
|
const tScriptCommandData commands[1] = {
|
||||||
REGISTER_COMMAND(COMMAND_NOP, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
|
/*REGISTER_COMMAND(COMMAND_NOP, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
|
||||||
REGISTER_COMMAND(COMMAND_WAIT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
|
REGISTER_COMMAND(COMMAND_WAIT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
|
||||||
REGISTER_COMMAND(COMMAND_GOTO, INPUT_ARGUMENTS(ARGTYPE_LABEL,), OUTPUT_ARGUMENTS(), false, -1, ""),
|
REGISTER_COMMAND(COMMAND_GOTO, INPUT_ARGUMENTS(ARGTYPE_LABEL,), OUTPUT_ARGUMENTS(), false, -1, ""),
|
||||||
REGISTER_COMMAND(COMMAND_SHAKE_CAM, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
|
REGISTER_COMMAND(COMMAND_SHAKE_CAM, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
|
||||||
|
@ -1686,12 +1686,13 @@ const tScriptCommandData commands[] = {
|
||||||
REGISTER_COMMAND(COMMAND_PRINT_HELP_FOREVER_ALWAYS_NO_BRIEF, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
|
REGISTER_COMMAND(COMMAND_PRINT_HELP_FOREVER_ALWAYS_NO_BRIEF, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
|
||||||
REGISTER_COMMAND(COMMAND_SET_CAR_IS_REWARD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
|
REGISTER_COMMAND(COMMAND_SET_CAR_IS_REWARD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
|
||||||
REGISTER_COMMAND(COMMAND_FREEZE_ALL_PLAYER_FOLLOWERS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
|
REGISTER_COMMAND(COMMAND_FREEZE_ALL_PLAYER_FOLLOWERS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
|
||||||
|
*/
|
||||||
};
|
};
|
||||||
#undef REGISTER_COMMAND
|
#undef REGISTER_COMMAND
|
||||||
#undef INPUT_ARGUMENTS
|
#undef INPUT_ARGUMENTS
|
||||||
#undef OUTPUT_ARGUMENTS
|
#undef OUTPUT_ARGUMENTS
|
||||||
|
|
||||||
static_assert(ARRAY_SIZE(commands) == LAST_SCRIPT_COMMAND, "commands array not filled");
|
///////////////static_assert(ARRAY_SIZE(commands) == LAST_SCRIPT_COMMAND, "commands array not filled");
|
||||||
|
|
||||||
#if SCRIPT_LOG_FILE_LEVEL == 1 || SCRIPT_LOG_FILE_LEVEL == 2
|
#if SCRIPT_LOG_FILE_LEVEL == 1 || SCRIPT_LOG_FILE_LEVEL == 2
|
||||||
static FILE* dbg_log;
|
static FILE* dbg_log;
|
||||||
|
@ -1710,9 +1711,11 @@ static void PrintToLog(const char* format, ...)
|
||||||
va_end(va);
|
va_end(va);
|
||||||
|
|
||||||
#if SCRIPT_LOG_FILE_LEVEL == 1 || SCRIPT_LOG_FILE_LEVEL == 2
|
#if SCRIPT_LOG_FILE_LEVEL == 1 || SCRIPT_LOG_FILE_LEVEL == 2
|
||||||
|
#ifndef MAZAHAKA_DEBUG_NOFILE
|
||||||
if (dbg_log)
|
if (dbg_log)
|
||||||
fwrite(tmp, 1, strlen(tmp), dbg_log);
|
fwrite(tmp, 1, strlen(tmp), dbg_log);
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1733,11 +1736,34 @@ int32* GetPointerToScriptVariableForDebug(CRunningScript* pScript, uint32* pIp,
|
||||||
uint8 type = CTheScripts::Read1ByteFromScript(pIp);
|
uint8 type = CTheScripts::Read1ByteFromScript(pIp);
|
||||||
if (type >= ARGUMENT_GLOBAL_ARRAY) {
|
if (type >= ARGUMENT_GLOBAL_ARRAY) {
|
||||||
uint8 index_in_block = CTheScripts::Read1ByteFromScript(pIp);
|
uint8 index_in_block = CTheScripts::Read1ByteFromScript(pIp);
|
||||||
|
//debug("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&index_in_block %d\n", index_in_block);
|
||||||
|
//debug("pIp 0x%p\n", &CTheScripts::ScriptSpace[(*pIp) - 1]);
|
||||||
uint8 index_id = CTheScripts::Read1ByteFromScript(pIp);
|
uint8 index_id = CTheScripts::Read1ByteFromScript(pIp);
|
||||||
uint8 size = CTheScripts::Read1ByteFromScript(pIp);
|
uint8 size = CTheScripts::Read1ByteFromScript(pIp);
|
||||||
|
|
||||||
|
/*#ifdef MAZAHAKA_8_IN_LOCAL_VARS_SCRIPTS_ASSERT_STUFF
|
||||||
|
if(!(pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id] < size)) {
|
||||||
|
debug("index_in_block %d\n", index_in_block); // 94
|
||||||
|
debug("index_id %d\n", index_id); // 5
|
||||||
|
debug("size %d\n", size); // 4
|
||||||
|
debug("pIp %d\n", *pIp); // 4
|
||||||
|
debug("pIp 0x%p\n", &CTheScripts::ScriptSpace[(*pIp) - 3]); // 4
|
||||||
|
debug("\n");
|
||||||
|
// debug(""); // 4 breakpoint
|
||||||
|
}
|
||||||
|
#endif*/
|
||||||
|
|
||||||
script_assert(size > 0);
|
script_assert(size > 0);
|
||||||
|
#ifdef MAZAHAKA_8_IN_LOCAL_VARS_SCRIPTS_ASSERT_STUFF
|
||||||
|
//#if 0
|
||||||
|
//script_assert(pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id] < size); // :RAYS2_7614 0573: does_vehicle_exist $3934(5@,4)
|
||||||
|
// knowed issue
|
||||||
|
if(pScript->m_abScriptName && strcmp(pScript->m_abScriptName, "rays2")) { script_assert(pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id] < size); }
|
||||||
|
uint8 index = Min(pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id + 8], size - 1);
|
||||||
|
#else
|
||||||
script_assert(pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id] < size);
|
script_assert(pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id] < size);
|
||||||
uint8 index = Min(pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id], size - 1);
|
uint8 index = Min(pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id], size - 1);
|
||||||
|
#endif
|
||||||
sprintf(tmpstr, " $%d[%d@ (%d)]", ((int)(type - ARGUMENT_GLOBAL_ARRAY) << 8) + index_in_block, index_id, pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id]);
|
sprintf(tmpstr, " $%d[%d@ (%d)]", ((int)(type - ARGUMENT_GLOBAL_ARRAY) << 8) + index_in_block, index_id, pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id]);
|
||||||
strcat(buf, tmpstr);
|
strcat(buf, tmpstr);
|
||||||
return (int32*)&CTheScripts::ScriptSpace[4 * (((int)(type - ARGUMENT_GLOBAL_ARRAY) << 8) + index + index_in_block)];
|
return (int32*)&CTheScripts::ScriptSpace[4 * (((int)(type - ARGUMENT_GLOBAL_ARRAY) << 8) + index + index_in_block)];
|
||||||
|
@ -1751,9 +1777,26 @@ int32* GetPointerToScriptVariableForDebug(CRunningScript* pScript, uint32* pIp,
|
||||||
else if (type >= ARGUMENT_LOCAL_ARRAY) {
|
else if (type >= ARGUMENT_LOCAL_ARRAY) {
|
||||||
uint8 index_id = CTheScripts::Read1ByteFromScript(pIp);
|
uint8 index_id = CTheScripts::Read1ByteFromScript(pIp);
|
||||||
uint8 size = CTheScripts::Read1ByteFromScript(pIp);
|
uint8 size = CTheScripts::Read1ByteFromScript(pIp);
|
||||||
|
|
||||||
|
/*#ifdef MAZAHAKA_8_IN_LOCAL_VARS_SCRIPTS_ASSERT_STUFF
|
||||||
|
if(!(pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id] < size)) {
|
||||||
|
debug("index_id %d\n", index_id);
|
||||||
|
debug("size %d\n", size);
|
||||||
|
debug("pIp %d\n", *pIp); // 4
|
||||||
|
debug("pIp 0x%p\n", &CTheScripts::ScriptSpace[(*pIp) - 3]); // 4
|
||||||
|
debug("\n"); // debug(""); // 4 breakpoint
|
||||||
|
}
|
||||||
|
#endif*/
|
||||||
|
|
||||||
script_assert(size > 0);
|
script_assert(size > 0);
|
||||||
|
//#ifdef MAZAHAKA_8_IN_LOCAL_VARS_SCRIPTS_ASSERT_STUFF
|
||||||
|
#if 0
|
||||||
|
script_assert(pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id + 8] < size);
|
||||||
|
uint8 index = Min(pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id + 8], size - 1);
|
||||||
|
#else
|
||||||
script_assert(pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id] < size);
|
script_assert(pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id] < size);
|
||||||
uint8 index = Min(pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id], size - 1);
|
uint8 index = Min(pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id], size - 1);
|
||||||
|
#endif
|
||||||
sprintf(tmpstr, " %d@[%d@ (%d)]", (type - ARGUMENT_LOCAL_ARRAY), index_id, pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id]);
|
sprintf(tmpstr, " %d@[%d@ (%d)]", (type - ARGUMENT_LOCAL_ARRAY), index_id, pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id]);
|
||||||
strcat(buf, tmpstr);
|
strcat(buf, tmpstr);
|
||||||
return &pScript->m_anLocalVariables[pScript->m_nLocalsPointer + (type - ARGUMENT_LOCAL_ARRAY) + index];
|
return &pScript->m_anLocalVariables[pScript->m_nLocalsPointer + (type - ARGUMENT_LOCAL_ARRAY) + index];
|
||||||
|
@ -1772,6 +1815,8 @@ int32* GetPointerToScriptVariableForDebug(CRunningScript* pScript, uint32* pIp,
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//#if SCRIPT_LOG_FILE_LEVEL == 1 || SCRIPT_LOG_FILE_LEVEL == 2 // mazahaka tmp compile error without scriptdebug
|
||||||
|
#if 1
|
||||||
int CRunningScript::CollectParameterForDebug(char* buf, bool& var)
|
int CRunningScript::CollectParameterForDebug(char* buf, bool& var)
|
||||||
{
|
{
|
||||||
var = false;
|
var = false;
|
||||||
|
@ -1951,6 +1996,7 @@ void CRunningScript::LogAfterProcessingCommand(int32 command)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef MISSION_SWITCHER
|
#ifdef MISSION_SWITCHER
|
||||||
void
|
void
|
||||||
|
|
Loading…
Reference in a new issue