• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Multi World system

Godely

Member
Joined
Aug 19, 2007
Messages
233
Reaction score
16
Can someone please adapt the Multi World system to TFS? I tried and I got many errors :\. You don't need to compile, just give a small tutorial about what to change (because the TFS sources are different).

Here is the Multi World system: http://otland.net/showthread.php?t=3078

Thanks!
 
Taratulen, look that. Here is the copy of the part of the tutorial which I'm having problems:

Code:
Now in [B]protocollogin.cpp[/B] in function [I]parsefirstpacket [/I]change:
[code]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));
    }

For this:
Code:
#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__
[/code]

Here is what is written on the sources:

Code:
	output->AddByte(0x64);
	if(accnumber != 1 && g_config.getString(ConfigManager::ACCOUNT_MANAGER) == "yes")
	{
		output->AddByte((uint8_t)account.charList.size() + 1);
		output->AddString("Account Manager");
		output->AddString(g_config.getString(ConfigManager::SERVER_NAME));
		output->AddU32(serverip);
		output->AddU16(g_config.getNumber(ConfigManager::PORT));
	}
	else
		output->AddByte((uint8_t)account.charList.size());

	std::list<std::string>::iterator it;
	for(it = account.charList.begin(); it != account.charList.end(); it++)
	{
		output->AddString((*it));
		if(g_config.getString(ConfigManager::ON_OR_OFF_CHARLIST) == "yes")
		{
			if(g_game.getPlayerByName((*it)))
				output->AddString("Online");
			else
				output->AddString("Offline");
		}
		else
			output->AddString(g_config.getString(ConfigManager::SERVER_NAME));
		output->AddU32(serverip);
		output->AddU16(g_config.getNumber(ConfigManager::PORT));
	}

How my I adapt one thing to the other? Thanks!
 
Back
Top