Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Zmiana channeli


Rekomendowane odpowiedzi

Opublikowano

Czesc, uzylem poradnika do zmiany channeli:

https://metin2dev.org/board/index.php?/topic/7388-rls-ingame-channel-switcher-like-wom2/

Lecz mam jeden problem źle teleportuje nie na te porty.

Jak w temacie pisze:

ch1:
13002 - 13008
ch2:
13102 - 13108
ch3:
13202 - 13208
ch4:
13302 - 13308

Mam inne porty, 13000,1,2,3 

Jak edytować zęby dobrze działało?

Próbowałem tak:

void CHARACTER::ChannelSwitch(int new_ch){
	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){
		return;
	}
	
	std::map<WORD, int>micha;
	
	for(int i = 0; i < 4; i++){ //replace with maximum channels -1   actual 1300x - 1330x
		for(int i2 = 2; i2 < 9; i2++){ //replace with your core values actual  13x02 - 13x08
			micha[13*1000 + i*100 + i2] = i+1;
		}
	}
	micha[13000] = 1;
	micha[13001] = 2;
	micha[13002] = 3;
	micha[13003] = 4;
	int chan;
	if(micha.find(wPort) != micha.end()){
		chan = micha[wPort];
}else{return;}
	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 - 100*(chan-1) + 100*(new_ch-1));
	
	sys_err("x : %d y: %d, addr: %d, port: %d , newPort: %d", x, y, lAddr, wPort, (wPort - 100*chan + 100*new_ch));
	
	GetDesc()->Packet(&p, sizeof(TPacketGCWarp));
}

Lecz syserr:

SYSERR: Aug 18 10:22:07 :: ChannelSwitch: x : 471177 y: 953064, addr: 1682272537, port: 13002 , newPort: 12802

Za pomoc lajk.

e3e0ug.png+ 4gb ram.


 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...