Показать сообщение отдельно
Старый 11.12.2009, 13:01   #3
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

куски с моего. не совсем торгового.. то что предназначено для паблика. на данный момент для цт2.3
скрипт работы с протоколом гс, первые пакеты:
delphi Код:
procedure CallProtocolVersion(Protocolversion:Integer); begin   buf := '';   WriteMask('bd',[$0E, Protocolversion]);   buf := buf +     HStr('0907545603090B01070254545607000255560051005357040755085401070153005655560106050451030851085156045406550802095156015306550453005656'+          '5301090209015154510955560903040705550406550406090451010808060552060401075403065255065555510102045403555401575155055205540751515507'+          '0253530052055207015400030505080605050603000D08010709035103075309510607540A50560252040555510253000854045256060209000803535601050055'+          '060856040D0607520607040A0601045404000502045400095253050401040505015251520D065108095453000D01020354530105030856540702540B06115D1F60');   SendBuf; end; Procedure CallAuthLogin(LoginName:string; SessionKey1_1, SessionKey1_2, SessionKey2_1, SessionKey2_2: Integer); begin   buf := '';          WriteMask('bsdddd', [$2b, LoginName, SessionKey2_2, SessionKey2_1, SessionKey1_1, SessionKey1_2]);   buf := buf + HStr('010000002A02000000000000');   SendBuf; end;

кусок кода не совсем из паблика подключающий дллку
delphi Код:
function TUserEngine.LoadLsLib(unload: boolean): boolean; begin   result := false;   if HLsWorkOut <> 0 then     begin       if assigned(LsWorkout) then       begin         LsWorkout.Destroy;         LsWorkout := nil;       end;       FreeLibrary(HLsWorkOut);       HLsWorkOut := 0;       LsWorkoutCreate := nil;     end;   if (TLsClass(UserClass.CurrentLS).LSlibraryPath = '')  or unload then exit;     if FileExists(TLsClass(UserClass.CurrentLS).LslibraryPath) then     HLsWorkOut := LoadLibrary(PChar(TLsClass(UserClass.CurrentLS).LslibraryPath))   else     HLsWorkOut := LoadLibrary(PChar(apppath+'\DATA\WorkOuts\LS\'+TLsClass(UserClass.CurrentLS).LslibraryPath));   if HLsWorkOut > 0 then   begin     try       @LsWorkoutCreate := GetProcAddress(HLsWorkOut,'LSWorkoutCreate');       result := true;     except     end;     if (@LsWorkoutCreate = nil) or not result then       begin         AddLogMain(format(rs_lib_hasNoExport, [TLsClass(UserClass.CurrentLS).LSlibraryPath, 'LSWorkoutCreate']),2)       end       else       begin         AddLogMain(format(rs_lib_load_ok, [TLsClass(UserClass.CurrentLS).LSlibraryPath]),0);         try           LsWorkoutCreate(@LSworkout);           if @LSworkout = nil then else Result := true;         except           result := false;         end;         if not result then AddLogMain(format(rs_lib_object_create_fail, [TLsClass(UserClass.CurrentLS).LSlibraryPath]),2);       end;   end  else   begin     Result := false;     AddLogMain(format(rs_lib_loadfail, [TLsClass(UserClass.CurrentLS).LSlibraryPath]),2);      end; end;


модуль работы с ЛС в полном виде в аттаче. представляет собой дллку с классом похожим на компоненту (код "сперт" с l2clientemu). uLSAuthSharedData.pas подключаеться и к длл и к приложению ее подгружающую и содержит нужные структуры с коментариями позволяющими понять порядок вызова методов и что означает тот либо иной проперти.
Вложения
Тип файла: rar LS.rar (60.6 Кб, 108 просмотров)
__________________
L2Ext - project closed.

Последний раз редактировалось alexteam, 11.12.2009 в 13:07.
alexteam вне форума   Ответить с цитированием
За это сообщение alexteam нажился 5 спасибками от: