[C++][SQL] Multi World System

 
Tibia.net.pl

Wróć   Tibia.net.pl > OpenTibia > Skrypty - pozostałe > C++

#2 event Tibia.net.pl: Kończymy rozgrzewkę! (Start - Sobota, godz. 17:00) Big meeting (22 listopada, Poznań)


  Tibia.net.pl (#?)
[C++][SQL] Multi World System

Dyskusja 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



Odpowiedz
 
01-09-2008, 19:54  
Fanatyk
 
Użytkownik schikell na Tibia.net.pl

[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:

Kod:
class Account
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
 
Użytkownik Hoster na Tibia.net.pl

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
 
Użytkownik Wini1986 na Tibia.net.pl

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
 
Użytkownik schikell na Tibia.net.pl

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  
Elf
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
 
Użytkownik Batonek na Tibia.net.pl

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
 
Użytkownik Atlas na Tibia.net.pl

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 Zobacz post
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
 


Odpowiedz

Narzędzia tematu
Wygląd

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 [...]


Zanim spytasz w temacie - wpadnij tu! - Aleq (0) 17-11-2008 16:25 Auto balance team 7.6 - Pawcio. (0) 17-11-2008 15:03 Devland 8.1 HELP! - Mzikos (2) 15-11-2008 10:03 [-8.1] Priv NPC by Aragorn - Aragornkk (3) Wczoraj 17:32 Sucre evolution [8.0] - jinn (0) 31-10-2008 16:41 [C++] GM pisze zawsze na czerwono - schikell (1) 05-10-2008 10:34 [C++] Komenda /giveskill - schikell (3) 30-09-2008 21:00 [7.6] - mati504 (0) 29-09-2008 20:28 [8.2+]Attack speed - fabian766 (0) 21-09-2008 12:21 [8.21] C++ Pomoc - God Tyran (1) 19-09-2008 21:03


Czasy w strefie GMT +1. Teraz jest 16:53.




Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.2.0 © 2008, Crawlability, Inc.