GMCP na Arkadii - pomysły

Forum techniczne Arkadii.
Awatar użytkownika
Rafgart
Posty: 899
Rejestracja: 09 lut 2009 10:10

Re: GMCP na Arkadii - pomysły

Postautor: Rafgart » 01 lip 2017 22:17

Padlo, ale niezaleznie od tego. Juz wszystko powinno byc ok.

Co do meritum - jesli w zmiennej sa znaki konca linii, to znaczy, ze cmud cos zle wyswietla.
Sprobuj na tej zmiennej zamienic \n na \n\n i dopiero wtedy wyswletlic.

Awatar użytkownika
Adair
Posty: 52
Rejestracja: 21 lut 2017 09:30

Re: GMCP na Arkadii - pomysły

Postautor: Adair » 01 lip 2017 22:23

Albo nie umiem, ale nie działa. Spróbuje jeszcze jutro.

EDIT:
Po tym jak Arka padła, linijkę "Masz przy sobie" wciągnęło do pierwszej. Poprzednio po <i> przychodziły dwa komunikaty, teraz przychodzi jeden. Może to coś podpowie. Żeby przychodziło ich tyle, ile linijek ekwipunku. Jutro się jeszcze pochylę nad tym \n.

Awatar użytkownika
Derdhang
Posty: 95
Rejestracja: 24 cze 2017 00:15

Re: GMCP na Arkadii - pomysły

Postautor: Derdhang » 01 lip 2017 22:34


Awatar użytkownika
Rafgart
Posty: 899
Rejestracja: 09 lut 2009 10:10

Re: GMCP na Arkadii - pomysły

Postautor: Rafgart » 01 lip 2017 22:39

Parser jsona w cmudzie zjada znaki konca linii. Moze przed parsowaniem trzeba je zamienic na \\n, moze na \n\n, moze calkiem inaczej.
Jutro postaram sie Zurwena sciagnac, powinien cos tu pomoc.

Awatar użytkownika
Derdhang
Posty: 95
Rejestracja: 24 cze 2017 00:15

Re: GMCP na Arkadii - pomysły

Postautor: Derdhang » 01 lip 2017 22:46

Podziekowania od uzytkownikow Cmuda.

Zurwen
Posty: 750
Rejestracja: 13 lut 2009 09:37

Re: GMCP na Arkadii - pomysły

Postautor: Zurwen » 01 lip 2017 22:59

Zawartość %json od %gmcp zwraca już bez newline? Próbowałeś jakieś %replace, zmianę w opcjach CMUDa (albo chodzi o coś z gmcp, albo o escape characters podejrzewam)? Dzisiaj nie mam dostępu do CMUDa, jutro spojrzę...

Nevare
Posty: 49
Rejestracja: 22 paź 2009 19:27

Re: GMCP na Arkadii - pomysły

Postautor: Nevare » 02 lip 2017 03:26

Uzyj #show zamiast #say zeby wyswietlic newline, i dodatkowo %replace zeby usunac newline z room.exits, room.short, room.long (bo bedziesz mial pusta linia po kazdym).

Albo ewentualnie mozna zostawic #say dla room.exits, room.short, room.long wtedy newline nie bedzie parsowana i uzyc #show dla pozostalych komunikatow dla ktorych newline jest potrzebna.

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

Re: GMCP na Arkadii - pomysły

Postautor: Adremen » 02 lip 2017 06:46

Rafgart pisze:
Adremen pisze:Rafgart,

czy gmcp_msgs kiedykolwiek zostanie przerobiony tak, ze parser nie będzie wykładał się na ESCAPE jak to kiedyś wspomniałeś?

A masz jakas propozycje?

W kliencie WWW przed parsowaniem jest moze niezbyt ladny kawalek kodu:

Kod: Zaznacz cały

if (index == 'gmcp_msgs')
    data = data.replace(//g, '\\u001B');

I javascript to lyka, parsuje potem poprawnie.


A nie możesz dać opcjonalnego braku kolorowania w gmcp_msgs?
Czemu nie można wysyłać poprawnego encodowania kolorów jako tekst unicode?

Kod: Zaznacz cały

u'I love \x1b[0;32mStack Overflow\x1b[0m'


Czy ja może coś źle rozumiem?

Bo robienie specjalnych wyjątków w kodzie klienta (uniwersalnego) pod jednego MUDa to takie trochę średnie jest. To, że pozostałe klienty się tego nie trzymają to jest ich problem, albo że tak powiem problem ich developerów, który nie świadczy o nich zbyt dobrze. Mudlet trzyma się standardów, bo od tego one są.

Faktycznie, w kodzie klienta webowego masz brudny kod, który robi to paskudztwo. Ale nie możemy zakładać chyba, że ludzie zrobią to samo z klientami? Z Mudleta też gra wiele ludzi (coraz więcej, bo to chyba jedyny klient rozwijający się na taką skalę) i brak gmcp_msgs jest bardzo uciążliwym problemem, który moim zdaniem musi zostać zaadresowany i rozwiązany. W przeciwnym razie, zachęcanie ludzi do korzystania z GMCP, który nie działa w funkcjonalnym kliencie jest nieporozumieniem :) Tak jak chyba wspominałeś, to nie jest wina Mudleta.

Awatar użytkownika
Adair
Posty: 52
Rejestracja: 21 lut 2017 09:30

Re: GMCP na Arkadii - pomysły

Postautor: Adair » 02 lip 2017 09:04

Zrobiłem coś takiego:

Kod: Zaznacz cały

$msg=%json(%0)
#if ($msg.type=="other") {
gmcp_help=%list($msg.text,"\n",1)
#sh @gmcp_help
#exit
}


Mimo wszystko wciąż mam problem, ponieważ #show w jakiś dziwny sposób w ogóle nie działa mi w triggerze gmcp_msgs. Nic nie "drukuje", za to #say tak.

Wpisanie z palca #sh @gmcp_help wyświetla wszystko pięknie i ładnie. Wpisanie #say @gmcp_help wyświetla tą ciągłą linię.

Czy ten problem mam drążyć tutaj, czy przenieść się do tematu CMUDa?

EDIT:

Zrobiłem zupełnie inaczej:

Kod: Zaznacz cały

$msg=%json(%replace(%0,"\n",%cr))


%cr jest CMUDowym znakiem końca linii, który CMUD rozumie. Problem jaki teraz mam to pusta linia po każdym komunikacie, bo na końcu gmcp_msgs.text tez jest \n które zamienia na %cr. Ale chyba wiem jak to obejść.

Czy ja się za bardzo nie podnieciłem tym GMCP...?

Awatar użytkownika
Rafgart
Posty: 899
Rejestracja: 09 lut 2009 10:10

Re: GMCP na Arkadii - pomysły

Postautor: Rafgart » 02 lip 2017 10:20

Adremen pisze:
Rafgart pisze:
Adremen pisze:Rafgart,

czy gmcp_msgs kiedykolwiek zostanie przerobiony tak, ze parser nie będzie wykładał się na ESCAPE jak to kiedyś wspomniałeś?

A masz jakas propozycje?

W kliencie WWW przed parsowaniem jest moze niezbyt ladny kawalek kodu:

Kod: Zaznacz cały

if (index == 'gmcp_msgs')
    data = data.replace(//g, '\\u001B');

I javascript to lyka, parsuje potem poprawnie.


A nie możesz dać opcjonalnego braku kolorowania w gmcp_msgs?
Czemu nie można wysyłać poprawnego encodowania kolorów jako tekst unicode?

Kod: Zaznacz cały

u'I love \x1b[0;32mStack Overflow\x1b[0m'


Czy ja może coś źle rozumiem?

Bo robienie specjalnych wyjątków w kodzie klienta (uniwersalnego) pod jednego MUDa to takie trochę średnie jest. To, że pozostałe klienty się tego nie trzymają to jest ich problem, albo że tak powiem problem ich developerów, który nie świadczy o nich zbyt dobrze. Mudlet trzyma się standardów, bo od tego one są.

Faktycznie, w kodzie klienta webowego masz brudny kod, który robi to paskudztwo. Ale nie możemy zakładać chyba, że ludzie zrobią to samo z klientami? Z Mudleta też gra wiele ludzi (coraz więcej, bo to chyba jedyny klient rozwijający się na taką skalę) i brak gmcp_msgs jest bardzo uciążliwym problemem, który moim zdaniem musi zostać zaadresowany i rozwiązany. W przeciwnym razie, zachęcanie ludzi do korzystania z GMCP, który nie działa w funkcjonalnym kliencie jest nieporozumieniem :) Tak jak chyba wspominałeś, to nie jest wina Mudleta.

Jesli wlaczysz opcje klienta:

Kod: Zaznacz cały

core.options.add ["base64_gmcp_msgs"]

to tresc komunikatow w 'gmcp_msgs' bedzie zakodowana w base64. Nawet jesli nie masz funkcji dekodujacej wbudowanej w klienta, to bez problemu mozna ja znalezc na githubie lub samemu napisac w Lua i powinna byc bardzo szybka.


Wróć do „Forum Techniczne”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość