NaTeOooO Napisano 14 Maja 2015 #82980 Udostępnij Napisano 14 Maja 2015 (edytowane) 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: /* Plugin generated by AMXX-Studio */ #include #include new const nazwa[] = "Rusher"; new const opis[] = "Brak"; new const bronie = 1< new const zdrowie = 0; new const kondycja = 55; new const inteligencja = 10; new const wytrzymalosc = 0; public plugin_init() { register_plugin(nazwa, "1.0", "QTM_Peyote"); cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); } 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: /* Plugin generated by AMXX-Studio */ #include #include new const nazwa[] = "Rusher"; new const opis[] = "Brak"; new const bronie = 1< new const zdrowie = 0; new const kondycja = 55; new const inteligencja = 10; new const wytrzymalosc = 0; new ma_klase[33]; public plugin_init() { register_plugin(nazwa, "1.0", "QTM_Peyote"); cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); } public cod_class_enabled(id) { ma_klase[id] = true; } public cod_class_disabled(id) { ma_klase[id] = false; } 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 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: /* Plugin generated by AMXX-Studio */ #include #include #include new const nazwa[] = "Rusher"; new const opis[] = "Ma potrojny skok"; new const bronie = 1< new const zdrowie = 0; new const kondycja = 55; new const inteligencja = 10; new const wytrzymalosc = 0; new ma_klase[33]; new skoki[33]; public plugin_init() { register_plugin(nazwa, "1.0", "QTM_Peyote"); cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); register_forward(FM_CmdStart, "CmdStart"); } public cod_class_enabled(id) { ma_klase[id] = true; } public cod_class_disabled(id) { ma_klase[id] = false; } public CmdStart(id, uc_handle) { if(!is_user_alive(id) || !ma_klase[id]) 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; return FMRES_IGNORED; } Edytowane 27 Sierpnia 2017 przez klqs Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi