←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

1/1 z He nie działa

Zablokowany

Karaj - zdjęcie Karaj 13.08.2011

Witam
Pomoże ktoś naprawić? bo 1/1 z He nie działa

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <codmod>
#include <hamsandwich>

#define DMG_BULLET (1<<1) 

#define DMG_HE (1<<24) 

new const perk_name[] = "Granat Gerala";
new const perk_desc[] = "Natychmiastowe zabicie z HE";

new ma_perk[33];

public plugin_init() 
{
        register_plugin(perk_name, "1.0", "MarWit")
        cod_register_perk(perk_name, perk_desc);
        RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
}

public cod_perk_enabled(id)
{
	cod_give_weapon(id, CSW_HEGRENADE);
	ma_perk[id] = true;
}

public cod_perk_disabled(id)
{
	cod_take_weapon(id, CSW_HEGRENADE);
	ma_perk[id] = false;
}

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
        if(!is_user_connected(idattacker))
                return HAM_IGNORED; 
        
        if(!ma_perk[idattacker])
                return HAM_IGNORED;
        
        
        if(damagebits & DMG_BULLET)
        {
                new weapon = get_user_weapon(idattacker);
                if(weapon == CSW_HEGRENADE) 
                        cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);
        }
        
        return HAM_IGNORED;
}

Odpowiedz

Dwdov - zdjęcie Dwdov 13.08.2011

Błędy co najmniej 3.
1. Sprawdzasz czy dmg są od naboi

if(damagebits & DMG_BULLET)

2. Sprawdzasz czy gracz trzyma aktualnie HE w ręce, a nie czy dmg zostało zadane przy pomocy HE.

new weapon = get_user_weapon(idattacker);
if(weapon == CSW_HEGRENADE)

3. W sumie nie taki błąd, ale po co tego używać wystarczy SetHamParamFloat( 4, damage )

cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);

Powinno być tak (sposobem ze starego coda, trzeba jeszcze #include <engine> )




public TakeDamage( this, idinflictor, idattacker, Float:damage, damagebits )
{
if( !is_user_connected( idattacker ) )
return HAM_IGNORED;

if( !ma_perk[idattacker] )
return HAM_IGNORED;


if( !( damagebits & DMG_BULLET ) // mozna tez chyba wj***c negacje ~DMG_BULLET
&& idinflictor != idattacker
&& entity_get_int(idinflictor, EV_INT_movetype) != 5 )
{
damage = get_user_health( this );
SetHamParamFloat(4, damage);
}

return HAM_IGNORED;
}

Użytkownik Dawedov edytował ten post 13.08.2011 09:31
Odpowiedz

Karaj - zdjęcie Karaj 13.08.2011

a to gdzie mam dac?

new weapon = get_user_weapon(idattacker);
if(weapon == CSW_HEGRENADE)
Odpowiedz

Dwdov - zdjęcie Dwdov 13.08.2011

Tak się tego nie sprawdza, get_user_weapon zwraca broń trzymaną, czyli rzucisz np. HE ale zanim on zada dmg to broń zmieni Ci się np. na m4a1 i wtedy get_user_weapon zwraca m4a1.

entity_get_int(idinflictor, EV_INT_movetype) != 5

To sprawdza czy sposob poruszania się enta jest inny niż 5 ( MOVETYPE_WALK - czyli gracza ) - o ile nie powaliłem numerków. Jeżeli jest inny to najprawdopodobniej to jest HE i tak też jest ; p


Odpowiedz

Karaj - zdjęcie Karaj 13.08.2011

złóż mi całe sma dam plus
Odpowiedz

Dwdov - zdjęcie Dwdov 13.08.2011

Masz wyżej jak powinna wyglądać funkcja takedamage, wklejasz ją zamiast swojej i dopisujesz na górze sma

#include <engine>
Odpowiedz

Karaj - zdjęcie Karaj 13.08.2011

zrobiłem tak i nie działa;/

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <codmod>
#include <hamsandwich>
#include <engine>

#define DMG_BULLET (1<<1) 

#define DMG_HE (1<<24) 

new const perk_name[] = "Granat Gerala";
new const perk_desc[] = "Natychmiastowe zabicie z HE";

new ma_perk[33];

public plugin_init() 
{
        register_plugin(perk_name, "1.0", "MarWit")
        cod_register_perk(perk_name, perk_desc);
        RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
}

public cod_perk_enabled(id)
{
	cod_give_weapon(id, CSW_HEGRENADE);
	ma_perk[id] = true;
}

public cod_perk_disabled(id)
{
	cod_take_weapon(id, CSW_HEGRENADE);
	ma_perk[id] = false;
}

public TakeDamage( this, idinflictor, idattacker, Float:damage, damagebits )
{
        if( !is_user_connected( idattacker ) )
                return HAM_IGNORED; 
        
        if( !ma_perk[idattacker] )
                return HAM_IGNORED;
        
        
        if( !( damagebits & DMG_BULLET ) // mozna tez chyba wj***c negacje ~DMG_BULLET
        && idinflictor != idattacker 
        && entity_get_int(idinflictor, EV_INT_movetype) != 5 ) 
        {
                damage = get_user_health( this );
                SetHamParamFloat(4, damage);
        }
        
        return HAM_IGNORED;
}
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 13.08.2011

sprawdz
#include <amxmodx>
#include <codmod>
#include <hamsandwich>

new const perk_name[] = "Granat Gerala";
new const perk_desc[] = "Natychmiastowe zabicie z HE";

new ma_perk[33];

public plugin_init() 
{
	register_plugin(perk_name, "1.0", "MarWit")
	cod_register_perk(perk_name, perk_desc);
	RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
}

public cod_perk_enabled(id)
{
	cod_give_weapon(id, CSW_HEGRENADE);
	ma_perk[id] = true;
}

public cod_perk_disabled(id)
{
	cod_take_weapon(id, CSW_HEGRENADE);
	ma_perk[id] = false;
}

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
	if(!is_user_connected(idattacker) || !is_user_connected(this))
		return HAM_IGNORED; 
	
	if(!ma_perk[idattacker])
		return HAM_IGNORED;
	
	
	if(damagebits & (1 << 24) )
	{
		cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);
	}
	
	return HAM_IGNORED;
}
Odpowiedz

Karaj - zdjęcie Karaj 13.08.2011

dzięki działa:)
Odpowiedz

Adminek AMXX.PL - zdjęcie Adminek AMXX.PL 13.08.2011

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Rozwiązane

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Odpowiedz
Zablokowany