Why would you want to use realmrelay? K Relay is better in every way imaginable and even if you only know Java, you can easily adapt to using C#.
Hello.
First I want to apologize for my English, I know it very badly, and also for my dullness.
I lost whole day to find out how to make RealmRelay work, and I have no success.
*****************/document/d/1DHHryEUsCTdwsD1mhWicXArX6MLWQlk-vfZkvd2QOH8/edit#bookmark=id.ppiv7qmq3n2v
I tried to use this guide, but it's link to source of RealmRelay is broken.
I want to know some things:
Is it ok to using Oracle proxy-only client to get Packets?
Do I need to use a Oracle client to play with RealmRelay?
Were I can get working version of RealmRelay? For now I need to update client's HelloPacket. I get source from KRelayLib and modify it for java. Seems working but I dont sure about this.
******.com/iObsidian/Realm-Relay.
I tried to use thise source. Having chosen proxy server, I can not connect normally. The game loads, but I see the nexus literally an instant. In logs no error, just disconnect message.
But sometimes I get EOF Exception on connect DataInputStream.readInt(Unknown Source) in ShowEffect server packet. (Apparently, there is some problem with this packet, but its code is almost identical to KRelaylib code, which works fine)
I would use KRelay, but I understand only Java.
Why would you want to use realmrelay? K Relay is better in every way imaginable and even if you only know Java, you can easily adapt to using C#.
RealmRelay is not even compiling, and KRelay works really bad after compilation.
So I really dont know what and how to use.
- - - Updated - - -
I dont want to make another Thread so I will write my problem here.
If I compile KRelay, it will make error on every second plugin on load. And on every packet it spam error
[Error] An exception was thrown
within ServerPacket
at Dictionary`2.get_Item
This key is not in the dictionary.
Some plugins still work. But if I use already compiled KRelay, every plugin loads normally, and packets dont make errors.
Iam using microsoft visual studio 2017.
Update your packets.xml
Code:<Packets> <Packet id="FAILURE" type="0"/> <Packet id="CREATESUCCESS" type="48"/> <Packet id="CREATE" type="63"/> <Packet id="PLAYERSHOOT" type="47"/> <Packet id="MOVE" type="58"/> <Packet id="PLAYERTEXT" type="75"/> <Packet id="TEXT" type="26"/> <Packet id="SERVERPLAYERSHOOT" type="79"/> <Packet id="DAMAGE" type="7"/> <Packet id="UPDATE" type="68"/> <Packet id="UPDATEACK" type="25"/> <Packet id="NOTIFICATION" type="20"/> <Packet id="NEWTICK" type="104"/> <Packet id="INVSWAP" type="45"/> <Packet id="USEITEM" type="35"/> <Packet id="SHOWEFFECT" type="41"/> <Packet id="HELLO" type="102"/> <Packet id="GOTO" type="44"/> <Packet id="INVDROP" type="52"/> <Packet id="INVRESULT" type="17"/> <Packet id="RECONNECT" type="40"/> <Packet id="PING" type="100"/> <Packet id="PONG" type="103"/> <Packet id="MAPINFO" type="27"/> <Packet id="LOAD" type="28"/> <Packet id="PIC" type="78"/> <Packet id="SETCONDITION" type="13"/> <Packet id="TELEPORT" type="96"/> <Packet id="USEPORTAL" type="5"/> <Packet id="DEATH" type="11"/> <Packet id="BUY" type="3"/> <Packet id="BUYRESULT" type="33"/> <Packet id="AOE" type="38"/> <Packet id="GROUNDDAMAGE" type="60"/> <Packet id="PLAYERHIT" type="95"/> <Packet id="ENEMYHIT" type="30"/> <Packet id="AOEACK" type="84"/> <Packet id="SHOOTACK" type="82"/> <Packet id="OTHERHIT" type="65"/> <Packet id="SQUAREHIT" type="74"/> <Packet id="GOTOACK" type="64"/> <Packet id="EDITACCOUNTLIST" type="22"/> <Packet id="ACCOUNTLIST" type="55"/> <Packet id="QUESTOBJID" type="12"/> <Packet id="CHOOSENAME" type="15"/> <Packet id="NAMERESULT" type="99"/> <Packet id="CREATEGUILD" type="91"/> <Packet id="CREATEGUILDRESULT" type="67"/> <Packet id="GUILDREMOVE" type="81"/> <Packet id="GUILDINVITE" type="51"/> <Packet id="ALLYSHOOT" type="62"/> <Packet id="ENEMYSHOOT" type="86"/> <Packet id="REQUESTTRADE" type="90"/> <Packet id="TRADEREQUESTED" type="80"/> <Packet id="TRADESTART" type="92"/> <Packet id="CHANGETRADE" type="88"/> <Packet id="TRADECHANGED" type="16"/> <Packet id="ACCEPTTRADE" type="46"/> <Packet id="CANCELTRADE" type="34"/> <Packet id="TRADEDONE" type="4"/> <Packet id="TRADEACCEPTED" type="61"/> <Packet id="CLIENTSTAT" type="14"/> <Packet id="CHECKCREDITS" type="37"/> <Packet id="ESCAPE" type="53"/> <Packet id="FILE" type="6"/> <Packet id="INVITEDTOGUILD" type="8"/> <Packet id="JOINGUILD" type="50"/> <Packet id="CHANGEGUILDRANK" type="36"/> <Packet id="PLAYSOUND" type="39"/> <Packet id="GLOBALNOTIFICATION" type="97"/> <Packet id="RESKIN" type="49"/> <Packet id="PETUPGRADEREQUEST" type="87"/> <Packet id="ACTIVEPETUPDATEREQUEST" type="101"/> <Packet id="ACTIVEPETUPDATE" type="66"/> <Packet id="NEWABILITY" type="69"/> <Packet id="PETYARDUPDATE" type="59"/> <Packet id="EVOLVEPET" type="76"/> <Packet id="DELETEPET" type="1"/> <Packet id="HATCHPET" type="56"/> <Packet id="ENTERARENA" type="83"/> <Packet id="IMMINENTARENAWAVE" type="57"/> <Packet id="ARENADEATH" type="98"/> <Packet id="ACCEPTARENADEATH" type="93"/> <Packet id="VERIFYEMAIL" type="19"/> <Packet id="RESKINUNLOCK" type="42"/> <Packet id="PASSWORDPROMPT" type="89"/> <Packet id="QUESTFETCHASK" type="18"/> <Packet id="QUESTREDEEM" type="9"/> <Packet id="QUESTFETCHRESPONSE" type="31"/> <Packet id="QUESTREDEEMRESPONSE" type="23"/> <Packet id="PETCHANGEFORMMSG" type="21"/> <Packet id="KEYINFOREQUEST" type="94"/> <Packet id="KEYINFORESPONSE" type="24"/> <Packet id="CLAIM_LOGIN_REWARD_MSG" type="85"/> <Packet id="LOGIN_REWARD_MSG" type="77"/> <Packet id="QUEST_ROOM_MSG" type="10"/> </Packets>
Alde is Alde is
I found another version that works fine.
How does the connection between server and client work? As I understand, everything happens like this:
TcpListener starts listening to localhost on port 2050.
When in client you connect to proxy, TcpListener receives a server connection.
A new connection is created from the client to the server through which HelloPacket is sent.
...
But if I just send the Hello Packet (Without the rotmg client), then Listener does not get the connection from the server. So how to get it?
I misunderstood the principle of the KRelay's work. I cut out the client part from KRelay, and added a plugin that responds to the server. The problem is that it works a minute or two. Then an empty packet comes up (As I get) and connection closing.
Either the Failure package comes with error code 0 and a message "Lost connection to server". So I really dont know why its happening.Code:private void RemoteRead(IAsyncResult ar) { ... bool success = PluginUtils.ProtectedInvoke(() => { if (!stream.CanRead) return; int read = stream.EndRead(ar); buffer.Advance(read); if (read == 0) { Dispose(); return; } ... }
My client works, but not for long, and I do not know what to do about it. Can anybody tell me under what conditions this can happen?