←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Nowy
[ROZWIĄZANE] Pozbycie się CurWeapon #1 - S...

Locked

  • +
  • -
WeBsteR's Photo WeBsteR 27.08.2015

Witam, oto pierwszy temat z serii pozbycie się CurWeapon. A więc, postanowiłem usunąć z swojego silnika event CurWeapon i zastąpić go kanapką (optymalizacja). Niby zmiana prędkości/speeda gracza w hamsandwich działa, lecz mam pewien bug, który mam nadzieję, jakoś uda się naprawić.

Sypne kodem, aby nie było wróżenia z fusów.

Do zmiany/resetowania prędkości/speeda gracza użyłem:

RegisterHam(get_player_resetmaxspeed_func(), "player", "CS_Player_ResetMaxSpeed_Post", 1);

Next:

Ham:get_player_resetmaxspeed_func(){
        #if defined Ham_CS_Player_ResetMaxSpeed
                return IsHamValid(Ham_CS_Player_ResetMaxSpeed)?Ham_CS_Player_ResetMaxSpeed:Ham_Item_PreFrame;
        #else
                return Ham_Item_PreFrame;
        #endif
}

Next:

public CS_Player_ResetMaxSpeed_Post(id)
{
    if(!is_user_alive(id))
        return;
        
    UstawSzybkosc(id);
}

Next:

public PoczatekRundy()    
{
    freezetime = false;
    for(new id=0;id<=32;id++)
    {
        if(!is_user_alive(id))
            continue;

        Display_Fade(id, 1<<9, 1<<9, 1<<12, 0, 255, 70, 100);
        
        set_task(0.1, "UstawSzybkosc", id+ZADANIE_USTAW_SZYBKOSC);
        
        switch(get_user_team(id))
        {
            case 1: client_cmd(id, "spk QTM_CodMod/start2");
            case 2: client_cmd(id, "spk QTM_CodMod/start");
        }
    }
}

Next:

public UstawSzybkosc(id)
{
    id -= id>32? ZADANIE_USTAW_SZYBKOSC: 0;
    
    if(klasa_gracza[id] && !freezetime)
        set_pev(id, pev_maxspeed, szybkosc_gracza[id]);
}

To jest cały kod związany z prędkością gracza.

Wyżej wspomniałem, iż owa opcja posiada pewien bug, a więc jeżeli gracz dołączy do teamu i wybierze jakąś klasę to automatycznie ustawia mu się szybkość z sv_maxspeed. Jeżeli serwer ma sv_maxspeed "9999" to serwer ustawi mu taką samą prędkość jaką ma w cvarze. Ten bug jest raczej tylko raz (gdy gracz dołączy do teamu i wybierze klase), chcę dodać, iż owy bug ustaje jak się zmieni bronie np. z slota 1 na slot 2, gracz zrespi się na nowo jak zginie itd. to posiadamy już normalną prędkość taką jaką powinniśmy mieć.

Teraz nasuwa się pytanie, jak usunąć ten bug?

 

Pozdrawiam.

Quote

  • +
  • -
Linux''s Photo Linux' 27.08.2015

Dodaj do tego ustawianie predkosci podczas odrodzenia i usun wtedy ustawianie z poczatku rundy bo to bedzie zbedne.
Quote

  • +
  • -
WeBsteR's Photo WeBsteR 27.08.2015

Dodaj do tego ustawianie predkosci podczas odrodzenia i usun wtedy ustawianie z poczatku rundy bo to bedzie zbedne.

Nadal zostaje ten 1 bug, iż gracz np. dołączył w połowie rundy i wybrał klase, a jak wybrał klase to automatycznie ma speeda takiego jak jest ustawione np. sv_maxspeed "9999", przez co chodzi jak na speedhacku, reszta jest luks i działa jak należy.

Quote

^Szeregowy^'s Photo ^Szeregowy^ 27.08.2015

to ma być tylko w danej klasie czy wszystkich ?

 

edit zle przeczytałem użyj przypisania speed zaraz po respawnie


Edited by ^Szeregowy^, 27.08.2015 22:53.
Quote

  • +
  • -
Asiap's Photo Asiap 28.08.2015

uzyj przy spawnie

ExecuteHamB(get_player_resetmaxspeed_func(), id);

wtedy ustawi szybkosc z handlera CS_Player_ResetMaxSpeed_Post


Edited by Asiap, 28.08.2015 07:09.
Quote

  • +
  • -
Rivit's Photo Rivit 28.08.2015

Dopisz żeby nie usuwać całego curweapon bo nie będzie działać restrykcja broni,

 

 

Co do bugu to w UstawSzybkosc warunek, że jeżeli gracz nie ma klasy to ustawić mu standardowa szybkosc (patrz #define w silniku cod)

Quote

  • +
  • -
WeBsteR's Photo WeBsteR 28.08.2015


Dopisz żeby nie usuwać całego curweapon bo nie będzie działać restrykcja broni,

Tak ja o tym wiem, lecz to co podałem wyżej nie jest poradnikiem, zrobię osobny temat - poradnik na ten temat i tam wszystko opiszę co gdzie i jak (przy okazji odrobię sobie starego warna :^D ) Poza tym zaraz zabieram się aby  restrykcja broni, wykonywała się w Ham_Item_Deploy przez co CurWeapon będzie totalnie usunięte.

 

Udało mi się usunąć bug związany z prędkością, wystarczyło zrobić to co koledzy napisali wyżej + w poblicu ZastosujAtrybuty zrobić sprawdzenie, czy jest freezetime, jeżeli nie ma to ustawić set_pev od prędkosci.

 

Wszystko już działa jak należy, nie ma bugów, dziękuje za zainteresowanie tematem.

 

#Zamek.

Quote

  • +
  • -
radim's Photo radim 03.09.2015

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Quote
Locked