Bug raport - zglaszanie bledow w grze

Forum dla graczy do pisania ogólnych próśb o pomoc. Zarówno członkowie załogi i doświadczeni gracze mogą na nim pomóc w rozwiązaniu problemów, z jakimi spotkają się gracze. Prosimy nie prowadzić pogawędek na tym forum.

Moderators: Public Relations Department, Players Department

User avatar
marol
Posts: 3728
Joined: Sun Jul 17, 2005 11:45 am
Location: Kraków, PL
Contact:

Postby marol » Wed Jan 04, 2006 10:36 pm

Te 4. punkty to ja z palca wyssałem. Nie zaglądałem do tego kodu i w rzeczywistości może ta kolejność wyglądać inaczej, tak więc rozważania na temat szczegółów możemy sobie darować :). Chciałem tylko pokazać wam, w czym tkwi problem.

A jak się to powtórzy kilka razy, to wtedy się tym zajmiemy; na razie szkoda czasu na to.
User avatar
Raist
Posts: 919
Joined: Wed Aug 24, 2005 6:42 pm
Location: POLAND

Postby Raist » Wed Jan 04, 2006 10:40 pm

Albo mozna nadac kazdemu przedmiotowi dodatkowy parametr w stylu aktywny/nieaktywny. Ktos zaczyna proces podnoszenia i algorytm nadaje przedmiotowi status nieaktywny (zablokowany) i juz nikt nie moze go podnoscic. Po zakonczeniu algorytmu spowrotem nastepuje zmiana na aktywny.
User avatar
WojD
Posts: 1968
Joined: Mon Oct 31, 2005 6:14 am
Location: PL
Contact:

Postby WojD » Wed Jan 04, 2006 10:45 pm

To kilka zapytań do bazy - i tez beda kolizje... Chyba rzeczywiście lepiej to teraz zostawic. MySQL jest niezłą bazą - jednak ciągle wiele do zyczenia pozostawia przy tak rozbudowanych systemach. Jak musze pisać zapytania z wielokrotnym sprawdzaniem to tez mnie lekki szlag trafia :)
==============
User avatar
marol
Posts: 3728
Joined: Sun Jul 17, 2005 11:45 am
Location: Kraków, PL
Contact:

Postby marol » Wed Jan 04, 2006 11:02 pm

Raist wrote:Albo mozna nadac kazdemu przedmiotowi dodatkowy parametr w stylu aktywny/nieaktywny. Ktos zaczyna proces podnoszenia i algorytm nadaje przedmiotowi status nieaktywny (zablokowany) i juz nikt nie moze go podnoscic. Po zakonczeniu algorytmu spowrotem nastepuje zmiana na aktywny.
Raist, to niczego nie rozwiązuje, bo żeby nadać status 'nieaktywny' trzeba najpierw sprawdzić, czy już ktoś go wcześniej nie nadał. Tak więc można sobie wyobrazić, że między sprawdzeniem, a nadaniem statusu nieaktywnego ktoś inny może też zacząć podnosić i w ten sposób może się zdarzyć, że dwaj gracze będą po sprawdzeniu, a przed zmianą statusu.

Ten błąd to klasyczne zadanie z teorii programowania współbieżnego. Jest na to w miarę proste rozwiązanie, więc nie musicie kombinować. Niezależnie od tego błąd ten na razie nie będzie naprawiany.
Diabelek
Posts: 188
Joined: Fri Aug 19, 2005 7:44 am
Location: Poland - Poznan

Postby Diabelek » Wed Jan 04, 2006 11:16 pm

A tak z ciekawosci - mozesz powiedzec jaki sposob?
User avatar
marol
Posts: 3728
Joined: Sun Jul 17, 2005 11:45 am
Location: Kraków, PL
Contact:

Postby marol » Thu Jan 05, 2006 12:01 am

Jeśli chodzi o ogólne rozwiązanie, to trzeba pogooglać, na przykład tak: "critical section" solution

Jednak w tym przypadku rozwiązanie jest nieklasyczne i opiera się na tym, iż zmiana położenia klucza odbywa się w następujący sposób:

Code: Select all

UPDATE objects SET location=:player_inventory WHERE id=:object_id
Wystarczy zmienić na:

Code: Select all

UPDATE objects SET location=:player_inventory WHERE id=:object_id AND location=:on_the_ground


Nie zostanie jednak ono zastosowane, gdyż rozważamy przeniesienie Cantr na MySQL 4.1 lub wyższe, które wspiera transakcyjność, co całkowice rozwiązuje sprawę bez żadnej pracy z naszej strony.

Wystarczy? :P
User avatar
WojD
Posts: 1968
Joined: Mon Oct 31, 2005 6:14 am
Location: PL
Contact:

Postby WojD » Thu Jan 05, 2006 6:59 am

Czemu nie od razu do 5? To już prawdziwa baza jest ;)
==============
User avatar
marol
Posts: 3728
Joined: Sun Jul 17, 2005 11:45 am
Location: Kraków, PL
Contact:

Postby marol » Thu Jan 05, 2006 7:17 am

wojd wrote:Czemu nie od razu do 5? To już prawdziwa baza jest ;)
marol wrote:(...) przeniesienie Cantr na MySQL 4.1 lub wyższe (...)
User avatar
WojD
Posts: 1968
Joined: Mon Oct 31, 2005 6:14 am
Location: PL
Contact:

Postby WojD » Thu Jan 05, 2006 7:46 am

:) jasne... TNX
==============
Diabelek
Posts: 188
Joined: Fri Aug 19, 2005 7:44 am
Location: Poland - Poznan

Postby Diabelek » Thu Jan 05, 2006 7:55 am

Mi wystarczy, dziekuje.
belin
Posts: 562
Joined: Sun Nov 06, 2005 11:26 pm
Location: Poland - Warsaw
Contact:

Postby belin » Fri Jan 13, 2006 10:15 pm

Jedna z moich postaci znalazla miejsce gdzie dwie drogi prowadzace w jednym kierunku (np. wschodnim) wioda w dwa rozne miejsca... taaa... bug czy tez rozwidlenie po drodze? Nie chce mi sie pojsc i trafic w jakis matrix ;-D
Z planu jaki sobie stworzylem jeden "wchod" sie zgadza, natomiast drugi powinien byc raczej "polnocnym-wschodem".
User avatar
Sigvald
Posts: 50
Joined: Fri Jul 29, 2005 11:03 pm
Location: Kraków

Postby Sigvald » Fri Jan 13, 2006 11:13 pm

Cos takiego jest zdaje się też na wyspie Davloz-Dervaz. Z davloz woods e dwie drogi są opisane jako kierunek zachodni.
belin
Posts: 562
Joined: Sun Nov 06, 2005 11:26 pm
Location: Poland - Warsaw
Contact:

Postby belin » Sat Jan 14, 2006 12:32 am

No to teraz czekamy na odpowiedz "wiedzacych" ;-)
User avatar
marol
Posts: 3728
Joined: Sun Jul 17, 2005 11:45 am
Location: Kraków, PL
Contact:

Postby marol » Sat Jan 14, 2006 9:06 am

Dlaczego dwa miejsca nie miałyby być w tym samym kierunku? Jeśli dzielimy wszystkie możlie kierunki na 16 przedziałów, to czasami zdarza się, że dwa z nich znajdą się w tym samym przedziale.
User avatar
Raist
Posts: 919
Joined: Wed Aug 24, 2005 6:42 pm
Location: POLAND

Postby Raist » Sat Jan 14, 2006 9:51 am

marol wrote:Dlaczego dwa miejsca nie miałyby być w tym samym kierunku? Jeśli dzielimy wszystkie możlie kierunki na 16 przedziałów, to czasami zdarza się, że dwa z nich znajdą się w tym samym przedziale.


Nie uwazasz ze nazwy drog sa odzwierciedleniem tego co widzi nasza postac patrzac na rozwidlenia? Powinna byc mozliwosc rozroznienia tych 2 kierunkow.

Return to “Ogólna pomoc”

Who is online

Users browsing this forum: No registered users and 1 guest