Показать сообщение отдельно
Старый 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 вне форума   Ответить с цитированием