←  Szukam pluginu

AMXX.pl: Support AMX Mod X i SourceMod

»

szybkosc z nozem

  • +
  • -
zapal swiece - zdjęcie zapal swiece 17.06.2014

szukam pluginu ktory zwieksza predkosc z nozem. Pomocy !

Odpowiedz

  • +
  • -
Drago36 - zdjęcie 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
Odpowiedz

  • +
  • -
zapal swiece - zdjęcie zapal swiece 17.06.2014

jest szybkosc ale na pistoletach :/

Odpowiedz

  • +
  • -
zapal swiece - zdjęcie zapal swiece 18.06.2014

plugin działa tak ze jak przeloze na noz i spowrotem na bron to wtedy biegam szybciej z bronia

Odpowiedz

  • +
  • -
Drago36 - zdjęcie 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
Odpowiedz

  • +
  • -
zapal swiece - zdjęcie zapal swiece 20.06.2014

w dalszym ciagu jest to samo

Odpowiedz

  • +
  • -
BlackPerfum - zdjęcie 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 sad.png

 

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 :D

 

I tutaj hamsandwich+fakemeta mają przewagę nad amxx'em gdyż pobranie aktualnie aktywnego przedmiotu zwróci poprawny wynik :D

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ć

Odpowiedz