Skocz do zawartości

MAGNET

Użytkownik
  • Postów

    27
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    2
  • Dotacje

    0.00 PLN 

Zawartość dodana przez MAGNET

  1. Wszystkie serwery hostingowe są na linuxie
  2. Witam, zdałem sobie sprawę z tego, że zaniedbałem aspekt, jakim jest możliwość kupna VIPa. Zabiegany strasznie jestem, ale znalazłem 5 minut, aby wszystko uporządkować i wyjaśnić o co biega. Na początek może przedstawię co nam kupno takiego VIPa daje: - darmowe granaty - dodatkowa kasa na plant/defuse paki, kill, i spawn - dodatkowe 10HP (utrzyj snajperom nosa!) - napis VIP na say'u - WŁASNY ClanTag !* *jest to prefix przed nickiem. Nabywca może wybrać tag jaki tylko sobie zapragnie. Jak kupić VIPa: Skonaktuj się ze mną poprzez GG lub steam. Przed rozmową przygotuj swoje steamID, ClanTag oraz dokładny nick. Podam Tobie treść smsa, który masz wysłać, a następnie podać kod zwrotny. Kosz to 7.38zł. GG: 48962202 Steam: http://steamcommunity.com/id/magnetamxx Jeśli chcesz, możesz doświadczyć namiastki VIPa już teraz! Wystarczy, że dołączysz do naszej grupy CSowiczeWRD2 i ustawisz ją sobie jako ClanTag(prefix). Dzięki temu co rundę będziesz dostawał darmowego flashbanga! Nie czekaj i wspomóż nas już teraz. Serwer musi się z czegoś utrzymywać :) Do zobaczenia!
  3. MAGNET

    Cs go

    Hehehe trudne pytanie mi zadajesz. Nie lubię odpowiadać szablonowo jak inni, czyli "bo są super gracze", "bo miła atmosfera", "bo drop kosmiczny". Ciężko jest jakoś wyszczególnić cechy, które mogłyby pokazać, że nasz serwer jest THE BEST. Ja jednak z mojej strony mogę powiedzieć tylko tyle, że jest to coś innego, bo nikt nie stworzył serwera z 3 mapami latającymi w kółko, z czego 2 pochodzą z klimatów CS 1.6. Mogłem działać szablonowo jak inni, jednak zdecydowałem się na postawienie takiego serwera, gdyż chciałem sprawdzić reakcję innych ludzi, czy serwer się spodoba... Jeśli chodzi o same modyfikacje serwera, to mogę przytoczyć dwie, których nie znajdziesz nigdzie indziej: 1. Plugin do wyboru noży został przeze mnie zmodyfikowany tak, aby kolejne kosy odblokowywały się dopiero po osiągnięciu określonej ilości fragów. 2. Dziś dodam możliwość kupna VIPa u mnie na GG/Steam. Zaletą jego jest to, że każdy gracz, który te udogodnienie nabył, będzie mógł wybrać sobie dowolny ClanTag (oczywiście działający tylko na naszym serwerze - nie mamy władzy poza nim)
  4. Wiadomość wygenerowana automatycznie Temat został zamknięty przez moderatora. Powód: Podanie przyjęte Jeżeli się z tym nie zgadzasz raportuj ten post a moderator lub administrator rozpatrzy go ponownie. Z pozdrowieniami. Administracja CSowicze.pl
  5. Wiadomość wygenerowana automatycznie Temat został zamknięty przez moderatora. Powód: Podanie Przyjete Jeżeli się z tym nie zgadzasz raportuj ten post a moderator lub administrator rozpatrzy go ponownie. Z pozdrowieniami. Administracja CSowicze.pl
  6. Podanie zaakceptowane z powodu mojej wcześniejszej pomyłki i usunięcia tematu ;)
  7. Wymagania: - Minimum 15 lat - Minimum 10 godzin przegranych na serwerze - Kultura osobista - Poprawna polszczyzna - Umiejętność rozpoznawania cheaterów Mile widziana składka adminowska. Jest ona ważna, gdyż serwer musi się z czegoś utrzymywać. Na chwilę obecną całość kosztów pokrywam z własnej kieszeni Wzór podania: Nick: Wiek: SteamID: Znajomość SourceMod w skali 1/10: Dlaczego Ty? (min. 3 zdania): Czas spędzony na serwerze: Nick: Wiek: SteamID: Znajomość SourceMod w skali 1/10: Dlaczego Ty? (min. 3 zdania): Czas spędzony na serwerze:
  8. Małpowanie bf2? Coś się z tego wyciągnie (misję)
  9. Napisanie TAKIEGO moda to kwestia 1-2 dni. Ja jednak nadal czekam na Wasze pomysły
  10. Ah, no i opis: Celem moda jest zdobywanie rang, które dają nam określone przywileje (HP, DMG, Krytyk, noże mocy etc.). Zdobywamy je poprzez wykonywanie misji. Menu główne moda jest dostępne pod komendą /mm - tam wszystko jest intuicyjnie opisane. Do moda jest również dołączone menu admina, w którym możemy ustawić dowolnemu graczowi porządaną rangę, lub sprawdzić jego osiągnięcia. Wykonywanie misji jest możliwe od bodajże 5 osób, aby nikt sobie po nocach nie robił misji ;). Ponadto co rundę plugin losuje osobę, która zostaje kapitanem drużyny. Taka osoba ma + 100 dodatkowego życia.
  11. Widzę, że jednak lepszym wyjściem będzie oparcie się ma czymś. Zamieszczam niżej opis mojego mini-moda napisanego pod 1.6. Od niego można się odnieść - opinia o modzie, co się podoba/nie podoba, co można dodać/usunąć/zmodyfikować. Na podstawie zgromadzonych opini będę pisał moda on zera. Podkreślam raz jeszcze, że nie interesuje mnie małpowanie Codmoda, ale napisanie czegoś nowego!
  12. Siemanko, Nie ma sensu już ukrywać, że piszę CodModa pod CS:GO. Do zrobienia pozostały mi już tylko klasy, perki i jakiś sklep. Chciałem, żeby był to wielki BOOM (mimo, iż CoD'y już są w ilości 2), jednak na amxx jakiś gościu udostępnij jego wersję CodModa ;/. Dokończę modyfikację jak będę miał czas (a w tym tygodniu mam zapierdziel że masakra). Piszę ten temat, gdyż zastanawiam się nad stworzeniem swojego moda. Nie chodzi mi o małpowanie CodModa i tworzenie klas - to ma być coś świeżego, czego jeszcze nie było. Zwracam się z prośbą o pomysły. Jak taki mod miałby wyglądać. System awansowania? Moce? Ulepszenia broni? Możecie pisać co tylko chcecie, a ja w miarę możliwości będę pomału rozwijał projekt. Nie gwarantuję kokosów z dnia na dzień - zobaczymy co się z tego wykluje Dzięki z góry za udzieloną pomoc i pozdrawiam
  13. Regulamin serwera OnlyWestwood/Rats/DD2 §1 Ogólne: * Na serwerze przestrzegamy kultury. * Na serwerze można przeklinać, lecz z umiarem. * Na serwerze obowiązuje całkowity zakaz obrażania. * Zabrania się używania wspomagaczy tj. SH, WH, AIM itp. * Na serwerze obowiązuje całkowity zakaz reklamowania serwerów, forów etc. * Nie nadużywamy mikrofonu, służy on tylko i wyłącznie do komunikacji między graczami. * Mikrofonu używają tylko osoby, które mają minimum 16 lat lub skończyły mutację. * Puszczanie muzyki w trakcie rozgrywki jest zabronione. §2 Rozgrywka: * Zabrania się wchodzenia w miejsca niedozwolone na mapie tzw tekstury. * Nie utrudniamy gry. * Zakaz używania modeli ułatwiających rozgrywkę (typy ESL również się tego tyczą) * Zakaz używania nicków: - obrażających innych graczy bądź adminów, - zbrodniarzy historycznych (np. Hitler, Stalin), - zawierających wulgaryzmy, - podobnych w znacznym stopniu do nicków adminów, - nick musi składać się z co najmniej 3 znaków, - standardowych czyli player, unnamed. * Wykonujemy cele mapy. * Nie kampimy więcej niż 15 sekund. * Nie przebywamy na respawnie więcej niż 40 sekund. * Zabronione jest wyrzucanie bomby w niedostępne miejsca. §3 Admini: * Admin powinien dawać przykład graczom. * Admin nie może nadużywać swoich praw. * Widząc złą atmosferę na serwerze, zadaniem admina jest ją poprawić. * Admin powinien regularnie odwiedzać forum. * Każde wyrzucenie i zbanowanie gracza powinno być dokładnie uzasadnione, aby uniknąć skarg na forum. * Odwiedzenie Forum chociaż 1 raz na 24 godziny. Nieznajomość regulaminu nie zwalnia z przestrzegania go!
  14. U mnie na serwerze był taki sam problem heh. Nie mam zielonego pojęcia czym było to spowodowane, jednak był to główny powód dla którego zamknąłem serwer BB. Jak dla mnie Trzebaby przerobić zapis z nvault na MySQL
  15. Taka komenda jest Już domyślnie w silniku BB (/slap nick)
  16. Zapodam później modyfikacje podobną - pod r zmieniasz szybkość przesuwania klocka.
  17. http://amxx.pl/topic/136651-register-system-inna-wersja-rejestracji-nicku/?do=findComment&comment=652357 Jakby co ten plugin jest dobry. Gdyby zaszła potrzeba sprawdzenia hasła w przypadku założenia hasła przez osobę niepożądaną, zapis nvault da się rozczytac
  18. Hmm ja też chyba powininem mieć właściciela serwera
  19. Siemanko, Postanowiłem, że poświęcę parę minut i napiszę mały tutorial o pisaniu pluginów do cs 1.6. Z racji, iż ostatnio plugin z rozszerzeniem sma kompilowałem pół roku temu, proszę o wyrozumiałość i zgłaszanie ewentualnych błędów. A teraz już zaczynajmy ;) 1. Przygotowanie Zanim cokolwiek napiszemy musimy mieć do tego stosowny program. Oczywiście, notatnik też mógłby temu służyć, jednak nie jest to najlepsze narzędzie do tego typu zadań. Odsyłam więc was do TEGO TEMATU, w którym skonfigurujecie swoje stanowisko pracy. 2. Podstawy Teraz umieszczę niżej podstawowy plugin, który nie będzie robił absolutnie nic. Przedstawię krótko jego strukturę i znaczenie poszczególnych części: #include <amxmodx> #include <amxmisc> public plugin_init() { register_plugin(nazwa, "1.0", "amxx.pl"); } Okej, lecimy po kolei: #include <amxmodx> #include <amxmisc> #include <codmod> Są to natywy, nazywane też bibliotekami, nie bez powodu, gdyż pełnią one funkcję swoistego rodzaju książek. Plugin wyszukuje przez nie odpowiednie funkcje i ich operacje i wykonuje je. Np. jeśli chcemy ustawić graczowi życie potrzebujemy biblioteki "fun". Umieszczenie linijki "#include <fun> na górze pluginu upoważniałoby nas do korzystania z funkcji set_user_health. Pełna listę funkcji natywnych znajdziecie TUTAJ. Gdybyśmy ich nie dodali kod byłby baaardzo długi. Przedstawię to na konkretnym przykładzie: Wyobraź sobie, że nie znasz znaczenia pojęcia np. "apogeum", więc znajdujesz sobie w wikipedii znaczenie tego słowa. Od teraz wiesz, ze oznacza to jakiś moment krytyczny. Kiedy ktoś powiedziałby do Ciebie, że "jego cierpliwość dochodzi do apogeum" doskonale wiesz już o co mu chodzi. Bardzo podobna sytuacja ma miejsce tutaj. Każdy język programowania był bazowany na umyśle ludzkim. Tak więc nie wymyślamy niczego nowego, a tylko naśladujemy - taka mała dygresja ;) public plugin_init() { register_plugin(nazwa, "1.0", "amxx.pl"); } Tutaj na chwilę muszę się zatrzymać. Aby uświadomić sobie zasadę działania każdego pluginu niezbędna jest wiedza o funkcjach. Na sam początek wyjaśnię wam jak działa funkcja typu public. Wszystkie operacje, mające miejsce w pluginie, nie mogą sobie fruwać nie wiadomo gdzie. Ważne jest uporządkowanie całości. Dlatego też powstały funkcje, a cały przebieg operacji musi się zawierać w nich pomiędzy klamrami { } Doklaracja funkcji publicznej: public NazwaFunkcji(parametry, any...) { //Wykonywane operacje } Myślę, że wszystko stanie się jasne w dalszej części poradnika ;) register_plugin(nazwa, "1.0", "amxx.pl"); Jest to rejestracja pluginu na serwerze, wykonywana przy każdej zmianie mapy. Warto tutaj wspomnieć, że funkcja plugin_init właśnie wtedy się wywołuje. Można powiedzieć, że plugin "idzie do pracy w firmie i podbija druczek obecności" xD Okej, za chwilę napiszemy sobie pierwszy plugin. Zanim jednak zaczniemy, trzebaby wspomnieć o ważnym aspekcie, jakim są zmienne. Są to obszary, przechowujące dane. Praktycznie każdy plugin je posiada, a ich konstrukcja wygląda mniej więcej tak: new NazwaZmiennej Wyróżniamy kilka rodzajów zmiennych: 2 podstawowe podziały: 1. Zmienna globalna, implementowana (umieszczana) na początku pluginu, tuż pod bibliotekami. 2. Zmienna wewnętrzna, umieszczana w funkcjach (public) pomiędzy klamrami. Ich zaletą jest tworzenie na czas wykonywanej funkcji, co pozwala nam na zaoszczędzenie pamięci. Typy zmiennych: Zmienna zwykła - zwykła zmienna przechowująca określony typ pamięci. new NazwaZmiennej Zmienna logiczna - czyli taka, która przechowuje wartości typu true/false (prawda/fałsz) new bool:NazwaZmiennej Zmienna statyczna - używana zazwyczaj jako zmienna wewnętrzna. Po użyciu od jest usuwana, co pozwala na zaoszczędzenie pamięci static NazwaZmiennej Zmienna stała - implementowana pod bibliotekami, przechowuje zawsze tylko jeden typ danych od początku istnienia pluginu. #define NazwaZmiennej Przedstawione wyżej zmienne są tylko jednoelementowe, czyli nie przechowają więcej, niż jednej wartości. Na szczęście, można wprowadzać tablice i zmieniać wymiarowość zmiennych. Naturę tego opiszę później. new jajko[4] - zmienna o nazwie "jajko", zawierajaca 4 elementy new kotlet[32][32] - dwuwymiarowa zmienna "kotlet" zawierająca po 32 elementy w każdej tablicy 3. Pisanie pluginu W porządku, nareszcie możemy się zabrać za pisanie naszego pierwszego pluginu :D. Naszym pierwszym pluginem będzie modyfikacja, która daje zabójcy x HP, oraz x życia. Wróćmy zatem do naszego pluginu, który wygląda tak: #include <amxmodx> #include <amxmisc> public plugin_init() { register_plugin(nazwa, "1.0", "amxx.pl"); } Wiemy, że chcemy odnaleźć zabójcę, ale jak to zrobić? Z pomocą przychodzi nam event DeathMsg, który jest wywoływany zawsze w momencie śmierci gracza. Event wyłapuje indexy zabójcy, ofiary, użytej broni, a nawet czy padł HeadShot. Musimy jednak wpierw to wydarzenie złapać, a robimy to w plugin_init dodając taką oto linijkę: register_event("DeathMsg", "DeathMsg", "a") Analogicznie, tworzymy funkcję publiczną o nazwie DeathMsg, w której będziemy wykonywali określone operacje: public DeathMsg() { new kid = read_data(1) //zabojca new vid = read_data(2) // ofiara //code } Jak widzicie, umieściłem tutaj od razu dwie zmienne wewnętrzne, które przechowują indexy zabójcy (kid), a także ofiary (vid). Pozostało nam tylko nagrodzić zabójcę skromnym podarunkiem w postaci HP i $. Za modyfikację zdrowia służy funkcja natywna z biblioteki cstrike - cs_set_user_money, natomiast za zdrowie funkcja natywna z biblioteki fun - set_user_health. Dodajmy więc te dwa natywy na górę naszego pluginu: #Include <amxmodx> #include <amxmisc> #include <cstrike> #include <fun> Teraz przyjrzyjmy się strukturze tych dwóch funkcji: cs_set_user_money(index, money) Pierwszy parametr (index) oznacza ID gracza, któremu USTAWIMY określoną ilość pieniędzy, natomiast drugi (money) oznacza ile kasy będzie miał gracz z ID "index" set_user_health(index, health) Pierwszy parametr (index) oznacza ID gracza, któremu USTAWIMY określoną ilość HP, natomiast drugi (health) oznacza ile zdrowia będzie miał gracz z ID "index" Ale co to właściwie jest ten index? Przy łączeniu z serwerem każdy gracz dostaje unikalny klucz indentyfikacyjny, przyjmujący wartości <1;ILOŚĆ_SLOTÓW>, stąd też możliwa jest operacja kasą czy życiem na indexach. Do pełni szczęścia musimy jeszcze znać aktualną wartość zdrowia i kasy zabójcy. Do tego służą nam odpowiednio cs_get_user_health(index) i get_user_money(index). Wyjaśniać tego nie będę Teraz wystarczy dodać tylko 2 linijki pod zmiennymi: cs_set_user_health(kid, cs_get_user_health(kid) + 10); set_user_money(kid, get_user_money(kid) + 200); W pierwszym parametrze (index) wykorzystałem ID zabójcy (kid), które pobraliśmy wcześniej. W drugim parametrze pobieram zdrowie/kasę gracza z indexem kid, a następniej do pobranej wartości dodaję 10/200. Proste, prawda? :) Dodatkowo poinformuję zabójcę i ofiarę o zaistniałej sytuacji, dodając poniżej 2 linijki: client_print(kid, print_chat, "Za zabojstwo otrzymales +10HP i +200$") client_print(vid, print_chat, "Przez twoja smierc gracz otrzymal +10HP i +200$ ;)"); Składnia: client_print(index, message_type, string:message); index - ID gracza message_type - typ wysyłanej wiadomości message - wiadomość. Musi się ona zawierać między cudzysłowiami "". Polecam zajrzeć do dokumentacji aby zobaczyć dokładniej o co chodzi. Nasz plugin wygląda już tak: #include <amxmodx> #include <amxmisc> #include <cstrike> #include <fun> public plugin_init() { register_plugin(nazwa, "1.0", "amxx.pl"); register_event("DeathMsg", "DeathMsg", "a") } public DeathMsg() { new kid = read_data(1) //zabojca new vid = read_data(2) // ofiara cs_set_user_health(kid, cs_get_user_health(kid) + 10); set_user_money(kid, get_user_money(kid) + 200); client_print(kid, print_chat, "Za zabojstwo otrzymales +10HP i +200$") client_print(vid, print_chat, "Przez twoja smierc gracz otrzymal +10HP i +200$ ;)"); } Mimo, że już bardzo mi się nie chce, dodam jeszcze dwa udogodnienia - 2 stałe zmienne, przechowujące ilość bonusowej kasy/zdrowia, a także pobiorę nicki zabójcy i ofiary i zmodyfikuję wysłaną do nich wiadomość. Dodajmy pod natywami 2 linijki: #define BONUS_HP 10 #define BONUS_MONEY 200 Utworzyłem dwie stałe zmienne, przechowujące wspomniane wyżej wartości. Teraz wykorzystajmy je: public DeathMsg() { new kid = read_data(1) //zabojca new vid = read_data(2) // ofiara cs_set_user_health(kid, cs_get_user_health(kid) + BONUS_HP); set_user_money(kid, get_user_money(kid) + BONUS_MONEY); client_print(kid, print_chat, "Za zabojstwo otrzymales +%iHP i +%i$", BONUS_HP, BONUS_MONEY); client_print(vid, print_chat, "Przez twoja smierc gracz otrzymal +%iHP i +%i$ ;)", BONUS_HP, BONUS_MONEY); } Mam nadzieję, że ustawianie HP/ZDR jest jasne, ale co to za %i ?? Są to przekaźniki, które, jak nazwa mówi, przekazują wartości zmiennych.Podam tylko 2 typy: %i - dla liczb %s - dla liter (dla wartości typu String) Uf, okej. Pobiorę jeszcze nicki. Pod new vid dopisujemy: new nick_zabojcy[64]; new nick_ofiary[64]; get_user_name(kid, nick_zabojcy, 63); get_user_name(vid, nick_ofiary, 63); get_user_name(index, tablica, wielkosc_tablicy); index - ID zabójcy/ofiary tablica - jest nazwa zmiennej, w którą zostanie wpisany nick zabójcy/ofiary wielkosc_tablicy - max. rozmiar tablicy Dlaczego 64? Wątpię, aby nick gracza miał więcej znaków niż 64 ;) Dlaczego w get_user_name wpisuję 63 zamiast 64? Stringi zawsze muszą mieć wolne miejsce na tzw. spację (\0) Teraz tylko zmodyfikumy wiadomości dla graczy: client_print(kid, print_chat, "Za zabojstwo gracza %s otrzymales +%iHP i +%i$", nick_ofiary, BONUS_HP, BONUS_MONEY); client_print(vid, print_chat, "Przez twoja smierc gracz %s otrzymal +%iHP i +%i$ ;)", nick_zabojcy, BONUS_HP, BONUS_MONEY); Po wszystkich usprawnieniach cały kod wygląda tak: #include <amxmodx> #include <amxmisc> #include <cstrike> #include <fun> #define BONUS_HP 10 #define BONUS_MONEY 200 public plugin_init() { register_plugin(nazwa, "1.0", "amxx.pl"); register_event("DeathMsg", "DeathMsg", "a") } public DeathMsg() { new kid = read_data(1) //zabojca new vid = read_data(2) // ofiara new nick_zabojcy[64]; new nick_ofiary[64]; get_user_name(kid, nick_zabojcy, 63); get_user_name(vid, nick_ofiary, 63); cs_set_user_health(kid, cs_get_user_health(kid) + BONUS_HP); set_user_money(kid, get_user_money(kid) + BONUS_MONEY); client_print(kid, print_chat, "Za zabojstwo gracza %s otrzymales +%iHP i +%i$", nick_ofiary, BONUS_HP, BONUS_MONEY); client_print(vid, print_chat, "Przez twoja smierc gracz %s otrzymal +%iHP i +%i$ ;)", nick_zabojcy, BONUS_HP, BONUS_MONEY); } To by było na tyle ;). W razie pytań, czy błedów, pisać pod spodem. Dzięki za poświęcony czas i strzałeczka :D
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie