Szerző Téma: Ingame ch váltó port számolás  (Megtekintve 602 alkalommal)

Nem elérhető xTryx

  • Trainee
  • *
  • Thank You
  • -Given: 35
  • -Receive: 4
  • Hozzászólások: 135
  • Segített: 2
Ingame ch váltó port számolás
« Dátum: 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!

Nem elérhető AntiPositive

  • Beginner
  • Thank You
  • -Given: 119
  • -Receive: 6
  • Hozzászólások: 26
  • Segített: 7
Re:Ingame ch váltó port számolás
« Válasz #1 Dátum: 2019-04-07, 14:09:54 »
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
« Utoljára szerkesztve: 2019-04-07, 14:21:42 írta AntiPositive »

Nem elérhető xTryx

  • Trainee
  • *
  • Thank You
  • -Given: 35
  • -Receive: 4
  • Hozzászólások: 135
  • Segített: 2
Re:Ingame ch váltó port számolás
« Válasz #2 Dátum: 2019-04-07, 14:20:41 »
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?

Nem elérhető AntiPositive

  • Beginner
  • Thank You
  • -Given: 119
  • -Receive: 6
  • Hozzászólások: 26
  • Segített: 7
Re:Ingame ch váltó port számolás
« Válasz #3 Dátum: 2019-04-07, 14:21:27 »
Add hozzá mégis a 2. core portokat is :D
Ha utána sem jó, akkor nem a portokkal lesz a hiba.

Nem elérhető xTryx

  • Trainee
  • *
  • Thank You
  • -Given: 35
  • -Receive: 4
  • Hozzászólások: 135
  • Segített: 2
Re:Ingame ch váltó port számolás
« Válasz #4 Dátum: 2019-04-07, 14:26:29 »
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));

Nem elérhető Dreon

  • Trainee
  • *
  • Thank You
  • -Given: 3
  • -Receive: 1
  • Hozzászólások: 114
  • Segített: 0
Re:Ingame ch váltó port számolás
« Válasz #5 Dátum: 2019-04-14, 14:02:20 »
Nekem is, ugyanez a bajom! :) :)