PDA

Просмотр полной версии : Скрипт на несколько окон


xixi
19.01.2015, 22:54
Собственно хочется сделать себе мультиоконку на множество клиентов, т.е. я отправляю команду в одном окне и все окна делают тоже самое.
Скилл скриптов пакетхака достаточен, однако интересует как можно управлять несколькими окнами (причем без прописывания nick = connect name)

kpa9pt
20.01.2015, 21:23
Собственно хочется сделать себе мультиоконку на множество клиентов, т.е. я отправляю команду в одном окне и все окна делают тоже самое.
Скилл скриптов пакетхака достаточен, однако интересует как можно управлять несколькими окнами (причем без прописывания nick = connect name)

Лично я не припомню способа, могу лишь помочь в направлении задетектить имя чара или айди соединения и спамить дубль пакеты туда.
Но тут тогда нужно проверку каждого окна, ну например зашёл в игру получил пакет юзер инфо или ещё что.

cmdprompt
21.01.2015, 03:34
Всё елементарно :)

const //Interlude
EnterWorld=#$03;
LogoutOK=#$7E;
SeverClose=#$26;

var i:integer; Connects:TStringList;

procedure Init;
begin
Connects:=TStringList.Create;
end;

procedure Free;
begin
Connects.free;
end;

begin
if fromClient then begin

if (pck[1]=EnterWorld) and (Connects.indexOf(connectName)=-1) then Connects.Add(connectName);

if ord(pck[1]) in [список,пакетов,для,отправки] then begin buf:=pck; pck:=''; for i:=0 to Connects.Count-1 do SendToServerEx(Connects[i]); end;

end else if (pck[1]=LogoutOK) or (pck[1]=SeverClose) then begin i:=Connects.indexOf(connectName); if i>-1 then Connects.Delete(i); end;
end.

[список,пакетов,для,отправки] - через запятую id пакетов типа MoveBackwardToLocation, Action, RequestMagicSkillUse. Но не советую отправлять все, особенно такие как RequestDestroyItem или UseItem, т.е. использование предметов с другого окна или EnterWorld :D

xixi
21.01.2015, 21:15
Спасибо. Вообщем поиграю с таймерами. Ибо мне нужно не просто 1 действие сделать :)

Breadfan
22.01.2015, 23:41
с таймерами - обычно не очень. Т.к. любой мало-мальски заметный лаг\смена состояния приведет к сбою в последовательности. Лучше - "проверил свое состояние - если готов к "чему-то", то отправил запрос на выполнение "чего-то" и далее ждешь от сервера ответ, что персонаж это "что-то" начал выполнять или сообщение о фейле".