Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Goliath - zdjęcie

Goliath

Rejestracja: 17.11.2010
Aktualnie: Poza forum
Poza forum Ostatnio: Prywatna
*****

Moje tematy

Multijump dla klasy/perku

08.10.2011 20:37

Witam!
W tym poradniku pokażę, jak zrobić multijump (dodatkowe skoki w powietrzu) dla klasy lub perku.

1. Weźmy *.sma przykładowej klasy np. Rushera:
Spoiler

2. Zacznijmy od przygotowania pliku. Stwórz 33-elementową tablicę globalną ma_klase (lub ma_perk dla perku) oraz funkcje cod_class_enabled i cod_class_disabled (cod_perk_enabled i cod_perk_disabled dla perku) w następujący sposób:
Spoiler

Jeśli twoja klasa ma już coś takiego, możesz pominąć w/w punkt.
3. Następnie upewnij się, że masz dołączoną do pluginu bibliotekę fakemeta. Jeśli nie, dodaj wśród innych "include'ów" to:
#include <fakemeta>

4. Następnie musimy dopisać to do plugin_init:
register_forward(FM_CmdStart, "CmdStart");

5. Teraz musimy stworzyć nową tablicę globalną - skoki oraz dodać na koniec pluginu funkcję CmdStart:
new skoki[33];

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;
}

6. Kompilujemy plik i gotowe! :)

A tutaj gotowy, przerobiony rusher:
Spoiler

Naprawa natywu cod_get_user_perk

14.09.2011 20:16

Sporo czasu temu zauważyłem, że natyw cod_get_user_perk nie działa do końca jak należy tzn. nie zwraca wartości perku. W końcu wykombinowałem, jak to naprawić :D.

1. Otwieramy plik QTM_CodMod.sma.
2. W funkcji plugin_natives zmieniamy:
register_native("cod_get_user_perk", "PobierzPerk", 1);
Na:
register_native("cod_get_user_perk", "PobierzPerk");
3. Zmieniamy funkcję PobierzPerk na:
public PobierzPerk(plugin, params)
{
	if(!(0 < params < 3))
		return 0;
	
	new id = get_param(1);
	if(!is_user_connected(id))
		return 0;
	
	if(params == 2)
		set_param_byref(2, wartosc_perku_gracza[id]);
	
	return perk_gracza[id];
}
4. Kompilujemy plik i gotowe! :D

Parametr Ham_Killed

13.09.2011 19:23

Nie będę tutaj się rozpisywał, tylko przejdę do rzeczy - za co odpowiada trzeci parametr kanapkowej funkcji Ham_Killed? Wycinek z ham_const.inc:
/**
	 * Description:		Normally called whenever an entity dies.
	 * Forward params:	function(this, idattacker, shouldgib)
	 * Return type:		None.
	 * Execute params:	ExecuteHam(Ham_Killed, this, idattacker, shouldgib);
	 */
	Ham_Killed,
Chodzi mi oczywiście o parametr "shouldgib".