Ingame ch váltó port számolás

Indította xTryx, 2019-04-07, 13:45:51

Sziasztok, valaki segítene kiszámolni a portokat? Nekem nem teljesen tiszta.

Ez az alap

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;
}
}


Ezzel próbálkoztam

for (int i = 0; i < 4; i++){
for (int i2 = 0; i2 < 2; i2++){
micha[10 * 1000 + i+1 * 10 + i2*100] = i + 1;
}
}


Annyit értem el hogy portol, de kidob.

Portjaim:
ch1: 10010
ch1_1: 10110
ch2: 10020
ch2_2: 10120
stb...
4ch-ig kellene.

Előre is köszönöm!

2019-04-07, 14:09:54 #1 Utolsó szerkesztés: 2019-04-07, 14:21:42 Szerző: AntiPositive
Az általad bemásolt részt tedd kommentbe, és az alatt van egy alapból kikommentelt sor, arról meg vedd ki.
Ott meg van adva statikusan (talán csak ch1, tehát másold le), én nem is értem miért csináltak ennek for ciklust, kb amikor valaki menő akar lenni,  és hülyeségeket csinál mert azt hiszi hogy menő ;D Akkor már olvasta volna ki a config fájlokból...

Megjegyzés: Itt is csak a ch első core-ját kell megadni mint a serverinfo.py-be
Belenéztem a sajátomba, nálam mégis meg van adva mind2, így ezt most biztosra mégse mondom;D

micha[13001] = 1; //ch1_1
micha[13002] = 1; //ch1_2

micha[13011] = 2; //ch2_1
micha[13012] = 2; //ch2_2

Köszi a választ!


micha[10010] = 1;
micha[10020] = 2;
micha[10030] = 3;
micha[10040] = 4;


Most így módosítottam, de ugyan az kb, portol 1mp-ig aztán kidob.
Esetleg valami ötlet?

Add hozzá mégis a 2. core portokat is :D
Ha utána sem jó, akkor nem a portokkal lesz a hiba.

Ugyan az ez eredménye.


itt az egész funkció

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;
micha[10010] = 1;
micha[10110] = 1;
micha[10020] = 2;
micha[10120] = 2;
micha[10030] = 3;
micha[10130] = 3;
micha[10040] = 4;
micha[10140] = 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));

GetDesc()->Packet(&p, sizeof(TPacketGCWarp));
}


ez nem játszhat közbe?

p.wPort = (wPort - 100 * (chan - 1) + 100 * (new_ch - 1));