Mudlet 3.* - skrypty + mapper

Forum techniczne Arkadii.
Awatar użytkownika
Adremen
Posty: 226
Rejestracja: 31 gru 2009 11:13

Mudlet 3.* - skrypty + mapper

Post autor: Adremen » 02 kwie 2017 02:57

Arkadia - zestaw skryptów oraz mapper

Strona domowa projektu
Ostatnio zmieniony 15 paź 2017 23:03 przez Adremen, łącznie zmieniany 2 razy.

Awatar użytkownika
Adremen
Posty: 226
Rejestracja: 31 gru 2009 11:13

Re: Mudlet 3.0 - skrypty + mapper

Post autor: Adremen » 02 kwie 2017 03:18

Wersja 3.1

Jest to pierwsza wersja skryptów przygotowana po nowe wydanie Mudleta w wersji 3.0: http://www.mudlet.org/download/
Po kilkuletnich pracach, status wersji 3.0 oficjalnie osiągnął miano stabilnego, dlatego też od dnia dzisiejszego to Mudlet 3.0 będzie wymagany do poprawnego działania skryptów. Osoby, które wciąż używają Mudlet 2.1 mogą przy nim pozostać, aczkolwiek nowe funkcjonalności oraz poprawki będą wnoszone tylko do wersji 3.*.

Przed jakąkolwiek instalacją, najlepiej na wszelki wypadek wykonać sobie kopię zapasową katalogu profilu.

UWAGA: Przy pierwszej aktualizacji skryptów do 3.1 nie zadziała `/aktualizuj_skrypty` (czyli z jakiejkolwiek wersji skryptów 2.*). Pierwsza aktualizacja musi odbyć się poniższym sposobem.

Po instalacji Mudleta 3.0 na waszej stacji roboczej, należy pobrać nową paczkę skryptów: Paczka. Należy zipa rozpakować i teraz przechodzimy do Mudleta 3.0.

1. Wchodzimy na profil, z którego graliśmy na Mudlecie 2.1 (będą one widoczne w Mudlecie 3.0),
2. Wchodzimy do Package Manager (górne menu), zaznaczamy skrypty_master a następnie klikamy uninstall.
3. Klikamy install i w oknie eksploratora plików lokalizujemy miejsce, w którym rozpakowana została pobrana paczka, a następnie wskazujemy plik do instalacji: skrypty_master3.xml
4. Restart Mudleta

Do nowej wersji skryptów jest nowa mapa, należy wykonać '/pobierz_mape'.

W razie jakichkolwiek problemów/pytań, dyskusję prowadzimy w tym temacie.

Awatar użytkownika
Gianna
Posty: 72
Rejestracja: 02 kwie 2015 11:23
Lokalizacja: Luccini

Re: Mudlet 3.0 - skrypty + mapper

Post autor: Gianna » 02 kwie 2017 15:01

Alleluja! Chwała ci, Adremenie! :D
"When my love swears that she is made of truth,
I do believe her though I know she lies." William Shakespeare

"Najlepsza Gianna to martwa Gianna." Werbat

Obrazki

Orrgar

Re: Mudlet 3.0 - skrypty + mapper

Post autor: Orrgar » 03 kwie 2017 08:32

Ja mam pytanie czy jak do folderu sounds dorzucilem dwa dzwieki?

To musze skopiowac zawartosc i stworzyc dwa nowe skrypty z nowymi nazwami dla dzwiekow?

function scripts_play_beep()
playSoundFile(getMudletHomeDir().. [[/sounds/beep.wav]])
end

registerAnonymousEventHandler("playBeep", "scripts_play_beep")


na tej zasadzie tylko podmieniajac nazwy plikow?

Awatar użytkownika
Eltharis
Posty: 116
Rejestracja: 22 lip 2014 23:39

Re: Mudlet 3.0 - skrypty + mapper

Post autor: Eltharis » 03 kwie 2017 09:51

Orrgar pisze:Ja mam pytanie czy jak do folderu sounds dorzucilem dwa dzwieki?

To musze skopiowac zawartosc i stworzyc dwa nowe skrypty z nowymi nazwami dla dzwiekow?
Żeby odtworzyć dźwięk wystarczy wywołać playSoundFile, tak jak napisałeś:

Kod: Zaznacz cały

playSoundFile(getMudletHomeDir().. [[/sounds/beep.wav]])
Możesz to zrobić na przykład bezpośrednio w triggerze - powiedzmy parsować "Jestes w zlej kondycji" i wtedy odpalać. Nie musisz nic kopiować - dorzucasz dźwięki do folderu "sounds" i potem odpalasz je np. playSoundFile(getMudletHomeDir().. [[/sounds/moj_nowy_dzwiek.wav]]).

Ja akurat wolę mieć coś takiego w skyprcie, po gmcp i zrobiłem to w ten sposób:

Kod: Zaznacz cały

healthSound = healthSound or {}

function healthLowSound()
  healthSound.checkHp()  
end

function healthSound.checkHp()
  local currentHp = tonumber(gmcp.char.state.hp)

  if (currentHp < 1) then
    healthSound.playFile("ledwo_zywy.mp3")
  elseif (currentHp < 2) then
    healthSound.playFile("ciezko_ranny.mp3")
  elseif (currentHp < 3) then
    healthSound.playFile("w_zlej_kondycji.mp3")
  elseif (currentHp < 4) then
    healthSound.playFile("ranny.mp3")
  end
end;

function healthSound.playFile(fileName)
  playSoundFile(getMudletHomeDir()..[[/Sounds/Health/]]..fileName)
end
Skrypt nazywa się healthLowSound. Musisz dodać event (na górze "+") gmcp.char.state. Wówczas z każdą zmianą stanów wywołana zostanie funkcja o nazwie skryptu (healthLowSound), która sprawdzi hp i odtworzy odpowiedni plik. Same pliki są wrzucone do Sounds/Health (gdzie ten bazowy beep.wav jest po prostu w Sounds).

Możesz też na przykład odpalać funkcję ze skryptu w triggerze.

@Adremen - Paczka działa elegancko na Mudlecie 3.0 - super robota, dzięki!

Awatar użytkownika
Enefghar
Posty: 197
Rejestracja: 12 lut 2009 21:42
Lokalizacja: Actiontown

Re: Mudlet 3.0 - skrypty + mapper

Post autor: Enefghar » 04 kwie 2017 18:35

Dobra. Potrzebuje wiedziec dwie male rzeczy.

1. W jaki sposob moge sobie wpisac w "enefghar.txt" aliasy? W sensie:

Kod: Zaznacz cały

wklepuje: un
mudlet wysyla do Arki: usmiechnij sie nieznacznie
i

Kod: Zaznacz cały

wklepuje: dt <zmienna>
mudlet wysyla do Arki: otworz torbe;wloz <zmienna> do torby;zamknij torbe
2. W jaki sposob moge sobie wpisac w enefghar.txt odpalanie komend/serii komend z przycisku. Np. w Mushu mialem:
Accelerator ("Alt+Numpad5", "idz biegiem")

Z gory dzieki za pomoc :)
E.
Polelfka namysla sie nad czyms, cichutko szumiac.

Awatar użytkownika
Eltharis
Posty: 116
Rejestracja: 22 lip 2014 23:39

Re: Mudlet 3.0 - skrypty + mapper

Post autor: Eltharis » 04 kwie 2017 19:59

Enefghar pisze:W jaki sposob moge sobie wpisac w "enefghar.txt" aliasy?
Plik imie.txt służy do konfiguracji. Aliasy i klawisze dodajesz już bezpośrednio w Mudlecie.

Aby dodać sobie alias un:

Kod: Zaznacz cały

Scripts -> Aliases
Teraz w [b]osobnym folderze[/b] do skrypty_master dodajesz nowy alias -> Add Item
Alias name: usmiech_nieznacznie
Pattern: ^un$
Substitution: usmiechnij sie nieznacznie
Aby dodać alias dt:

Kod: Zaznacz cały

Pattern: ^dt (.*)$
Podobnie jak wyżej, tylko zostawiasz Substitution puste i wpisujesz w polu tekstowym poniżej:
send("otworz torbe")
send("wloz " .. matches[2] .. " do torby")
send("zamknij torbe")
Z klawiszami jest podobnie, tyko zamiast w Aliases wchodzisz w załadkę Keys -> klikasz "Grab New Key" -> wciskasz kombinację klawiszy (Alt+Num5) i uzupelniasz Command: idz biegiem.

A jeśli koniecznie chcesz to mieć w pliku enefghar.txt, to musisz poczekać aż wypowie się ktoś bardziej ode mnie magiczny.

Edit:
Przeniosłem jednak do osobnego posta.
Ostatnio zmieniony 05 kwie 2017 08:58 przez Eltharis, łącznie zmieniany 3 razy.

Awatar użytkownika
Enefghar
Posty: 197
Rejestracja: 12 lut 2009 21:42
Lokalizacja: Actiontown

Re: Mudlet 3.0 - skrypty + mapper

Post autor: Enefghar » 04 kwie 2017 20:06

Do tego doszedlem (mimo wszystko dzieki za rozpisanie, moze komus innemu sie przyda), ale zdecydowanie wygodniej byloby to sobie wszystko rozpisac i wrzucic do konfiga. Po pierwsze masz pozniej wszystko w jednym miejscu, a po drugie szlag mnie juz trafial jak sobie bindowalem numpad pod chodzenie ;) W Mushu tez byla opcja, zeby wklepywac aliasy w graficznym interfejsie a jakos zawsze mi bylo szybciej (jak juz mi ktos pokazal ;) ) z:

Kod: Zaznacz cały

<alias
   match="/buk"
   enabled="y"
   group="Funkcyjne"
   sequence="100"
  >
  <send>napij sie z buklaka</send>
</alias>
Tak wiec ten...

/me czeka az sie wypowie ktos bardziej magiczny
Polelfka namysla sie nad czyms, cichutko szumiac.

Awatar użytkownika
Eltharis
Posty: 116
Rejestracja: 22 lip 2014 23:39

Re: Mudlet 3.0 - skrypty + mapper

Post autor: Eltharis » 05 kwie 2017 08:59

Rzuć jeszcze okiem na perm alias - to może być rozwiązanie Twojego problemu. Analogicznie jest też permRegexTrigger. W imie.txt sprawdzałbyś najpierw czy istnieje już alias/trigger za pomocą exists, a jeśli nie ma, to dodawał nowy.

Bazując na podanym przykładzie mógłbyś dodać do imie.txt coś takiego (nie sprawdzałem, czy działa):

Kod: Zaznacz cały

if exists("moje_aliasy", "alias") == 0 then
  permGroup("moje_aliasy", "alias")    
end

if exists("usmiech_nieznacznie", "alias") == 0 then
  permAlias("usmiech_nieznacznie", "moje_aliasy", "^un$", [[send ("usmiechnij sie nieznacznie")]])
end
  
if exists("wloz_do_torby", "alias") == 0 then
  permAlias("wloz_do_torby", "moje_aliasy", "^dt (*)$", [[send ("otworz torbe;wloz " .. matches[2] .. " do torby;zamknij torbe")]])
end 
Jeśli chodzi o Keye, to znalazłem feature request sprzed paru lat, ale nie wiem, czy wprowadzili. Może jest, tylko dokumentacja jeszcze nieaktualna. Nie mam niestety jak tego w tej chwili sprawdzić.

Awatar użytkownika
Werbat
Posty: 1328
Rejestracja: 12 lut 2009 21:25
Lokalizacja: Poznań
Kontakt:

Re: Mudlet 3.0 - skrypty + mapper

Post autor: Werbat » 05 kwie 2017 12:30

Enefghar, to jest xml, więc możesz sobie go w teorii napisać od zera - popatrz w skrypty_master.xml albo w moje dodatki (https://bitbucket.org/ftpd/mudlet-scripts/src). Wtedy dopiero zobaczysz, jakie to jest niewygodne ;-) Całe życie pisałem normalnie jak człowiek skrypty do TF-a w tym jego śmiesznym DSL, ale były to nadal bardziej human-readable pliki niż .xml ;-)

Moja rada: zrób sobie w GUI w każdej 'sekcji' swój katalog, pododawaj tam rzeczy (z GUI wszystko albo jeden wpis z GUI -> export --> edycja xmla -> import), a potem co jakiś czas exportuj gdzieś na bok w ramach backupu. Ewentualnie można też wszystkie swoje rzeczy paczkować, tak jak Adremen to robi, ale jeszcze nie próbowałem - export 6 plików z palca zajmuje 30 sekund, to olewam.
I aim to misbehave.
Systematycznie dążę do wyrugowania hejtu z arsenału swoich środków wyrazu.

ODPOWIEDZ