Skryptowanie w EasyUO

Wstęp

Ten post troszkę odchodzi od tematyki programowania zwyłego. Mam nadzieję, że koledzy programiści nie zlinczują mnie za to 😉

Od dosc dlugiego juz czasu lubię sobie pograć w Ultimę Online. Tym, którzy grali kiedykolwiek nie trzeba tłumaczyć jakie nudne może być trenowanie postaci (koxanie 🙂 ). W celu ułatwienia gry sobie i przyszłym pokoleniom ludzie stworzyli całe megabajty programów automatyzujących pewne czynności. Powstały jakieś proste języki skryptowe dzięki, którym można „rozkazywać” postaci.

Najbardziej znanym i lubianym jest EasyUO. Niewątpliwie też najbardziej rozbudowanym. Daje to możliwość oskryptowania czynności od najprostszych (jak ścinanie drzewa, aż nie zetnie się całego) po tak złożone jak wyszukiwanie pobliskich drzew, podchodzenie do nich i ścinanie oraz przy okazji podjadanie czegoś jak postać zgłodnieje.

Jak to w każdym programowaniu – czytelność kodu jest priorytetem. Co mi po tym, że działa, skoro aby coś zmienić muszę szukać odpowiedniej linijki dobrych kilka minut.

Ubolewanie

Niestety. Większość graczy UO nie miała styczności z programowaniem, a nawet jeśli mieli w liceum trochę Pascala to tylko widać na jak niskim poziomie oscyluje poziom nauczania programowania w szkołach. Mam tu na myśli głównie polskę ale skrypty ludzi z innych krajów nie są o wiele lepsze… O dobrze napisane skrypty w internecie trudno, a przecież każdy serwer jest zupełnie inny i prawie zawsze trzeba dostosować skrypt do swoich potrzeb.

Oglądając skrypty co niektórych autorów przekonałem się dlaczego instrukcja goto jest tą-której-nazwy-nawet-się-nie-wymawia. Kod pociety przez kilka takich instrukcji na dodatek nie respektujący jakichś wcięć i nie mający jakiejś ładnej budowy czyta się makabrycznie. Problem w tym, że większość skryptów, które można znaleźć w internecie jest właśnie taka…

Wnioski

W ciągu wielu godzin spędzonych przed EasyUO celem napisania dobrego skryptu doszedłem do pewnego schematu, który powtarzam w większości skryptów. Czasem coś zmienię i obserwuję efekty.

Dobry skrypt powinien składać się z dwóch części:

  • ustawienia – tutaj użytkownik może ustawić sobie parametry sterujące skryptem. Część ta oczywiście nie jest obowiązkowa ponieważ nie zawsze jest co ustawiać 😉
  • pętla główna – tutaj dzieje się całe życie skryptu

Przy czym warto zaznaczyć, że pętla główna powinna być rzeczywiście pętlą, a nie dowodem na to jak bardzo nieczytelne jest goto.  Zazwyczaj pętla główna wygląda tak:

while #true
{
   ; czesc 1
   ; sprawdzanie stanu postaci itp.
   ; np. monitorowanie zdarzenia onhotkey
   ; lub też odczytywanie wartosci z menu

   ; czesc 2
   ; sprawdzanie czy aktualnie wykonywane zadanie
   ; zostalo juz zakonczone i jesli tak, to
   ; rozpoczecie wykonania od nowa
}

Zapewne w części drugiej po zakończeniu wykonywania jakiejś czynności znajdzie się jeszcze kawałek kodu odpowiedzialny za zjedzenie czegoś, bądź wywołanie umiejętności biernej (np. anatomia czy ukrywanie). Lub też oba. Nie można bowiem wykonać tych czynności podczas gdy postać już coś robi.

Ostatnio jeszcze tworzę sobie okienka do kontroli pracy skryptu za pomocą polecenia menu. Standardowo są to dwa przyciski – Pauza i Koniec. Nietrudno domyślić się do czego służą 🙂 W zależności od sktyptu dodaję też inne kontrolki.

Na koniec jeszcze powiem, że bardzo dobrą praktyką jest stosowanie funkcji (czy jak je tam nazwać 🙂  )deklarowanych za pomocą słowa kluczowego sub:

sub Hello
   event sysmessage Hello World!
return

gosub Hello ; uruchomienie funkcji

Koniec

No, ponarzekałem trochę. Mam nadzieję, że obejrzy to choć jedna osoba skryptująca w EasyUO i choć jednej osobie pomoże pisać skrypty przyjazne dla środowiska 🙂

Reklamy

8 myśli nt. „Skryptowanie w EasyUO

  1. Ano można i to nawet fajne zajęcie 😉
    Przynajmniej ja to lubię. Najfajniejsze jest, jak znajomi dziwią się, że oskryptowałem coś co ich zdaniem by się nie dało 😉

  2. @zenedith: ja wlasnie mam fun z pisania skryptów. Jedyne co robię to chodze z miejsca na miejsce i wciskam play w EUO 😀
    A pisanie dobrych skryptów nie jest takie proste jak sie wydaje 😉 A to czasem sie zwiesi nie wiadomo czemu, a to nie dziala tez nie wiadomo why… Ale daje to satysfakcję ogromną 🙂

  3. Ale to ze sie skrypt zwiesi to nie nie wiedziec czemu tylko ma blad w sobie tak samo jak piszesz w c++ tez sie popelnia blady. Chod easy uo daleko odbiega od takich jezykow to jednak frajda jest ogromna, bo widzimy jak efektywne jest programowanie !

  4. Ja osobiscie skrytuje w easyUO i to dosc duzo i szczerze mowiac przyzwyczailem sie do goto z jednego prostego powodu. Uzywam go tak naprawde jak funkcji w ktorej moge wywolac inna funkcje, aby automatycznie powrocic na to samo miejsce. Akurat goto w C++ nie uzywa sie z innych wzgledow niz tylko nie czytelnosci kodu. Problemow w eUO jest duzo. Frajda naprawde jest fajna. Zaczynajac od prostego makra na tzw beepa konczywszy na skryptach … no moze nie bede pisal 🙂

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s