←  Prośby o modyfikacje silników/klas/perków

AMXX.pl: Support AMX Mod X i SourceMod

»

Klasa
Prosba o naprawe klasy (Nie dzialaja skoki)

  • +
  • -
NNK - zdjęcie NNK 18.10.2016

Witam, dlaczego w tej klasie nie dziala triple jump ?

 

Załączone pliki

Odpowiedz

  • +
  • -
_McHappy - zdjęcie _McHappy 19.10.2016

W cod_class_enabled :
ma_klase[id] = true;
Odpowiedz

  • +
  • -
NEQU# - zdjęcie NEQU# 19.10.2016

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

#define RedukcjaWProcentach 15
#define Redukcja ((100-RedukcjaWProcentach)/100.0)

new bool:ma_klase[33];
new skoki[33];

new const nazwa[] = "(Premium) Obronca";
new const opis[] = "Otrzymujesz 15 procent mniejsze obrazenia, trzy skoki i dwie apteczki";
new const bronie    = (1<<CSW_FAMAS)|(1<<CSW_DEAGLE);
new const zdrowie = 20;
new const kondycja = 20;
new const inteligencja = 0;
new const wytrzymalosc = 10;


public plugin_init()
{
	register_plugin(nazwa, "1.0", "BlackPerfum");
	cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
	RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
	register_forward(FM_CmdStart, "CmdStart");

	register_think("medkit", "Think_Apteczki");

	RegisterHam(Ham_Spawn, "player", "fwSpawn_Apteczki", 1);

}

public plugin_precache()
{

	sprite_white_apteczki = precache_model("sprites/white.spr");
	precache_model("models/w_medkit.mdl");

}


public client_disconnect(id)
{

	new entApteczki = find_ent_by_class(0, "medkit");
	while(entApteczki > 0)
	{
		if(entity_get_edict(entApteczki, EV_ENT_owner) == id)
			remove_entity(entApteczki);
		entApteczki = find_ent_by_class(entApteczki, "medkit");
	}

}

public cod_class_enabled(id)
{
	if(!(get_user_flags(id) & ADMIN_LEVEL_A))
	{
		client_print(id, print_chat, "[(Premium) Obronca] Nie masz uprawnien, aby uzywac tej klasy.")
		return COD_STOP;
	}

	ilosc_apteczek_gracza[id] = 2;

	ma_klase[id] = true;
   
	return COD_CONTINUE;
}


public cod_class_disabled(id)
ma_klase[id] = false;


public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(!ma_klase[this]) return HAM_IGNORED;
SetHamParamFloat(4, damage*Redukcja);
return HAM_IGNORED;
}

public cod_class_skill_used(id)
{
        
	if (!ilosc_apteczek_gracza[id])
	{
		client_print(id, print_center, "Masz tylko 2 apteczki na runde!");
	}
	else
	{

		ilosc_apteczek_gracza[id]--;

		new Float:origin[3];
		entity_get_vector(id, EV_VEC_origin, origin);

		new ent = create_entity("info_target");
		entity_set_string(ent, EV_SZ_classname, "medkit");
		entity_set_edict(ent, EV_ENT_owner, id);
		entity_set_int(ent, EV_INT_solid, SOLID_NOT);
		entity_set_vector(ent, EV_VEC_origin, origin);
		entity_set_float(ent, EV_FL_ltime, halflife_time() + 7 + 0.1);


		entity_set_model(ent, "models/w_medkit.mdl");
		set_rendering ( ent, kRenderFxGlowShell, 255,0,0, kRenderFxNone, 255 )     ;
		drop_to_floor(ent);


		entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.1);
	}
}

public fwSpawn_Apteczki(id)
{
	if(is_user_alive(id))
		ilosc_apteczek_gracza[id] = 2;
}


public Think_Apteczki(ent)
{
	if(!is_valid_ent(ent))
		return PLUGIN_CONTINUE;

	new id = entity_get_edict(ent, EV_ENT_owner);
	new dist = 300;
	new heal = 10+floatround(cod_get_user_intelligence(id)*0.3);

	if (entity_get_edict(ent, EV_ENT_euser2) == 1)
	{
		new Float:forigin[3];
		entity_get_vector(ent, EV_VEC_origin, forigin);

		new entlist[33];
		new numfound = find_sphere_class(0,"player", float(dist),entlist, 32,forigin);

		for (new i=0; i < numfound; i++)
		{
			new pid = entlist[i];

			if (get_user_team(pid) != get_user_team(id))
				continue;

			new maksymalne_zdrowie = 100+cod_get_user_health(pid);
			new zdrowie = get_user_health(pid);
			new Float:nowe_zdrowie = (zdrowie+heal<maksymalne_zdrowie)?zdrowie+heal+0.0:maksymalne_zdrowie+0.0;
			if (is_user_alive(pid)) entity_set_float(pid, EV_FL_health, nowe_zdrowie);
		}

		entity_set_edict(ent, EV_ENT_euser2, 0);
		entity_set_float(ent, EV_FL_nextthink, halflife_time() + 1.5);

		return PLUGIN_CONTINUE;
	}

	if (entity_get_float(ent, EV_FL_ltime) < halflife_time() || !is_user_alive(id))
	{
		remove_entity(ent);
		return PLUGIN_CONTINUE;
	}

	if (entity_get_float(ent, EV_FL_ltime)-2.0 < halflife_time())
		set_rendering ( ent, kRenderFxNone, 255,255,255, kRenderTransAlpha, 100 );

	new Float:forigin[3];
	entity_get_vector(ent, EV_VEC_origin, forigin);

	new iOrigin[3];
	for(new i=0;i<3;i++)
		iOrigin[i] = floatround(forigin[i]);

 	message_begin( MSG_BROADCAST, SVC_TEMPENTITY, iOrigin );
	write_byte( TE_BEAMCYLINDER );
	write_coord( iOrigin[0] );
	write_coord( iOrigin[1] );
	write_coord( iOrigin[2] );
	write_coord( iOrigin[0] );
	write_coord( iOrigin[1] + dist );
	write_coord( iOrigin[2] + dist );
	write_short( sprite_white_apteczki );
	write_byte( 0 ); // startframe
	write_byte( 0 ); // framerate
	write_byte( 10 ); // life
	write_byte( 10 ); // width
	write_byte( 255 ); // noise
	write_byte( 255 ); // r, g, b
	write_byte( 100 );// r, g, b
	write_byte( 100 ); // r, g, b
	write_byte( 128 ); // brightness
	write_byte( 0 ); // speed
	message_end();

	entity_set_edict(ent, EV_ENT_euser2 ,1);
	entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.5);


	return PLUGIN_CONTINUE;

}

public CmdStart(id, uc_handle)

{

	if(!is_user_alive(id) || !ma_klase[id]) //jeśli tworzymy perk, wstawiamy ma_perk zamiast ma_klase

		return FMRES_IGNORED;

	

	new flags = pev(id, pev_flags);

	

	if((get_uc(uc_handle, UC_Buttons) & IN_JUMP) && !(flags & FL_ONGROUND) && !(pev(id, pev_oldbuttons) & 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; //tutaj podajemy ilość skokow w powietrzu, jaką może wykonać klasa

	

	return FMRES_IGNORED;

}
Odpowiedz

  • +
  • -
NNK - zdjęcie NNK 30.10.2016

Teraz mam maly problem bo po zmianie klasy z obecnej na inna skoki zostaja, jakas pomoc ? xD gdzie jeszcze wciasnac warunek ma_klase 

Odpowiedz

  • +
  • -
_McHappy - zdjęcie _McHappy 30.10.2016

Wystarczą dwa warunki: w Cod class enabled i disabled.
W funkcji cmd start warunki też wydają się poprawne. Sprawdź, czy Twoja wersja zgadza się z wersją kolegi wyżej.
Wklej też: client_print(id, 3, "Skoki klasy Obronca");
Zaraz po pierwszym fmres_ignored funkcji cmd_start.
Jeżeli, podczas gry inna klasą, napis w cudzysłowie się wyświetla na chacie, to znaczy, że klasa odziedziczyła skoki po klasie Obrońca. Jeżeli nic się nie pokazuje, to problem leży zupełnie gdzie indziej.
Użytkownik _McHappy edytował ten post 30.10.2016 18:49
Odpowiedz

  • +
  • -
FinalRing - zdjęcie FinalRing 31.10.2016

Zamiast mu pisać niepotrzebne tezy poprawili byście klasę...

 

Proszę poprawione powinno wszystko śmigać.

 

Załączony plik  codclass_Obronca.sma   5,58 KB   67 Ilość pobrań

Odpowiedz

  • +
  • -
_McHappy - zdjęcie _McHappy 01.11.2016

Zamiast mu pisać niepotrzebne tezy poprawili byście klasę...

Proszę poprawione powinno wszystko śmigać.

Chyba nie czytałeś pierwszego postu...
Na gotowe to każdy potrafi, wytłumaczyć to już inna sprawa.
Użytkownik _McHappy edytował ten post 01.11.2016 10:38
Odpowiedz

  • +
  • -
FinalRing - zdjęcie FinalRing 01.11.2016

 

Zamiast mu pisać niepotrzebne tezy poprawili byście klasę...

Proszę poprawione powinno wszystko śmigać.

Chyba nie czytałeś pierwszego postu...
Na gotowe to każdy potrafi, wytłumaczyć to już inna sprawa.

 

Proszę bardzo co w moim kodzie sie różni przede wszystkim:

 

cod_class enabled i disabled  koniecznie z nawiasami { oraz }

 

dodana bilbioteka <engine> usunięty registerham hamspawn

 

nie potrzebnie mu jakies warunki pisaliście bo wystarczy popatrzeć jak klasa ma wyglądać mogłes zacząć edytowac klase podstawową z codmod medyk i dodac do niej tylko umiejętność mniejszych obrażen i skoki a skoki to kwestia minuty lub 2 by dodać bo to tylko jeden register_forward new skoki oraz public i gotowe

 

 


Użytkownik FinalRing edytował ten post 01.11.2016 12:28
Odpowiedz

  • +
  • -
NNK - zdjęcie NNK 03.11.2016

Mc happy dzięki za fajny pomysl na sprawdzanie bugow bo ja bym nie pomyslal zeby tak zrobic, będę z tego korzystal jesli moge, a co do klasy, to dzięki za poprawienie jej chlopaki :D Oczywiscie plusy poszly

Odpowiedz