Показать сообщение отдельно
Старый 12.02.2008, 22:13   #236
Рыцарь
 
Аватар для Grinch
 
Регистрация: 29.02.2008
Сообщений: 928
Сказал Спасибо: 127
Имеет 130 спасибок в 93 сообщенях
Grinch пока неопределено
По умолчанию

я думаю эт ботва на уровне клиента и выципить окно... ну хз интересная идея а что за линейка поконкретней можно?

Добавлено спустя 1 день 8 часов 43 минуты 45 секунд:
проверяет принадлежность координат заданой зоне
Код:
const
   Name='Ник перса тестера;
   //первая координата квадрата
   ax=-88370;
   ay=142700;
   az=3640;
   //вторая координата квадрата
   bx=-87427;
   by=142700;
   bz=-3640;
   //третья координата квадрата
   cx=-87427;
   cy=141800;
   cz=-3640;
   //четвёртая координата квадрата
   dx=-88368;
   dy=141752;
   dz=-3640;
var
   mx, my: real;
   MyID:integer;
   pl,pl1,pl2,pl3,p2,p21,p22,p23:integer;
   timer1 : TTimer;
procedure Say(msg:string);
begin
    buf:=hstr('4A 00 00 00 00');
    WriteD(2);
    WriteS(Name);
    WriteS(msg);
    SendToClientEx(Name);
end;
procedure Init; //Вызывается при включении скрипта
begin
// дык таймер но он выключен он нам не нужен в этом скрипте, но мало ли
    // timer1:=TTimer.Create(nil);
     //timer1.OnTimer:=@OnTimer1;
    // timer1.enabled:=false;//по начал не запускаем таймер, только по команде
     //timer1.interval:=2000;// 2 секунды - начальный интервал таймера
end;
    procedure InitStats;
begin
         MyID:=ReadD(18);
         Say('ID'+inttostr(MyID));
end;
procedure InitXYZ;
begin
mx:=ReadD(6);
my:=ReadD(10);
//нород если криво то помидорами не кидай те кто закодит для n угольника
//тому респект и уважуха, особенно если квадрат будет с возможность мёртвыъ координат внутри, но ет мат задача не для моих мозгов
//ет квадрат АБЦД
pl:=Ploshad(ax,ay,bx,by,cx,cy);
pl1:=Ploshad(mx,my,bx,by,cx,cy);
pl2:=Ploshad(ax,ay,mx,my,cx,cy);
pl3:=Ploshad(ax,ay,bx,by,mx,my);
p2:=Ploshad(ax,ay,dx,dy,cx,cy);
p21:=Ploshad(mx,my,dx,dy,cx,cy);
p22:=Ploshad(ax,ay,mx,my,cx,cy);
p23:=Ploshad(ax,ay,dx,dy,mx,my);
//проверяем условие принадлежиности наших координат к квадрату АБЦД
 if (pl<pl1+pl2+pl3+50)and((pl>pl1+pl2+pl3-50))or (p2<p21+p22+p23+50)and((p2>p21+p22+p23-50)) then Say('Мы в квадрате!')
                         else  Say('МЫ НЕ в квадрете!')


end;

function Ploshad(ax,ay,bx,by,cx,cy:real):integer;
var d1,d2,d3,per:real;
//описываем по какой то там формуле лощадь треугольника
begin
d1:=sqrt((ax-bx)*(ax-bx)+(ay-by)*(ay-by));   // 1-я сторона (длина)
d2:=sqrt((cx-bx)*(cx-bx)+(cy-by)*(cy-by));   // 2-я сторона (длина)
d3:=sqrt((ax-cx)*(ax-cx)+(ay-cy)*(ay-cy));   // 3-я сторона (длина)
per:=(d1+d2+d3)/2;                           // полуппериметр
Result:=Round(sqrt(per*(per-d1)*(per-d2)*(per-d3))); // считаем площадь
end;
procedure Free; //Вызывается при выключении скрипта
begin
//timer1.enabled:=false;
//timer1.Free;
end;

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
    if pck='' then exit;    //убераем пусты пакеты
    //думаем о нашем ИД думаем...
    if FromServer and (ConnectName=Name) and (pck[1]=#$04)  then InitStats;
    // думаем о координатах своих
    if FromServer and (ConnectName=Name) and (pck[1]=#$01)and (ReadD(2)=myID) then   InitXYZ;
end.
ЗЫ кто красивей может реализовать? и пригрузку констант из файла :) реализуйте плиз если б lQaKl за что ему респект большой, я б ето ещё неделю писал а так полтора дня думал над алгоритмом полтора дня писал lQaKl поправил за 10 минут и вот чудо, работает :beer:

Добавлено спустя 12 минут 57 секунд:
зы место теста забыл сказать Арена Глудин ПВП зона
Grinch вне форума   Ответить с цитированием