[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);
|
||||
});
|
||||
|
||||
GSC::AddFunction("getweapondamage", []
|
||||
GSC::AddFunction("GetWeaponDamage", []
|
||||
{
|
||||
if (Game::Scr_GetNumParam() != 1)
|
||||
{
|
||||
Game::Scr_Error("getweapondamage( <string> weaponName ) requires one parameter");
|
||||
Game::Scr_Error("GetWeaponDamage( <string> weaponName ) requires one parameter");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -70,11 +70,11 @@ namespace Components
|
||||
return Game::Scr_AddInt(weapon->damage);
|
||||
}, false);
|
||||
|
||||
GSC::AddFunction("setweapondamage", []
|
||||
GSC::AddFunction("SetWeaponDamage", []
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
@ -96,16 +96,77 @@ namespace Components
|
||||
}
|
||||
|
||||
int fxId = Game::Scr_GetInt(0);
|
||||
int realTagName = Game::Scr_GetConstString(1);
|
||||
unsigned int weaponIndex = Game::ps->weapon;
|
||||
int tagName = Game::Scr_GetConstString(1);
|
||||
|
||||
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::scr_const->tag_flash,
|
||||
weaponIndex + 2176,
|
||||
tagName,
|
||||
weaponIndex + 2176, // <-- CG_WeaponDObjHandle
|
||||
Game::cgsArray->fxs[fxId]);
|
||||
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);
|
||||
|
||||
Utils::Hook(0x5C2C91, Weapons::FireWeaponStub, HOOK_JUMP).install()->quick();
|
||||
|
Loading…
x
Reference in New Issue
Block a user