[Weapons]: Added new functions and some fixes
This commit is contained in:
parent
1944dc360c
commit
2fc28052c3
@ -57,11 +57,11 @@ namespace Components
|
|||||||
Dvars::p_allowFire = Dvars::Register::Dvar_RegisterBool("p_allowFire", "Enables/Disables player fire", true, Game::saved_flag);
|
Dvars::p_allowFire = Dvars::Register::Dvar_RegisterBool("p_allowFire", "Enables/Disables player fire", true, Game::saved_flag);
|
||||||
});
|
});
|
||||||
|
|
||||||
GSC::AddFunction("getweapondamage", []
|
GSC::AddFunction("GetWeaponDamage", []
|
||||||
{
|
{
|
||||||
if (Game::Scr_GetNumParam() != 1)
|
if (Game::Scr_GetNumParam() != 1)
|
||||||
{
|
{
|
||||||
Game::Scr_Error("getweapondamage( <string> weaponName ) requires one parameter");
|
Game::Scr_Error("GetWeaponDamage( <string> weaponName ) requires one parameter");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,11 +70,11 @@ namespace Components
|
|||||||
return Game::Scr_AddInt(weapon->damage);
|
return Game::Scr_AddInt(weapon->damage);
|
||||||
}, false);
|
}, false);
|
||||||
|
|
||||||
GSC::AddFunction("setweapondamage", []
|
GSC::AddFunction("SetWeaponDamage", []
|
||||||
{
|
{
|
||||||
if (Game::Scr_GetNumParam() != 2)
|
if (Game::Scr_GetNumParam() != 2)
|
||||||
{
|
{
|
||||||
Game::Scr_Error("setweapondamage( <string> weaponName, <int> value ) requires two parameters");
|
Game::Scr_Error("SetWeaponDamage( <string> weaponName, <int> value ) requires two parameters");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,16 +96,77 @@ namespace Components
|
|||||||
}
|
}
|
||||||
|
|
||||||
int fxId = Game::Scr_GetInt(0);
|
int fxId = Game::Scr_GetInt(0);
|
||||||
int realTagName = Game::Scr_GetConstString(1);
|
int tagName = Game::Scr_GetConstString(1);
|
||||||
unsigned int weaponIndex = Game::ps->weapon;
|
|
||||||
|
|
||||||
const auto weaponDef = Game::bg_weaponDefs[weaponIndex];
|
unsigned int weaponIndex = Game::ps->weapon;
|
||||||
|
const auto viewmodelInfo = &Game::cg_weaponsArray[weaponIndex];
|
||||||
|
|
||||||
|
std::uint8_t bone = 254;
|
||||||
|
if (!Game::DObjGetBoneIndex(viewmodelInfo->viewModelDObj, tagName, &bone))
|
||||||
|
{
|
||||||
|
const char* error_msg = Utils::String::VA("PlayViewmodelFX(): viewmodel weapon '%s', does not have bone '%s'", viewmodelInfo->translatedDisplayName, Game::SL_ConvertToString(tagName));
|
||||||
|
Game::Scr_Error(error_msg);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Game::CG_PlayBoltedEffect(Game::cgs->localClientNum,
|
Game::CG_PlayBoltedEffect(Game::cgs->localClientNum,
|
||||||
Game::scr_const->tag_flash,
|
tagName,
|
||||||
weaponIndex + 2176,
|
weaponIndex + 2176, // <-- CG_WeaponDObjHandle
|
||||||
Game::cgsArray->fxs[fxId]);
|
Game::cgsArray->fxs[fxId]);
|
||||||
Game::Scr_AddInt(true);
|
Game::Scr_AddInt(true);
|
||||||
|
|
||||||
|
}, false);
|
||||||
|
|
||||||
|
GSC::AddFunction("ViewmodelHideTag", []
|
||||||
|
{
|
||||||
|
if (Game::Scr_GetNumParam() != 1)
|
||||||
|
{
|
||||||
|
Game::Scr_Error("ViewmodelHideTag() called with wrong params.\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int tagName = Game::Scr_GetConstString(0);
|
||||||
|
|
||||||
|
unsigned int weaponIndex = Game::ps->weapon;
|
||||||
|
const auto viewmodelInfo = &Game::cg_weaponsArray[weaponIndex];
|
||||||
|
|
||||||
|
std::uint8_t bone = 254;
|
||||||
|
if (!Game::DObjGetBoneIndex(viewmodelInfo->viewModelDObj, tagName, &bone))
|
||||||
|
{
|
||||||
|
const char* error_msg = Utils::String::VA("ViewmodelHideTag: No such bone tag (%s) for weapon (%s)", viewmodelInfo->translatedDisplayName, Game::SL_ConvertToString(tagName));
|
||||||
|
Game::Scr_Error(error_msg);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
viewmodelInfo->partBits[bone >> 5] |= 0x80000000 >> (bone & 0x1F);
|
||||||
|
Game::ChangeViewmodelDobj(Game::g_clients->ps.weapon, Game::g_clients->ps.weaponmodels[Game::g_clients->ps.weapon], viewmodelInfo->handModel, viewmodelInfo->gogglesModel, viewmodelInfo->rocketModel, viewmodelInfo->knifeModel, 1);
|
||||||
|
Game::Scr_AddInt(true);
|
||||||
|
}, false);
|
||||||
|
|
||||||
|
GSC::AddFunction("ViewmodelShowTag", []
|
||||||
|
{
|
||||||
|
if (Game::Scr_GetNumParam() != 1)
|
||||||
|
{
|
||||||
|
Game::Scr_Error("ViewmodelShowTag() called with wrong params.\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int tagName = Game::Scr_GetConstString(0);
|
||||||
|
|
||||||
|
unsigned int weaponIndex = Game::ps->weapon;
|
||||||
|
const auto viewmodelInfo = &Game::cg_weaponsArray[weaponIndex];
|
||||||
|
|
||||||
|
std::uint8_t bone = 254;
|
||||||
|
if (!Game::DObjGetBoneIndex(viewmodelInfo->viewModelDObj, tagName, &bone))
|
||||||
|
{
|
||||||
|
const char* error_msg = Utils::String::VA("ViewmodelShowTag: No such bone tag (%s) for weapon (%s)", viewmodelInfo->translatedDisplayName, Game::SL_ConvertToString(tagName));
|
||||||
|
Game::Scr_Error(error_msg);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
viewmodelInfo->partBits[bone >> 5] &= ~(0x80000000 >> (bone & 0x1F));
|
||||||
|
Game::ChangeViewmodelDobj(Game::g_clients->ps.weapon, Game::g_clients->ps.weaponmodels[Game::g_clients->ps.weapon], viewmodelInfo->handModel, viewmodelInfo->gogglesModel, viewmodelInfo->rocketModel, viewmodelInfo->knifeModel, 1);
|
||||||
|
Game::Scr_AddInt(true);
|
||||||
}, false);
|
}, false);
|
||||||
|
|
||||||
Utils::Hook(0x5C2C91, Weapons::FireWeaponStub, HOOK_JUMP).install()->quick();
|
Utils::Hook(0x5C2C91, Weapons::FireWeaponStub, HOOK_JUMP).install()->quick();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user