Добавлено через 15 минут
Кто хорошо разбирается в Таймерах....Посмотрите не накуралесил ли я тут случайно
DELPHI Код:
//Скрипт на возрождение на месте после смерти.
//Включите скрипт,когда вы умерли возьмите себя в таргет и нажмите в город.
//Вы встанете наместе.
//Автор Crazy$
//=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
const
//======================================
Name='Qwertyuio'; //**<-----Ник Персонажа-=
//======================================
var
a:integer;x:integer;MyID:string;s:integer;
y:integer;z:integer;TimerRes:TTimer;
b:boolean;ValidatePosition:string;
procedure Init; //Вызывается при включении скрпта
begin
timerRes:=TTimer.Create(nil); //Задаем настройки тамера
timerRes.OnTimer:=@OnTimer;
timerRes.enabled:=false; //Таймер выключен
timerRes.interval:=10; //интервал 10 милисекунд
s:=0;
end;
procedure OnTimer;
begin
buf:=#$48; //Тут нужно будет возиться с координатами..Вычислять для каждого места где обычно происходит REVIVE
inc(s);
SendToServerEX(Name);
end;
// и Т.Д
procedure SendMsc(msc:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msc);
SendToClient;
end;
procedure Free; //Вызывается при выключении скрипта
begin
timerRes.free; //Освобождаем память таймера
end;
begin
//Нечитаем пустые пакеты
if pck='' then exit;
//Если Имя соединения Name
//И Пакет Action от клиента то
if FromClient and (ConnectName=Name) and (pck[1]=#$04) then
begin
//Сохраняем мой Обжект Ид
MyID:= pck[2]+pck[3]+pck[4]+pck[5];
a:=ReadD(2); x:=ReadD(6); //Читаем и запоминаем данные
y:=ReadD(10); z:=ReadD(14);
SendMsc('Все данные сохранены!'); //Оповещаем о том что все прошло успешно
b:=true;
end;
begin
if pck='' then exit; //Не читаем пустые пакеты
//Если от Клиента пакет RequestRestartPoint
//Запоминаем ValidatePosition до revive
//Посылаем клиенту TeleportToLocation
if FromClient and (ConnectName=Name) and (pck=hstr('6D 00 00 00 00')) then //Если от клиента идет пакет RequestRestartPoint то
begin
TimerRes.Enabled := True; //Таймер включен
end;
if FromClient and (ConnectName=Name) and (pck[1]=#$48) then ValidatePosition:=pck;
if FromServer and (ConnectName=Name) and (pck[1]=#$28) and (MyID= pck[2]+pck[3]+pck[4]+pck[5]) then
begin
pck:=''; //Убиваем стандартный пакет
buf:=ValidatePosition; //посылаем ValidatePosition
SendToServerEX(Name);
buf:=#$28;
WriteD(A); //Obj.ID
WriteD(X); //Coord.X
WriteD(Y); //Coord.Y
WriteD(Z); //Coord.Z
SendtoclientEX(Name);
buf:=ValidatePosition; //посылаем ValidatePosition
SendToServerEX(Name);
timerRes.enabled:=false; // Таймер выклюяен
exit;
end;
end;
end.
Добавлено через 43 минуты
Правильно ли написана сама процедура таймера?
__________________
Работа программиста и шамана имеет много общего - оба бормочут непонятные слова, совершают непонятные действия и не могут объяснить, как оно работает
__________________________________________________ _____________
Родители частенько вышибали из меня дурь, но я знал где достать еще
__________________________________________________ _____________
Я живу напротив кладбища. БУДЕШЬ выпендриваться - будешь жить напротив меня!!!
Если помог скажи СПАСИБО =)