Показать сообщение отдельно
Старый 15.02.2008, 11:39   #247
Новичок
 
Регистрация: 22.11.2007
Сообщений: 17
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
Rubec
По умолчанию

Объясните для тупых для чего этот скрипт???

Код:
    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.
Rubec вне форума   Ответить с цитированием