[ROZWIĄZANE] Jak wyrzucić broń graczowi?
Najlepsza odpowiedź sebul 22.08.2014 10:22
Bo tak właśnie trzeba robić, musisz podawać nazwę broni w trzecim parametrze. Przejdź do postuAle skoro wiadomość na czacie się pokazuje poprawnie to czemu nie wyrzuca?
W innym pluginie mam dropanie broni, ale tak:engclient_cmd(this, "drop", weapon); //weapon nazwa bronie weapon_*I to działa.
sNH.
18.08.2014
Pamiętam, że coś takiego było i bawiłem się z tym. Niestety nie miałem długo do czynienia z dokumentacją, ale mogę ci powiedzieć, że to było bardzo słabe rozwiązanie, w moim przypadku crashowało serwer. Poprzeglądaj dokumentację i forum. Znajdziesz coś, ale wg mnie to jest najlepsza i najprostsza opcja.
Puchate
18.08.2014
ale nie przez (eng)client_cmd.
Czemu? Użycie engclient_cmd to jedyna słuszna droga.
Użytkownik Puchate edytował ten post 18.08.2014 14:26
szelbi
18.08.2014
To spróbuj coś z tym zrobić, bo ja nie mam pojęcia co tam trzeba wpisać Próbowałem i ID entu nie działa, CSW_* nie działa, weapon_* też nie działa
Rivit
18.08.2014
Albo mam wadliwy kod albo to nie dziala na niektorych klientach. Paru gosci jest "odpornych" na wyrzucenie.
Co z Ham_Item_Drop ?
Puchate
19.08.2014
Paru gosci jest "odpornych" na wyrzucenie.
Drop to jest komenda engine gry, nie DLL'ki klienta więc ciężko mi uwierzyć w tą odporność.
O ile przez client_cmd komende "drop" można łatwo zablokować dodatkami, o tyle engclient_cmd powinno działać zawsze bez problemu BO NIE WYKONUJE SIE ONA U GRACZA.
Użytkownik Puchate edytował ten post 19.08.2014 12:07
Rivit
19.08.2014
A co z Ham_item_drop?
Jak tego uzyc?
Rivit
22.08.2014
public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits) { if(!is_user_connected(idattacker)) return HAM_IGNORED; if(!ma_klase[idattacker]) return HAM_IGNORED; if(!random(6)) { client_print(0, 3, "powinno dropac") engclient_cmd(this, "drop"); } if(get_user_weapon(idattacker) == CSW_USP && damagebits & DMG_BULLET) { SetHamParamFloat(4, damage+0.2*cod_get_user_intelligence(idattacker, 1, 1, 1)) return HAM_HANDLED } return HAM_IGNORED; }
To dlaczego nie działa ten kod? Dlatego że jest pre? Wiadomość na czacie się pokazuje, ale broni nie wyrzuca.
dasiek
22.08.2014
a testowo sprawdzałeś czy samo
client_print(0, 3, "powinno dropac") engclient_cmd(this, "drop");
bez randoma działa? Random jest zły i przebiegły , potrafi 7 lat losować liczbę nie taką jaką byśmy chcieli.
Rivit
22.08.2014
Ale skoro wiadomość na czacie się pokazuje poprawnie to czemu nie wyrzuca?
W innym pluginie mam dropanie broni, ale tak:
engclient_cmd(this, "drop", weapon); //weapon nazwa bronie weapon_*
I to działa.
Najlepsza odpowiedź
sebul
22.08.2014
Bo tak właśnie trzeba robić, musisz podawać nazwę broni w trzecim parametrze.Ale skoro wiadomość na czacie się pokazuje poprawnie to czemu nie wyrzuca?
W innym pluginie mam dropanie broni, ale tak:engclient_cmd(this, "drop", weapon); //weapon nazwa bronie weapon_*I to działa.
Rivit
22.08.2014
Pobiore przez get_weaponname i sprawdze.
A co z client_cmd i Ham_Item_Drop?
Puchate
22.08.2014
A co z client_cmd
Czego jeszcze nie wiesz o tym?
Ham_Item_Drop?
Podejrzewam ze nie jest to odpowiednio zaimplementowane w module aby moc wywolywac to, ale moge gadac w tej chwili glupoty bo nie mam kodu zrodlowego modulu / HL przed oczami.
Puchate
22.08.2014
Mam wrazenie ze nie wiesz o co pytasz client_cmd sluzy do wykonywania komend klienta gry, wiec moze byc bez problemu blokowane po stronie gracza. engclient_cmd wykonuje komendy silnika gry, czyli tak naprawdę to co jest zaimplementowane w netcode i nie wykonuje sie tak naprawdę u gracza (jak np. komenda rebuy).
Rivit
23.08.2014
Juz czaje.
A czy jest jakiś sposób żeby np. ustawić interp? Używam client_cmd, ale skoro to nie dla wszystkich działa to czy można inaczej? Gdzieś widziałem jakieś message, ale to chyba na innym forum i nwm jak się to wabi.
GwynBleidD
23.08.2014
engclient_cmd wykonuje to, co by normalnie wykonał, gdyby gracz wywołał komendę. Pomijamy więc wysyłanie komendy do gracza i oczekiwanie aż ją wykona, co może nie nastąpić jeśli gracz ją zablokuje. Nie ma więc gracz możliwości zablokowania tego. Zablokować może jedynie animację wyrzucania po swojej stronie, dzięki czemu dalej broń będzie trzymał... Ale nic mu to nie da, bo nie ma jak jej użyć, serwer uważa, że gracz już jej nie posiada...