Call of Duty Mod (by O'Zone)
O'Zone
30.01.2019
dwaidek951, patrząc po logach, pluginy próbują użyć natywów z silnika - cod_mod.amxx.
Przydałby się wycinek z zwykłego dziennego logu, bo zapewne tam znajdzie się informacja, dlaczego sam silnik nie działa.
O'Zone
02.02.2019
Wydano wersję oznaczoną numerem 1.2.0.
Lista zmian:
- Zaimplementowano wojny klanów (wymagane jest usunięcie tabeli cod_clans z bazy danych lub dodanie do niej pola wins z typem int w przypadku przejścia z wersji 1.1.x).
- Zaimplementowano wersję lite ikon przełączaną przez flagę #define LITE w kodzie źródłowym pluginu ikon.
- Zaimplementowano plugin admin menu (opcjonalny - domyślnie wyłączony).
- Przerobiono honor na jedyną używalną walutę (zastępuje pieniądze nawet w HUD).
- Dodano nowe cvary do pluginu klanów i zaimplementowano związaną z nimi logikę: cod_clans_create_fee i cod_clans_join_fee.
- Dodano nowe cvary do głównego pluginu i zaimplementowano związaną z nimi logikę: cod_night_exp_multiplier, cod_points_per_level i cod_points_limit.
- Dodano nowe cvary do pluginu statystyk i zaimplementowano logikę z nimi związaną: cod_revenge_enabled, cod_revenge_honor i cod_revenge_exp.
- Dodano cvar cod_honor_kill_first do pluginu honoru i zaimplementowano logikę z nim związaną.
- Dodano w głównym pluginie test bezpieczeństwa zmiennej przechowującej exp na możliwość wystąpienia błędu typu integer overflow.
- Zmieniono sposób sprawdzania flag w pluginie statystyk i vipie.
- Usprawniono wykonywanie zapytań typu non-threaded w klanach.
- Zmieniono domyślną wartość parametru value w natywie cod_set_user_item na RANDOM.
- Poprawiono usuwanie klanów z bazy danych po rozwiązaniu.
- Poprawiono czas top15 i status admina w pluginie statystyk.
- Naprawiono błąd resetowania punktów statystyk, gdy gracz stracił poziomy.
- Poprawiono możliwość zakupu naprawy przedmiotu bez konieczności jego posiadania.
- Naprawiono błąd z symbolem procentu w wiadomościach w głównym pluginie.
- Wiele innych drobnych zmian.
Dziękuję także osobom, które zgłosiły mi kilka wykrytych błędów i których poprawki mogłem zawrzeć w tej wersji.
Użytkownik O'Zone edytował ten post 03.02.2019 00:09
O'Zone
04.02.2019
Znacznie wcześniej, niż sam bym się tego spodziewał, wydano wersję 1.2.1.
Lista zmian:
- Zaimplementowano wiele nowych multiforwardów: cod_team_assign, cod_bomb_planting, cod_bomb_planted, cod_bomb_defusing, cod_bomb_defused, cod_bomb_explode, cod_bomb_dropped, cod_bomb_picked, cod_hostage_killed, cod_hostage_rescued, cod_hostages_rescued, cod_restart_round, cod_win_round.
- Zaktualizowano bibliotekę cod.inc.
- Uaktualniono pluginy, aby używały nowych forwardów.
- Zaktualizowano wykorzystanie funkcji SQL_ReadResult, aby używać wraz z nią SQL_FieldNameToNum zamiast hard-codowanych liczb.
- Usunięto bonus pieniężny dla VIP-ów.
- Poprawiono pusty rekord klanu pokazujący się po zwróceniu danych przez zapytania w menu deklaracji wojennych i top15 klanów.
- Poprawiono automatyczne resetowanie statystyk klasy, gdy jedna ze statystyk osiągnęła limit.
Eryk172
05.02.2019
Zaktualizuj Sklep-SMS jeśli chcesz, już nie trzeba dodawać VERSION, i zmieniło się parę innych drobnych rzeczy
Użytkownik Eryk172 edytował ten post 05.02.2019 18:46
Eryk172
06.02.2019
Posiadasz jakiś pomysł jak do Twojego CoDa dodać spadochron?
Klawisz E już jest zajęty, myślałem żeby przerobić skill klasy pod klawisz od radia( radio1, radio2, radio3) a spadochron zostawić pod E. Co o tym myślisz?
Eryk172
06.02.2019
P.S
Mókłbyś powiedzieć dlaczego use_item zwraca PLUGIN_HANDLED; a use_class(id) PLUGIN_CONTINUE;?
Eryk172
07.02.2019
L 02/07/2019 - 01:06:34: Info (map "cs_assault_1337") (file "addons/amxmodx/logs/error_20190207.log") L 02/07/2019 - 01:06:34: [FAKEMETA] Invalid entity 1 (no private data) L 02/07/2019 - 01:06:34: [AMXX] Displaying debug trace (plugin "cod_honor.amxx", version "1.2.1") L 02/07/2019 - 01:06:34: [AMXX] Run time error 10: native error (native "set_pdata_int") L 02/07/2019 - 01:06:34: [AMXX] [0] cod_honor.sma::update_hud (line 329) L 02/07/2019 - 01:06:34: [AMXX] [1] cod_honor.sma::client_putinserver (line 71) L 02/07/2019 - 01:09:08: Start of error session. L 02/07/2019 - 01:09:08: Info (map "cs_assault_1337") (file "addons/amxmodx/logs/error_20190207.log") L 02/07/2019 - 01:09:08: [FAKEMETA] Invalid entity 1 (no private data) L 02/07/2019 - 01:09:08: [AMXX] Displaying debug trace (plugin "cod_honor.amxx", version "1.2.1") L 02/07/2019 - 01:09:08: [AMXX] Run time error 10: native error (native "set_pdata_int") L 02/07/2019 - 01:09:08: [AMXX] [0] cod_honor.sma::update_hud (line 329) L 02/07/2019 - 01:09:08: [AMXX] [1] cod_honor.sma::client_putinserver (line 71)
Taki błąd po aktualizacji się pojawił
Edit: naprawiłem
cod_honor.sma
public client_putinserver(id) { playerHonor[id] = 0; playerHonorGained[id] = 0; rem_bit(id, dataLoaded); if (is_user_bot(id) || is_user_hltv(id)) return; update_hud(id); get_user_name(id, playerName[id], charsmax(playerName[])); cod_sql_string(playerName[id], playerName[id], charsmax(playerName[])); set_task(0.1, "load_honor", id + TASK_LOAD); }
Użytkownik Eryk172 edytował ten post 07.02.2019 01:16
Eryk172
07.02.2019
W załączniku zapodaje poprawiony sklep-sms, wraz z .inc
SCRIPTING - Sklep_SMS O'Zone.rar 4,62 KB
194 Ilość pobrań
O'Zone
07.02.2019
Posiadasz jakiś pomysł jak do Twojego CoDa dodać spadochron?
Klawisz E już jest zajęty, myślałem żeby przerobić skill klasy pod klawisz od radia( radio1, radio2, radio3) a spadochron zostawić pod E. Co o tym myślisz?
Skill klasy jest wywoływany zarówno jako +use, czyli domyślnie E (wychwytywany w sound_emit jako dźwięk "common/wpn_denyselect.wav"), jak i bind +class.
Jeśli koniecznie chcesz dodać spadochron, może usunąć wywoływanie przez +use i dać graczom możliwość samodzielnego zbindowania tejże mocy.
Możesz także wywoływać je tak jak chcesz pod radio - to już zależy od ciebie.
Mój CoD jest jedynie bazą do wykorzystania, więc dostosowanie go pod siebie przez własne modyfikacje jest wręcz rekomendowane.
P.S
Mókłbyś powiedzieć dlaczego use_item zwraca PLUGIN_HANDLED; a use_class(id) PLUGIN_CONTINUE;?
Skill itemu domyślnie impulse100 (domyślnie klawisz F), który jest też oczywiście używany do włączania/wyłączania latarki.
Zwrócenie wartości PLUGIN_HANDLED blokuje przy okazji użycie latarki.
L 02/07/2019 - 01:06:34: Info (map "cs_assault_1337") (file "addons/amxmodx/logs/error_20190207.log") L 02/07/2019 - 01:06:34: [FAKEMETA] Invalid entity 1 (no private data) L 02/07/2019 - 01:06:34: [AMXX] Displaying debug trace (plugin "cod_honor.amxx", version "1.2.1") L 02/07/2019 - 01:06:34: [AMXX] Run time error 10: native error (native "set_pdata_int")
Błąd został zgłoszony i poprawiony jeszcze zanim napisałeś tego posta.
W załączniku zapodaje poprawiony sklep-sms, wraz z .inc
Nawet kiedy ja pisałem te pluginy shop_sms_const.inc zawierało VERSION, co nie znaczy,
że same pluginy usług nie mogą mieć własnych, do ich niezależnego wersjonowania.
Nie rozumiem także po co dorzuciłeś standardowe pluginy usług vip'a i rezerwacji slota,
które znajdują się w paczce pobieranej razem z SklepemSMS - tutaj są wyłącznie pluginy dodatkowe.
Btw, SklepSMS ma dwa pliki .inc, shop_sms.inc i shop_sms_const.inc.
Jeśli chcesz dorzucić swoje poprawki do CoD'a, możesz wziąć pod uwagę powyższe uwagi,
zrobić fork'a repozytorium, wprowadzić zmiany i następnie otworzyć pull request.
W przypadku, gdy nie wiesz o co mi chodzi, "google it", doczytaj i wtedy zrób wszystko po kolei
- gwarantuję, że podstawy Git'a i GitFlow na pewno ci się kiedyś przydadzą
Robiin
07.02.2019
Posiadasz jakiś pomysł jak do Twojego CoDa dodać spadochron?
Klawisz E już jest zajęty, myślałem żeby przerobić skill klasy pod klawisz od radia( radio1, radio2, radio3) a spadochron zostawić pod E. Co o tym myślisz?
Możesz sprawdzać, czy gracz jest w danej odległości od podłoża, jeśli tak - otwierać spadochron, jednocześnie blokować wykonywanie się umiejętności klasy, przez co 'przewidujesz' (co prawda niedokładnie, ale jednak) zamiary gracza.
Eryk172
08.02.2019
Propozycja odnośnie klanów oraz misji, może wspólne misje dla członków klanów?
Zabicie 500 graczy wspólnie? itd...
Rivit
12.02.2019
Czy mi się wydaje czy
userConnected
nigdzie nie jest używane?
public client_death(killer, victim, weaponId, hitPlace, teamKill) { if (!is_user_connected(killer) || !is_user_connected(victim) || !is_user_alive(killer) || get_user_team(victim) == get_user_team(killer)) return PLUGIN_CONTINUE;
Redundantny warunek masz
Tak sobie czytałem do obiadku, projekt supcio śledze na bieżąco
O'Zone
15.02.2019
Propozycja odnośnie klanów oraz misji, może wspólne misje dla członków klanów?
Zabicie 500 graczy wspólnie? itd...
Pomysł wspólnych misji bardzo fajny, ale sensowna implementacja na pewno nieco czasochłonna.
Dodam tą koncepcję jako nowy issue na GitHubie, ale z labelem help-wanted, bo nie wiem,
czy sam będę miał na to wystarczająco dużo czasu w najbliższej przyszłości.
Czy mi się wydaje czy
userConnectednigdzie nie jest używane?
public client_death(killer, victim, weaponId, hitPlace, teamKill) { if (!is_user_connected(killer) || !is_user_connected(victim) || !is_user_alive(killer) || get_user_team(victim) == get_user_team(killer)) return PLUGIN_CONTINUE;Redundantny warunek masz
Tak sobie czytałem do obiadku, projekt supcio śledze na bieżąco
userConnected jest używane jako flaga ustawiana graczowi dopiero po faktycznym wejściu na serwer (w client_putinserver),
żeby zmienną playersNum zmniejszać w client_disconnected, tylko jeśli była zwiększona w client_putinserver.
Takie lekkie skomplikowanie prostej rzeczy, bo chciałem tutaj bardzo konkretny sposób działania
O, faktycznie. Powiedziałbym, że !is_user_alive(killer) może działać tutaj na szkodę, np. przy zabiciu granatem już po śmierci.
Rivit
16.02.2019
A czym się rozni playersNum od get_playersnum? Nie ufasz temu natywowi?
+ bardziej chodziło mi, że is_user_alive sprawdza is_user_connected, więc bez sensu sprawdzać oba
Użytkownik TibacK edytował ten post 16.02.2019 15:21
O'Zone
16.02.2019
A czym się rozni playersNum od get_playersnum? Nie ufasz temu natywowi?
+ bardziej chodziło mi, że is_user_alive sprawdza is_user_connected, więc bez sensu sprawdzać oba
Bardzo dobre pytanie, na które odpowiedź brzmi: niczym Była to na pewno decyzja budząca wątpliwości.
get_playersnum jest zresztą także wykorzystywany w silniku, jak i pluginach misji i honoru.
Także dla pozbycia się tej niekonsekwencji, pozbędę się playersNum.
Tak, jak najbardziej zdaję sobie z tego sprawę. Aczkolwiek w tym konkretnym wypadku usunięcie sprawdzania is_user_connected
i pozostawienie is_user_alive nie jest dobrą decyzją, z powodu o którym wspomniałem wcześniej.
SecretARczi
19.02.2019
[AMXX] Plugin "cod_mod.amxx" failed to load: Plugin uses an unknown function (name "cod_get_user_time_text") - check your modules.ini.