впринципе работает :) ток работает после того как ИД свой получит а ет происходит не сразу после включения скрипта хм значит стоило нажраться что б ето понять с больной головой :) так как сделать так что б ИД побыстрей считывался наверное шмотку снять одеть стоит
Добавлено спустя 4 минуты 37 секунд:
ЗЫ и работает как то рандомно надо подумать :) ещё
чтоб пришел пакет UserInfo надо просто открыть и закрыть окно инвенторя в клиенте)
ЗЫ а чтоб это сам скрипт делал надо прост заставить его при запуске слать пакет запроса инвенторя, я его номер непомню, так что прост поймай его и шли когда нужно получить UserInfo
__________________
Я здесь практически не появляюсь!, Skype - ikskor
ну сматри если ты используеш для хранения ИДешника (4-х байтного) ИНТИГЕР- то- тебе его применять надо по особому!.. простой IntToStr - некатит... нужно применять WRITED(Integer) , а ты скорее всего применяеш хз как.. тот клочек кода что ты дал- тока запоминает..
1. Не пойму где ты IntToStr увидел :) ты вроде первый про него в теме вспомнил
2. Я клочка никакого не давал а соответственно ничего и не применяю
3. и выыобще вы меня с кем-то путаете :)
Народ есть вопрос может ли кто нибудь подсказать как сделать так чтобы вывести ХП сумонов в отдельном окне чтобы оно было поверх всех клиентов, как вырвать значение ХП не проблема
я думаю эт ботва на уровне клиента и выципить окно... ну хз интересная идея а что за линейка поконкретней можно?
Добавлено спустя 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 секунд:
зы место теста забыл сказать Арена Глудин ПВП зона
дык он не сразу заработал у меня ж талант касячить норм код :) знаю что 3 достаточно
Добавлено спустя 3 минуты 23 секунды:
терь как бы его
Код:
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('МЫ НЕ в квадрете!')
покрасифше сделать что б треугольников н штук было просто с n Штук треугольниками можно горада забивать много времени на каждый город уйдёт, но их не бесконечное колличество :)
(Скрипт для раскатывания рб в 4 окна и тд)
var
MOBID, partyLEADER: string;
begin
if FromServer and (ConnectName='BOT1') and (pck[1]=#$a7) then
begin
partyLEADER:=pck[6]+pck[7]+pck[8]+pck[9];
end;
begin
if FromServer and (ConnectName='BOT1') and (pck[1]=#$29)
and (pck[2]+pck[3]+pck[4]+pck[5]=partyLEADER)
then
begin
MOBID:=pck[6]+pck[7]+pck[8]+pck[9];
buf:=#$0a+MOBID+#$00+#$00+#$00+#$00;
SendToServerEx('BOT1');
SendToServerEx('BOT2');
SendToServerEx('BOT3');
SendToServerEx('BOT4');
pck:=''; //kill9em poket
end;
end;
end.
__________________
Пишите в асю если чего. 446-693-955