ďťż
Podstrony
|
telcocafeRobie gre MMO, i mam problem, nie wiem, jak skonstruowac baze.Uwzglednic w niej musze, ilosc poszczegolnych statkow(12 typów)ilosc surowca(3 typy) systemy obronne(9 typów) pozycja planety, dane gracz(mail, nick, haslo, ostatnio aktywny) poziomy budowli(10 typów). I nie wiem jak to skonstruowac, mielem niedawno koncepcje, zeby na gracz zajmowal w tabelce(500 pol) 1 rekord, ale to zbyt wolne. ALbo stworzyc kilka tabel( 1: gracz 2: planeta 1 2:planeta2 ... 10: planeta 9) i w ten sposob by gracz mial w kazdej tabelce jeden rekord, a odpowiednie funkcje by dzialaly BŁAGAM POMOŻCIE, prosilbym także o jakies przykłady. Użytkownik bobek_balinek edytował ten post 04 marzec 2006, 17:07 a skąd mamy wiedzieć co chcesz tam umieścić? "itd" to nie jest coś uniwersalnego. a z resztą to ty sam powienieś wiedzieć skoro za to się zabierasz. tabela planet1: name varchar(100), Â //nazwa planety user int, //wlasciciel - liczba oznaczajaca id uzytkownika surowiec1 int, //surowiec ... blabla surowiec2 int, //i tak dalej ... id int not null auto_increment, Â //takie moje widzimisie - do kazdej tabeli dodaje. primary key(id); Podobnie dla tabeli planet2 itp. Do tego potrzebna bedzie tez tabela uzytkownikow na podstawie ktorej zamienisz id uzytkownika na jego nazwe itp. Jest z tym troche roboty. Ale Tobie sukcesu nie wróżę. Dobra to jeszcze tabela users name varchar(100), email varchar(100), ... i tak dalej ... id int not null auto_increment, primary key(id); Do tego odrobina php: class users { function GetName($id) { $zapytanie = 'select name from users where id='.$id; $wynik = mysql_query($zapytanie); $rekord = mysql_fetch_array($wynik); return $rekord['name']; } } Wywolanie: Po odczytaniu wartosci 'user' dla danej planety robimy users::GetName($wyczytany_user_z_planety); i juz mamy nazwe wlasciciela :) Na wzor tego zrob dla innych rzeczy - emaila, opisu czy czego tam chcesz. W podobny sposob wyczytuj dane z tabeli planet - np ilosc surowcow, wlasciciela. Użytkownik Einzeinbleth edytował ten post 04 marzec 2006, 17:14 Heh czyż by miało powstać drugie OGame? Ja bym to zrobił tak: [tabela Planety] id INT UNSIGNED NOT NULL AUTO_INCREMENT // id planety nazwa VARCHAR(50) NOT NULL AUTO_INCREMENT pozGal TINYINT UNSIGNED NOT NULL // pozycja planety (galaktyka) pozUkl SMALLINT UNSIGNED NOT NULL // pozycja planety (układ planetarny) pozPlan TINYINT UNSIGNED NOT NULL // pozycja planety (miejsce w układzie planetarnym) owner_id INT UNSIGNED NOT NULL // ID właściciela, będzie odnosiło się do tabeli Users // No i musisz tu dodać wszystkie BUDYNKi, bo przeciez na kazdej planecie beda inne poziomy rozbudowanych budynkow, wiec musza byc przechowywane w tej tabeli, przyklady: kopalniaMetalu TINYINT UNSIGNED NOT NULL // poziom kopalni metalu kopalniaKrysztalu TINYINT UNSIGNED NOT NULL //itd... // Z obroną robisz tak samo. Z flotą podobnie, tyle że musisz rozwiązać jeszcze problem wysyłania floty na inne planety :) Z tym już sam pokombinuj. // I teraz zalezy jeszcze jak rozwiazesz problem z surowcami: czy masz juz ustalone jakie dokladnie beda i raczej nie bedziesz dodawal nowych, czy surowce maja obowiazywac dla wszystkich planet gracza czy tylko dla konkretnej planety. Jesli dla konkretnej planety to musisz dodac: metal INT UNSIGNED // ilosc metalu krysztal INT UNSIGNED // ilosc krysztalu deuter INT UNSIGNED // ilosc deuteru // Nazwy surowcow wzialem z ogame :) / A jak chcesz zrobic zeby surowce obowiazuja dla wszystkich graczy to musisz dodac je w tabeli z informacjami o graczach, w moim przykladzie tabela Players. A co do graczy to juz chyba zaden problem [tabela Players] id INT UNSIGNED NOT NULL AUTO_INCREMENT nazwa_uzytkownika VARCHAR(30) haslo VARCHAR(32) // << 32 znaki, bo tyle koduje MD5 email VARCHAR(50) Użytkownik zbig27 edytował ten post 04 marzec 2006, 18:39 Spoko, dzieki wielkie, aha i jeszcze jedno... jak zapisac w bazie, kiedy uzytkownik rozpoczal budowe i kiedy sie skończy, ja to probuje rozwiazac w ten sposób: planeta1: kop_m : int; b_kom_m : datetime (i do kazdej budowli, statku badania by bylo dopisane b_NAZWA i specjalna funkcja by obliczala, porownywala itd.) aha i jeszcze jedno pytanko, jak zrobić funkcje do "wydobywania surowców"? Ja wpadle m na pomysl, aby funkcja porownywala date ostatniego klikniecia a obecną(w sekundach) i obliczalo odpowiednia ilosc poprzez dzialanie matematyczne 22*(a*a)*19/11) gdzie a to poziomkopalni a liczba 22 to ilosc wydobywanego suworca na godzine. ALe nie umiem napisac funkcji która by to porównywałą. Prsze o pomoc Co wy o takim rozwiazaniu myślicie?? w tym watku masz moje odpowiedzi na oba twoje pytania (tam bylo o cwiczeniu skilli zamiast o wydobywaniu surowcow, ale to to samo): http://forum.ks-eksp...pic=73081&st=0# Użytkownik Deadeye edytował ten post 06 marzec 2006, 13:13 |
|||
Sitedesign by AltusUmbrae. |