I am 3 days looking for a solution to this problem, unfortunately so far without success.
Last hope is here in this forum
I'm using the ZeNu In-Game Channel Changer, I installed everything and I have no errors in the sysser but when i changing the channel, the game returns to the login page after 3 seconds.
For what I've been researching, this is a port problem in char.cpp.
Cod: Selectaţi tot
#ifdef ENABLE_CHANGE_CHANNEL
void CHARACTER::ChangeChannel(DWORD channelId){
long lAddr;
long lMapIndex;
WORD wPort;
long x = this->GetX();
long y = this->GetY();
if (!CMapLocation::instance().Get(x, y, lMapIndex, lAddr, wPort))
{
sys_err("cannot find map location index %d x %d y %d name %s", lMapIndex, x, y, GetName());
return;
}
if(lMapIndex >= 10000){
this->ChatPacket(CHAT_TYPE_INFO, ("You can't change channel in private map."));
return;
}
//this->ChatPacket(CHAT_TYPE_COMMAND, "RefreshChannel %d", channelId);
Stop();
Save();
if(GetSectree()){
GetSectree()->RemoveEntity(this);
ViewCleanup();
EncodeRemovePacket(this);
}
TPacketGCWarp p;
p.bHeader = HEADER_GC_WARP;
p.lX = x;
p.lY = y;
p.lAddr = lAddr;
p.wPort = (wPort - 4*(g_bChannel-1) + 4*(channelId-1));
GetDesc()->Packet(&p, sizeof(TPacketGCWarp));
}
#endifLogically I came to the conclusion that I should put " p.wPort = (wPort - 4 *(....) +4* (....) since these are my doors.
Channel 1 Core 1 [30003] = 1;
Channel 1 Core 2[30005] = 1;
Channel 2 Core 1[30007] = 2;
Channel 2 Core 2[30009] = 2;
But the game continues to return to the login page. Can any good soul help me? What is the logic? What should i put at wPort -X ? Does the problem is not there?
Thanks you.


