This commit is contained in:
Nikolay Korolev 2021-01-17 16:03:37 +03:00
parent 186441e7f5
commit 4703ec5164
18 changed files with 1866 additions and 953 deletions

View File

@ -46,7 +46,7 @@ enum {
struct CStoredDetailedAnimationState
{
uint8 aAnimId[NUM_MAIN_ANIMS_IN_REPLAY];
uint16 aAnimId[NUM_MAIN_ANIMS_IN_REPLAY];
uint8 aCurTime[NUM_MAIN_ANIMS_IN_REPLAY];
uint8 aSpeed[NUM_MAIN_ANIMS_IN_REPLAY];
uint8 aBlendAmount[NUM_MAIN_ANIMS_IN_REPLAY];
@ -54,7 +54,7 @@ struct CStoredDetailedAnimationState
uint8 aFunctionCallbackID[NUM_MAIN_ANIMS_IN_REPLAY];
uint16 aFlags[NUM_MAIN_ANIMS_IN_REPLAY];
uint8 aGroupId[NUM_MAIN_ANIMS_IN_REPLAY];
uint8 aAnimId2[NUM_PARTIAL_ANIMS_IN_REPLAY];
uint16 aAnimId2[NUM_PARTIAL_ANIMS_IN_REPLAY];
uint8 aCurTime2[NUM_PARTIAL_ANIMS_IN_REPLAY];
uint8 aSpeed2[NUM_PARTIAL_ANIMS_IN_REPLAY];
uint8 aBlendAmount2[NUM_PARTIAL_ANIMS_IN_REPLAY];

View File

@ -1231,7 +1231,7 @@ const tScriptCommandData commands[] = {
REGISTER_COMMAND(COMMAND_IS_CAR_PASSENGER_SEAT_FREE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), true, -1, ""),
REGISTER_COMMAND(COMMAND_GET_CHAR_IN_CAR_PASSENGER_SEAT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(ARGTYPE_INT, ), false, -1, ""),
REGISTER_COMMAND(COMMAND_SET_CHAR_IS_CHRIS_CRIMINAL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_START_CREDITS, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_START_CREDITS, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_STOP_CREDITS, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_ARE_CREDITS_FINISHED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""),
REGISTER_COMMAND(COMMAND_CREATE_SINGLE_PARTICLE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
@ -1319,7 +1319,7 @@ const tScriptCommandData commands[] = {
REGISTER_COMMAND(COMMAND_SHUT_CHAR_UP, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_SET_ENABLE_RC_DETONATE, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_SET_CAR_RANDOM_ROUTE_SEED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_IS_ANY_PICKUP_AT_COORDS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), true, -1, ""),
REGISTER_COMMAND(COMMAND_IS_ANY_PICKUP_AT_COORDS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), true, -1, ""),
REGISTER_COMMAND(COMMAND_GET_FIRST_PICKUP_COORDS, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), false, -1, ""),
REGISTER_COMMAND(COMMAND_GET_NEXT_PICKUP_COORDS, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), false, -1, ""),
REGISTER_COMMAND(COMMAND_REMOVE_ALL_CHAR_WEAPONS, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
@ -1592,24 +1592,24 @@ const tScriptCommandData commands[] = {
REGISTER_COMMAND(COMMAND_IS_AUSTRALIAN_GAME, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""),
REGISTER_COMMAND(COMMAND_DISARM_CAR_BOMB, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_IS_JAPANESE_GAME, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""),
REGISTER_COMMAND(COMMAND_1442, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1442, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1443, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1444, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1445, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1446, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1447, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1448, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1449, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1450, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1451, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1452, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1453, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_GET_DISTANCE_BETWEEN_2D_POINTS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ), false, -1, ""),
REGISTER_COMMAND(COMMAND_GET_DISTANCE_BETWEEN_3D_POINTS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ), false, -1, ""),
REGISTER_COMMAND(COMMAND_DOT_PRODUCT_2D, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ), false, -1, ""),
REGISTER_COMMAND(COMMAND_DOT_PRODUCT_3D, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ), false, -1, ""),
REGISTER_COMMAND(COMMAND_DEBUG_PRINT_WITH_1_FLOAT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_DEBUG_PRINT_WITH_2_FLOATS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_DEBUG_PRINT_WITH_3_FLOATS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_GET_PAD_BUTTON_STATE, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(ARGTYPE_INT, ), false, -1, ""),
REGISTER_COMMAND(COMMAND_SET_NAVIGATION_ARROW, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_CLEAR_NAVIGATION_ARROW, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_CALL, INPUT_ARGUMENTS(ARGTYPE_FUNCTION, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_NOTCALL, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1456, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1457, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1458, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1459, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_CALLNOT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_IS_CAR_AUTOMOBILE, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), true, -1, ""),
REGISTER_COMMAND(COMMAND_IS_CAR_BIKE, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), true, -1, ""),
REGISTER_COMMAND(COMMAND_IS_CAR_PLANE, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), true, -1, ""),
REGISTER_COMMAND(COMMAND_IS_CAR_HELI, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), true, -1, ""),
REGISTER_COMMAND(COMMAND_1460, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1461, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1462, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
@ -1627,26 +1627,26 @@ const tScriptCommandData commands[] = {
REGISTER_COMMAND(COMMAND_1474, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1475, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1476, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1477, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1478, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1479, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1480, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1481, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1482, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1483, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1484, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1485, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1486, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1487, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1488, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_RETURN_IF_TRUE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_RETURN_TRUE_IF_TRUE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_SET_CHAR_ONLY_ALLOWED_TO_SIT_BEHIND, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_SET_RC_HELI_HEIGHT_LIMIT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_CREATE_SCRIPT_CORONA, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_REMOVE_SCRIPT_CORONA, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_IS_BOAT_IN_WATER, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), true, -1, ""),
REGISTER_COMMAND(COMMAND_IS_CAR_DRIVER_BEING_JACKED, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), true, -1, ""),
REGISTER_COMMAND(COMMAND_SET_CHAR_ONLY_ALLOWED_TO_SIT_IN_FRONT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_SET_CAR_TILTED_BY_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_GET_WEAPON_TYPE_FOR_PICKUP_IN_AREA, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(ARGTYPE_INT, ), false, -1, ""),
REGISTER_COMMAND(COMMAND_IS_USING_FIRST_PERSON_WEAPON_CAMERA, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""),
REGISTER_COMMAND(COMMAND_1489, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1490, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1491, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1492, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1493, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1494, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1495, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1496, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1491, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_SET_DEBUG_MENU_ACTUVE, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_SET_DRAW_HUD, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_GET_RANDOM_CHAR_IN_AREA_NO_CHECKS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_GET_RANDOM_CAR_IN_AREA_NO_CHECKS_NO_SAVE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_STORE_CAR_COLLIDED_WITH_NO_SAVE, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1497, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1498, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_1499, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),

View File

@ -360,11 +360,13 @@ public:
static void UndoBuildingSwaps();
static void UndoEntityInvisibilitySettings();
/*
static void ScriptDebugLine3D(float x1, float y1, float z1, float x2, float y2, float z2, uint32 col, uint32 col2);
static void RenderTheScriptDebugLines();
*/
static void SaveAllScripts(uint8*, uint32*);
static void LoadAllScripts(uint8*, uint32);
static bool LoadAllScripts(uint8*, uint32);
static bool IsDebugOn() { return DbgFlag; };
static void InvertDebugFlag() { DbgFlag = !DbgFlag; }
@ -420,10 +422,12 @@ public:
static void DrawScriptSpheres();
static void HighlightImportantArea(uint32, float, float, float, float, float);
static void HighlightImportantAngledArea(uint32, float, float, float, float, float, float, float, float, float);
/*
static void DrawDebugSquare(float, float, float, float);
static void DrawDebugAngledSquare(float, float, float, float, float, float, float, float);
static void DrawDebugCube(float, float, float, float, float, float);
static void DrawDebugAngledCube(float, float, float, float, float, float, float, float, float, float);
*/
static void AddToInvisibilitySwapArray(CEntity*, bool);
static void AddToBuildingSwapArray(CBuilding*, int32, int32);
@ -432,7 +436,7 @@ public:
static int32 AddScriptSphere(int32 id, CVector pos, float radius);
static int32 GetNewUniqueScriptSphereIndex(int32 index);
static void RemoveScriptSphere(int32 index);
static void RemoveScriptTextureDictionary();
//static void RemoveScriptTextureDictionary();
public:
static void RemoveThisPed(CPed* pPed);
@ -504,7 +508,7 @@ class CRunningScript
public:
CRunningScript* next;
CRunningScript* prev;
int m_nId;
int32 m_nId;
char m_abScriptName[8];
uint32 m_nIp;
uint32 m_anStack[MAX_STACK_DEPTH];
@ -549,7 +553,33 @@ public:
int8 ProcessOneCommand();
void DoDeatharrestCheck();
void UpdateCompareFlag(bool);
void UpdateCompareFlag(bool flag)
{
if (m_bNotFlag)
flag = !flag;
if (m_nAndOrState == ANDOR_NONE) {
m_bCondResult = flag;
return;
}
if (m_nAndOrState >= ANDS_1 && m_nAndOrState <= ANDS_8) {
m_bCondResult &= flag;
if (m_nAndOrState == ANDS_1) {
m_nAndOrState = ANDOR_NONE;
return;
}
}
else if (m_nAndOrState >= ORS_1 && m_nAndOrState <= ORS_8) {
m_bCondResult |= flag;
if (m_nAndOrState == ORS_1) {
m_nAndOrState = ANDOR_NONE;
return;
}
}
else {
return;
}
m_nAndOrState--;
}
int16 GetPadState(uint16, uint16);
int8 ProcessCommands0To99(int32);
@ -570,6 +600,7 @@ public:
int8 ProcessCommands1500To1599(int32);
int8 ProcessCommands1600To1699(int32);
uint32 CollectLocateParameters(uint32*, bool);
void LocatePlayerCommand(int32, uint32*);
void LocatePlayerCharCommand(int32, uint32*);
void LocatePlayerCarCommand(int32, uint32*);
@ -608,6 +639,7 @@ public:
bool ThisIsAValidRandomCop(uint32 mi, int cop, int swat, int fbi, int army, int miami);
bool ThisIsAValidRandomPed(uint32 pedtype, int civ, int gang, int criminal);
bool CheckDamagedWeaponType(int32 actual, int32 type);
void ReturnFromGosubOrFunction();
};

213
src/control/Script10.cpp Normal file
View File

@ -0,0 +1,213 @@
#include "common.h"
#include "Script.h"
#include "ScriptCommands.h"
#include "PlayerPed.h"
#include "World.h"
int8 CRunningScript::ProcessCommands1600To1699(int32 command)
{
switch (command) {
case COMMAND_1600:
script_assert(false);
return 0;
case COMMAND_1601:
script_assert(false);
return 0;
case COMMAND_1602:
script_assert(false);
return 0;
case COMMAND_1603:
script_assert(false);
return 0;
case COMMAND_1604:
script_assert(false);
return 0;
case COMMAND_1605:
script_assert(false);
return 0;
case COMMAND_1606:
script_assert(false);
return 0;
case COMMAND_1607:
CollectParameters(&m_nIp, 1);
// TODO (SET_TOTAL_CARS_FOR_EXPORT)
return 0;
case COMMAND_1608:
script_assert(false);
return 0;
case COMMAND_1609:
script_assert(false);
return 0;
case COMMAND_1610:
script_assert(false);
return 0;
case COMMAND_1611:
script_assert(false);
return 0;
case COMMAND_1612:
script_assert(false);
return 0;
case COMMAND_1613:
script_assert(false);
return 0;
case COMMAND_1614:
script_assert(false);
return 0;
case COMMAND_1615:
// TODO (GET_DEVELOPER_FLAG?)
UpdateCompareFlag(false);
return 0;
case COMMAND_1616:
// TODO (SET_DEVELOPER_FLAG)
return 0;
case COMMAND_1617:
script_assert(false);
return 0;
case COMMAND_1618:
script_assert(false);
return 0;
case COMMAND_1619:
script_assert(false);
return 0;
case COMMAND_1620:
script_assert(false);
return 0;
case COMMAND_1621:
{
wchar* key = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 2);
// TODO (SET_SUBTITLE_TEXT)
return 0;
}
case COMMAND_1622:
script_assert(false);
return 0;
case COMMAND_1623:
script_assert(false);
return 0;
case COMMAND_1624:
script_assert(false);
return 0;
case COMMAND_1625:
script_assert(false);
return 0;
case COMMAND_1626:
script_assert(false);
return 0;
case COMMAND_1627:
script_assert(false);
return 0;
case COMMAND_1628:
script_assert(false);
return 0;
case COMMAND_1629:
script_assert(false);
return 0;
case COMMAND_1630:
script_assert(false);
return 0;
case COMMAND_1631:
script_assert(false);
return 0;
case COMMAND_1632:
script_assert(false);
return 0;
case COMMAND_1633:
script_assert(false);
return 0;
case COMMAND_1634:
script_assert(false);
return 0;
case COMMAND_1635:
{
char tmp[12]; // TODO
CTheScripts::ReadTextLabelFromScript(&m_nIp, tmp);
m_nIp += KEY_LENGTH_IN_SCRIPT;
// TODO (CHANGE_STORED_PLAYER_OUTFIT?)
return 0;
}
case COMMAND_1636:
script_assert(false);
return 0;
case COMMAND_1637:
script_assert(false);
return 0;
case COMMAND_1638:
script_assert(false);
return 0;
case COMMAND_1639:
script_assert(false);
return 0;
case COMMAND_1640:
CollectParameters(&m_nIp, 2);
// TODO (LOCK_GARAGE?)
return 0;
case COMMAND_1641:
// TODO
UpdateCompareFlag(true);
return 0;
case COMMAND_1642:
script_assert(false);
return 0;
case COMMAND_1643:
script_assert(false);
return 0;
case COMMAND_1644:
script_assert(false);
return 0;
case COMMAND_1645:
{
CollectParameters(&m_nIp, 1);
// TODO (GET_STORED_WEAPON?)
CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
script_assert(pPed);
ScriptParams[0] = pPed->m_storedWeapon;
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_1646:
CollectParameters(&m_nIp, 1);
// TODO (DISABLE_PAUSE_MENU?)
return 0;
case COMMAND_1647:
CollectParameters(&m_nIp, 1);
// TODO (IS_CHANNEL_PLAYING?)
UpdateCompareFlag(false);
return 0;
case COMMAND_1648:
CollectParameters(&m_nIp, 3);
// TODO (SET_CLOCK_EVENT_WARNING);
return 0;
case COMMAND_1649:
CollectParameters(&m_nIp, 3);
// TODO (SET_EXTRA_COLOUR_DIRECTION)
return 0;
case COMMAND_1650:
script_assert(false);
return 0;
case COMMAND_1651:
script_assert(false);
return 0;
case COMMAND_1652:
script_assert(false);
return 0;
case COMMAND_1653:
script_assert(false);
return 0;
case COMMAND_1654:
script_assert(false);
return 0;
case COMMAND_1655:
script_assert(false);
return 0;
case COMMAND_1656:
CollectParameters(&m_nIp, 2);
// TODO (?)
return 0;
default:
script_assert(0);
}
return -1;
}

View File

@ -36,6 +36,8 @@
#include "GameLogic.h"
#include "Bike.h"
// LCS: file done except TODOs
int8 CRunningScript::ProcessCommands500To599(int32 command)
{
switch (command) {
@ -1740,8 +1742,10 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
UpdateCompareFlag(pPed->bIsShooting && pPed->IsWithinArea(x1, y1, x2, y2));
if (GET_INTEGER_PARAM(5))
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, x1, y1, x2, y2, MAP_Z_LOW_LIMIT);
/*
if (CTheScripts::DbgFlag)
CTheScripts::DrawDebugSquare(x1, y1, x2, y2);
*/
return 0;
}
case COMMAND_IS_CHAR_SHOOTING_IN_AREA:
@ -1756,8 +1760,10 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
UpdateCompareFlag(pPed->bIsShooting && pPed->IsWithinArea(x1, y1, x2, y2));
if (GET_INTEGER_PARAM(5))
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, x1, y1, x2, y2, MAP_Z_LOW_LIMIT);
/*
if (CTheScripts::DbgFlag)
CTheScripts::DrawDebugSquare(x1, y1, x2, y2);
*/
return 0;
}
case COMMAND_IS_CURRENT_PLAYER_WEAPON:

View File

@ -40,6 +40,8 @@
#include "Zones.h"
#include "Bike.h"
// LCS: file done except TODOs
#ifdef FIX_BUGS
static bool IsSlideObjectUsedWrongByScript(const CVector& posTarget, const CVector& slideBy)
{

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

338
src/control/Script9.cpp Normal file
View File

@ -0,0 +1,338 @@
#include "common.h"
#include "Script.h"
#include "ScriptCommands.h"
int8 CRunningScript::ProcessCommands1500To1599(int32 command)
{
switch (command) {
case COMMAND_1497:
script_assert(false);
return 0;
case COMMAND_1498:
script_assert(false);
return 0;
case COMMAND_1499:
script_assert(false);
return 0;
case COMMAND_1500:
script_assert(false);
return 0;
case COMMAND_1501:
script_assert(false);
return 0;
case COMMAND_1502:
script_assert(false);
return 0;
case COMMAND_1503:
script_assert(false);
return 0;
case COMMAND_1504:
script_assert(false);
return 0;
case COMMAND_1505:
script_assert(false);
return 0;
case COMMAND_1506:
script_assert(false);
return 0;
case COMMAND_1507:
script_assert(false);
return 0;
case COMMAND_1508:
script_assert(false);
return 0;
case COMMAND_1509:
script_assert(false);
return 0;
case COMMAND_1510:
script_assert(false);
return 0;
case COMMAND_1511:
script_assert(false);
return 0;
case COMMAND_1512:
script_assert(false);
return 0;
case COMMAND_1513:
script_assert(false);
return 0;
case COMMAND_1514:
script_assert(false);
return 0;
case COMMAND_1515:
script_assert(false);
return 0;
case COMMAND_1516:
script_assert(false);
return 0;
case COMMAND_1517:
script_assert(false);
return 0;
case COMMAND_1518:
// TODO (?)
UpdateCompareFlag(true);
return 0;
case COMMAND_1519:
CollectParameters(&m_nIp, 1);
// TODO (SET_NUMBER_USJ_FOUND?)
return 0;
case COMMAND_1520:
CollectParameters(&m_nIp, 1);
// TODO (SET_TOTAL_HIDDEN_PACKAGES?)
return 0;
case COMMAND_1521:
script_assert(false);
return 0;
case COMMAND_1522:
script_assert(false);
return 0;
case COMMAND_1523:
script_assert(false);
return 0;
case COMMAND_1524:
script_assert(false);
return 0;
case COMMAND_1525:
script_assert(false);
return 0;
case COMMAND_1526:
script_assert(false);
return 0;
case COMMAND_1527:
script_assert(false);
return 0;
case COMMAND_1528:
script_assert(false);
return 0;
case COMMAND_1529:
script_assert(false);
return 0;
case COMMAND_1530:
script_assert(false);
return 0;
case COMMAND_1531:
script_assert(false);
return 0;
case COMMAND_1532:
script_assert(false);
return 0;
case COMMAND_1533:
script_assert(false);
return 0;
case COMMAND_1534:
script_assert(false);
return 0;
case COMMAND_1535:
script_assert(false);
return 0;
case COMMAND_1536:
script_assert(false);
return 0;
case COMMAND_1537:
script_assert(false);
return 0;
case COMMAND_1538:
script_assert(false);
return 0;
case COMMAND_1539:
//TODO (REGISTER_OUTFIT_CHANGE)
return 0;
case COMMAND_1540:
script_assert(false);
return 0;
case COMMAND_1541:
script_assert(false);
return 0;
case COMMAND_1542:
script_assert(false);
return 0;
case COMMAND_1543:
script_assert(false);
return 0;
case COMMAND_1544:
script_assert(false);
return 0;
case COMMAND_1545:
script_assert(false);
return 0;
case COMMAND_1546:
script_assert(false);
return 0;
case COMMAND_1547:
script_assert(false);
return 0;
case COMMAND_1548:
// TODO (GET_ONFOOT_CAMERA_MODE)
ScriptParams[0] = 0;
StoreParameters(&m_nIp, 1);
return 0;
case COMMAND_1549:
CollectParameters(&m_nIp, 1);
// TODO (SET_ONFOOT_CAMERA_MODE?)
return 0;
case COMMAND_1550:
script_assert(false);
return 0;
case COMMAND_1551:
script_assert(false);
return 0;
case COMMAND_1552:
script_assert(false);
return 0;
case COMMAND_1553:
script_assert(false);
return 0;
case COMMAND_1554:
script_assert(false);
return 0;
case COMMAND_1555:
CollectParameters(&m_nIp, 1);
// TODO (FREEZE_ONFOOT_CAMERA_MODE?)
return 0;
case COMMAND_1556:
script_assert(false);
return 0;
case COMMAND_1557:
script_assert(false);
return 0;
case COMMAND_1558:
UpdateCompareFlag(false);
// TODO
return 0;
case COMMAND_1559:
script_assert(false);
return 0;
case COMMAND_1560:
// TODO (IS_E3_BUILD?)
UpdateCompareFlag(false);
return 0;
case COMMAND_1561:
// TODO (check, SET_FS_DESTROYED_FLAG)
CTheScripts::FSDestroyedFlag = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - (int32*)CTheScripts::ScriptSpace;
return 0;
case COMMAND_1562:
script_assert(false);
return 0;
case COMMAND_1563:
script_assert(false);
return 0;
case COMMAND_1564:
script_assert(false);
return 0;
case COMMAND_1565:
script_assert(false);
return 0;
case COMMAND_1566:
script_assert(false);
return 0;
case COMMAND_1567:
CollectParameters(&m_nIp, 1);
// TODO (BUILD_WORLD_GEOMETRY)
return 0;
case COMMAND_1568:
script_assert(false);
return 0;
case COMMAND_1569:
// TODO (IS_MULTIPLAYER_ACTIVE?)
UpdateCompareFlag(false);
return 0;
case COMMAND_1570:
script_assert(false);
return 0;
case COMMAND_1571:
script_assert(false);
return 0;
case COMMAND_1572:
script_assert(false);
return 0;
case COMMAND_1573:
script_assert(false);
return 0;
case COMMAND_1574:
script_assert(false);
return 0;
case COMMAND_1575:
script_assert(false);
return 0;
case COMMAND_1576:
script_assert(false);
return 0;
case COMMAND_1577:
script_assert(false);
return 0;
case COMMAND_1578:
script_assert(false);
return 0;
case COMMAND_1579:
script_assert(false);
return 0;
case COMMAND_1580:
script_assert(false);
return 0;
case COMMAND_1581:
{
// TODO (SET_HELP_MESSAGE?)
wchar* key = CTheScripts::GetTextByKeyFromScript(&m_nIp);
return 0;
}
case COMMAND_1582:
script_assert(false);
return 0;
case COMMAND_1583:
script_assert(false);
return 0;
case COMMAND_1584:
script_assert(false);
return 0;
case COMMAND_1585:
script_assert(false);
return 0;
case COMMAND_1586:
script_assert(false);
return 0;
case COMMAND_1587:
script_assert(false);
return 0;
case COMMAND_1588:
script_assert(false);
return 0;
case COMMAND_1589:
CollectParameters(&m_nIp, 2);
// TODO (SWAP_BUILDING?)
return 0;
case COMMAND_1590:
script_assert(false);
return 0;
case COMMAND_1591:
script_assert(false);
return 0;
case COMMAND_1592:
script_assert(false);
return 0;
case COMMAND_1593:
script_assert(false);
return 0;
case COMMAND_1594:
script_assert(false);
return 0;
case COMMAND_1595:
script_assert(false);
return 0;
case COMMAND_1596:
script_assert(false);
return 0;
case COMMAND_1597:
script_assert(false);
return 0;
case COMMAND_1598:
script_assert(false);
return 0;
case COMMAND_1599:
script_assert(false);
return 0;
default:
script_assert(0);
}
return -1;
}

View File

@ -1445,22 +1445,22 @@ enum {
COMMAND_IS_JAPANESE_GAME,
COMMAND_1442,
COMMAND_1443,
COMMAND_1444,
COMMAND_1445,
COMMAND_1446,
COMMAND_1447,
COMMAND_1448,
COMMAND_1449,
COMMAND_1450,
COMMAND_1451,
COMMAND_1452,
COMMAND_1453,
COMMAND_GET_DISTANCE_BETWEEN_2D_POINTS,
COMMAND_GET_DISTANCE_BETWEEN_3D_POINTS,
COMMAND_DOT_PRODUCT_2D,
COMMAND_DOT_PRODUCT_3D,
COMMAND_DEBUG_PRINT_WITH_1_FLOAT,
COMMAND_DEBUG_PRINT_WITH_2_FLOATS,
COMMAND_DEBUG_PRINT_WITH_3_FLOATS,
COMMAND_GET_PAD_BUTTON_STATE,
COMMAND_SET_NAVIGATION_ARROW,
COMMAND_CLEAR_NAVIGATION_ARROW,
COMMAND_CALL,
COMMAND_NOTCALL,
COMMAND_1456,
COMMAND_1457,
COMMAND_1458,
COMMAND_1459,
COMMAND_CALLNOT,
COMMAND_IS_CAR_AUTOMOBILE,
COMMAND_IS_CAR_BIKE,
COMMAND_IS_CAR_PLANE,
COMMAND_IS_CAR_HELI,
COMMAND_1460,
COMMAND_1461,
COMMAND_1462,
@ -1478,26 +1478,26 @@ enum {
COMMAND_1474,
COMMAND_1475,
COMMAND_1476,
COMMAND_1477,
COMMAND_1478,
COMMAND_1479,
COMMAND_1480,
COMMAND_1481,
COMMAND_1482,
COMMAND_1483,
COMMAND_1484,
COMMAND_1485,
COMMAND_1486,
COMMAND_1487,
COMMAND_1488,
COMMAND_RETURN_IF_TRUE,
COMMAND_RETURN_TRUE_IF_TRUE,
COMMAND_SET_CHAR_ONLY_ALLOWED_TO_SIT_BEHIND,
COMMAND_SET_RC_HELI_HEIGHT_LIMIT,
COMMAND_CREATE_SCRIPT_CORONA,
COMMAND_REMOVE_SCRIPT_CORONA,
COMMAND_IS_BOAT_IN_WATER,
COMMAND_IS_CAR_DRIVER_BEING_JACKED,
COMMAND_SET_CHAR_ONLY_ALLOWED_TO_SIT_IN_FRONT,
COMMAND_SET_CAR_TILTED_BY_CHAR,
COMMAND_GET_WEAPON_TYPE_FOR_PICKUP_IN_AREA,
COMMAND_IS_USING_FIRST_PERSON_WEAPON_CAMERA,
COMMAND_1489,
COMMAND_1490,
COMMAND_1491,
COMMAND_1492,
COMMAND_1493,
COMMAND_1494,
COMMAND_1495,
COMMAND_1496,
COMMAND_SET_DEBUG_MENU_ACTUVE,
COMMAND_SET_DRAW_HUD,
COMMAND_GET_RANDOM_CHAR_IN_AREA_NO_CHECKS,
COMMAND_GET_RANDOM_CAR_IN_AREA_NO_CHECKS_NO_SAVE,
COMMAND_STORE_CAR_COLLIDED_WITH_NO_SAVE,
COMMAND_1497,
COMMAND_1498,
COMMAND_1499,

View File

@ -277,6 +277,16 @@ public:
uint32 InputHowLongAgo(void);
void SetDrunkInputDelay(int32 delay) { DrunkDrivingBufferUsed = delay; }
// TODO(LCS): properly, this is just to get some estimation for script
int16 GetOddJobTrigger() { return GetRightShockJustDown(); }
int16 GuiLeft() { return GetAnaloguePadLeft() || GetDPadLeftJustDown(); }
int16 GuiRight() { return GetAnaloguePadRight() || GetDPadRightJustDown(); }
int16 GuiUp() { return GetAnaloguePadUp() || GetDPadUpJustDown(); }
int16 GuiDown() { return GetAnaloguePadDown() || GetDPadDownJustDown(); }
int16 GuiSelect() { return GetSelect(); }
int16 GuiBack() { return GetStart(); }
int16 GetSkipCutscene() { return GetCrossJustDown(); }
#ifdef XINPUT
void AffectFromXinput(uint32 pad);
#endif

View File

@ -1129,6 +1129,7 @@ void CRadar::SetRadarMarkerState(int32 counter, bool flag)
}
void CRadar::ShowRadarMarker(CVector pos, uint32 color, float radius) {
/*
float f1 = radius * 1.4f;
float f2 = radius * 0.5f;
CVector p1, p2;
@ -1148,6 +1149,7 @@ void CRadar::ShowRadarMarker(CVector pos, uint32 color, float radius) {
p1 = pos - TheCamera.GetRight()*f1;
p2 = pos - TheCamera.GetRight()*f2;
CTheScripts::ScriptDebugLine3D(p1.x, p1.y, p1.z, p2.x, p2.y, p2.z, color, color);
*/
}
void CRadar::ShowRadarTrace(float x, float y, uint32 size, uint8 red, uint8 green, uint8 blue, uint8 alpha)

View File

@ -1275,7 +1275,7 @@ RenderScene(void)
void
RenderDebugShit(void)
{
CTheScripts::RenderTheScriptDebugLines();
//CTheScripts::RenderTheScriptDebugLines();
#ifndef FINAL
if(gbShowCollisionLines)
CRenderer::RenderCollisionLines();

View File

@ -9447,8 +9447,10 @@ CPed::SetRadioStation(void)
// --MIAMI: Done
void
CPed::WarpPedIntoCar(CVehicle *car)
CPed::WarpPedIntoCar(CVehicle *car) // LCS TODO: remove passenger logic
{
if (GetPedState() == PED_FACE_PHONE)
QuitEnteringCar();
bInVehicle = true;
m_pMyVehicle = car;
m_pMyVehicle->RegisterReference((CEntity **) &m_pMyVehicle);
@ -9513,6 +9515,77 @@ CPed::WarpPedIntoCar(CVehicle *car)
bChangedSeat = true;
}
void
CPed::WarpPedIntoCarAsPassenger(CVehicle* pVehicle, int32 position)
{
if (GetPedState() == PED_FACE_PHONE)
QuitEnteringCar();
bInVehicle = true;
m_pMyVehicle = pVehicle;
m_pMyVehicle->RegisterReference((CEntity**)&m_pMyVehicle);
m_carInObjective = pVehicle;
m_carInObjective->RegisterReference((CEntity**)&m_carInObjective);
SetPedState(PED_DRIVING); // TODO: this is PED_PASSENGER, but it needs to have some logic applied first
bUsesCollision = false;
bIsInTheAir = false;
bVehExitWillBeInstant = true;
if (pVehicle->IsBike() && !pVehicle->pPassengers[0]) {
pVehicle->pPassengers[0] = this;
pVehicle->pPassengers[0]->RegisterReference((CEntity**)&pVehicle->pPassengers[0]);
}
if (position >= 0) {
if (!pVehicle->pPassengers[position]) {
pVehicle->pPassengers[position] = this;
pVehicle->pPassengers[position]->RegisterReference((CEntity**)&pVehicle->pPassengers[position]);
}
}
else {
for (int i = 0; i < 4; i++) {
if (!pVehicle->pPassengers[i]) {
pVehicle->pPassengers[i] = this;
pVehicle->pPassengers[i]->RegisterReference((CEntity**)&pVehicle->pPassengers[i]);
break;
}
}
}
if (IsPlayer()) {
pVehicle->SetStatus(STATUS_PLAYER);
AudioManager.PlayerJustGotInCar();
CCarCtrl::RegisterVehicleOfInterest(pVehicle);
}
else {
pVehicle->SetStatus(STATUS_PHYSICS);
}
CWorld::Remove(this);
SetPosition(pVehicle->GetPosition());
CWorld::Add(this);
if (pVehicle->bIsAmbulanceOnDuty) {
pVehicle->bIsAmbulanceOnDuty = false;
--CCarCtrl::NumAmbulancesOnDuty;
}
if (pVehicle->bIsFireTruckOnDuty) {
pVehicle->bIsFireTruckOnDuty = false;
--CCarCtrl::NumFiretrucksOnDuty;
}
if (!pVehicle->bEngineOn) {
pVehicle->bEngineOn = true;
DMAudio.PlayOneShot(pVehicle->m_audioEntityId, SOUND_CAR_ENGINE_START, 1.0f);
}
RpAnimBlendClumpSetBlendDeltas(GetClump(), ASSOC_PARTIAL, -1000.0f);
AddInCarAnims(pVehicle, pVehicle->pDriver == this);
RemoveWeaponWhenEnteringVehicle();
if (pVehicle->bIsBus)
bRenderPedInCar = false;
bChangedSeat = true;
}
// --MIAMI: Done
bool
CPed::HasAttractor(void)

View File

@ -406,7 +406,7 @@ public:
float m_fCollisionSpeed;
// cf. https://github.com/DK22Pac/plugin-sdk/blob/master/plugin_sa/game_sa/CPed.h from R*
uint32 bIsStanding : 1;
uint32 bIsStanding : 1; // 0x194 on PS2, 0x1A4 on android
uint32 bWasStanding : 1;
uint32 bIsAttacking : 1; // doesn't reset after fist fight
uint32 bIsPointingGunAt : 1;
@ -499,7 +499,7 @@ public:
uint32 bIsDrowning : 1;
uint32 bDrownsInWater : 1;
uint32 bWaitForLeaderToComeCloser : 1;
uint32 bHeldHostageInCar : 1;
uint32 bHeldHostageInCar : 1; // one flag was added somewhere after this one (TODO: figure out where and which)
uint32 bIsPlayerFriend : 1;
uint32 bHeadStuckInCollision : 1;
uint32 bDeadPedInFrontOfCar : 1;
@ -512,7 +512,7 @@ public:
uint32 bMakeFleeScream : 1;
uint32 bPushedAlongByCar : 1;
uint32 bRemoveMeWhenIGotIntoCar : 1;
uint32 bIgnoreThreatsBehindObjects : 1;
uint32 bIgnoreThreatsBehindObjects : 1; // one flag was added somewhere before this one (TODO: figure out where and which)
uint32 bNeverEverTargetThisPed : 1;
uint32 bCrouchWhenScared : 1;
@ -523,8 +523,8 @@ public:
uint32 bDonePositionOutOfCollision : 1;
uint32 bCanAttackPlayerWithCops : 1; // 1A1_1 on PS2
uint32 b1A1_2 : 1;
uint32 b1A1_4 : 1;
uint32 bOnlyAllowedToSitBehind : 1;
uint32 bOnlyAllowedToSitInFront : 1;
uint32 b1A1_8 : 1;
uint32 b1A1_10 : 1;
uint32 b1A1_20 : 1;
@ -534,11 +534,29 @@ public:
uint32 m_ped_flagI80 : 1; // KANGAROO_CHEAT define makes use of this as cheat toggle
#endif
uint8 m_gangFlags;
uint8 m_unused15D; // these 3 can't be padding but had to actually have been members ...
uint8 m_unused15E;
uint8 m_unused15F;
uint8 CharCreatedBy;
uint16 m_gangFlags; // <- this one is uint16
uint8 b1A4_1 : 1;
uint8 b1A4_2 : 1;
uint8 b1A4_4 : 1;
uint8 b1A4_8 : 1;
uint8 b1A4_10 : 1;
uint8 b1A4_20 : 1;
uint8 b1A4_40 : 1;
uint8 b1A4_80 : 1;
uint8 b1A5_1 : 1;
uint8 b1A5_2 : 1;
uint8 b1A5_4 : 1;
uint8 b1A5_8 : 1;
uint8 b1A5_10 : 1;
uint8 b1A5_20 : 1;
uint8 b1A5_40 : 1;
uint8 b1A5_80 : 1;
uint8 unk_1A6; // <- init with 100 in constructor
uint8 CharCreatedBy; // 1AC
eObjective m_objective;
eObjective m_prevObjective;
CPed *m_pedInObjective;
@ -888,6 +906,7 @@ public:
void SetSolicit(uint32 time);
void ScanForInterestingStuff(void);
void WarpPedIntoCar(CVehicle*);
void WarpPedIntoCarAsPassenger(CVehicle*, int32);
void SetCarJack(CVehicle*);
bool WarpPedToNearLeaderOffScreen(void);
void Solicit(void);
@ -1042,6 +1061,16 @@ public:
{
return m_pMyVehicle != nil && ((CEntity*)m_pMyVehicle)->GetStatus() != STATUS_WRECKED;
}
bool CanStartMission() // used in CAN_PLAYER_START_MISSION and can looks like inlined function
{
if (m_nPedState >= PED_WANDER_RANGE && m_nPedState < PED_STATES_NO_AI && m_nPedState != PED_ANSWER_MOBILE)
return false;
if (m_nPedState >= PED_JUMP && m_nPedState < PED_STATES_NO_ST)
return false;
if (m_nPedState >= PED_ENTER_TRAIN && m_nPedState < PED_DEPLOY_STINGER)
return false;
return !bIsInTheAir && !bIsLanding && m_fHealth > 0.0f;
}
// My names. Inlined in VC
AnimationId GetFireAnimNotDucking(CWeaponInfo* weapon) {

View File

@ -130,6 +130,8 @@ uint32 CHud::m_LastTimeEnergyLost;
CSprite2d CHud::Sprites[NUM_HUD_SPRITES];
wchar* CHud::gLastPrintForeverString;
struct
{
const char *name;

View File

@ -118,6 +118,8 @@ public:
static uint32 m_LastWeapon;
static uint32 m_LastTimeEnergyLost;
static wchar* gLastPrintForeverString;
public:
static void Draw();
static void DrawAfterFade();