Показать сообщение отдельно
Старый 29.10.2007, 15:31   #29
Новичок
 
Регистрация: 05.10.2007
Адрес: Украина
Сообщений: 19
Сказал Спасибо: 0
Имеет 23 спасибок в 13 сообщенях
DeVolf пока неопределено
По умолчанию

где я тупонул?
Const
Код:
  Name='DeVolf'; //??? ????
  mp='8A CC F3 00 10';
  hp='8A AA B7 00 10';
  cp='8A A8 B7 00 10';
var
  CharObjID,MyCorX,MyCorY,MyCorZ: integer;
  MaxHP,CurHP,MaxMP,CurMP,MaxCP,CurCP: integer;
  CharName: string;
  TimerHP, TimerCP, TimerMP: TTimer;

procedure Init; //?????????? ??? ????????? ???????
begin
  timerHP:=TTimer.Create(nil);
  timerHP.OnTimer:=@OnTimerHP;
  timerHP.enabled:=False;
  timerHP.interval:=100;

  timerCP:=TTimer.Create(nil);
  timerCP.OnTimer:=@OnTimerCP;
  timerCP.enabled:=False;
  timerCP.interval:=100;

  timerMP:=TTimer.Create(nil);
  timerMP.OnTimer:=@OnTimerMP;
  timerMP.enabled:=False;
  timerMP.interval:=100;
end;

procedure OnTimerHP(Sender: TObject);
begin
    buf:=hstr(hp);
    SendToServerEx(Name);
end;

procedure OnTimerCP(Sender: TObject);
begin
     buf:=hstr(cp);
     SendToServerEx(Name);
end;
procedure OnTimerMP(Sender: TObject);
begin
     buf:=hstr(mp);
     SendToServerEx(Name);
end;

procedure InitStats;
var
  i: integer;
begin
  CharObjID:=ReadD(18);
  MyCorX:=ReadD(2);
  MyCorY:=ReadD(6);
  MyCorZ:=ReadD(10);
  i:=22;
  CharName:=ReadS(i);
  i:=i+44;
  MaxHP:=ReadD(i);
  CurHP:=ReadD(i);
  MaxMP:=ReadD(i);
  CurMP:=ReadD(i);
  i:=i+363;
  MaxCP:=ReadD(i);
  CurCP:=ReadD(i);
  //????????? ???????? ?? ?????
  if (CurHP<=MaxHP-500) then TimerHP.enabled:=true else TimerHP.enabled:=false;
  if (CurCP<=MaxCP-500) then TimerCP.enabled:=true else TimerCP.enabled:=false;
  if (CurMP<=MaxMP-500) then TimerMP.enabled:=true else TimerMP.enabled:=false;
end;

procedure StatsUpdate;
var
  i: integer;
begin
  for i:=0 to ReadD(6)-1 do
    case pck[i*8+10] of
      #$09: CurHP:=ReadD(i*8+14);
      #$0A: MaxHP:=ReadD(i*8+14);
      #$0B: CurMP:=ReadD(i*8+14);
      #$0C: MaxMP:=ReadD(i*8+14);
      #$21: CurCP:=ReadD(i*8+14);
      #$22: MaxCP:=ReadD(i*8+14);
    end;
  //????????? ???????? ?? ?????
  if (CurHP<=MaxHP-500) then TimerHP.enabled:=true else TimerHP.enabled:=false;
  if (CurCP<=MaxCP-500) then TimerCP.enabled:=true else TimerCP.enabled:=false;
  if (CurMP<=MaxMP-500) then TimerMP.enabled:=true else TimerMP.enabled:=false;
end;

procedure CorsUpdate;
begin
  MyCorX:=ReadD(2);
  MyCorY:=ReadD(6);
  MyCorZ:=ReadD(10);
end;

BEGIN
  //--- STATS BEGIN ---//
  if FromServer and (ConnectName=Name) and (pck[1]=#$04) then InitStats;
  if FromServer and (ConnectName=Name) and (pck[1]=#$0E) and (CharObjID=ReadD(2)) then StatsUpdate;
  if FromClient and (ConnectName=Name) and (pck[1]=#$48) then CorsUpdate;
  //--- STATS END ---//
END.
DeVolf вне форума   Ответить с цитированием
За это сообщение DeVolf нажился спасибкой от: