Просмотр полной версии : Прошу помощи
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.
При таком варианте компилятор пишет о недостатке параметров при обращении к массиву, т.е. просит указывать оба индекса для обращения к конкретному элементу.
два или даже три массива не судьба? типа массив Х 10 элементов, Y - 10 и Z - 10. и после просто по одному и тому-же индексу читай.
dashenok
26.12.2016, 20:59
Нет, не судьба, мне удобно работать именно с тем кодом, который я описал выше.
Вариант с несколькими массивами буду рассматривать в случае невозможности моей реализации.
Я проходил этот путь 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#?
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
});
}
vBulletin® v3.6.11, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot