Witam proszę o przerobienie pluginu tak, żeby wytrzymałość perku malała wraz z otrzymywanymi obrażeniami. Chodzi mi o to, że na przykład nasz item ma 100 wytrzymałości i za każdym razem jak oberwiemy tracimy 5 wytrzymalosci.
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.
|

#1
Napisano 20.05.2018 14:17
3 sekundy 4 trupy
#2
Napisano 27.05.2018 12:31
Możliwe, że tak to ma wyglądać jak dobrze rozumiem.
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <codmod> #define PLUGIN "Wytrzymalosc Itemu" #define VERSION "1.0" #define AUTHOR "QTM_Peyote" #define ZADANIE_POKAZ_WYTRZYMALOSC 35200 new cvar_max_wytrzymalosc, cvar_uszkodzenia_dmg; new wytrzymalosc_perku[33]; new SyncHudObj; /*--------- Aby korzystac z natywow cod_get_perk_durability oraz cod_set_perk_durability musisz dodac do swojego pluginu: native cod_set_perk_durability(id, wytrzymalosc); // Ustawia wytrzymalosc perku gracza. native cod_get_perk_durability(id); // Pobiera wytrzymalosc perku gracza. -----------*/ public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_event("ResetHUD", "ResetHUD", "abe"); register_event("Damage", "Damage", "b", "2!=0"); cvar_max_wytrzymalosc = register_cvar("cod_maxperkdurability", "255"); cvar_uszkodzenia_dmg = register_cvar("cod_perkdamage", "5"); SyncHudObj = CreateHudSyncObj(); } public plugin_natives() { register_native("cod_get_perk_durability", "PobierzWytrzymalosc", 1); register_native("cod_set_perk_durability", "UstawWytrzymalosc", 1); } public cod_perk_changed(id, perk) wytrzymalosc_perku[id] = perk? get_pcvar_num(cvar_max_wytrzymalosc): 0; public Damage(id) { if(!cod_get_user_perk(id)) return; wytrzymalosc_perku[id] -= get_pcvar_num(cvar_uszkodzenia_dmg); if(wytrzymalosc_perku[id] <= 0) { cod_set_user_perk(id, 0); client_print(id, print_chat, "Zniszczyli ci item :("); } } public UstawWytrzymalosc(id, wartosc) { new max_wytrzymalosc = get_pcvar_num(cvar_max_wytrzymalosc); wytrzymalosc_perku[id] = (wartosc > max_wytrzymalosc)? max_wytrzymalosc: wartosc; } public PobierzWytrzymalosc(id) return wytrzymalosc_perku[id]; public PokazWytrzymalosc(id) { id -= ZADANIE_POKAZ_WYTRZYMALOSC; if(!is_user_alive(id)) { remove_task(id+ZADANIE_POKAZ_WYTRZYMALOSC); return; } set_hudmessage(255, 255, 255, 0.02, 0.23, 0, 0.0, 0.3, 0.0, 0.0); ShowSyncHudMsg(id, SyncHudObj, "^n^n^n^nWytrzymalosc Itemu: %i/%i", wytrzymalosc_perku[id], get_pcvar_num(cvar_max_wytrzymalosc)); } public ResetHUD(id) { if(!task_exists(id+ZADANIE_POKAZ_WYTRZYMALOSC)) set_task(0.1, "PokazWytrzymalosc", id+ZADANIE_POKAZ_WYTRZYMALOSC, _, _, "b"); }
#3
Napisano 29.05.2018 08:58
Przyjade ze szkoly i dam znac czy wszystko działa
3 sekundy 4 trupy
#4
Napisano 29.05.2018 14:43
Wszystko działa jak należy bardzo Ci dziękuje za pomoc. Mógłby ktoś jeszcze to zeedytować tak, że po wpisaniu /klasa perk się usuwa, żeby nie można było bugować wytrzymalości perku.
3 sekundy 4 trupy
#5
Napisano 29.05.2018 15:21
Wszystko działa jak należy bardzo Ci dziękuje za pomoc. Mógłby ktoś jeszcze to zeedytować tak, że po wpisaniu /klasa perk się usuwa, żeby nie można było bugować wytrzymalości perku.
to jest głupota.. Przy funkcji z przydzielaniem nowej klasy trzeba dodać zerowanie perku.
#6
Napisano 30.05.2018 14:01
Wszystko działa jak należy bardzo Ci dziękuje za pomoc. Mógłby ktoś jeszcze to zeedytować tak, że po wpisaniu /klasa perk się usuwa, żeby nie można było bugować wytrzymalości perku.
to jest głupota.. Przy funkcji z przydzielaniem nowej klasy trzeba dodać zerowanie perku.
Stary no ale zastanów się mamy perk który ma 100 wytrzymałości na przykład. Dostaliśmy troche i nagle mamy juz tylko 15 wytrzymalosci po wpisaniu /klasa odnawia ci sie ta wytrzymalosc takze to wszystko ma sens.
3 sekundy 4 trupy
#7
Napisano 01.06.2018 08:16
public cod_perk_changed(id, perk) { static perk_gracza[33]; if (perk_gracza[id] != perk) { perk_gracza[id] = perk; wytrzymalosc_perku[id] = perk ? get_pcvar_num(cvar_max_wytrzymalosc) : 0; } }
podmień istniejącą funkcję na tą, przy zmianie klasy nie ma usuwania perku, jest wywoływane tylko ustawianie perku,
który się posiada, więc powinno zadziałać
Potrzebujesz porad do amxx?? Pisz na [PW]
#8
Napisano 01.06.2018 12:41
public cod_perk_changed(id, perk) { static perk_gracza[33]; if (perk_gracza[id] != perk) { perk_gracza[id] = perk; wytrzymalosc_perku[id] = perk ? get_pcvar_num(cvar_max_wytrzymalosc) : 0; } }podmień istniejącą funkcję na tą, przy zmianie klasy nie ma usuwania perku, jest wywoływane tylko ustawianie perku,
który się posiada, więc powinno zadziałać
Niestety nie działa ;/
3 sekundy 4 trupy
#9
Napisano 01.06.2018 13:04
public cod_perk_changed(id, perk) cod_set_user_perk(id, 0);
#10
Napisano 01.06.2018 14:10
Pomieszałeś i to ostro
usuwanie perku, które podałeś jest spoko, ale cod_perk_changed musi zostać żeby przydzielać wytrzymałość dla nowego perku oraz kiedy będzie usuwany perk to poprawnie musi zerować wytrzymałość
Co do tej funkcji, którą podałem to na serio nie ma przeszkód by miała działać i utrzymywać wytrzymałość perku niezależnie ile razy zmienimy klasę,
bo ja wcale nie próbowałem zerować wytrzymałości przy zmianie klasy...
Potrzebujesz porad do amxx?? Pisz na [PW]
#11
Napisano 01.06.2018 14:17
public cod_perk_changed(id, perk) cod_set_user_perk(id, 0);
Z tym nie wczytuje huda, nie da sie zdobyc perku.
public cod_class_changed(id, perk) cod_set_user_perk(id, 0);Takie coś nie wystarczy? +usunąć cały public z cod_perk_changed
edit: nie dosc ze double to jeszcze coś pomieszałem
A z tym zawsze miałem 0 wytrzymalosci perku, przeciwnik uderzajac mnie raz niszczyl mi perk;/
Ktoś ma jescze jakieś pomysły bo widzę, że ciężko to idzie
3 sekundy 4 trupy
#12
Napisano 01.06.2018 14:28
A faktycznie, tak pomieszałem to teraz że szok:
public cod_perk_changed(id, perk) { static poprzedni_perk[33]; if(poprzedni_perk[id] == perk) return; wytrzymalosc_perku[id] = perk? get_pcvar_num(cvar_max_wytrzymalosc): 0; poprzedni_perk[id] = perk; }
Takie coś powinno wystarczyć. Awill to dał i to powinno śmigać
#13
Napisano 01.06.2018 14:42
https://amxx.pl/topi...ść-perku/page-2
To juz sprawdzałem wzięte z tego tematu.
A sam kod prezentuje sie tak ale przy zmianie klasy perk dalej zostaje bez zmian...
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <codmod> #define PLUGIN "[CODMOD] Wytrzymalosc Perku" #define VERSION "1.0" #define AUTHOR "QTM_Peyote" #define ZADANIE_POKAZ_WYTRZYMALOSC 35200 new cvar_max_wytrzymalosc, cvar_uszkodzenia_za_smierc; new wytrzymalosc_perku[33]; new SyncHudObj; /*--------- Aby korzystac z natywow cod_get_perk_durability oraz cod_set_perk_durability musisz dodac do swojego pluginu: native cod_set_perk_durability(id, wytrzymalosc); // Ustawia wytrzymalosc perku gracza. native cod_get_perk_durability(id); // Pobiera wytrzymalosc perku gracza. -----------*/ public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_event("ResetHUD", "ResetHUD", "abe"); register_event("DeathMsg", "Death", "ade"); cvar_max_wytrzymalosc = register_cvar("cod_maxperkdurability", "100"); cvar_uszkodzenia_za_smierc = register_cvar("cod_perkdamage", "10"); SyncHudObj = CreateHudSyncObj(); } public plugin_natives() { register_native("cod_get_perk_durability", "PobierzWytrzymalosc", 1); register_native("cod_set_perk_durability", "UstawWytrzymalosc", 1); } public cod_perk_changed(id, perk) { static poprzedni_perk[33]; if(poprzedni_perk[id] == perk) return; wytrzymalosc_perku[id] = perk? get_pcvar_num(cvar_max_wytrzymalosc): 0; poprzedni_perk[id] = perk; } public Death() { new id = read_data(2); if(!cod_get_user_perk(id)) return; new uszkodzenia_za_smierc = get_pcvar_num(cvar_uszkodzenia_za_smierc); wytrzymalosc_perku[id] -= (wytrzymalosc_perku[id] > uszkodzenia_za_smierc)? uszkodzenia_za_smierc: wytrzymalosc_perku[id]; if(wytrzymalosc_perku[id] <= 0) { cod_set_user_perk(id, 0); client_print(id, print_chat, "Twoj perk ulegl zniszczeniu."); } else client_print(id, print_chat, "Pozostala wytrzymalosc twojego perku to %i.", wytrzymalosc_perku[id]); } public UstawWytrzymalosc(id, wartosc) { new max_wytrzymalosc = get_pcvar_num(cvar_max_wytrzymalosc); wytrzymalosc_perku[id] = (wartosc > max_wytrzymalosc)? max_wytrzymalosc: wartosc; } public PobierzWytrzymalosc(id) return wytrzymalosc_perku[id]; public PokazWytrzymalosc(id) { id -= ZADANIE_POKAZ_WYTRZYMALOSC; if(!is_user_alive(id)) { remove_task(id+ZADANIE_POKAZ_WYTRZYMALOSC); return; } set_hudmessage(0, 255, 0, 0.02, 0.23, 0, 0.0, 0.3, 0.0, 0.0); ShowSyncHudMsg(id, SyncHudObj, "^n^n^n^n[Wytrzymalosc Perku: %i/%i]", wytrzymalosc_perku[id], get_pcvar_num(cvar_max_wytrzymalosc)); } public ResetHUD(id) { if(!task_exists(id+ZADANIE_POKAZ_WYTRZYMALOSC)) set_task(0.1, "PokazWytrzymalosc", id+ZADANIE_POKAZ_WYTRZYMALOSC, _, _, "b"); }
3 sekundy 4 trupy
#14
Napisano 01.06.2018 15:01
A faktycznie, tak pomieszałem to teraz że szok:
public cod_perk_changed(id, perk) { static poprzedni_perk[33]; if(poprzedni_perk[id] == perk) return; wytrzymalosc_perku[id] = perk? get_pcvar_num(cvar_max_wytrzymalosc): 0; poprzedni_perk[id] = perk; }Takie coś powinno wystarczyć. Awill to dał i to powinno śmigać
chyba zrozumiałeś co ten kod robi
choć ja staram się nie używać słowa return bo mniej czytelny kod jest dla tych co czytają po raz pierwszy
Co do tematu jak chcesz serio usuwanie perku przy zmianie klasy co by mnie osobiście irytowało jako gracza, to proszę:
cod_perk_changed bez zmian:
public cod_perk_changed(id, perk) wytrzymalosc_perku[id] = perk ? get_pcvar_num(cvar_max_wytrzymalosc) : 0;
dodajesz cod_class_changed tak jak miał tiback:
public cod_class_changed(id, perk) cod_set_user_perk(id, 0);
Gwarantuję ci, że gracze bardziej ucieszyli by się z tego rozwiązania, które podałem na początku.
Usuwanie perku przy zmianie klasy to najgorszy pomysł na jaki można wpaść.
Potrzebujesz porad do amxx?? Pisz na [PW]
#15
Napisano 01.06.2018 15:26
To już lepiej zrobić tak żeby wytrzymałość zostawała taka sama zamiast usuwać caly perk, ale do tego już trzeba .sma silnika, chyba że z tych forwardów by co wyciagnął. (mam to w swoim silniku cod, który jest na tym forum).
#16
Napisano 01.06.2018 15:31
To już lepiej zrobić tak żeby wytrzymałość zostawała taka sama zamiast usuwać caly perk, ale do tego już trzeba .sma silnika, chyba że z tych forwardów by co wyciagnął. (mam to w swoim silniku cod, który jest na tym forum).
zanim odpowiedziałem po raz pierwszy prześledziłem wszystkie czynności jakie się wykonują podczas zmiany klasy i perku.
nie jest potrzebna ingerencja w silnik, ten kod co ostatnio napisałeś będzie działać poprawnie.
no chyba, że autor tematu masz jakiś "unikatowy" silnik od zielonego
Potrzebujesz porad do amxx?? Pisz na [PW]
#17
Napisano 01.06.2018 17:47
Dziękuje wam za pomoc w sumie po raz kolejny wszystko działa jak należy. A do czego w ogóle dążę chcąc mieć kasowanie perku po zmianie klasy ? Gdyż irytuje mnie to, że gracze ze słabszych klas przekładają sobie item na te lepsze. W sumie powodów jest wiele. Temat do zamknięcia.
3 sekundy 4 trupy
#18
Napisano 01.06.2018 19:19
Wszystko działa jak należy bardzo Ci dziękuje za pomoc. Mógłby ktoś jeszcze to zeedytować tak, że po wpisaniu /klasa perk się usuwa, żeby nie można było bugować wytrzymalości perku.
to jest głupota.. Przy funkcji z przydzielaniem nowej klasy trzeba dodać zerowanie perku.
Stary no ale zastanów się mamy perk który ma 100 wytrzymałości na przykład. Dostaliśmy troche i nagle mamy juz tylko 15 wytrzymalosci po wpisaniu /klasa odnawia ci sie ta wytrzymalosc takze to wszystko ma sens.
Źle mnie zrozumiałeś, chodziło mi o to aby zamiast w plugu dodać w silniku przy wczytywaniu klasy kasowanie perku.. 1 linijka i byś miał to co chciałeś.
Również z jednym lub większą ilością słów kluczowych: silnik
Silnik
Modyfikacja silnika pod klasy zależne od drużyny.Napisany przez Arki, 21.02.2025 ![]() |
|
![]() |
|||
Silnik
Dodanie frakcji do klas od poziomuNapisany przez Lakrouss, 28.01.2025 ![]() |
|
![]() |
|||
Silnik
[Kondycja] po zmianie broni kondycja jest ustawiona a biega powoliNapisany przez One ShooT, 10.02.2023 ![]() |
|
![]() |
|||
Silnik
Prośba o edytacje silnika DoświadczenieNapisany przez One ShooT, 05.02.2023 ![]() |
|
![]() |
|||
![]() |
Silnik
proźba o dodanie expa za fragasilnik Napisany przez Anonimowy09, 20.01.2023 ![]() |
|
![]() |
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych