←  Poradniki, Łatki oraz Pluginy

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Nowy
Multijump dla klasy/perku

  • +
  • -
Goliath's Photo Goliath 08.10.2011

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
Quote

  • +
  • -
d0naciak's Photo d0naciak 08.10.2011

Dużo ludzi ostatnio pytało o potrójny skok
Przyda się
Quote

  • +
  • -
Tomix's Photo Tomix 10.10.2011

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


o co chodzi w tym?bo jeśli ja dam tak jak pisze czyli:

else if(flags & FL_ONGROUND)
skoki[id] = 2; //tutaj podajemy ilość skokow w powietrzu, jaką może wykonać klasa
to i tak mam 4 skoki
Quote

  • +
  • -
d0naciak's Photo d0naciak 11.10.2011

A mam pytanie czy tu :
skoki[id] = 2; //tutaj podajemy ilość skokow w powietrzu, jaką może wykonać klasa

dodajemy ilość w powietrzu czy liczymy jeszcze skok od ziemi ?
Quote

  • +
  • -
Goliath's Photo Goliath 11.10.2011

Domyśliłem się, że będą takie pytania, dlatego napisałem wyraźnie "ilość skoków w powietrzu".
Quote