[ROZWIĄZANE] ustawianie graczowi tlumik na...
Best Answer
GwynBleidD
17.01.2014 16:21
Bo w złym miejscu wykonujesz to.
Forward cod_class_enabled wykona się w momencie, gdy gracz wybierze z menu podaną klasę. Nie wykona się ani razu więciej... Więc gdy posiada usp i m4 w momencie wyboru klasy, zostanie mu tłumik na te bronie założony...
Musisz wychwycić kupno/podniesienie broni i wtedy tłumik zakładać. Oczywiście jeśli gracz posiada daną klasę.
Uwaga! Nie zakładaj w evencie weapon change, bo po 1 doprowadzisz ludzi do szału (nie będzie się dało tłumików zdjąć), a po 2 będzie to wykonywało się o dużo za dużo razy

Rivit
13.01.2014
Chcialbym sie dowiedziec jak ustawic tlumik graczowi poprzes set_pdata_int(id, x, x)
jak to zrobic?
Hleb
13.01.2014
znalezione w pliku usp.inc
#define m_fWeaponState_Usp 74 //(int) Bit flag status of weapon silencer/shield. #define CBASE_WEAPONSTATE_USP_SILENCED ( 1 << 0 ) #define CBASE_WEAPONSTATE_M4A1_SILENCED ( 1 << 2 ) #define CBASE_WEAPONSTATE_SHIELD_ARMED ( 1 << 5 )
musisz tylko wiedzieć, że to dla id enta broni (nie mylić z id broni)
czyli np. dla USP
new ent = find_ent_by_owner(-1, "weapon_usp", id)
if(ent) set_pdata_int(ent, m_fWeaponState_Usp, get_pdata_int(ent, m_fWeaponState_Usp, 4) | CBASE_WEAPONSTATE_USP_SILENCED, 4)
oraz dla m4a1
new ent = find_ent_by_owner(-1, "weapon_m4a1", id)
if(ent) set_pdata_int(ent, m_fWeaponState_Usp, get_pdata_int(ent, m_fWeaponState_Usp, 4) | CBASE_WEAPONSTATE_M4A1_SILENCED, 4)
Oczywiście wszystkie te #define musisz wszystko zdefiniować w pluginie.
Niestety nie znalazłem sumy bitowej na demontaż tłumików dla usp/m4a1.
Oczywiście nie testowałem, więc nie daję gwarancji, że zadziała.
Hleb
13.01.2014
new ent = find_ent_by_owner(-1, "weapon_usp", id) // tu daj albo "weapon_usp", albo "weapon_m4a1"if(ent)
if(get_pdata_int(ent, m_fWeaponState_Usp, 4) & CBASE_WEAPONSTATE_USP_SILENCED) // sytuacja, gdy jest zamontowany tłumik (w tym przypadku USP, dla m4a1 stosuj CBASE_WEAPONSTATE_M4A1_SILENCED)
{
...
}
else // sytuacja, kiedy NIE jest
{
...
}
Rivit
15.01.2014
cos to nie chce mi dzialac
#include <amxmodx> #include <codmod> #include <engine> #include <fakemeta> #define m_fWeaponState_Usp 74 //(int) Bit flag status of weapon silencer/shield. #define CBASE_WEAPONSTATE_USP_SILENCED ( 1 << 0 ) #define CBASE_WEAPONSTATE_M4A1_SILENCED ( 1 << 2 ) new const nazwa[] = "Cichy"; new const opis[] = "Ma od razu zalozony tlumik na usp i m4a1"; new const bronie = (1<<CSW_USP)|(1<<CSW_M4A1); new const zdrowie = 0; new const kondycja = 0; new const inteligencja = 5; new const wytrzymalosc = 10; public plugin_init() { register_plugin(nazwa, "1.0", "TibacK"); cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); } public cod_class_enabled(id) { new ent1 = find_ent_by_owner(-1, "weapon_usp", id) new ent2 = find_ent_by_owner(-1, "weapon_m4a1", id) if(ent1) set_pdata_int(ent1, m_fWeaponState_Usp, get_pdata_int(ent1, m_fWeaponState_Usp, 4) | CBASE_WEAPONSTATE_USP_SILENCED, 4) if(ent2) set_pdata_int(ent2, m_fWeaponState_Usp, get_pdata_int(ent2, m_fWeaponState_Usp, 4) | CBASE_WEAPONSTATE_M4A1_SILENCED, 4) }
Zrobilem tak jak ty podałes
Best Answer
GwynBleidD
17.01.2014
Bo w złym miejscu wykonujesz to.
Forward cod_class_enabled wykona się w momencie, gdy gracz wybierze z menu podaną klasę. Nie wykona się ani razu więciej... Więc gdy posiada usp i m4 w momencie wyboru klasy, zostanie mu tłumik na te bronie założony...
Musisz wychwycić kupno/podniesienie broni i wtedy tłumik zakładać. Oczywiście jeśli gracz posiada daną klasę.
Uwaga! Nie zakładaj w evencie weapon change, bo po 1 doprowadzisz ludzi do szału (nie będzie się dało tłumików zdjąć), a po 2 będzie to wykonywało się o dużo za dużo razy