TajemniczyRycerz - 2008-12-26 19:26:54

Autor postu: JotEmI
Źródło:link

Ponieważ wiele osób ma mnóstwo pytań odnośnie skryptów do serwera Soldata postanowiłem napisać tutaj pokrótce o co w tym wszystkim chodzi.

Zaczniemy od podstaw, a więc odpowiemy na pytanie czym tak właściwie są skrypty, jak działają i do czego służą.

Skrypty w Soldacie to programy napisane w języku programowania Pascal, a przechowywane są w postaci kodu źródłowego (w plikach .pas). Ich przeznaczenie może być bardzo różne, sami widzieliście z pewnością działanie wielu skryptów więc nie będę się tutaj nad tym rozwodził. Ogólnie rzecz biorąc skrypty pozwalają nam, nieraz w bardzo istotny sposób, wpływać na przebieg gry, parametry ustawień, a nawet wygląd graficzny.

Jak nauczyć się pisać skrypty? O tym potraktuję nieco niżej. Wpierw powinniście zapoznać się z już istniejącymi skryptami. Największym i najlepszym zbiorem skryptów do Soldata jest oczywiście http://forums.soldat.pl/ , na forum tym znajdziecie dwa działy:

Scripting Discussions and Help - tutaj szukać możecie pomocy przy pisaniu waszych skryptów, podzielić się opiniami, wymienić poglądy.

Scripting Releases - tutaj umieszczane są gotowe skrypty napisane przez użytkowników forum, tam radzę zacząć przygodę ze skryptami. Gotowych rozwiązań jest całkiem sporo więc korzystajcie z nich. Po co pisać samemu skrypty, które już ktoś napisał. Po drugie analizowanie skryptów napisanych przez bardziej doświadczonych ludzi z pewnością może pomóc wam w nauce. Dla każdego umieszczonego skryptu znajduję się tam także opis jego działania i ewentualne dostępne komendy.

Oczywiście forum jest w języku angielskim, więc jeśli zajdzie taka potrzeba to mogę tutaj umieścić przetłumaczone na język polski opisy co poniektórych skryptów.

Tak więc sugeruję odwiedzić powyższe forum i pobrać stamtąd kilka „gotowców”. Tutaj wielu z was zadaje pytanie: Jak zainstalować skrypty na serwerze? Proces instalacji sprowadza się do przekopiowania całego folderu, w którym znajduje się plik źródłowy skryptu (plik .pas) do folderu „scripts”, w katalogu z Soldat Dedicated Server. Teraz wystarczy tylko uruchomić soldatserver.exe i serwer automatycznie dokona kompilacji skryptów. Jeśli któryś ze skryptów zawierał błędy to podczas kompilacji pojawi się odpowiedni komunikat. Jego treść zaczynać się będzie od słowa „ERROR”, po którym pojawi się numer linii, w której wykryto błąd i krótkie info odnośnie tego błędu. Zwracam uwagę, że w przypadku wykrycia błędu w którymkolwiek ze skryptów serwer po prostu zakończy swoje działanie. Jeśli tak się stanie to sugeruję wystartować serwer z wiersza poleceń i sprawdzić, który skrypt powoduje błąd. Wtedy można go albo usunąć albo poprawić (jeśli umiemy to zrobić :) ).

A teraz coś dla tych, którzy chcieliby spróbować własnych sił w pisaniu skryptów. Powiem otwarcie, że programowanie nie należy do najprostszych czynności i wielu może się na początku zrazić. Zacytuję tutaj słowa słynnego pioniera informatyki, śp. Pana prof. Dijkstrę – „Programowanie jest trudne.” Zgadzam się z tym, programowanie w każdej formie jest trudne, ale wykazując choć odrobinę chęci można przyswoić sobie praktycznie każdy język programowania. Dla czego o tym piszę? Dlatego, a żeby zacząć skrobać nasze skrypty trzeba niestety wpierw liznąć chociaż podstawy składni Pascala. Pod tym adresem znajduję się całkiem przystępny kurs Pascala.

Oczywiście, żeby pisać programy w jakimś języku potrzebny jest kompilator tego języka. Dla Pascala takim kompilatorem jest np. Turbo Pascal, ale od razu mówię, że nie musicie go instalować. Naszym kompilatorem będzie serwer Soldata. Zaznaczam jednak, że większość programów przedstawionych w powyższym kursie, nie będzie działać z naszym serwerem lub też ich działanie będzie dla nas niewidoczne. Tak po prawdzie to przedstawione tam przykłady mają wam tylko przybliżyć składnię języka. Przeczytajcie sobie ten kurs i zapamiętajcie ile możecie, nic więcej. Kiedy już poznacie składnię Pascala, czas aby dowiedzieć się o funkcjach, procedurach i zmiennych implementowanych przez samą grę. To właśnie za ich pomocą będziemy wpływać na przebieg rozgrywki. Pełną listę możecie znaleźć tu. Nie przerażajcie się, nie musicie znać na pamięć wszystkich kodów źródłowych, po to jest ta strona, żebyście mogli na nią zaglądać.

W czym pisać skrypty? Cóż, wystarczy do tego najprostszy edytor tekstowy, może być standardowy Windowsowy Notatnik. Ja polecam jednak zainstalowanie darmowego programu o nazwie Notepad++ , który znacznie ułatwia pisanie programów i skryptów w wielu językach. Możecie go pobrać stąd.

Czas napisać nasz pierwszy skrypt, a zaczniemy od tego od czego zaczyna się zawsze przy nauce programowania, mianowicie tzw. Hello World!. Nasz skrypt po wpisaniu odpowiedniej komendy wypisze w konsoli powitanie „Hello World!”. A więc do dzieła.

Tworzymy nowy folder w katalogu scripts i nazywamy go np. Hello World. W tym folderze tworzymy plik o dowolnej nazwie z rozszerzeniem .pas. Prócz niego tworzymy jeszcze jeden plik o nazwie Includes.txt, a w jego treści wpisujemy nazwę pliku źródłowego (jakaś_nazwa.pas). Teraz otwieramy plik .pas w edytorze tekstu i już możemy zacząć pisać nasz skrypt.

Na początek może ustalimy sobie kolor w jakim treść komunikatu ma zostać wypisana na ekranie. Aby to zrobić piszemy kolejno:

Kod:

const
Color = $EE30DDEE;

Kolor podajemy w postaci hexadecymalnej, $AARRGGBB (Alpha, Red, Green, Blue). Szesnastkową paletę kolorów możecie poszukać w internecie. Kanał Alpha określa przezroczystość, możecie zawsze w miejsce AA wstawić EE lub FF i będzie ok :) W tym przykładzie $EE30DDEE będzie kolorem mniej więcej pośrednim między zielenią i niebieskim, taki turkusowy. Kolor czarny to $FF000000, a biały to $FFFFFFFF. Idźmy dalej, mamy zdefiniowany kolor tekstu, czas teraz na funkcję, która ten tekst wypisze. Posłużymy się już zaimplementowaną funkcją OnPlayerCommand(); (http://enesce.com/help/ - zakładka Events). Funkcja ta przyjmuje dwa parametry, ID gracza i treść wpisanej przez niego komendy. W przypadku pomyślnego wykonania funkcji zwraca ona logiczną wartość True, albo False jeśli jej wykonanie się nie powiedzie. Piszemy więc w naszym pliku .pas :

Kod:

function OnPlayerCommand(ID: Byte; Text: string): boolean;
begin
end;

Funkcja ta będzie wywoływana za każdym razem, kiedy gracz wprowadzi jakąś komendę (działa to na podobnej zasadzie jak Events w ARSSE). Załóżmy, że chcemy wypisać nasze powitanie po wpisaniu komendy /hello. Pomiędzy begin i end; wstawiamy:

Kod:

if(Text = '/hello') then
begin
end;

Kiedy jakiś gracz wpisze dowolną komendę to skrypt sprawdzi czy jej treść = /hello, a jeśli tak to przejdzie do wykonania linii kodu zawartych pomiędzy begin i end;. Do wypisywania tekstu w konsoli służy procedura WriteConsole(); (http://enesce.com/help/ - zakładka Functions). Procedura ta przyjmuje trzy parametry: ID gracza, dla którego komunikat ma być widoczny (0 – wypisuje komunikat dla wszystkich graczy), treść komunikatu i jego kolor. Umieszczamy tę procedurę wewnątrz instrukcji warunkowej if():

Kod:

WriteConsole(0,'Hello World!',Color);

Taka procedura wyświetli wszystkim graczom komunikat “Hello World!” w kolorze, którego wartość podaliśmy jako stałą Color.
Cały kod powinien wyglądać tak:

Kod:

const
Color = $EE30DDEE;

function OnPlayerCommand(ID: Byte; Text: string): boolean;
begin
    if(Text = '/hello') then
    begin
        WriteConsole(0,'Hello World!',Color);
    end;
end;

Jeśli np. chcielibyśmy aby tekst był widoczny tylko dla gracza, który wpisał komendę /hello, a nie dla wszystkich to zmieniamy WriteConsole() w następujący sposób:

Kod:

WriteConsole(ID,'Hello World!',Color);

To wszystko, zapisujemy plik .pas i możemy uruchomić serwer. Teraz jeśli jakiś gracz wykona /hello to w konsoli wyświetli się komunikat „Hello World!”.

To był jeden z najprostszych przykładów skryptów dla serwera Soldata, jeśli chcecie napisać coś bardziej skomplikowanego to przejrzyjcie opisy funkcji, procedur i zmiennych zawarte na http://enesce.com/help/ , spróbujcie przeanalizować kod źródłowy już gotowych skryptów, a przede wszystkim ćwiczcie. Żeby nauczyć się programowania, trzeba po prostu pisać samemu jak najwięcej programów, innej rady nie ma.

Macieksheik - 2012-01-23 16:04:00

Cześć!Mam prośbę,jestem trochę leniwy by to ogarnąć... mówiąc do rzeczy,czy jesteś m stanie napisać mi jeden skrypt/plugin,a jak?już wyjaśniam.Taki że po wgraniu go blokują się cztery bronie(nie ważne jaki tryb gry)AWP,Minigun,M72 Law i shotgun,ale jeśli po wpisaniu w pliku(najlepiej dla mnie by był .txt ale też może być w tym pliku co jest skrypt napisany)czyjegoś nicku by miał odblokowane te cztery bronie.Prosił bym bardzo żebyś spróbował(ewentualnie przetestował) napisać ten skrypt!

www.fir.pun.pl www.aztec-ogame.pun.pl www.slawkow.pun.pl www.metinboty.pun.pl www.eurowizja.pun.pl