GMCP na Arkadii - pomysły

Forum techniczne Arkadii.
Ingwar
Posty: 12
Rejestracja: 12 mar 2009 23:52

Re: GMCP na Arkadii - pomysły

Post autor: Ingwar »

Rafgart pisze:Arkadia wysyla dane, ktore akurat sie zmienily. Nie ma potrzeby zrzucac wszystkiego, jesli je aktualizujesz od momentu zalogowania. Zmiana lokacji moze byc zdarzeniem, ktore wywola zmiane danych, ale nie musi - jesli na lokacjach, po ktorych sie poruszasz, nie ma nikogo innego, to nic sie nie zmienia, wiec nie ma potrzeby wysylania danych.
To to ja wiem.. tylko robi to z opoznieniem..
I faktycznie nie mam problemu ze "gubie" o czyms informacje..
I kurde miales racje.. odswiezanie nie ma zadnego sensu.. wydawalo mi sie ze dostaje nowe dane ale najczesciej tak bylo przez to ze zanim konemda poszla i wrocila to juz odswiezylo sie samo.

Tylko :)

Zeby pokazac kondycje graczy na lokacji mam 2 mozliwosci:
1. Wywolac "kondycja wszystkich" - sparsowac i pokazac w formie jaka mi sie podoba
2. Uzyc lokalnie zapisanego stanu gmcp (stan ten jest pushowany z servera z drobnym opoznieniem [z moich testow wynika ze to opoznienie jest od 0.1s do 0.5s])

Fajniejszy dla mnie (i zakladam ze dla arkadii tez) jest tryb 2 bo jest szybszy i nie wymaga odpytywania arki (ale nie dziala dobrze).

I teraz przypadek testowy (wszystkie sprowadzaja sie do tego samego):
- Siedze sobie z na lokacji i ide na nowa lokacje i sprawdzam kondycje wedle jednego z tych 2 algorytmow.
1. Da zawsze dobre wyniki.
2. Przez pierwsze (powiedzmy pol sekundy) dostene wyniki ze starej lokacji.

Kod: Zaznacz cały

15:02:38.687427 # [7/7][0][##############][  ] Ty.
15:02:38.687431 # [7/7][0][##############][  ] Ktos.
15:02:40.271477 # ## Ide: "n".
15:02:40.313583 # ## GMCP: room.info {"exits":["poludnie"]}
15:02:40.313498 # Sklep.
15:02:40.313503 # Jest tutaj jedno widoczne wyjscie: poludnie.
15:02:40.313505 # Zorbar.
15:02:40.552515 # /kon %;kondycja wszystkich
================ metoda 2 (dane ze starej lokacji) =================
15:02:40.552979 # [  ][##############][0] Ty
15:02:40.553157 # [  ][##############][0] Ktos
================ metoda 1 (wszystko ok) =================
15:02:40.591390 # [7/7][0][##############][  ] Ty.
15:02:40.591394 # [7/7][0][##############][  ] Zorbar.
================ Dopiero teraz dochodzi odswiezenie danych =================
15:02:40.666721 # ## GMCP: objects.nums [903903,20611]
15:02:40.667287 # ## GMCP: objects.data {"20611":{"avatar_target":false,"desc":"Zorbar","defense_target":false,"attack_num":false,"attack_target":false,"team_leader":false,"team":false,"enemy":false,"living":true,"hp":6}}
Dla uzyszkodnikow korzystajacych z moich skryptow bedzie to strasznie mylace.
Awatar użytkownika
Rafgart
Posty: 970
Rejestracja: 09 lut 2009 10:10

Re: GMCP na Arkadii - pomysły

Post autor: Rafgart »

Niestety nie do konca rozumiem twoj problem.
Wyswietlasz kondycje, gdy otrzymasz dane z GMCP. Tak, jest to opoznione, ale wpisanie komendy (nie z triggera) rowniez. W logu masz roznice 0.1 sekundy, ktora jest niezauwazalna.
Zurwen
Posty: 756
Rejestracja: 13 lut 2009 09:37

Re: GMCP na Arkadii - pomysły

Post autor: Zurwen »

Ingwar, temat jest ogarniety w moim skrypcie CMUDowym, jest zreszta ogarniety na kliencie - więc się da. :)
Kwestia czyszczenia przy zmianie lokacji albo coś w tym stylu z tego co pamiętam.

I tak, przez pierwsze 0.5s nie bedziesz widział kondycji osób na nowej lokacji, ale należy przyjąć, że tak ma być. Zresztą 0,5s to i tak duzo za malo, zeby na tej podstawie podjac jakas swiadoma decyzje a nieswiadome sa zabronione.
Do kontaktów z czarodziejami służy komenda ‚zglos’ (błąd/pomysl/mg).
Awatar użytkownika
Talisa
Posty: 144
Rejestracja: 21 kwie 2015 23:40
Lokalizacja: Skellige IRL

Re: GMCP na Arkadii - pomysły

Post autor: Talisa »

Potwierdzam, to nie jest problem, jak sie uzywa czyszczenia od Zurwena. Przepisalem te skrypty na kondycje na Gauge, gdzie jest opoznienie GMCP + opoznienie renderowania i updatowania zmiennych. Nie probowalem 10 vs 10, ale przejscie przez lokacje z 15stoma NPCami daje rade w < 0,5s.
Everyone is fighting their own battle to be free from their past, to live in the present, and create a meaningful future for themselves. Don't judge, have a heart.
Awatar użytkownika
Adremen
Posty: 242
Rejestracja: 31 gru 2009 11:13

Re: GMCP na Arkadii - pomysły

Post autor: Adremen »

Czy jest szansa na dodanie do GMCP tytułu, którym tytułuje się dany obiekt?
Rumiany sympatyczny halfling przedstawia sie jako:
Tarinolli Scherzoni, Piekarz Pierwsza Klasa, halfling.
Wtedy jedyny update jaki przychodzi to:

Kod: Zaznacz cały

lua gmcp.objects.data
{
  ["24817"] = {
    desc = "Tarinolli"
  }
}
czy jest możliwe dodanie pozostałej części tytułu? (nazwisko i tytuł piekarski w tym przypadku)
Butma
Posty: 11
Rejestracja: 15 sie 2016 22:51

Re: GMCP na Arkadii - pomysły

Post autor: Butma »

Oby nie. Juz teraz jest niezly wodospad danych przy wielu postaciach.
Powiem wiecej. Dodanie opcji wyboru skladnikow danych modulow podczas nawiazywania negocji byloby lepszym pomyslem. Ewentualnie do wyboru object.data lajt, ktora ma same numy postaci, ich krotkie opisy(w tym wypadku zamiast keya avatar dodanie desca TY), hp i atack_nums. Reszte mozna sobie ladnie wylapac z czystego outputu a serwer mniej wysyla danych.
Ug!
Ingwar
Posty: 12
Rejestracja: 12 mar 2009 23:52

Re: GMCP na Arkadii - pomysły

Post autor: Ingwar »

To ja mam malutki pomysl apropo GMCP:
char.team:
Komunikat dwustronny. Mozna odpytac ale automatycznie wysylany przy kazdej zmienie w druzynie.
{"id": {"leader": True, "present": True}. ...}

W objects.data jest wszystko o druzynie ale tylko obecnej na lokacji.. :(


Rafgarze.. przy okazji znalazlem 3 bledy, dwa wydaja sie miec podobne zachowanie:
1. Po reconnect do arkadi nie dostaniemy stanu gmcp poki cos sie nie zmieni (lokacja, komus sie zmieni hp, ktos dojdzie)
Wtedy dostaje sie pelne dane.
2. To samo dzieje sie jak odzyskamy "wzrok" po ogluszeniu.
Widzimy tylko swoje dane az nie zmieni sie cos na lokacji.

Wydaje mi sie ze w tych 2 przypadkach brakuje jakiegos eventu o zmianie stanu.

3. Nie odswierza stanu druzyny przy dolaczeniu.
Przyklad:
-- dolaczam do 4 osobowej druzyny (zmienia status tylko mi i szefowi)
## GMCP: objects.data {"701627":{"team":true,"team_leader":true},"720893":{"team":true}}
-- Jedna osoba z druzyny wychodzi i wraca (zmienia status tylko jej)
## GMCP: objects.data (pelne dane jednej osoby)
-- Ja wychodze i wracam (wszyscy sa pokazani jako druzyna)
## GMCP: objects.data (pelne dane wszystkich osob na lokacji)
-- O ile pamietam jak pojdziemy na lokacje obok z druzyna to tez dosta
GMCP: objects.data (tylko odswiezenie "team":true dla calej druzyny)

Przy porzuceniu jest ok (odswierza wszystkim status odrazu)..

Bledy zaraz zglosze jako bad..
Ingwar
Posty: 12
Rejestracja: 12 mar 2009 23:52

Re: GMCP na Arkadii - pomysły

Post autor: Ingwar »

I mam jeszcze jeden pomysl.
Czy mozna by dodac do Messages z typem combat dwa dodatkowe parametry:

damage = poziom obrazen (STRING ["none"|"low"|"medium"|"high"] albo INTEGER [0-3])
special = BOOLEAN czy cios jest zwyklym ciosem czy specjalnym.

To pierwsze jest latwe chyba bo jest rownoznaczne z tym co mozna pokolorowac w opcjach kolory.
Drugie troche trudniejsze ale spece wydaje mi sie ze latwo mozna odnalezc :)
Awatar użytkownika
Rafgart
Posty: 970
Rejestracja: 09 lut 2009 10:10

Re: GMCP na Arkadii - pomysły

Post autor: Rafgart »

Ingwar pisze: 1. Po reconnect do arkadi nie dostaniemy stanu gmcp poki cos sie nie zmieni (lokacja, komus sie zmieni hp, ktos dojdzie)
Wtedy dostaje sie pelne dane.
Tego nie udalo mi sie powtorzyc.
Ingwar pisze:2. To samo dzieje sie jak odzyskamy "wzrok" po ogluszeniu.
Widzimy tylko swoje dane az nie zmieni sie cos na lokacji.
To poprawilem.
Ingwar pisze:3. Nie odswierza stanu druzyny przy dolaczeniu.
Przyklad:
-- dolaczam do 4 osobowej druzyny (zmienia status tylko mi i szefowi)
## GMCP: objects.data {"701627":{"team":true,"team_leader":true},"720893":{"team":true}}
-- Jedna osoba z druzyny wychodzi i wraca (zmienia status tylko jej)
## GMCP: objects.data (pelne dane jednej osoby)
-- Ja wychodze i wracam (wszyscy sa pokazani jako druzyna)
## GMCP: objects.data (pelne dane wszystkich osob na lokacji)
-- O ile pamietam jak pojdziemy na lokacje obok z druzyna to tez dosta
GMCP: objects.data (tylko odswiezenie "team":true dla calej druzyny)

Przy porzuceniu jest ok (odswierza wszystkim status odrazu)..

Bledy zaraz zglosze jako bad..
I to tez.
Ingwar
Posty: 12
Rejestracja: 12 mar 2009 23:52

Re: GMCP na Arkadii - pomysły

Post autor: Ingwar »

Super.. dzieki wielkie..

Akurat ten pierwszy blad najprosciej powtorzyc :)

Kod: Zaznacz cały

Pokoj dowodcy.
Jest tutaj jedno widoczne wyjscie: poludnie.
Przy debowym biurku siedzi Brothgar.
/_gmcp_objects
## Wysylam wiadomosc GMCP "Objects.nums [  ]"
## Wysylam wiadomosc GMCP "Objects.data [  ]"
## GMCP: objects.nums [382852,215495]
## GMCP: objects.data {"215495":{"attack_num":false,"defense_target":false,"attack_target":false,"living":true,"team_leader":false,"avatar_target":false,"desc":"Brothgar","hp":6,"enemy":false,"team":false},"382852":{"avatar":true,"defense_target":false,"attack_num":false,"team_leader":false,"team":false,"living":true,"hp":6}}
/dc
% Connection to i closed.

Po polaczeniu..

Witaj, Ingwarze. Podaj swe haslo:
Straciles kontakt z Arkadia na mniej niz dziesiec minut ...
... przywracam polaczenie ...
Jest tutaj jedno widoczne wyjscie: poludnie.
Przy debowym biurku siedzi Brothgar.
--- TE 4 GMCP sa wysylane automatycznie
## GMCP: char.info {bla bla bla}
## GMCP: char.state {"soaked":3,"fatigue":0,"intox":0,"panic":0,"mana":8,"headache":0,"form":6,"encumbrance":0,"improve":0,"stuffed":2,"hp":6}
## GMCP: objects.nums []
## GMCP: objects.data {}
/_gmcp_objects
## Wysylam wiadomosc GMCP "Objects.nums [  ]"
## Wysylam wiadomosc GMCP "Objects.data [  ]"
## GMCP: objects.nums []
## GMCP: objects.data {}
## Ide: "s".
## GMCP: room.info {"exits":["polnoc","poludnie","wschod","zachod"]}
Dziedziniec koszar.
Sa tutaj cztery widoczne wyjscia: polnoc, poludnie, wschod i zachod.
## GMCP: objects.nums [382852]
## GMCP: objects.data {"382852":{"avatar":true,"defense_target":false,"attack_num":false,"team_leader":false,"team":false,"living":true,"hp":6}}
ODPOWIEDZ