Tibia.net.pl
| (#?)
| [C++][SQL] Multi World SystemDyskusja dotycząca tematu [C++][SQL] Multi World System, który znajduje się w kategorii Skrypty - pozostałe (Pomoc oraz inne skrypty związane z OT.), na forum C++ (Wszystko, co związane z kompilowaniem.). Treść: Witam. Ok, zaczne odrazu z kodem poniewaz chyba kazdy wie o co chodzi z Multi World System .
Kod stworzony przez ... Na Tibia.net.pl znajdziesz dokończenie tematu [C++][SQL] Multi World System | | |
01-09-2008, 19:54
|
| | Fanatyk | [C++][SQL] Multi World System
Witam. Ok, zaczne odrazu z kodem poniewaz chyba kazdy wie o co chodzi z Multi World System.
Kod stworzony przez Rogier1337 (Drakaro).
W ioaccountsql.cpp zamien: Kod: Account IOAccountSQL::loadAccount(uint32_t accno)
Na: Kod: Account IOAccountSQL::loadAccount(uint32_t accno)
{
Account acc;
Database* mysql = Database::instance();
DBQuery query;
DBResult result;
query << "SELECT id,password FROM accounts WHERE id=" << accno;
if(mysql->connect() && mysql->storeQuery(query, result)){
acc.accnumber = result.getDataInt("id");
acc.password = result.getDataString("password");
#ifndef __ROGIER_MULTIWORLD__
query << "SELECT name FROM players WHERE account_id=" << accno;
#else //__ROGIER_MULTIWORLD__
query << "SELECT name,worldid FROM players WHERE account_id=" << accno;
#endif //__ROGIER_MULTIWORLD__
if(mysql->storeQuery(query, result)){
for(uint32_t i = 0; i < result.getNumRows(); ++i){
std::string ss = result.getDataString("name", i);
#ifndef __ROGIER_MULTIWORLD__
acc.charList.push_back(ss.c_str());
#else //__ROGIER_MULTIWORLD__
int worldid = result.getDataInt("worldid", i);
query.reset();
result.clear();
query << "SELECT * FROM worlds WHERE worldid=" << worldid;
mysql->storeQuery(query, result);
struct CharInfo info;
info.worldName = result.getDataString("worldname", i);
info.worldIp = result.getDataString("worldip", i);
info.worldPort = result.getDataInt("worldport", i);
acc.charList[ss] = info;
#endif //__ROGIER_MULTIWORLD__
}
#ifndef __ROGIER_MULTIWORLD__
acc.charList.sort();
#endif //__ROGIER_MULTIWORLD__
}
}
return acc;
}
Teraz w protocollogin.cpp w funkcji parsefirstpacket zamien: Kod: std::list<std::string>::iterator it;
for(it = account.charList.begin(); it != account.charList.end(); it++){
output->AddString((*it));
output->AddString(g_config.getString(ConfigManager::WORLD_NAME));
output->AddU32(serverip);
output->AddU16(g_config.getNumber(ConfigManager::PORT));
}
Na: Kod: #ifndef __ROGIER_MULTIWORLD__
std::list<std::string>::iterator it;
for(it = account.charList.begin(); it != account.charList.end(); it++){
output->AddString((*it));
output->AddString(g_config.getString(ConfigManager::WORLD_NAME));
output->AddU32(serverip);
output->AddU16(g_config.getNumber(ConfigManager::PORT));
}
#else //__ROGIER_MULTIWORLD__
std::map<std::string, CharInfo>::iterator it;
for(it = account.charList.begin(); it != account.charList.end(); it++){
output->AddString(it->first);
output->AddString(it->second.worldName);
output->AddU32(inet_addr(it->second.worldIp.c_str()));
output->AddU16(it->second.worldPort);
}
#endif //__ROGIER_MULTIWORLD__
W account.h po: Dodaj: Kod: #ifdef __ROGIER_MULTIWORLD__
#include <map>
struct CharInfo
{
std::string worldIp;
std::string worldName;
short worldPort;
};
#endif //__ROGIER_MULTIWORLD__
Takze w account.h zamien: Kod: std::list<std::string> charList;
Na: Kod: #ifdef __ROGIER_MULTIWORLD__
std::list<std::string> charList;
#else //__ROGIER_MULTIWORLD__
std::map<std::string, CharInfo> charList;
#endif //__ROGIER_MULTIWORLD__
W paramertach projektu dodaj (Project> Options > Parameters): Kod: -D__ROGIER_MULTIWORLD__
Stworz w phpmyadmin nowa tabele o nazwie: worlds
W tabeli worlds dodaj 4 nowe rekordy.
rekord 1: nazwa `worldid` jako integer.
rekord 2: nazwa `worldname` jako string.
rekord 3: nazwa `worldip` jako string.
rekord 4: nazwa `worldport` jako integer.
Teraz w tabeli players dodaj nowy rekord o nazwie `worldid` jako integer.
W worlds musisz wstawic twoj swiat, nie zapomnij ustawic worldid w tabeli players.
| |
| | |
01-09-2008, 20:32
|
| | Maniak | Odp: [C++][SQL] Multi World System
o_O Świetny kod! Szkoda, że nie twojej roboty, ale i tak super  Mi się na pewno przyda, ale mam 1 pytanie:
Jak zrobić, żeby w acc makerze by gesior były do wybrania 2 sereery?
| |
| | |
01-09-2008, 20:33
|
| | Fanatyk | Odp: [C++][SQL] Multi World System
Thx tego szukalem , moglbys zrobic te pliki dla TFS 8.21 bo jestem zielony w tych zeczach siwat mialby sie nazywac Elyon PVP
| |
| | |
01-09-2008, 21:44
|
| | Fanatyk | Odp: [C++][SQL] Multi World System
musisz sobie to w soruce wykompilowac ... czy chodzi ci o pliki w bazie danych?
| |
| | |
15-09-2008, 08:14
|
| | Bywalec | Odp: [C++][SQL] Multi World System
jak zrobic zeby przy tworzeniu postaci dodawalo wartosc 1 do pola worldid w tabeli players?
acc by gesior
| |
| | |
15-09-2008, 22:17
|
| | Bywalec | Odp: [C++][SQL] Multi World System
Moj acc. maker nie jest przystosowany do "multi-world" systemu. Narazie nikt nie opublikowal konkretnego rozwiazania OTS z multi world, wiec nie mam do czego dopasowac acc. makera.
Czy bedzie to rozwiazanie jak RL tibia czyli jeden server na baze danych i oddzielne servery do grania.
Czy moze popularniejsze bedzie rozwiazanie z wielo rdzeniowym prockiem i wieloma serverami na jednym kompie?
Moze pare kompow i kazdy z wlasna baza danych (wydajnosc), a tylko acc. maker bedzie je laczyl w calosc?
Czy kazdy ots bedzie mial wlasna baze danych czy wspolna baz dla gildii?
Nie widomo, wiec nie ma co robic acc. makera. Wydaje mi sie, ze dla ots taka opcja jest zbedna. Zawsze mozesz kupic drugiego dedyka i na nim zrobic kopie swojego ots lub miec 4 rdzenie i postawic 3-4 ots na jednym kompie jak Elf. Po co Ci pare serverow jak mozesz kupic dedyk mocnego i 200-300 online miec.. za malo? :>
| |
| | |
17-09-2008, 02:26
|
| | Maniak | Odp: [C++][SQL] Multi World System
Ten multiworld to klapa ^^
Jeśli chodzi o publikację multiworld, Gesiorze, to w repo znajdziesz dwa pliczki gameservers.cpp i gameservers.h. Teraz kwestia zmiany commands, game, ioguild, iologindata, iomapserialize, otserv i protocollogin, a mamy boski multiworld. Wprowadziłbym to dawno, gdyby nie fakt, że mój podział multiworld jest hardcoded, co mi osobiście nie przeszkadza ;p
| |
| | |
17-09-2008, 12:18
|
| | Bywalec | Odp: [C++][SQL] Multi World System
gesior wlasnie za malo:P przerobilem twoj acc na bardziej realny dodajac kilka zakladek z tibii com przycisk do testu na tutora oraz wybor swiatu i suggest name w tworzeniu postaci ale chcialem zrobic zeby po zaznaczeniu 1 swiata dodawalo wartosc 1 w tabeli players w kolumnie world id a po zaznaczeniu 2 wartosc 2 :P dzieki temu niemusze sie martwic gdzie bedzie stal ten 2 server bo wszystko ip porty wpisuje sie w bazie danych :P i oczywiscie 1 baza do wszystkich serverow roznica byloby by tylko te world id i zmieniajace sie w nim wartosci. Napewno da sie to jakos latwo zrobic ale u ciebie sa troche inne polecenia baz danych typu insert czy update i se niedaje rady xD
| |
| | |
19-09-2008, 15:44
|
| | Ekspert | Odp: [C++][SQL] Multi World System
Czyli że ten kod się nie nadaje? xd Jeszcze nie siedziałem nigdy w cpp więc może mi ktoś wytłumaczyć gdzie szukać tych plików .cpp? Mogę używać programu Dev-C++?
| |
| | |
22-09-2008, 21:32
|
| | Początkujący | Odp: [C++][SQL] Multi World System
jest problem: tfs 8.21 niema polowy plikow z poczatkiem io ;/ wiec na tfs 8.21 chyba nie wejdzie ;/
| |
| | |
23-09-2008, 08:18
|
| | Bywalec | Odp: [C++][SQL] Multi World System
@szybki bo w tfsie trzeba to dodac do innych plikow
@batonek bodajze Iologindata czy jakos tak ale to bym musial byc w domu i sprawdzic na 100% :P
a skrypt sie niebardzo nadaje bo co z tego ze zrobi sie te kilka swiatow do kazdego trzeba inny acc to raz a po 2 nieda sie zrobic zeby dodawalo wartosc 1 do tabeli players w polu woorldid wiec i tak sie 2 swiata jniezrobi ;/ chyba ze bedzie sie dawalo recznie ^^
| |
| | |
23-09-2008, 16:17
|
| | Ekspert | Odp: [C++][SQL] Multi World System
Moim zdaniem jest to dobry system. Jesli ktos ma troszke umiejetnosci to go dobrze wykorzysta. Mi na nim dzialaja spokojnie 3 serwery | |
| | |
24-09-2008, 10:20
|
| | Bywalec | Odp: [C++][SQL] Multi World System
no ja chcialem zrobic zeby przy zaznaczeniu kazdego ze swiatow dawalo inne worldid ale w acc by gesior niedzialaja polecenia bazy typu update, insert... wiec wynika z tego ze lepiej postawic servery poprstu z innymi portami i inna baza
| |
| | |
26-09-2008, 13:01
|
| | Bywalec | Odp: [C++][SQL] Multi World System Cytat:
Napisał tim26 no ja chcialem zrobic zeby przy zaznaczeniu kazdego ze swiatow dawalo inne worldid ale w acc by gesior niedzialaja polecenia bazy typu update, insert... wiec wynika z tego ze lepiej postawic servery poprstu z innymi portami i inna baza | Hmm... zastanów się czemu nie możesz tego zanaleść, może dlatego że acc korzysta z class?
| |
| | |
14-10-2008, 22:34
|
| | Bywalec | Odp: [C++][SQL] Multi World System
dobre dziex  pozdrawiam 10 dla ciebie | |
| | | Narzędzia tematu | | | | Wygląd | Wygląd liniowy | |
Podobne wątki | | [inne] Multi World system pytanie - Czy da się zrobić multi world z dwoma różnymi mapami?
#down
ale ja chce na 1 silniku dwa swiaty i dwie mapy
a może znasz jakiś poradnik?
... Marszal, 08-11-2008 Tibia 8.31 BioSoft - OpenTibia Project [SQL] - BioSoft - OpenTibia Project
Serwer by ElGroncho
Poniżej znajdziecie features jest to tylko niewielka część resztę możecie znaleźć w oryginalnym... Sebasnk, 29-10-2008 [C++] Protection System - mam prosbe bo chcialbym zeby ktos mi wkomplikowal to do yourots
W game.cpp pod linijką:
Kod:
Creature *attackedCreature =... stefcio130, 15-10-2008 [8.0] galana War Editet By Noble X) - GALANA WAR 8.0 -)
Przede wszystkim :
-soft boty
-anty pk team
-dzialajace runy ( m wall)
-dzialajace ringi
Jest to przerobiony lunara war... Noble Man, 05-09-2008 [8.0]DirtyOTS - * Guid for xml players. (players.xml)
* Full rearranged protocol and game system
* Actions (when using a tile or item)
* SQL databases (for... Aresik, 17-07-2008
| | Tibia.net.pl: C++ (Wszystko, co związane z kompilowaniem.) Temat: [C++][SQL] Multi World System Witam. Ok, zaczne odrazu z kodem poniewaz chyba kazdy wie [...] | Czasy w strefie GMT +1. Teraz jest 17:04. | | |