←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Nowy
Potrójny skok i błąd w kompilacji

Locked

  • +
  • -
severe's Photo severe 26.06.2011

Witam. Nie wiem co tu źle zrobiłem:
/* Plugin generated by AMXX-Studio */

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

#define DMG_BULLET (1<<1)


new const nazwa[] = "Elitarny Rusher";
new const opis[] = "1/3 szansa na zabicie przeciwka,nowa broń";
new const bronie = 1<<CSW_M3 | 1<<CSW_XM1014;
new const zdrowie = 10;
new const kondycja = 85;
new const inteligencja = 20;
new const wytrzymalosc = 10;

public plugin_init() {
register_plugin(nazwa, "1.0", "QTM_Peyote");

cod_register_advance(cod_get_classid("Rusher"), 50, nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);

RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
}
public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(!is_user_connected(idattacker))
return HAM_IGNORED;

if(!ma_klase[idattacker])
return HAM_IGNORED;

if(damagebits & DMG_BULLET)
{
new weapon = get_user_weapon(idattacker);

if(weapon == CSW_M3 && damage > 20.0 && random_num(1,3) == 1)
cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);
if(weapon == CSW_XM1014 && damage > 20.0 && random_num(1,3) == 1)
cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);

}

return HAM_IGNORED;


I jeszcze mam małe pytanko jak zrobić potrójny skok w powietrzu?
Quote

  • +
  • -
BliBs_Pl's Photo BliBs_Pl 26.06.2011

Chyba tu masz coś źle:
cod_register_advance(cod_get_classid("Rusher"), 50, nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
Quote

  • +
  • -
severe's Photo severe 26.06.2011

A dokładniej? bo ja tu nie widzę błedu.
Quote

  • +
  • -
BliBs_Pl's Photo BliBs_Pl 26.06.2011

U mnie to wygląda tak:
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
Quote

  • +
  • -
severe's Photo severe 26.06.2011

Ale to jest klasa, która awansuje. Ale poradziłem sobie z tym. Teraz mam problem ponieważ nie wiem jak zrobić potrójny skok...
Quote

  • +
  • -
BliBs_Pl's Photo BliBs_Pl 27.06.2011

Po prostu robisz tak:

Do #include'ów dajesz:
#include <fakemeta>

Do bool'ów dajesz (jeśli nie masz żadnego boola i nie wiesz gdzie to dać to daj pod consty albo nad consty ale nie wiem czy to coś zmienia):
new bool:moze_skoczyc[33];

Pod(czy jakiego ty tam masz):
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
dajesz:
register_forward(FM_CmdStart, "CmdStart");

I przy publicach wpisujesz:
public CmdStart(id, uc_handle)
{
	if(!ma_klase[id])
		return FMRES_IGNORED;
	
	new button = get_uc(uc_handle, UC_Buttons);
	new oldbutton = pev(id, pev_oldbuttons);
	new flags = pev(id, pev_flags);
	if((button & IN_JUMP) && !(flags & FL_ONGROUND) && !(oldbutton & IN_JUMP) && moze_skoczyc[id])
	{
		moze_skoczyc[id] = false;
		new Float:velocity[3];
		pev(id, pev_velocity, velocity);
		velocity[2] = random_float(265.0,285.0);
		set_pev(id, pev_velocity, velocity);
	}
	else if(flags & FL_ONGROUND)	
		moze_skoczyc[id] = true;
		
	return FMRES_IGNORED;
}

To jakoś trzeba zmienić ale nie wiem jak do końca.
Quote

  • +
  • -
Goliath's Photo Goliath 27.06.2011

On chce trzy skoki, a nie dwa.
Zmień:
new bool:moze_skoczyc[33];

Na:
new skoki[33];


A następnie zmień:
public CmdStart(id, uc_handle)
{
if(!ma_klase[id])
return FMRES_IGNORED;

new button = get_uc(uc_handle, UC_Buttons);
new oldbutton = pev(id, pev_oldbuttons);
new flags = pev(id, pev_flags);
if((button & IN_JUMP) && !(flags & FL_ONGROUND) && !(oldbutton & IN_JUMP) && moze_skoczyc[id])
{
moze_skoczyc[id] = false;
new Float:velocity[3];
pev(id, pev_velocity, velocity);
velocity[2] = random_float(265.0,285.0);
set_pev(id, pev_velocity, velocity);
}
else if(flags & FL_ONGROUND)
moze_skoczyc[id] = true;

return FMRES_IGNORED;
}

Na:
public CmdStart(id, uc_handle)
{
if(!ma_klase[id])
return FMRES_IGNORED;

new button = get_uc(uc_handle, UC_Buttons);
new oldbutton = pev(id, pev_oldbuttons);
new flags = pev(id, pev_flags);
if((button & IN_JUMP) && !(flags & FL_ONGROUND) && !(oldbutton & IN_JUMP) && skoki[id])
{
skoki[id]--;
new Float:velocity[3];
pev(id, pev_velocity, velocity);
velocity[2] = random_float(265.0,285.0);
set_pev(id, pev_velocity, velocity);
}
else if(flags & FL_ONGROUND)
skoki[id] = 2;

return FMRES_IGNORED;
}
Quote

  • +
  • -
severe's Photo severe 27.06.2011

super działa ^^
Quote
Locked