Mudlet 3.* - skrypty + mapper

Forum techniczne Arkadii.
Awatar użytkownika
Kregan
Posty: 51
Rejestracja: 07 cze 2015 23:56

Re: Mudlet 3.* - skrypty + mapper

Post autor: Kregan » 08 lis 2018 13:07

Yavoth pisze:
08 lis 2018 10:31
Można jakoś cofnąć do 3.14.0?
https://www.mudlet.org/wp-content/files/?C=M;O=D

W linku masz starsze wersje mudleta.
Pierwsza zasada podróżnika "Nie sztuka gdzieś wleźć, sztuką jest wyleźć".
Druga zasada podróżnika "Gdziekolwiek wleziesz zawsze znajdzie się tam jakieś wyjście, na przykład przez zaświaty".

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

Re: Mudlet 3.* - skrypty + mapper

Post autor: Werbat » 08 lis 2018 22:51

Tęczuś, co Ci nie działa? W skryptach Adremena wywala się tylko to wszystko, co używa prefix(), czyli głównie suby na ciosy. Ty masz milion swoich dopisków, a ten wątek jest jednak o Adremenowych, więc nie wprowadzaj ludzi w błąd, że 'mocno' nie działa, bo jednak większość rzeczy jest ok.
I aim to misbehave.
Systematycznie dążę do wyrugowania hejtu z arsenału swoich środków wyrazu.

Awatar użytkownika
Kregan
Posty: 51
Rejestracja: 07 cze 2015 23:56

Re: Mudlet 3.* - skrypty + mapper

Post autor: Kregan » 20 lis 2018 20:45

Taki wynalazek dla zapominalskich pocztowych elfek.
Po pobraniu paczki miga nam na statusie kolo Alertu, że mamy aktywna paczke. To taka mala pomoc dla
kazdego kto bierze dlugodystansowe paczki i idzie w miedzyczasie cos jeszcze dlubac, i kompletnie o tym zapomina.
Powiadomienie miga bo statyczne napisy czasem umykaja uwadze.

do zrobienia dwa trigery

Kod: Zaznacz cały

Pattern
przekazuje ci jakas paczke.$ (perl regex)
^Bierzesz pocztowa paczke z (perl regex)
Lua
paczka_blink_value = 0
enableTimer("paczka_blinking_timer")

Kod: Zaznacz cały

Pattern
^Oddajesz pocztowa paczke (perl regex)
Lua
disableTimer("paczka_blinking_timer")
scripts.ui:info_action_update("")
I timer o nazwie paczka_blinking_timer (standardowo ma byc wylaczony rzecz jasna - odptaszkowany)
Timer ustawiamy na 1 sekunde (lub 3 jak ktos chce wolniejsze miganie)

Kod: Zaznacz cały

paczka_blink_value = paczka_blink_value + 1

if (paczka_blink_value % 2 == 0) then
	scripts.ui:info_action_update("Paczka")
else
 scripts.ui:info_action_update("")
end	
Jak komus potrzeba wiecej testujacych zdarzen, to do pierwszego triggera moze dorzucic pattern zajrzenia do plecaka czy jest w nim paczka (np. po rozlaczeniu etc)

Opcja bez migania. Robimy tylko same triggery i wyrzucamy z Lua linie z aktywacja i deaktywacja timera i paczka_blink_value = 0. Do pierwszego triggera dopisujemy w Lua

Kod: Zaznacz cały

scripts.ui:info_action_update("Paczka")
Pierwsza zasada podróżnika "Nie sztuka gdzieś wleźć, sztuką jest wyleźć".
Druga zasada podróżnika "Gdziekolwiek wleziesz zawsze znajdzie się tam jakieś wyjście, na przykład przez zaświaty".

Awatar użytkownika
Kregan
Posty: 51
Rejestracja: 07 cze 2015 23:56

Re: Mudlet 3.* - skrypty + mapper

Post autor: Kregan » 10 sty 2019 17:28

Taki mały dodatek do skryptow, wyswietlanie poznanych NPCy z bazy dla konkretnego id lokacji na mapie
Przykład działania:
/poznane_lok 7201
(skrypty): Znalazlem:
(438) Rudolf (NPC)
barczysty mezczyzna
Rudolf Karczmarz, mezczyzna.
23/08/2018 16:21:28
Lokacja: 7201

Nowy skrypt z zawartoscia:

Kod: Zaznacz cały

function scripts.people:search_lok(room_id)
  if not room_id then
    error("Wrong input")
  end
  
  local search_loc = string.upper(string.sub(room_id, 0, 1)) .. string.sub(room_id, 2)
  local results = db:fetch(scripts.people.db.people, db:eq(scripts.people.db.people.room_id, search_loc))

  if table.size(results) > 0 then
    local str_print = "Znalazlem:"
    for k, v in pairs(results) do
      str_print = str_print .. scripts.people:print_person(v, true)
    end
    scripts:print_log(str_print)
  else
    scripts:print_log("Nic nie znalazlem")
  end
end
alias:

Kod: Zaznacz cały

pattern:
^/poznane_lok (\d+)$
body:
scripts.people:search_lok(matches[2])
Pierwsza zasada podróżnika "Nie sztuka gdzieś wleźć, sztuką jest wyleźć".
Druga zasada podróżnika "Gdziekolwiek wleziesz zawsze znajdzie się tam jakieś wyjście, na przykład przez zaświaty".

Awatar użytkownika
Kregan
Posty: 51
Rejestracja: 07 cze 2015 23:56

Re: Mudlet 3.* - skrypty + mapper

Post autor: Kregan » 18 sty 2019 20:06

Ponieważ mi się już dawało w kość przeglądanie po sklepach/depozytach i klepanie z palca to zmontowałem sekwencyjny alias, który ponawiany przegląda kolejna rzecz danego typu w sklepie albo depozycie i resetuje się sam jeśli zmienimy w trakcie przeglądania obiekty np. miecze na kirysy.
Ze skrzyniami gildiowymi też pewnie zadziała, ale nie mam patternu do triggera, który informuje, ze takiego obiektu nie ma już w skrzyni np piętnastego miecza etc (np. sklep daje zwrot Pokaż <co>) i się sam nie zresetuje, chyba że zmienimy typ przedmiotu. Zatem to już każdy we własnym zakresie musi uzupełnić, żeby miał pełnie funkcjonalności. Wymaga utworzenia aliasa , triggera i skryptu.

Działanie w zależności czy mamy do czynienia ze sklepem czy depozytem/skrzynia
dla sklepu
/przs kirys
/przs srebrzysty miecz

Ponawiany wyśle - pokaz 1. kirys, pokaz 2. kirys itd.

dla depozytu analigicznie
/przd zdobiony kirys
/przd ksiege

/prz oczywiście do zmiany wedle uzania, suffix "s" "d" jak kto sobie dalej zmieni w kodzie aliasa, jesli będzie chciał.

Alias do przeglądania, nazwa wedle uznania

Kod: Zaznacz cały

Pattern:
^/prz([sd]) (.*)$
Body:

enableTrigger("przejrzyj_sekwencja")
przejrzyj_value = przejrzyj_value + 1
local obiekt_przegladany = matches[3]
local typ = matches[2]

if typ == "d" then
 if obiekt_przegladany_wczesniej ~= obiekt_przegladany then
przejrzyj_value = 1
send("przejrzyj " ..przejrzyj_value..". " ..obiekt_przegladany)
obiekt_przegladany_wczesniej = obiekt_przegladany
 else 
send("przejrzyj " ..przejrzyj_value..". " ..obiekt_przegladany)
obiekt_przegladany_wczesniej = obiekt_przegladany
 end
end

if typ == "s" then
 if obiekt_przegladany_wczesniej ~= obiekt_przegladany then
przejrzyj_value = 1
send("pokaz " ..przejrzyj_value..". " ..obiekt_przegladany)
obiekt_przegladany_wczesniej = obiekt_przegladany
 else 
send("pokaz " ..przejrzyj_value..". " ..obiekt_przegladany)
obiekt_przegladany_wczesniej = obiekt_przegladany
 end
end

Trigger nazwa: przejrzyj_sekwencja (nazwa musi się zgadzać z tą która jest w body aliasa - enableTrigger!). Ten trigger domyślnie powinien być odptaszkowany, włącza się kiedy potrzebny i wyłącza przy braku kolejnych przedmiotów do przejrzenia.

Kod: Zaznacz cały

Patterny:
^Pokaz <co>\?
^Przejrzyj depozyt/stare przedmioty
Body:
przejrzyj_value = 0
disableTrigger("pokaz_sekwencja")
Skrypt. Nowy skrypt lub taki w którym przechowujemy zmienne

Kod: Zaznacz cały

obiekt_przegladany_wczesniej = 0
przejrzyj_value = 0
Po testach zakładam, że powinno to działać bezproblemowo, być może da się to ładniej (ja nie umiem :D). Po małych przeróbkach można to zaadaptować do innych rzeczy.
Pierwsza zasada podróżnika "Nie sztuka gdzieś wleźć, sztuką jest wyleźć".
Druga zasada podróżnika "Gdziekolwiek wleziesz zawsze znajdzie się tam jakieś wyjście, na przykład przez zaświaty".

Filarion
Posty: 9
Rejestracja: 02 lut 2019 17:45

Re: Mudlet 3.* - skrypty + mapper

Post autor: Filarion » 02 lut 2019 17:46

Adremenie - naprawde wielkie podziekowania za ten projekt. Czesto uzyszkodnicy tego nie pisza i biora pewne rzeczy za dane na zawsze. Tym bardziej konieczne jest napisac raz na jakis czas, ze doceniamy to, co inni dla nas obkodowuja ;)

Vadi
Posty: 26
Rejestracja: 03 kwie 2017 21:18

Re: Mudlet 3.* - skrypty + mapper

Post autor: Vadi » 02 lut 2019 22:15


Proksim
Posty: 12
Rejestracja: 01 maja 2015 17:57

Re: Mudlet 3.* - skrypty + mapper

Post autor: Proksim » 04 lut 2019 13:13

Witam. Jak przekształcić tekst np: " Znajdujesz fioletowy zwarty kwiatostan. " na " Znajdujesz lawede " i pokolorować wyraz lawedę na jakiś kolor.

Heinkar
Posty: 2
Rejestracja: 12 sie 2009 20:17

Re: Mudlet 3.* - skrypty + mapper

Post autor: Heinkar » 04 lut 2019 17:52

Ja ma tak:

w triggerach:

Znajdujesz fioletowy zwarty kwiatostan. jako substring

Kod: Zaznacz cały

selectCurrentLine()
bg("magenta")
fg("black")
resetFormat()
cecho("<green>\n ZNAJDUJESZ LAWENDE -PRZYLOZ +LECZENIE +ODPORNOSC")

Grokal
Posty: 1
Rejestracja: 27 sty 2019 10:24

Re: Mudlet 3.* - skrypty + mapper

Post autor: Grokal » 06 lut 2019 21:38

Czy tylko mi sie wydaje, ze na mapie nie ma trolli pod KK? To raczej nie jest (w porownaniu z masa innych miejsc na mapie bedacych) jakies super trudne miejsce? Wiadomo, że jak coś można samemu zmapować - ja tylko pytam czy to nie jest jakiś błąd.

ODPOWIEDZ