Battlefield One Mod
O'Zone
03.05.2017
Battlefield One Mod jest kolejną iteracją znanego już BF2, więc myślę, że nie muszę tłumaczyć co to.
Jest to jednak mocno odświeżona wersja - cały kod został przepisany właściwie od zera i upchnięty w jednym pliku,
choć zachowałem kilka rozwiązań, których używa klasyczna wersja.
Napisałem go na premierę gry BF1 i przez 3 miesiące był na jednym z moich serwerów.
Miałem go sprzedać, ale ostatecznie pomyślałem, że zrobię mały prezent społeczności.
Jedyne o co proszę to uszanowanie mojej pracy i niezmienianie autora.
Całkowicie zrezygnowałem z zapisu Nvault na rzecz SQL.
Aby uniezależnić plugin od modułu CSStats dane o wszystkich broniach zapisywane są w bazie w jednej dużej tabeli zawierającej 78 pól.
Dla każdego gracza wykonywane jest jednak jedno zapytanie odczytu i jedno zapisu danych, więc wszystko działa niezwykle szybko.
Mod korzysta z CSStats jedynie do sprawdzania rundowych statystyk broni, można teraz resetować ranking bez żadnych skutków ubocznych.
Odznaki dostępne są na 4 poziomach: Nowicjusz, Doświadczony, Weteran i Mistrz, moce odznak także uległy bardzo znaczącym zmianom.
Poza odznakami dostępne jest 10 orderów, które nie dają żadnych bonusów. Są jedynie zachętą do wymaksowania wszystkiego co jest do zdobycia.
Wprowadziłem system zliczający czas graczy i przyznający graczom Stopnie (jest ich 5) za przekroczenie kolejnych barier czasu gry.
System zapisuje także pierwszą i ostatnią wizytę gracza i na tej podstawie wyświetla odpowiednie przywitanie.
Poza tym można konfigurować wygląd HUD, z graczy wypadają paczki z bonusami (w tym z losową odznaką).
Zmian i nowości jest na prawdę sporo, więc nie będę wymieniał wszystkiego.
Dorzucam także plugin VIPa. Oba pluginy kompilują się zarówno pod AMXX 1.8.2 jak i 1.8.3.
bf1_db_host "127.0.0.1" bf1_db_user "user" bf1_db_pass "pass" bf1_db_database "db" bf1_active "1" bf1_badgepowers "1" bf1_help_url "http://cs-reload.pl/bf1webdocs" bf1_xpminplayers "3" bf1_icon_time "1.5" bf1_package_enabled "1" bf1_package_drop_chance "8" bf1_badge_hp "5" bf1_badge_speed "10.0" bf1_badge_money "250" bf1_bonus_armor "25"
Do użycia wymagane ADMIN_ALL - wszystkie flagi dostępu bf1_addbadge <player> <badge 1-10> <level 1-4> - dodanie odznaki graczowi, który jest na serwerze bf1_addbadgesql <player> <badge 1-10> <level 1-4> - dodanie odznaki graczowi, którego nie ma na serwerze (nick musi być w 100% prawidłowy)
Wymagane biblioteki: amxmodx amxmisc cstrike csx engine fun fakemeta fakemeta_util hamsandwich sqlx unixtime - niestandardowa biblioteka stripweapons - niestandardowa biblioteka Tylko dla AMXX 1.8.2: colorchat - niestandardowa biblioteka dhudmessage - niestandardowa biblioteka
Niestandardowe biblioteki dołączyłem w cstrike/addons/amxmodx/scripting/include.
Skompiluj lokalnie battlefield_one.sma i opcjonalnie bf1_vip.sma.
Wgraj na serwer folder cstrike. Wrzuć battlefield.one.amxx i opcjonalnie bf1_vip.amxx na serwer do folderu plugins.
Dopisz battlefield.one.amxx i opcjonalnie bf1_vip.amxx do plugins.ini.
Opcjonalnie wgraj folder bf1webdocs na serwer www i zmień cvar bf1_help_url.
Battlefield One Mod.zip 1,25 MB
244 Ilość pobrań
O'Zone
03.05.2017
Sądziłem, że są dość jasne, ale niech będzie
Posta oczywiście nie mogę zedytować, więc rozpiszę to tutaj.
bf1_db_host "127.0.0.1" // host bazy danych bf1_db_user "user" // użytownik bazy danych bf1_db_pass "pass" // hasło bazy danych bf1_db_database "db" // nazwa bazy danych bf1_active "1" // 1 - mod włączony | 0 - mod wyłączony bf1_badgepowers "1" // 1 - moce odznak włączone | 0 - moce odznak wyłączone bf1_help_url "http://cs-reload.pl/bf1webdocs" // link do plików pomocy na serwerze www bf1_xpminplayers "3" // od jakiej liczby graczy mod liczy fragi bf1_icon_time "1.5" // czas wyświetlania ikony rangi na głową gracza bf1_package_enabled "1" // 1 - paczki włączone | 0 - paczki wyłączone bf1_package_drop_chance "8" // szansa 1/x na wypadnięcie paczki bf1_badge_hp "5" // dodatkowe HP za każdy poziom odznaki za walkę bronią wsparcia bf1_badge_speed "10.0" // dodatkowa prędkość za każdy poziom odznaki za walkę bronią smg bf1_badge_money "250" // dodatkowa kasa co rundę za każdy poziom odznaki za walkę bronią snajperską bf1_bonus_armor "25" // dodatkowa kamizelka za każde zdobyte 10 odznak
Zapomniałem też wspomnieć o natywach.
Plugin udostępnia podstawowe natywy odznak, więc bez problemu można np. sprzedawać je.
W załączniku jest gotowy plugin usługi dla SklepuSMS autorstwa SeeKa.
Trzeba go oczywiście skompilować lokalnie, bo kompilator AMXX.pl nie ma biblioteki shop_sms.
/* Zwraca liczbę odznak */ native bf1_get_maxbadges(); /* Zwraca nazwę odznaki o podanym id i poziomie */ native bf1_get_badge_name(badge_id, badge_level, name[], len); /* Zwraca poziom odznaki o podanym id gracza o podanym indexie */ native bf1_get_user_badge(index, badge_id); /* Ustawia poziom odznaki o podanym id gracza o podanym indexie */ native bf1_set_user_badge(index, badge_id, level);
Załączone pliki
Amnezja
04.05.2017
Przy kompilowaniu lokalnie też wystepuje bład Czyli ten sam co napisales
"shop_sms"
O'Zone
05.05.2017
Amnezja, biblioteka shop_sms jest dołączona do paczki pluginów SklepuSMS przy jego pobieraniu,
więc zakładam, że mając tenże sklep posiada się także tą bibliotekę.
Wrzucam ją dodatkowo w załączniku.
Załączone pliki
AvatarPoz91
26.11.2017
Modyfikacja jest całkiem zacna i można fajnie pograć.
a..
Również mam problem z s1 s2
Jeśli dodamy te dane z poprawki kolegi, otrzymamy poprawne wyświetlanie chatu ale bez rangi, obok naszej ksywki.
Brakuje " , gRankName[gPlayer[id][RANK]]) " .. problem w tym jest że próbowałem 20 razy na rożne sposoby napisać i nie mam pojęcia jak to ma wyglądać żeby działać poprawnie
public handleSayText(msgId,msgDest,msgEnt){ new id = get_msg_arg_int(1); if(!is_user_connected(id)) return PLUGIN_CONTINUE; new szTmp[192], szTmp2[192]; get_msg_arg_string(2, szTmp, charsmax(szTmp)); new szPrefix[64] = "^x04[Nasz Prefix]"; if(!equal(szTmp,"#Cstrike_Chat_All")){ add(szTmp2, charsmax(szTmp2), "^x01"); add(szTmp2, charsmax(szTmp2), szPrefix); add(szTmp2, charsmax(szTmp2), " "); add(szTmp2, charsmax(szTmp2), szTmp); } else{ new szPlayerName[64]; get_user_name(id, szPlayerName, charsmax(szPlayerName)); get_msg_arg_string(4, szTmp, charsmax(szTmp)); //4. argument zawiera treść wysłanej wiadomości set_msg_arg_string(4, ""); //Musimy go wyzerować, gdyż gra wykorzysta wiadomość podwójnie co może skutkować crash'em 191+ znaków. add(szTmp2, charsmax(szTmp2), "^x01"); add(szTmp2, charsmax(szTmp2), szPrefix); add(szTmp2, charsmax(szTmp2), "^x03 "); add(szTmp2, charsmax(szTmp2), szPlayerName); add(szTmp2, charsmax(szTmp2), "^x01 : "); add(szTmp2, charsmax(szTmp2), szTmp) } set_msg_arg_string(2, szTmp2); return PLUGIN_CONTINUE; }
public chat_prefix(msgId, msgDest, msgEnt) { new id = get_msg_arg_int(1); if (!is_user_connected(id)) return PLUGIN_CONTINUE; new sTemp[256], sMessage[256], sPrefix[64]; get_msg_arg_string(2, sTemp, charsmax(sTemp)); formatex(sPrefix, charsmax(sPrefix), "^x04[%s]", gRankName[gPlayer[id][RANK]]); if (!equal(sTemp, "#Cstrike_Chat_All")) { add(sMessage, charsmax(sMessage), sPrefix); add(sMessage, charsmax(sMessage), " "); add(sMessage, charsmax(sMessage), sTemp); } else { add(sMessage, charsmax(sMessage), sPrefix); add(sMessage, charsmax(sMessage), " ^x03%s1 ^x01: %s2"); } set_msg_arg_string(2, sMessage); return PLUGIN_CONTINUE; }
O'Zone
26.11.2017
Na prośbę AvatarPoz91 i xarkez wstawiam wersję z poprawionymi prefixami w chatcie,
co jest oczywiście wymagane w związku z aktualizacją wprowadzoną swego czasu przez Valve.
Jeśli któryś mod jest na tyle miły, że podmieni paczkę w załączniku pierwszego postu, będę zobowiązany.
Mod można także pobrać z repozytorium na GitHubie: https://github.com/T.../BattlefieldOne.
Załączone pliki
Użytkownik O'Zone edytował ten post 26.11.2017 12:10
darkeno
11.04.2020
Na prośbę AvatarPoz91 i xarkez wstawiam wersję z poprawionymi prefixami w chatcie,
co jest oczywiście wymagane w związku z aktualizacją wprowadzoną swego czasu przez Valve.
Jeśli któryś mod jest na tyle miły, że podmieni paczkę w załączniku pierwszego postu, będę zobowiązany.
Mod można także pobrać z repozytorium na GitHubie: https://github.com/T.../BattlefieldOne.
witam paczka super tylko mam jeden problem niektórym graczom w hudzie po prawej stronie u góry wyświetlają się rangi cały czas a niektórym tylko po śmierći parę sekund i znika
O'Zone
13.04.2020
Właściwie nie myślałem, że jeszcze wrócę do tego moda i zaskoczyłem tutaj sam siebie.
Spędziłem dzisiaj większość dnia na przepisywaniu silnika, licznych poprawkach i usprawnieniach.
Tym samym wydana została wersja 2.0.
Pełna lista zmian jest dostępna w opisie release.
Struktura bazy danych nie uległa zmianie, więc aktualizację można zrobić bez robienia resetu.
Jednakże dość znacząco zmieniła się konfiguracja, także ustawienia bazy danych należy jeszcze raz skonfigurować w nowym bf1_mod.cfg.
PS. darkeno, wygląda mi to na zmieniony sposób wyświetlania danych z HUD na StatusText w menu /hud.
heron4i4
15.04.2020
samo działanie menu /bf2 jest kłopotliwe. Gdy już raz odwiedzi się jakiś opis rang z dostępnego menu to już nie można sprawdzić od razu kolejnych (nie da się wejść) i należy ponownie otworzyć menu komendą /bf2.
Kłopot z odswieżaniem w napisanym kodzie czy problem z jakąs biblioteką?
Użytkownik heron4i4 edytował ten post 15.04.2020 17:36
O'Zone
15.04.2020
samo działanie menu /bf2 jest kłopotliwe. Gdy już raz odwiedzi się jakiś opis rang z dostępnego menu to już nie można sprawdzić od razu kolejnych (nie da się wejść) i należy ponownie otworzyć menu komendą /bf2.
Kłopot z odswieżaniem w napisanym kodzie czy problem z jakąs biblioteką?
Nie potrafię zreplikować tego problemu na swoim serwerze testowym, każda pozycja wyświetla prawidłową zawartość w MOTD.
heron4i4
15.04.2020
To w takim razie musi być problem u mnie. Zainstalowany amxmod 1.9. Dodane biblioteki, przejrzę opis kilku odznak kolejno z pozycji (1 -->enter2-->enter-->3-->enter-->4-->enter>5 i się urwało. Już menu nie działa, trzeba wpisać ponownie /bf2.
W innych schematach przeglądania odznak lub innych opcji z menu również pojawia się ten błąd.
Z ciekawości zajrzałem na serwer, który zainstalowany ma tą paczkę i też tam nie działa to menu. (zajrzałem na jeden serwer z dwóch możliwych).
Być może masz u siebie coś, czego my nie mamy na swoim serwerze, a mogłeś zapomnieć wspomnieć. Nie wiem.
Od razu poruszę temat kompilacji kompilatorem 1.9 amxmod wywala błędy odnośnie niezdefiniowanych symbolach np. "Undefined symbol "MAX_PLAYERS" linia 248"
O'Zone
15.04.2020
Od razu poruszę temat kompilacji kompilatorem 1.9 amxmod wywala błędy odnośnie niezdefiniowanych symbolach np. "Undefined symbol "MAX_PLAYERS" linia 248"
Jeśli rzuca ci taki błąd przy kompilacji, to znaczy, że nie korzystasz z kompilatora dla wersji 1.8.3+.
Pobierz go sobie chociażby stąd.
heron4i4
15.04.2020
Co do kompilatora to dziękuje. Dojrzałem przed Twoją odpowiedzią, że ten mój był jednak niepoprawny. Zostaje kwestia wyświetlania menu. Moja wersja amx to na pewno "1.9.0.5263"
Użytkownik heron4i4 edytował ten post 15.04.2020 20:25
heron4i4
16.04.2020
W trakcie wciskania przyciskow w menu w konsoli pojawia sie "[CSXGuard] Blocked MOTD".
Mozna to jakos sensownie obejsc czy menu trzeba pisac od nowa?
W sumie to jeszcze nie wiem dlaczego to sie pojawia, czy chodzi o non steam czy o jakies przerobione wersje gry cs.
Użytkownik heron4i4 edytował ten post 16.04.2020 07:42
Rivit
16.04.2020
CSXGuard - wystarczy wrzucic w google.
To protektor, który blokuje wykonywanie komend na graczu, motd itp itd.
heron4i4
16.04.2020
Zmieniłem instalke cs 1.6 od cs-setti na inną i generalnie jest po problemie. Wszystkie motd w menu wyświetlają się prawidłowo.
Ale co z tym przypadkiem, jeśli inni gracze będą mieli ten sam kłopot? Muszą też zmieniać instalkę lub kombinować z obejściem protekcji CSXGuard?
Czy generalnie jest to już standardem, że nie powinno tego być? Dawno się tym nie zajmowałem, nie jestem na bieżąco i tego nie wiem.
TafiT
07.11.2020
Świetna modyfikacja ale do poprawnego działania komendy dodającą odznaki musiałem lekko edytować kod, jak ktoś zainteresowany to pisać, odkopie sma i podeślę ;d