Skip to content

Commit

Permalink
Added k_cam_dispersion for ammo
Browse files Browse the repository at this point in the history
Added CWeapon, CWeaponAmmo and CCartridge exports
Example:

		if (db.actor) then
			local wpn = db.actor:active_item()
			if (wpn and IsWeapon(wpn)) then
				local weapon = wpn:cast_Weapon()
				if (weapon) then
					for cartridge in weapon:GetMagazine() do
						printf("%s",cartridge:GetInventoryName())
						cartridge.m_flags:set(cartridge.cfExplosive,true)
					end

				end
			end
		end
  • Loading branch information
revolucas committed May 22, 2018
1 parent 23855d2 commit 6346284
Show file tree
Hide file tree
Showing 6 changed files with 52 additions and 2 deletions.
4 changes: 3 additions & 1 deletion src/xrGame/EffectorShot.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,9 @@ void CWeaponShotEffector::Shot( CWeapon* weapon )
}
m_single_shot = (weapon->GetCurrentFireMode() == 1);

float angle = m_cam_recoil.Dispersion * weapon->cur_silencer_koef.cam_dispersion;
CCartridge* ammo = !weapon->m_magazine.empty()?&weapon->m_magazine.back():(0);
float k_cam_disp = ammo?ammo->param_s.k_cam_dispersion:1.0f;
float angle = m_cam_recoil.Dispersion * weapon->cur_silencer_koef.cam_dispersion * k_cam_disp;
angle += m_cam_recoil.DispersionInc * weapon->cur_silencer_koef.cam_disper_inc * (float)m_shot_numer;

m_angle_vert += angle * m_cam_recoil.DispersionFrac;
Expand Down
1 change: 1 addition & 0 deletions src/xrGame/Weapon.h
Original file line number Diff line number Diff line change
Expand Up @@ -697,6 +697,7 @@ class CWeapon : public CHudItemObject,
return m_can_be_strapped;
};

const decltype(m_magazine)& GetMagazine() { return m_magazine; };
float GetMagazineWeight(const decltype(m_magazine)& mag) const;

protected:
Expand Down
9 changes: 9 additions & 0 deletions src/xrGame/WeaponAK74.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,15 @@ void CWeaponAK74::script_register (lua_State *L)
class_<CWeapon,CGameObject>("CWeapon")
.def(constructor<>())
.def("can_kill", (bool (CWeapon::*)() const)&CWeapon::can_kill)
.def("ready_to_kill", (bool (CWeapon::*)() const)&CWeapon::ready_to_kill)
.def("GetAddonsState", (u8 (CWeapon::*)() const)&CWeapon::GetAddonsState)
.def("SetAddonsState",&CWeapon::SetAddonsState)
.def("IsZoomed", (bool (CWeapon::*)() const)&CWeapon::IsZoomed)
.def("GetZoomFactor", (float (CWeapon::*)() const)&CWeapon::GetZoomFactor)
.def("SetZoomFactor", &CWeapon::SetZoomFactor)
.def("Weight", (float (CWeapon::*)() const)&CWeapon::Weight)
.def("Cost", (u32 (CWeapon::*)() const)&CWeapon::Cost)
.def("GetMagazine", &CWeapon::GetMagazine, return_stl_iterator)
,

class_<CWeaponMagazined,CGameObject>("CWeaponMagazined")
Expand Down
1 change: 1 addition & 0 deletions src/xrGame/WeaponAmmo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ void CCartridge::Load(LPCSTR section, u8 LocalAmmoType)
param_s.kImpulse = pSettings->r_float(section, "k_impulse");
//m_kPierce = pSettings->r_float(section, "k_pierce");
param_s.kAP = pSettings->r_float(section, "k_ap");
param_s.k_cam_dispersion = READ_IF_EXISTS(pSettings, r_float, section, "k_cam_dispersion", 1.0f);
param_s.u8ColorID = READ_IF_EXISTS(pSettings, r_u8, section, "tracer_color_ID", 0);
param_s.kBulletSpeed = READ_IF_EXISTS(pSettings, r_float, section, "k_bullet_speed", 1.0f);
if (pSettings->line_exist(section, "k_air_resistance"))
Expand Down
5 changes: 4 additions & 1 deletion src/xrGame/WeaponAmmo.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

struct SCartridgeParam
{
float kDist, kDisp, kHit/*, kCritical*/, kImpulse, kAP, kAirRes, kBulletSpeed;
float kDist, kDisp, kHit/*, kCritical*/, kImpulse, kAP, kAirRes, kBulletSpeed, k_cam_dispersion;
int buckShot;
float impair;
float fWallmarkSize;
Expand All @@ -21,6 +21,7 @@ struct SCartridgeParam
impair = 1.0f;
fWallmarkSize = 0.0f;
u8ColorID = 0;
k_cam_dispersion = 1.0f;
}
};

Expand Down Expand Up @@ -48,6 +49,8 @@ class CCartridge : public IAnticheatDumpable
Flags8 m_flags;

shared_str m_InvShortName;

LPCSTR GetInventoryName(){ return m_InvShortName.c_str(); };
virtual void DumpActiveParams (shared_str const & section_name, CInifile & dst_ini) const;
virtual shared_str const GetAnticheatSectionName () const { return m_ammoSect; };
};
Expand Down
34 changes: 34 additions & 0 deletions src/xrGame/WeaponAmmo_script.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,39 @@ void CWeaponAmmo::script_register(lua_State *L)
{
module(L)
[
class_<SCartridgeParam>("SCartridgeParam")
.def(constructor<>())
.def("Init", &SCartridgeParam::Init)
.def_readwrite("kDist ", &SCartridgeParam::kDist)
.def_readwrite("kDisp ", &SCartridgeParam::kDisp)
.def_readwrite("kHit ", &SCartridgeParam::kHit)
.def_readwrite("kImpulse ", &SCartridgeParam::kImpulse)
.def_readwrite("kAP ", &SCartridgeParam::kAP)
.def_readwrite("kAirRes ", &SCartridgeParam::kAirRes)
.def_readwrite("kBulletSpeed ", &SCartridgeParam::kBulletSpeed)
.def_readwrite("k_cam_dispersion", &SCartridgeParam::k_cam_dispersion)
.def_readwrite("buckShot", &SCartridgeParam::buckShot)
.def_readwrite("impair", &SCartridgeParam::impair)
.def_readwrite("u8ColorID", &SCartridgeParam::u8ColorID)
,
class_<CCartridge>("CCartridge")
.def(constructor<>())
.def("Weight", &CCartridge::Weight)
.def_readwrite("m_LocalAmmoType", &CCartridge::m_LocalAmmoType)
.def_readwrite("m_4to1_tracer", &CCartridge::m_4to1_tracer)
.def_readwrite("bullet_material_idx", &CCartridge::bullet_material_idx)
.def_readwrite("m_flags", &CCartridge::m_flags)
.def_readwrite("param_s", &CCartridge::param_s)
.enum_("cartridge_flags")
[
value("cfTracer", int(CCartridge::cfTracer)),
value("cfRicochet", int(CCartridge::cfRicochet)),
value("cfCanBeUnlimited", int(CCartridge::cfCanBeUnlimited)),
value("cfExplosive", int(CCartridge::cfExplosive)),
value("cfMagneticBeam", int(CCartridge::cfMagneticBeam))
]
.def("GetInventoryName", &CCartridge::GetInventoryName)
,
class_<CWeaponAmmo, CGameObject>("CWeaponAmmo")
.def(constructor<>())
.def_readwrite("m_boxSize", &CWeaponAmmo::m_boxSize)
Expand All @@ -17,5 +50,6 @@ void CWeaponAmmo::script_register(lua_State *L)
.def_readwrite("m_4to1_tracer", &CWeaponAmmo::m_4to1_tracer)
.def("Weight", &CWeaponAmmo::Weight)
.def("Cost", &CWeaponAmmo::Cost)
.def("Get", &CWeaponAmmo::Get)
];
}

0 comments on commit 6346284

Please sign in to comment.