Skocz do zawartości
Konkurs MCFarma - Minecraft Edycja 1 ×
MISS & MISTER | WIOSNA 2024 ♥ ×
EVENT Kobiety vs Mężczyźni ×
[KONKURS] Znajdź pisanki! ×

Znajdź zawartość

Wyświetlanie wyników dla tagów 'Piszemy' .

  • Wyszukaj za pomocą tagów

    Wpisz tagi, oddzielając je przecinkami.
  • Wyszukaj przy użyciu nazwy użytkownika

Typ zawartości


Forum

  • Znajdź pisanki
    • Królik
    • Koszyczek
    • Kurczaczek
    • Babka
  • Forum główne
    • Regulaminy i Ogłoszenia
    • Sprawy dotyczące forum
    • Rekrutacja
    • Konkursy/Turnieje
    • Wesprzyj naszą sieć serwerów!
    • Redakcja CSowicze.pl
    • Liga Typera
    • Masz swoj serwer? Dołącz do Nas!
  • Strefa Banów
    • Bany Counter Strike 1.6
  • Serwery Counter Strike 1.6
    • ★ [ONLY DD2] ★ - IP: 51.83.164.138:27015
    • ★ [JAILBREAK] ★ - IP: 51.83.147.22:27015
    • ★ [ONLY AWP] ★ - IP: 188.165.19.26:27425
    • ★ [ZOMBIE PLAGUE CLASSIC] ★ - IP: 91.224.117.165:27015
    • ★ [ZOMBIE EXP] ★ - IP:
  • Serwery Counter Strike 2
    • ★ [Losowe Cheaty] ★ - IP: 146.59.108.100:27015
  • Serwery Głosowe
    • TeamSpeak 3 - Ts3Bydgoszcz
    • Discord - https://discord.gg/fuSyEeUe5X
  • Strefa Gier
    • Aktualizacje / Nowości / Ciekawostki
    • Counter Strike
    • League Of Legends
    • Download / Poradniki / Media
    • Przeceny / Darmowe Gry
    • Recenzje gier
    • Zareklamuj swoją stronę / serwer!
  • Inne
    • Offtopic
    • Muzyka
    • Giełda
  • Archiwum Forum
    • Zbanowani
    • Tematy Archiwalne

Kategorie

  • Counter Strike 1.6
    • Pluginy
    • [ReHLDS] Moduły / [AmxModX] Moduły
    • [HLDS] Moduły
    • Modele / Dodatki
    • Gotowe paczki
    • Mapy
    • Roundsoundy
  • Counter Strike Global Offensive
    • Pluginy
    • Gotowe paczki
    • Roundsoundy
    • Modele / Dodatki
  • Grafika
    • PSD
    • XCF
    • Czcionki
    • Inne
  • Invision Community 4
    • Aplikacje
    • Wtyczki
    • Szablony
    • Nulled
    • Tłumaczenia
    • Releases
  • IP.Board
    • Aplikacje / Wtyczki
    • Skiny
    • Inne dodatki
  • Inne
  • Stare pliki (brak download)

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Od tej daty

    Do tej daty


Ostatnia aktualizacja

  • Od tej daty

    Do tej daty


Filtruj po ilości...

Dołączył

  • Od tej daty

    Do tej daty


Grupa podstawowa


Lokalizacja


Hobby


Imię


Ulubiony Serwer


Discord


Steam


Facebook


GG


Instagram


Strona WWW

Znaleziono 3 wyniki

  1. 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