//#define PLAYERS_3D // Enable 3d players
(Change To)#define PLAYERS_3D // Enable 3d players
switch(armorPid)
{
case PID_LEATHER_JACKET:
bodyAtr = 1;
handsAtr = 1;
break;
case PID_POWERED_ARMOR:
case PID_HARDENED_POWER_ARMOR:
bodyAtr = 6;
feetAtr = 6;
break;
case PID_TIBBETS_PRISON:
bodyAtr = 0;
break;
case PID_JUMPSUIT:
case PID_FAKE_JUMPSUIT:
case PID_VAULT_SUIT:
bodyAtr = 0;
break;
case PID_LEATHER_ARMOR:
bodyAtr = 8;
handsAtr = 8;
break;
case PID_LEATHER_ARMOR_MK_II:
bodyAtr = 20;
handsAtr = 20;
break;
case PID_CURED_LEATHER_ARMOR:
bodyAtr = 10;
handsAtr = 10;
break;
case PID_METAL_ARMOR:
bodyAtr = 2;
handsAtr = 2;
break;
case PID_METAL_ARMOR_MK_II:
bodyAtr = 3;
handsAtr = 2;
break;
case PID_TESLA_ARMOR:
bodyAtr = 19;
handsAtr = 16;
break;
case 600:
bodyAtr = 7;
handsAtr = 7;
break;
case PID_COMBAT_ARMOR:
bodyAtr = 5;
handsAtr = 5;
backpackAtr = 3;
break;
case PID_COMBAT_ARMOR_MK_II:
bodyAtr = 14;
handsAtr = 5;
backpackAtr = 3;
break;
case PID_BROTHERHOOD_COMBAT_ARMOR:
bodyAtr = 15;
handsAtr = 5;
backpackAtr = 3;
break;
case PID_BLACK_COMBAT_ARMOR:
bodyAtr = 16;
handsAtr = 16;
backpackAtr = 3;
break;
case PID_ADVANCED_POWER_ARMOR:
case PID_ADVANCED_POWER_ARMOR_MK2:
bodyAtr = 9;
feetAtr = 9;
break;
case PID_PURPLE_ROBE:
bodyAtr = 11;
break;
case PID_KEEPBRIGE_ROBE:
bodyAtr = ATTRIBUTE_Body_PrisonSuit;
feetAtr = ATTRIBUTE_Feet_PrisonSuit;
headAtr = ATTRIBUTE_Head_StrawHat;
break;
case PID_BLACK_ROBE:
bodyAtr = ATTRIBUTE_Body_PrisonSuit;
feetAtr = ATTRIBUTE_Feet_PrisonSuit;
headAtr = ATTRIBUTE_Head_ArmingCap;
break;
default:
break;
int GetHandleValue(uint16 pid)
{
if(pid == 0 || (pid >= 1000 && pid <=1100)) return 0;
int handle = 0;
return int(pid);
}
case ACTION_DEAD:
if( not cr.IsDead() && not cr.IsAnim3d())
{
cr.ClearAnim();
cr.Animate( 0, actionExt );
Message("DEBUG NOTE: 2D critter died. No bodytype switched", FOMB_GAME );
}
else if( cr.IsAnim3d())
{
switch( actionExt )
{
case ANIM2_DEAD_FRONT:
cr.ClearAnim();
cr.Animate( 0, actionExt );
Message("DEBUG NOTE: 3D critter died on DEAD_FRONT. No special anim, so bodytype has not changed", FOMB_GAME );
break;
case ANIM2_DEAD_BACK :
cr.ClearAnim();
cr.Animate( 0, actionExt );
Message("DEBUG NOTE: 3D critter died on DEAD_BACK. No special anim, so bodytype has not changed", FOMB_GAME );
break;
case ANIM2_DEAD_BLOODY_SINGLE:
cr.ClearAnim();
if (cr.Stat[ST_GENDER] == 0)
{
RunServerScriptUnsafe("debug@unsafe_specialdeath",(cr.Id),293,110,null,null);
PlaySound("HMXXXXBD.ACM");
}
else if (cr.Stat[ST_GENDER] == 1)
{
RunServerScriptUnsafe("debug@unsafe_specialdeath",(cr.Id),296,110,null,null);
PlaySound("HFXXXXBD.ACM");
}
Message("DEBUG NOTE: 3D critter died on BLOODY_SINGLE. Bodytype switched to dead model", FOMB_GAME );
break;
case ANIM2_DEAD_BLOODY_BURST:
cr.ClearAnim();
if (cr.Stat[ST_GENDER] == 0)
{
RunServerScriptUnsafe("debug@unsafe_specialdeath",(cr.Id),293,111,null,null);
PlaySound("HMXXXXBF.ACM");
}
else if (cr.Stat[ST_GENDER] == 1)
{
RunServerScriptUnsafe("debug@unsafe_specialdeath",(cr.Id),296,111,null,null);
PlaySound("HFXXXXBF.ACM");
}
Message("DEBUG NOTE: 3D critter died on BLOODY_BURST. Bodytype switched to dead model", FOMB_GAME );
break;
case ANIM2_DEAD_BURST:
cr.ClearAnim();
if (cr.Stat[ST_GENDER] == 0)
{
RunServerScriptUnsafe("debug@unsafe_specialdeath",(cr.Id),293,112,null,null);
PlaySound("HMXXXXBG.ACM");
}
else if (cr.Stat[ST_GENDER] == 1)
{
RunServerScriptUnsafe("debug@unsafe_specialdeath",(cr.Id),296,112,null,null);
PlaySound("HFXXXXBG.ACM");
}
Message("DEBUG NOTE: 3D critter died on BURST. Bodytype switched to dead model", FOMB_GAME );
break;
case ANIM2_DEAD_LASER:
cr.ClearAnim();
if (cr.Stat[ST_GENDER] == 0)
{
RunServerScriptUnsafe("debug@unsafe_specialdeath",(cr.Id),293,115,null,null);
PlaySound("HMXXXXBI.ACM");
}
else if (cr.Stat[ST_GENDER] == 1)
{
RunServerScriptUnsafe("debug@unsafe_specialdeath",(cr.Id),296,115,null,null);
PlaySound("HFXXXXBI.ACM");
}
Message("DEBUG NOTE: 3D critter died on LASER. Bodytype switched to dead model", FOMB_GAME );
break;
case ANIM2_DEAD_FUSED:
cr.ClearAnim();
if (cr.Stat[ST_GENDER] == 0)
{
RunServerScriptUnsafe("debug@unsafe_specialdeath",(cr.Id),293,116,null,null);
PlaySound("HMXXXXBM.ACM");
}
else if (cr.Stat[ST_GENDER] == 1)
{
RunServerScriptUnsafe("debug@unsafe_specialdeath",(cr.Id),296,116,null,null);
PlaySound("HFXXXXBM.ACM");
}
Message("DEBUG NOTE: 3D critter died on FUSED (plasma). Bodytype switched to dead model", FOMB_GAME );
break;
case ANIM2_DEAD_PRONE_FRONT :
cr.ClearAnim();
cr.Animate( 0, actionExt );
Message("DEBUG NOTE: 3D critter died on PRONE_FRONT. No bodytype switch needed", FOMB_GAME );
break;
case ANIM2_DEAD_PRONE_BACK:
cr.ClearAnim();
cr.Animate( 0, actionExt );
Message("DEBUG NOTE: 3D critter died on PRONE_BACK. No bodytype switch needed", FOMB_GAME );
break;
case ANIM2_DEAD_PULSE:
cr.ClearAnim();
if (cr.Stat[ST_GENDER] == 0) RunServerScriptUnsafe("debug@unsafe_specialdeath",(cr.Id),11,113,null,null);
if (cr.Stat[ST_GENDER] == 1) RunServerScriptUnsafe("debug@unsafe_specialdeath",(cr.Id),5,113,null,null);
Message("DEBUG NOTE: 3D critter died on PULSE. No 3d anim available. Needs switch to 2d and play anim again", FOMB_GAME );
break;
case ANIM2_DEAD_PULSE_DUST :
cr.ClearAnim();
if (cr.Stat[ST_GENDER] == 0) RunServerScriptUnsafe("debug@unsafe_specialdeath",(cr.Id),11,114,null,null);
if (cr.Stat[ST_GENDER] == 1) RunServerScriptUnsafe("debug@unsafe_specialdeath",(cr.Id),5,114,null,null);
Message("DEBUG NOTE: 3D critter died on PULSE_DUST. No 3d anim available. Needs switch to 2d and play anim again", FOMB_GAME );
break;
case ANIM2_DEAD_EXPLODE :
if (cr.Stat[ST_GENDER] == 0) RunServerScriptUnsafe("debug@unsafe_specialdeath",(cr.Id),12,117,null,null);
if (cr.Stat[ST_GENDER] == 1) RunServerScriptUnsafe("debug@unsafe_specialdeath",(cr.Id),5,117,null,null);
Message("DEBUG NOTE: 3D critter died on EXPLODE. No 3d anim available. Needs switch to 2d and play anim again", FOMB_GAME );
break;
case ANIM2_DEAD_BURN :
cr.ClearAnim();
if (cr.Stat[ST_GENDER] == 0) RunServerScriptUnsafe("debug@unsafe_specialdeath",(cr.Id),11,118,null,null);
if (cr.Stat[ST_GENDER] == 1) RunServerScriptUnsafe("debug@unsafe_specialdeath",(cr.Id),5,118,null,null);
Message("DEBUG NOTE: 3D critter died on burn. No 3d anim available. Needs switch to 2d and play anim again", FOMB_GAME );
break;
case ANIM2_DEAD_BURN_RUN:
cr.ClearAnim();
if (cr.Stat[ST_GENDER] == 0) RunServerScriptUnsafe("debug@unsafe_specialdeath",(cr.Id),11,119,null,null);
if (cr.Stat[ST_GENDER] == 1) RunServerScriptUnsafe("debug@unsafe_specialdeath",(cr.Id),5,119,null,null);
Message("DEBUG NOTE: 3D critter died on BURN_RUN. No 3d anim available. Needs switch to 2d and play anim again", FOMB_GAME );
break;
default:
break;
}
void unsafe_specialdeath(Critter& player, int param0, int param1, int param2, string@ param3, int[]@ param4)
{
Critter@ target=GetCritter(def(param0,player.Id));
if (not valid(target)) return;
target.ChangeCrType(param1);
target.Animate( player.Id, param2, null, true, true );
}
struct VsToPs_3DNormal
{
float4 Position : POSITION;
float2 TexCoord : TEXCOORD0;
float3 Normal : TEXCOORD1;
};
# define PID_9MM_MAUSER ( 11000 ) / / 9mm Mauser
# define PID_10MM_PISTOL ( 11001 ) / / 10mm gun
# define PID_14MM_PISTOL ( 11002 ) / / 14mm gun
#ifdef PLAYERS_3D
int GetHandleValue(uint16 pid)
{
if(pid == 0 || (pid >= 1000 && pid <=1100)) return 0;
int handle = 0;
switch(pid)
{
case 11000 : handle = 11000 ; break;
case 11001 : handle = 11001 ; break;
case 11002 : handle = 11002 ; break;
// Generic item
default: handle = 0; break;
}
return handle;
}
#endif
Also there's an error with the character name and floating text when you select 3D , even default VB3d.
I just hope you are not planning to add 11000 items ;D
Just a small note - pids between 1000 and 1100 are "default items", which are used by engine in case when char have nothing in given slot. So pid == 0 || (pid >= 1000 && pid <=1100) is nothing else than checking if given pid is "real" item.
(http://imageshack.us/a/img546/7220/9e56.png) | (http://imageshack.us/a/img9/2686/fd6i.png) |
(http://img163.imageshack.us/img163/3980/wpjs.png) | (http://img843.imageshack.us/img843/4269/1d3n.png) |