PDA

Просмотр полной версии : Прошу помощи


dashenok
26.12.2016, 10:00
Добрый день.

Можно ли как-то в рамках скрипта объявить свой тип?
Пытаюсь написать что-то вроде:

type
coords = array[0..2] of integer;

Но скрипт не компилируется...

И еще вопрос по многомерным массивам... Можно ли как-то получить ссылку на отдельную строку, т.е. на вложенный массив?
Пример:

var
a: array[0..2, 0..5] of integer;

begin
a[0] := [1, 2, 3, 4, 5, 6];
end.


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

SeregaZ
26.12.2016, 14:55
два или даже три массива не судьба? типа массив Х 10 элементов, Y - 10 и Z - 10. и после просто по одному и тому-же индексу читай.

dashenok
26.12.2016, 20:59
Нет, не судьба, мне удобно работать именно с тем кодом, который я описал выше.
Вариант с несколькими массивами буду рассматривать в случае невозможности моей реализации.

alexov
27.12.2016, 23:33
Я проходил этот путь 2 года назад, намучился и истратил кучу времени.
Выводы сделал такие - скриптовые языки, они для простых вещей, не надо на них программировать. это чистая боль.

Если нужна сложная логика, лучше вложить немного дополнительных усилий и разобраться с плагинами. l2ph их вроде как поддерживает.

Если не нравится delphi, то можно свою софтину накатать. на самом деле нет ничего сложного в том чтобы перехватить траффик и расшифровать его (если стандартная шифрация), чем быть завязанным на l2ph.

кроме того у l2ph проблемы с производительностью, если наростишь функционал в скрипте, упрешься в 100% загрузку ядра процессора, начнет копиться очередь пакетов и все накроется п****й

dashenok
28.12.2016, 13:15
Спасибо за ответ.

Сам буквально неделю копаюсь во всем этом, но уже на 2ой день стало понятно, что возможностей FS крайне мало... Приходится использовать кучу костылей, а написанный код становится просто ужасным в сопровождении.

С плагинами пока не совсем понятно...

Пробовал скомпилировать простейшую dll'ку, содержащую пару функций, подключал в скрипте через LoadLibrary, вызывал функции, используя CallFunction, все работает, все здорово, за исключением передачи строк и других более сложных объектов, но это тоже, как я понял, нормально, из-за разных пространств в выделяемой памяти.

Вопрос в том, как использовать функции, которые по умолчанию доступны в скрипте: Read, Write, SendToServer, SendToClient и т.д.?

Вот здесь описана структура плагина -> http://coderx.ru/showthread.php?t=890

Как я понял, описанная структура реализована в самом l2phx и процедуры onConnect, OnPacket, ... будут вызываться в ответ на события, которые возникают в l2phx?

ScythLab
28.12.2016, 15:50
Вопрос в том, как использовать функции, которые по умолчанию доступны в скрипте: Read, Write, SendToServer, SendToClient и т.д.?Наверно ответ на твой вопрос в структуре TPluginStruct.

Только решение, в системе плагинов в коммуникационные функции добавлять аргументы и результат типа string, очень спорное и с этим можно получить немало багов.

dashenok
28.12.2016, 16:17
Наверно ответ на твой вопрос в структуре TPluginStruct.

Только решение, в системе плагинов в коммуникационные функции добавлять аргументы и результат типа string, очень спорное и с этим можно получить немало багов.

Пример с той ветки так и не получилось откомпилировать, взял оттуда > http://l2ph.coderx.ru/arhive/l2ph_help/index.htm#page=plugdemo1.htm
Вроде бы получилось, вечером попробую что-нибудь простое написать.

Пример со строкой был лишь проверкой возможности использования собственных библиотек.


Еще такой вопрос...
Сложно ли написать свой перехватчик пакетов, скажем, на C#?

alexov
28.12.2016, 18:36
var listener = new TcpListener(IPAddress.Any, port);
listener.Start();

while (true)
{
var client = await listener.AcceptSocketAsync();
ThreadPool.QueueUserWorkItem(q => {
//client.Receive()
//client.Send()
// profit!!1
});
}