szybkosc z nozem
Drago36
17.06.2014
Zrobiłem to benia sposobem i nie wiem czy zadziała. Sprawdź:
#include <amxmodx> #include <hamsandwich> #include <fun> new bool:freezetime public plugin_init() { register_plugin("Wieksza szybkoscna nozu", "1.0", "author") RegisterHam(get_player_resetmaxspeed_func(), "player", "fw_Player_ResetMaxSpeed", 1) register_logevent("PoczatekRundy", 2, "1=Round_Start") register_event("HLTV", "NowaRunda", "a", "1=0", "2=0") } Ham:get_player_resetmaxspeed_func(){ #if defined Ham_CS_Player_ResetMaxSpeed return IsHamValid(Ham_CS_Player_ResetMaxSpeed)?Ham_CS_Player_ResetMaxSpeed:Ham_Item_PreFrame; #else return Ham_Item_PreFrame; #endif } public fw_Player_ResetMaxSpeed(id){ if(is_user_alive(id)){ fw_Player_ResetMaxSpeedGo(id) } } public fw_Player_ResetMaxSpeedGo(id){ if(!freezetime){ if(get_user_weapon(id) == CSW_KNIFE) { set_user_maxspeed(id,get_user_maxspeed(id) + 50) // za 50 zmieniasz ile ma dodac szybkosc na nozu } } } public PoczatekRundy() freezetime = false public NowaRunda() freezetime = true
zapal swiece
18.06.2014
plugin działa tak ze jak przeloze na noz i spowrotem na bron to wtedy biegam szybciej z bronia
Drago36
18.06.2014
Było tak od razu.
Sprawdź tą wersje:
#include <amxmodx> #include <hamsandwich> #include <fun> new bool:freezetime, bool:ma_noz[33] new Float:oldspeed[33] public plugin_init() { register_plugin("Wieksza szybkoscna nozu", "1.1", "author") RegisterHam(get_player_resetmaxspeed_func(), "player", "fw_Player_ResetMaxSpeed", 1) register_logevent("PoczatekRundy", 2, "1=Round_Start") register_event("HLTV", "NowaRunda", "a", "1=0", "2=0") register_event("CurWeapon", "CurWeapon", "be") } Ham:get_player_resetmaxspeed_func(){ #if defined Ham_CS_Player_ResetMaxSpeed return IsHamValid(Ham_CS_Player_ResetMaxSpeed)?Ham_CS_Player_ResetMaxSpeed:Ham_Item_PreFrame; #else return Ham_Item_PreFrame; #endif } public fw_Player_ResetMaxSpeed(id){ if(is_user_alive(id)){ if(!freezetime){ if(ma_noz[id]) { oldspeed[id] = get_user_maxspeed(id) set_user_maxspeed(id,get_user_maxspeed(id) + 50) // za 50 zmieniasz ile ma dodac szybkosc na nozu } else { set_user_maxspeed(id, oldspeed[id]) } } } } public CurWeapon(id){ if(get_user_weapon(id) == CSW_KNIFE) { ma_noz[id] = true } else { ma_noz[id] = false } } public PoczatekRundy() freezetime = false public NowaRunda() freezetime = true
BlackPerfum
20.06.2014
To bardzo smutne ale event Ham_CS_Player_ResetMaxSpeed wywołuje się wcześniej niż CurWeapon a nawet wcześniej niż ustawienie właściwej broni pobieranej z get_user_weapon
W dodatku nie polecam używać CurWeapon do takiego typu sprawdzania broni gdyż event CurWeapon nie wykonuje się zawsze. Ham_Item_Deploy wykonuje się wcześniej niż Ham_CS_Player_ResetMaxSpeed dlatego jesli byś go użył zamiast CurWeapon by działało
I tutaj hamsandwich+fakemeta mają przewagę nad amxx'em gdyż pobranie aktualnie aktywnego przedmiotu zwróci poprawny wynik
Piękny przypadek w którym:
get_user_weapon(id) != get_pdata_int(get_pdata_cbase(id,m_pActiveItem,5),m_iId,4)
Takie coś działa:
#include <amxmodx> #include <hamsandwich> #include <fakemeta> const m_pActiveItem = 373 // Offset aktualnie aktywnego przedmiotu const m_iId = 43 // Offset numeru id (to z CSW_*) dla danego przedmiotu const Float:ADD_SPEED = 50.0 //Tu możesz sobie zmienić swoją prędkość public plugin_init() { register_plugin("Wieksza prędkość nozu", "Beta", "BlackPerfum") RegisterHam(Ham_CS_Player_ResetMaxSpeed, "player", "ResetMaxSpeed", 1) // Wiemy że gracz ma wersje hamsandwicha >= 1.3 (wnioskuje z dotychczasowych wyników) } public ResetMaxSpeed(id) { static Float:Speed pev(id,pev_maxspeed,Speed) if(!is_user_alive(id) || Speed < 10.0) return HAM_IGNORED //Trzeba sprawdzić czy gracz żyje gdyż gracz martwy może posiadać maxspeed >= 10.0 //Dodatkowo omijamy frezztime //Sprawdzamy broń gracza w nietypowy sposób :D if(get_pdata_int(get_pdata_cbase(id,m_pActiveItem,5),m_iId,4) == CSW_KNIFE) { //Jeśli aktualna broń gracza to nóż //To zwiększamy mu prędkość Speed += ADD_SPEED set_pev(id,pev_maxspeed,Speed) engfunc(EngFunc_SetClientMaxspeed,id,Speed) //Dodatkowo zapobiegam wysyłaniu błędnych informacji dalej return HAM_SUPERCEDE } return HAM_IGNORED }
Tu możesz o offsetach poczytać