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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
 
 
Опции темы Опции просмотра
Старый 01.07.2014, 16:49   #1
Новичок
 
Регистрация: 18.05.2013
Сообщений: 13
Сказал Спасибо: 4
Имеет 0 спасибок в 0 сообщенях
VitaminPSG пока неопределено
Лампочка DLL бот и потоки

Собственно приступил к написанию самого контроллера бота. Т.к. в боте используются таймеры, можно ли использовать потоки? Для каждого соединения я создаю класс Session
Код:
type Session = class(TThread)
public
//Поля описывающее персонажа
{TUser - поле пользователя}
      user : TUser;
{TSkillList - поле(список) скиллов}
      skillList : TSkillList;
{TInventoryItemList - поле(список) вещей в инвентаре}
      itemList : TInventoryItemList;
{TBuffList - поле(список) бафов, дебафов}
       buffList : TBuffList;
{TInventoryItemList - поле(список) вещей в инвентаре}
       inventoryItemList : TInventoryItemList;


//Поля описывающее информацию рядом с персонажем
{TNpcList - поле(список) мобов}
      npcList : TNpcList;
{TPlayerList - поле(список) игроков}
      playerList : TPlayerList;
{TDropItemList - поле(список) вещей на полу}
      dropItemList : TDropItemList;

//Методы
 constructor Create(_id : Cardinal);
function getID(): Cardinal;

private
  id : Cardinal;
end;
В главном юните я объявляю
Код:
 var sessions : TObjectList<Session>
Далее в OnPacket я проверяю создана ли такая сессия, если нет создаю с текущем cnt. И вызываю метод
Код:
procedure OnPacket(const cnt: Cardinal; const fromServer: Boolean; const connectionname:string; var pck: string); stdcall;
var curSession : Session;
begin
 //Анализирую пакет если пришел пакет, который необходимо обработать
// получаю действие по этому пакету, ищу сессию для данного соединения
if(isAction) then
 if(getSessionById(cnt) = -1) then
  curSession:=Session.Create(cnt);
  sessions.add(curSession); 
 end;
curSession.Action(поля);
end;
end.
Вопрос допускаться ли использование потоков в DLL? Возможна ли отправка пакетов из потока?
И вопрос по Delphi если я объявляю локальную переменную, создаю её и передаю в глобальный список. Туда передастся ссылка или переменная?
VitaminPSG вне форума   Ответить с цитированием
 

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



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

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


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

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

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