Про SendToServer

jr

Administrator
Команда форума
На примере юза скилла (пакет 39=RequestMagicSkillUse:d(skillID:Get.Skill)d(CtrlPressed)c(ShiftPressed)).
Описание пакетов можно подчерпнуть из пакетхака или исходников соответствующего java сервера.

C#:
using System;
using System.Linq;
using System.Collections.Generic;
using NewWidget.Core;
using NewWidget.Core.Native;
using NewWidget.Core.Scripting;
using NewWidget.Core.Network;

public class Script : ScriptBase {

    public override void OnStart() {
        base.OnStart();
        EnabledChanged(true, () => {
            var packet = new Packet(0x39);
            packet.GetWriter().WriteD(1322).WriteD(0).WriteC(0);
            Client.SendToServer(packet);
            Enabled = false;
        });
    }

}
 

Lynx

New member
А есть пример как посмотреть пакет, что отправляется на сервер?
 

jr

Administrator
Команда форума
C#:
using System;
using System.Linq;
using System.Collections.Generic;
using NewWidget.Core;
using NewWidget.Core.Native;
using NewWidget.Core.Scripting;

public class Script : ScriptBase {

    public override void OnStart() {
        base.OnStart();
        ClientPacket(Console.WriteLine);
    }

}
 

Lynx

New member
Добрый день, а как быть с пакетами приходящими с сервера, можно посмотреть?
C#:
public override void OnStart() {
        base.OnStart();
        ServerPacket(Console.WriteLine);
    }
такой вариант ничего не возвращает
 
Последнее редактирование модератором:

jr

Administrator
Команда форума
Добрый день, а как быть с пакетами приходящими с сервера, можно посмотреть?
C#:
public override void OnStart() {
        base.OnStart();
        ServerPacket(Console.WriteLine);
    }
такой вариант ничего не возвращает
а сервер какой? если рпг клаб, то там не работает
 

ara

New member
А можно подробнее, для непонимающих?))
Вот например поймал пакет включения спиритшотов:
Код:
Id=D0 ExId=5 Buffer=700F000001000000
Как теперь его отправить?
 

ara

New member
Попробовал на примере
Код:
[15:27:00.6602] Id=38 ExId=0 Buffer=7400650073007400000000000000
По логике должно получиться
Код:
var pck = new NewWidget.Core.Network.Packet(0x38, 0x00);
pck.GetWriter().WriteHex("7400650073007400000000000000");
Client.SendToServer(pck);
почему-то не работает
 

jr

Administrator
Команда форума
это say? да, он не работает почти нигде
 
  • Like
Реакции: ara
Вопрос... В какой кодировке возвращает ReadBuffer byte[]? Не могу понять как получить русские буквы...
 

jr

Administrator
Команда форума
ReadBuffer возвращает сырые байты. Для чтения строк есть ReadS
 
ReadBuffer возвращает сырые байты. Для чтения строк есть ReadS
Суть в том что пытаюсь прочитать инфу с Community Board, там лежит в пакете HTML верстка. По сути мне нужно взять буфер, насколько понимаю это hexdecimal и конвертнуть его в String. Что по сути и делаю. Конвертирую hex в byte[] (или же просто получаю readBuffer) и дальше пытаюсь string htmlString = Encoding.UTF8.GetString(bytes).Replace("\0", ""); но русские буквы по сути не читабельны (↕♦>♦=♦O♦9♦ или же если смотреть в Sublime Text 1672101229315.png).

Пробовал разными способами конвертнуть, менять кодировку самой консоли... результат 0
 

jr

Administrator
Команда форума
полный код разбора бы
пакет полагаю этот ? 7B=ShowBoard:c(show)s(bbshome)s(bbsgetfav)s(bbsloc)s(bbsclan)s(bbsmemo)s(bbsmail)s(bbsfriends)s(bbs_add_fav)s(curPage)
 
полный код разбора бы
пакет полагаю этот ? 7B=ShowBoard:c(show)s(bbshome)s(bbsgetfav)s(bbsloc)s(bbsclan)s(bbsmemo)s(bbsmail)s(bbsfriends)s(bbs_add_fav)s(curPage)
Да, это пакет 7B. Код не идеален, но по факту рабочий...
P.S: ANSII я менял на UTF-8 и пытался конвертить из ANSII в UTF-8, толку 0. Так же напомню что пытался изменил кодировку вывода в консоль, но без результатно
 
Последнее редактирование:

jr

Administrator
Команда форума
я же дал описание пакета. и читается он соответствующе
C#:
    void OnServerPacket(Packet packet) {
        if (packet.Id == 0x7B) {
            var rd = packet.GetReader();
            var show = rd.ReadC();
            var bbshome = rd.ReadS();
            var bbsgetfav = rd.ReadS();
            var bbsloc = rd.ReadS();
            var bbsclan = rd.ReadS();
            var bbsmemo = rd.ReadS();
            var bbsmail = rd.ReadS();
            var bbsfriends = rd.ReadS();
            var bbsaddfav = rd.ReadS();
            var curpage = rd.ReadS();

            Console.WriteLine(curpage);
        }
    }
 
я же дал описание пакета. и читается он соответствующе
C#:
    void OnServerPacket(Packet packet) {
        if (packet.Id == 0x7B) {
            var rd = packet.GetReader();
            var show = rd.ReadC();
            var bbshome = rd.ReadS();
            var bbsgetfav = rd.ReadS();
            var bbsloc = rd.ReadS();
            var bbsclan = rd.ReadS();
            var bbsmemo = rd.ReadS();
            var bbsmail = rd.ReadS();
            var bbsfriends = rd.ReadS();
            var bbsaddfav = rd.ReadS();
            var curpage = rd.ReadS();

            Console.WriteLine(curpage);
        }
    }
ну вы же написали что хотели бы код разбора (Я так вас понял что то что сейчас у меня есть)
 
Сверху