Показать сообщение отдельно
Старый 08.01.2011, 23:07   #10
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

как-то так чтоли

delphi Код:
const n = 100; fs_netping = #$D9; fc_EnterWorld = #$11; fc_logout = #$00; fc_netping = #$B1; var   NetPing: string;   LogOutOk: array of boolean;   playid : array of integer;   i,cnt:integer; procedure init; begin   cnt:=0; end; procedure NoClose; begin   NoCloseFrameAfterDisconnect;   NoCloseClientAfterServerDisconnect;   NoCloseServerAfterClientDisconnect; end; procedure onfromserver; begin     case pck[1] of       fs_netping: begin       for i:=0 to cnt do         if (playid[i]=connectid) and (LogOutOk[i]) then begin           buf:=NetPing;           SendToServer;           exit;         end;       end;     end; end; procedure onfromclient; begin     case pck[1] of     fc_logout: begin         pck:='';         buf:=#$20;         SendToClient;       for i:=0 to cnt do         if (playid[i]=connectid) then begin           LogOutOk[i]:=true;           NoClose;           exit;       end;     end;       fc_netping: begin         NetPing:=pck;         pck:='';       end;      fc_enterworld: begin        SetLength(playid,cnt+1)        SetLength(logoutok,cnt+1)        playid[cnt]:=connectid;        logoutok[cnt]:=false;        inc(cnt);        if cnt >= 101 then cnt := 0;      end;   end; end; begin if fromServer then   onfromserver else   onfromclient;    end.

PS на нетпинг надо отвечать нихрена не так
__________________
Начало.

Последний раз редактировалось supernewbie, 08.01.2011 в 23:21.
supernewbie вне форума   Ответить с цитированием