Вернуться   CoderX :: Forums > Lineage II > L2PacketHack > Разработка
Войти через OpenID

Разработка Раздел для совместной разработки/доработки программы

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 01.08.2008, 06:48   #1
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию L2PacketHack 3.5.x

Исходники здесь
Вот такие скомпилированные версии есть у меня.

Ниже данные устарели.
Репозиторий находится тут (открывать через SVN клиент)
Удобный просмотр репозитория через браузер тут
Скомпилированные версии тут Пароль к архиву: coderx.ru

Есть ли предложения по модернизации существующего кода с описанием как должно и что хотелось бы заменить/добавить?

Программа пишется в среде Delphi 2007 и Delphi 7 с использованием следующих дополнительных библиотек компонентов:
- FastScript (http://fast-report.com/ru/products/fast-script.html)
- JCL (http://sourceforge.net/projects/jcl/)
- JVCL (http://sourceforge.net/projects/jvcl/)

Дополнительные компоненты брать тут. (<-- TPerlRegEx есть только там)

/upd:
для компиляции последних ревизий понадобятся JCL, JVCL (ссылки выше) а так же:
jwapi2.2a, SyntEdit, TRichView.v11.0+ScaleRichView.v2.0, TsiLang (letitbit / upload.com.ua)
Немного подправленный FastScript искать в файловом архиве.

Последний раз редактировалось NLObP, 17.10.2016 в 00:02.
NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился 111 спасибками от:
-=Ma}{imuS=-, 4erteg, Agat, ak47, Alan, alexsl, alexteam, AoWpwnz, APXAHGEJI, Asmalaa Asrety, Benefit, BISMARCK_555, boy200007, boypush, Breadfan, BuKbI4, CCCP, Crypto, Curious, cutter, DashKAaa, Denis63RUS, dyh9l, Elecktron, Emocean, Evgeniy, FatalHistori, Fer123, Ferrari3200, FFALL777, Fim, freeworld, GameCoder, gavr1l0, gexiss, goodvin1709, Green, Grinch, HacPaTyc, INFERION, isya, Johnson, Keeper, Keisei, Kotyara2014, lomoWAR, lordka), LostQ, Lotar, Ma3aXakA, march, marslem, mat1s, MHz, micoach, MiRoN, mirt, MoD_Hanes, MrIICUX, Mulder, Murdoc, neonv1, nezabudkin, Nigga, Niros, NoFear, OleSha, OMOH8787, PanAm, pascalpwnz, PerioH, PIONER, QaK, rastaman_228, ratvier, RockTeam, RoZ, Rubicosha, Rysis, Ryth, saxa24111, shunder, skaner, skiner4119, Snowbars, StekloReZ, stopicot, TAMBIK, Tchep, Therapyst, TryLaw, vahes, Velizarx, victor_rvm, Vilson, Vklu4atel^^, vlad00777, vovanchik, vul-test, wanick, wasabi_100, WhiteDevil, Xelat, xkor, Yegor, Yellowboy, zDiablik, АлисаХочетСекс, Арти, женька
Старый 07.10.2008, 00:17   #291
Пользователь
 
Регистрация: 28.06.2008
Сообщений: 33
Сказал Спасибо: 12
Имеет 15 спасибок в 8 сообщенях
RoZ пока неопределено
По умолчанию

Цитата:
Сообщение от xkor Посмотреть сообщение
RoZ, дело в том что если преобразовывать String в PChar то получается просто указатель на первый символ строки, а вот если наоборот PChar в String, то надо перед первым символом ещё разместить счётчик ссылок и длинну строки, поэтому строка при этом копируется и получается что если есть переменная p типа PChar, то PChar(String(p))<>p
А может быть что "новый" String из PChar он создаёт в адресном протранстве DLL так как память первоначально была выделена под PChar там же? Впрочем всё это мои домыслы, пока буду разбираться в Дельфи дальше, авось чего еще и раскопаю..
З.Ы. Кому интересно можно прочитать про похожую ситуацию вот тут http://forum.sources.ru/index.php?showtopic=98659# хотя она и не подходит на 100%. Завтра попробую переписать функцию по другому, как там советуют, хотя из меня Дельфист тот ещё...
RoZ вне форума   Ответить с цитированием
Старый 07.10.2008, 01:01   #292
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

ревизия 39:
обновил возможности плагинов, теперь из плагина есть доступ к следующим встроенным в пакетхак фукнциям:
procedure SendPacket(Size: Word; pck: string; tid: Byte; ToServer: Boolean);
procedure SendPckStr(pck: string; const tid: Byte; const ToServer: Boolean);
procedure SendPckData(var pck; const tid: Byte; const ToServer: Boolean); stdcall;
function DataPckToStrPck(var pck): string; stdcall;

function ReadC(const pck: string; const index:integer):byte; stdcall;
function ReadH(const pck: string; const index:integer):word; stdcall;
function ReadD(const pck: string; const index:integer):integer; stdcall;
function ReadF(const pck: string; const index:integer):double; stdcall;
function ReadS(const pck: string; const index:integer):string; stdcall;
function ReadCEx(const pck; const index:integer):byte; stdcall;
function ReadHEx(const pck; const index:integer):word; stdcall;
function ReadDEx(const pck; const index:integer):integer; stdcall;
function ReadFEx(const pck; const index:integer):double; stdcall;
function ReadSEx(const pck; const index:integer):string; stdcall;
procedure WriteC(var pck: string; const v:byte; ind:integer=-1); stdcall;
procedure WriteH(var pck: string; const v:word; ind:integer=-1); stdcall;
procedure WriteD(var pck: string; const v:integer; ind:integer=-1); stdcall;
procedure WriteF(var pck: string; const v:double; ind:integer=-1); stdcall;
procedure WriteS(var pck: string; const v:string; ind:integer=-1); stdcall;
procedure WriteCEx(var pck; const v:byte; ind:integer=-1); stdcall;
procedure WriteHEx(var pck; const v:word; ind:integer=-1); stdcall;
procedure WriteDEx(var pck; const v:integer; ind:integer=-1); stdcall;
procedure WriteFEx(var pck; const v:double; ind:integer=-1); stdcall;
procedure WriteSEx(var pck; const v:string; ind:integer=-1); stdcall;

function HexToString(Hex:String):String;
function StringToHex(str1,Separator:String):String;

а так же в качестве демо-плагина теперь простенький автоюзатель НР бутылок

Добавлено через 42 минуты
RoZ, почитал я ту статью, действительно проблемы возникнуть могут, но не из за того что ты описал а если память освободиться между присвоением значения строке в длл и копированием строки в программе, а это на мой взгляд произойти практически не может...

вот не большое исследование в дебагере
выполняется в программе:
Код:
phxPlugins.pas.143: Info:=String(GetPluginInfo(version));
004928EF 6801000403       push $03040001               ;кладём в стек параметр version
004928F4 FF5618           call dword ptr [esi+$18]     ;вызываем GetPluginInfo
прыгаем в плагин:
Код:
plugin_demo.dpr.23: Result:='Демонстрационный Plugin к программе l2phx'+sLineBreak+
0141459F B830464101       mov eax,$01414630            ;записываем в результат ссылку на текст
plugin_demo.dpr.26: end;
014145A4 5D               pop ebp                      ;неважно
014145A5 C20400           ret $0004                    ;возврат в программу
возвращаемся в программу:
Код:
004928F7 8BD0             mov edx,eax                  ;переносим результат GetPluginInfo в другой регистр
004928F9 8D4608           lea eax,[esi+$08]            ;записываем в регистр eax адрес Info
004928FC E86B29F7FF       call @LStrFromPChar          ;преобразуем PChar из edx в String помещая его в Info
__________________
Я здесь практически не появляюсь!, Skype - ikskor

Последний раз редактировалось xkor, 07.10.2008 в 01:01. Причина: Добавлено сообщение
xkor вне форума   Ответить с цитированием
За это сообщение xkor нажился 3 спасибками от:
Старый 07.10.2008, 16:28   #293
Рыцарь
 
Аватар для Grinch
 
Регистрация: 29.02.2008
Сообщений: 928
Сказал Спасибо: 127
Имеет 130 спасибок в 93 сообщенях
Grinch пока неопределено
По умолчанию

О_о пипл бы хотел думаю получить скомпилированный файл анонс версии был, а первый пост не кто не перебил. лично я вдс клиент ставить не буду ибо руки кривые.
Grinch вне форума   Ответить с цитированием
Старый 07.10.2008, 19:05   #294
Пользователь
 
Аватар для Emocean
 
Регистрация: 04.02.2008
Сообщений: 63
Сказал Спасибо: 44
Имеет 25 спасибок в 15 сообщенях
Emocean
По умолчанию

А я надеялсо, что скрипты переписывать не придётсо
Emocean вне форума   Ответить с цитированием
Старый 07.10.2008, 20:20   #295
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Emocean, а нах их переписывать?
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 07.10.2008, 20:35   #296
Пользователь
 
Аватар для Emocean
 
Регистрация: 04.02.2008
Сообщений: 63
Сказал Спасибо: 44
Имеет 25 спасибок в 15 сообщенях
Emocean
По умолчанию

Вернее сказать, я ожидал, что переменные, функции в скриптах и плагинах будут использоваться идентичные, для совместимости.
Emocean вне форума   Ответить с цитированием
Старый 07.10.2008, 21:00   #297
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

ну они идентичны на сколько это возможно
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 07.10.2008, 22:14   #298
Рыцарь
 
Аватар для Grinch
 
Регистрация: 29.02.2008
Сообщений: 928
Сказал Спасибо: 127
Имеет 130 спасибок в 93 сообщенях
Grinch пока неопределено
По умолчанию

Цитата:
Сообщение от xkor Посмотреть сообщение
ну они идентичны на сколько это возможно
я бы не отказался от списка соответсвий ) а то местами запарился и описания структуры длл ) сори но я нуп в програмирование
Grinch вне форума   Ответить с цитированием
Старый 08.10.2008, 23:54   #299
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

плагинную поддержку бы ещё доделать немног перед выкладыванием, возможны небольшие но коренные так сказать изменения из за которых "старые" плагины будут работать не верно...
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
За это сообщение xkor нажился 2 спасибками от:
Старый 09.10.2008, 09:41   #300
Пользователь
 
Регистрация: 28.06.2008
Сообщений: 33
Сказал Спасибо: 12
Имеет 15 спасибок в 8 сообщенях
RoZ пока неопределено
По умолчанию

ммм, народ stdcall можете заменить на cdecl ? Или должен использоваться именно stdcall ? Просто для совместимости с DLL написанной на С++ необходимо...или нереально ?

З.Ы. GetPluginInfo переделал на более безопасный вызов, вечером выложу на ваше рассмотрение.

Последний раз редактировалось RoZ, 09.10.2008 в 09:44.
RoZ вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Разработка



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 11:41.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!