1
0
Fork 0
mirror of https://github.com/halpz/re3.git synced 2025-06-02 02:50:20 +00:00

Add files via upload

This commit is contained in:
MaZaHa-Ka 2024-09-27 13:15:28 +03:00 committed by GitHub
parent bea06ff528
commit d6264d22ea
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 85 additions and 15 deletions

View file

@ -731,6 +731,7 @@ RpGeometry *_rpGeometrySetSurfaceProperties(RpGeometry *geometry, const RwSurfac
RwFrame *RpClumpGetFrame(const RpClump * clump) { return clump->getFrame(); }
RpClump *RpClumpSetFrame(RpClump * clump, RwFrame * frame) { clump->setFrame(frame); return clump; }
RpClump *RpClumpForAllAtomics(RpClump * clump, RpAtomicCallBack callback, void *pData) {
//if(!clump) { return nil; }
FORLIST(lnk, clump->atomics)
if(callback(Atomic::fromClump(lnk), pData) == nil)
break;

View file

@ -131,8 +131,10 @@ void
CBaseModelInfo::SetModelName(const char *name)
{
m_nameKey = CKeyGen::GetUppercaseKey(name);
if (!gUseChunkFiles)
if(!gUseChunkFiles) {
if(!m_name) { m_name = new char[MAX_MODEL_NAME]; } // mazahaka tmp fix NULL in reload to new
strcpy(m_name, name);
}
}
void

View file

@ -46,6 +46,7 @@ public:
static int32 GetNumModelInfos(void) { return msNumModelInfos; }
static CBaseModelInfo *GetModelInfo(const char *name, int *id);
//__declspec(noinline)
static CBaseModelInfo *GetModelInfo(int id){
if(id < 0 || id >= msNumModelInfos)
return nil;

View file

@ -1223,11 +1223,17 @@ CVehicleModelInfo::LoadVehicleColours(void)
&colors[12], &colors[13],
&colors[14], &colors[15]);
CVehicleModelInfo *mi = (CVehicleModelInfo*)CModelInfo::GetModelInfo(name, nil);
assert(mi);
mi->m_numColours = (n-1)/2;
for(i = 0; i < mi->m_numColours; i++){
mi->m_colours1[i] = colors[i*2 + 0];
mi->m_colours2[i] = colors[i*2 + 1];
//assert(mi);
if(!mi) {
// debug("");
}
if(mi)
{
mi->m_numColours = (n - 1) / 2;
for(i = 0; i < mi->m_numColours; i++) {
mi->m_colours1[i] = colors[i * 2 + 0];
mi->m_colours2[i] = colors[i * 2 + 1];
}
}
}
}

View file

@ -93,6 +93,9 @@ struct FightMove
uint8 hitLevel; // FightMoveHitLevel
uint8 damage;
uint8 flags;
#ifdef MAZAHAKA_ANIM_STUFF
bool loaded_by_fistfite = false; // detect no inited fite (katana anim error)
#endif
};
// TODO: This is eFightState on mobile.
@ -110,10 +113,10 @@ enum PedFightMoves
FIGHTMOVE_COMBO_B1,
FIGHTMOVE_COMBO_B2,
FIGHTMOVE_COMBO_B3,
// Melee
/*// Melee // ---------mazahaka ??? kick floor error m_curFightMove < FIGHTMOVE_MELEE1 ? ASSOCGRP_STD CPed::StartFightAttack(uint8 buttonPressure) îíî áðàëî íå èç std áî melee ðàíüøå ïî èíäåêñó
FIGHTMOVE_MELEE1,
FIGHTMOVE_MELEE2,
FIGHTMOVE_MELEE3,
FIGHTMOVE_MELEE3,*/
// Special
FIGHTMOVE_GROUNDKICK,
// Opponent
@ -123,8 +126,15 @@ enum PedFightMoves
FIGHTMOVE_HITLEFT,
FIGHTMOVE_HITONFLOOR,
FIGHTMOVE_HITBEHIND,
// Melee // mazahaka moved
FIGHTMOVE_MELEE1,
FIGHTMOVE_MELEE2,
FIGHTMOVE_MELEE3,
FIGHTMOVE_IDLE2NORM,
/*
/*
FIGHTMOVE_KNEE,
FIGHTMOVE_PUNCHHOOK,
FIGHTMOVE_PUNCHJAB,

View file

@ -29,10 +29,17 @@
uint16 nPlayerInComboMove;
RpClump* flyingClumpTemp;
//CPed::LoadFightData(void) init
//PedFightMoves ÑÌÎÒÐÈ!!! ÿ ñìåíèë áëîê Melee áî îí ðàíüøå è ëîìàëàñü ëîãèêà âûäà÷è àíèìêè â pedfight
FightMove tFightMoves[NUM_FIGHTMOVES] =
{
{ // MAZAHAKA íåëüÿ êîìåíèòü òàê êàê òåðÿþòñÿ default anim id, íóæíî ïðîïèñûâàòü òîãäà â fistfite (íå ðàáîòàåò íå ìîæåò íàéòè)
//{ANIM_STD_WALK, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0},
//CPed::LoadFightData(void)
//if (strcmp(animName, "default") != 0) { // if no default
// if comment this, default animid was error no have id
//fistfite.dat (init/load in CPed::LoadFightData(void))
{ ANIM_STD_WALK, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },
/*{ ANIM_STD_WALK, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },
{ ANIM_STD_WALK, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },
{ ANIM_STD_WALK, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },
{ ANIM_STD_WALK, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },
@ -54,9 +61,38 @@ FightMove tFightMoves[NUM_FIGHTMOVES] =
{ ANIM_STD_WALK, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },
{ ANIM_STD_WALK, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },
{ ANIM_STD_WALK, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },
{ ANIM_STD_WALK, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },
{ ANIM_STD_WALK, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },*/
//---test block
{ ANIM_STD_NOT_INITED_SLOT_4_FISTFITE, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },
{ ANIM_STD_NOT_INITED_SLOT_4_FISTFITE, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },
{ ANIM_STD_NOT_INITED_SLOT_4_FISTFITE, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },
{ ANIM_STD_NOT_INITED_SLOT_4_FISTFITE, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },
{ ANIM_STD_NOT_INITED_SLOT_4_FISTFITE, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },
{ ANIM_STD_NOT_INITED_SLOT_4_FISTFITE, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },
{ ANIM_STD_NOT_INITED_SLOT_4_FISTFITE, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },
{ ANIM_STD_NOT_INITED_SLOT_4_FISTFITE, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },
{ ANIM_STD_NOT_INITED_SLOT_4_FISTFITE, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },
/*
//{ ANIM_STD_KICKGROUND, 10.f/30.f, 14.f/30.f, 0.0f, 0.4f, 1.0f, HITLEVEL_GROUND, 1, 0 }, // need?
{ ANIM_STD_NOT_INITED_SLOT_4_FISTFITE, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },
{ ANIM_STD_NOT_INITED_SLOT_4_FISTFITE, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },
{ ANIM_STD_NOT_INITED_SLOT_4_FISTFITE, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },
{ ANIM_STD_NOT_INITED_SLOT_4_FISTFITE, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },
{ ANIM_STD_NOT_INITED_SLOT_4_FISTFITE, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },
{ ANIM_STD_NOT_INITED_SLOT_4_FISTFITE, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },
{ ANIM_STD_NOT_INITED_SLOT_4_FISTFITE, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },
// default anim name not init/load animId! Hardcode (Katana bug mazahaka fix)
{ ANIM_ATTACK_1, 4.f/30.f, 7.f/30.f, 10.f/30.f, 0.4f, 1.0f, HITLEVEL_HIGH, 1, 0 }, // 9 Attack1 H: Animation Name "default" !!! WEAPON_knife_1
{ ANIM_ATTACK_2, 4.f/30.f, 7.f/30.f, 10.f/30.f, 0.4f, 1.0f, HITLEVEL_HIGH, 1, 0 }, // 10 Attack2 H: Animation Name "default" !!! WEAPON_knife_2
{ ANIM_ATTACK_3, 4.f / 30.f, 7.f / 30.f, 10.f / 30.f, 0.4f, 1.0f, HITLEVEL_HIGH, 1, 0 }, // 11 Attack3 H: Animation Name "default" !!! WEAPON_knife_3
{ ANIM_STD_NOT_INITED_SLOT_4_FISTFITE, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0 },
/*
{ ANIM_STD_NUM, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
{ ANIM_STD_PUNCH, 0.2f, 8.f/30.f, 0.0f, 0.3f, 1.0f, HITLEVEL_HIGH, 1, 0 },
{ ANIM_STD_FIGHT_IDLE, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
@ -1133,6 +1169,7 @@ CPed::StartFightAttack(uint8 buttonPressure)
m_fightButtonPressure = 0;
if (m_curFightMove > FIGHTMOVE_NULL && m_curFightMove != FIGHTMOVE_IDLE) {
//m_curFightMove 12 kickflor 12<9 false anim
animAssoc = CAnimManager::BlendAnimation(GetClump(), m_curFightMove < FIGHTMOVE_MELEE1 ? ASSOCGRP_STD : weaponInfo->m_AnimToPlay,
tFightMoves[m_curFightMove].animId, 8.0f);
@ -2403,6 +2440,9 @@ CPed::LoadFightData(void)
tFightMoves[moveId].extendReachMultiplier = extendReachMultiplier;
tFightMoves[moveId].damage = damage;
tFightMoves[moveId].flags = flags;
#ifdef MAZAHAKA_ANIM_STUFF
tFightMoves[moveId].loaded_by_fistfite = true; // detect no inited fite (katana anim error)
#endif
switch (hitLevel) {
case 'G':
@ -2424,7 +2464,7 @@ CPed::LoadFightData(void)
break;
}
if (strcmp(animName, "default") != 0) {
if (strcmp(animName, "default") != 0) { // if no default
if (strcmp(animName, "null") != 0) {
animAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_STD, animName);
tFightMoves[moveId].animId = (AnimationId)animAssoc->animId;
@ -2433,6 +2473,7 @@ CPed::LoadFightData(void)
}
}
moveId++;
debug("moveId %d\n", moveId);
}
}

View file

@ -798,12 +798,21 @@ spentAmmoCheck:
goto switchDetectDone;
}
}
#ifdef MAZAHAKA_TRY_FIX_AUTOCHANGE_WEAPON_SLOT_IF_ZERO_AMMO
if(!(GetWeapon()->m_nAmmoTotal == 0 && CPad::GetPad(0)->GetWeapon() /*&& m_nSelectedWepSlot != WEAPONSLOT_UNARMED*/)) { m_nSelectedWepSlot = WEAPONSLOT_UNARMED; }
#else
m_nSelectedWepSlot = WEAPONSLOT_UNARMED;
#endif
}
}
switchDetectDone:
if (m_nSelectedWepSlot != m_currentWeapon) {
// mazahaka fix no auto change weapoon
if ((m_nSelectedWepSlot != m_currentWeapon)
#ifdef MAZAHAKA_TRY_FIX_AUTOCHANGE_WEAPON_SLOT_IF_ZERO_AMMO
&& !(GetWeapon()->m_nAmmoTotal == 0 && CPad::GetPad(0)->GetWeapon() /*&& m_nSelectedWepSlot != WEAPONSLOT_UNARMED*/) // todo
#endif
) {
if (m_nPedState != PED_ATTACK && m_nPedState != PED_AIM_GUN && m_nPedState != PED_FIGHT) {
RemoveWeaponAnims(m_currentWeapon, -1000.0f);
MakeChangesForNewWeapon(m_nSelectedWepSlot);