Mudlet 3.* - skrypty + mapper

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

Re: Mudlet 3.* - skrypty + mapper

Post autor: Kregan »

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.
Mowisz do posiwialego wiekowego kruka w Khazalidzie: Co poradzisz jak nic nie uradzisz.
Posiwialy wiekowy kruk kracze w Khazalidzie: Niiic.
Awatar użytkownika
Werbat
Posty: 1357
Rejestracja: 12 lut 2009 21:25
Lokalizacja: Poznań
Kontakt:

Re: Mudlet 3.* - skrypty + mapper

Post autor: Werbat »

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: 181
Rejestracja: 07 cze 2015 23:56

Re: Mudlet 3.* - skrypty + mapper

Post autor: Kregan »

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")
Mowisz do posiwialego wiekowego kruka w Khazalidzie: Co poradzisz jak nic nie uradzisz.
Posiwialy wiekowy kruk kracze w Khazalidzie: Niiic.
Awatar użytkownika
Kregan
Posty: 181
Rejestracja: 07 cze 2015 23:56

Re: Mudlet 3.* - skrypty + mapper

Post autor: Kregan »

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])
Mowisz do posiwialego wiekowego kruka w Khazalidzie: Co poradzisz jak nic nie uradzisz.
Posiwialy wiekowy kruk kracze w Khazalidzie: Niiic.
Awatar użytkownika
Kregan
Posty: 181
Rejestracja: 07 cze 2015 23:56

Re: Mudlet 3.* - skrypty + mapper

Post autor: Kregan »

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.
Mowisz do posiwialego wiekowego kruka w Khazalidzie: Co poradzisz jak nic nie uradzisz.
Posiwialy wiekowy kruk kracze w Khazalidzie: Niiic.
Filarion
Posty: 29
Rejestracja: 02 lut 2019 17:45

Re: Mudlet 3.* - skrypty + mapper

Post autor: Filarion »

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 »

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

Re: Mudlet 3.* - skrypty + mapper

Post autor: Proksim »

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 »

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 »

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