Просмотр полной версии : скрипт "бег за лидером"
Breadfan
24.07.2010, 20:27
У кого-нибуть есть скрипт\процедура готовая бега за лидером, использующая координаты приходящие от сервера\или идущие от клиента, а не как где-то описан вариант был - тыканье по персонажу...вобщем нужен бег без смены таргета
Свое написал, но чето он у меня периодически координаты прекращает верно обрабатывать, и голова не работает уже :(
if FromServer and pck[1]=#$2F{MoveToLocation} and CharID=ReadD(2); then
begin
x:=ReadD(6);
y:=ReadD(10);
z:=ReadD(14);
buf:=#$0F; //MoveBackwardToLocation
WriteD(x+rand(-100,100));
WriteD(y+rand(-100,100));
WriteD(z);
WriteD(OriginX);
WriteD(OriginY);
WriteD(OriginZ);
WriteD(1);
SendToServerEx(name);
end;
Процедура rand генерирует рандомное число от -100 до 100, ее отдельно надо писать(если надо могу выложить ее, но я думаю вы с ней знакомы :) ). CharID - id чара за которым будем бежать, можно задать жестко в скрипте (этот ид не меняется даже после рестарта сервера), а можно и вытащить из некоторых пакетов.
Когда от сервера приходит информация о передвижении кого-то мы проверяем не наш ли это чар и если он оказывается нашим отсылаем пакет движения предварительно определив куда именно наш чар пошел. И встаем возле него в рандомной точке.
Не гарантирую работоспособности, это просто идея :)
Breadfan
24.07.2010, 22:51
Идеи мне вполне хватит :) Спасибо. Главное ночью особо не писать, иначе утром разгребать кучу бреда периодически приходится)
Function Rand(LowBorder, UpBorder: Integer): Integer;
Begin
Rand := LowBorder + Random(UpBorder - LowBorder + 1);
End;
Var
X: Integer;
begin
Randomize;
X := Rand(-100, 100);
end.
Вроде так можно делать :)
зы: а вообще надо у алекстим уточнить, я не помню как в фастскрипт рандомные числа генерируется по правильному.
Breadfan
24.07.2010, 23:36
Not enough actual parameters :D видать на коленке писал)) а у меня отношения с функциями - както не сложились...)
Да то сам уже посмотрю)
У нас в стране на коленке атомную бомбу собрать можно :prankster2:
В делфи эта функция работает, а пх под рукой нету сейчас, так лениво смотреть смотреть документацию к фастскрипту :)
Breadfan
25.07.2010, 02:11
Обалдеть - оно работает! :D
var
x,y,z:integer;
function Rnd(min,max:integer): integer;
var
i: extended;
begin
i:=Random;
result:=min+int((max-min)*i);
end;
procedure Init;
begin
end;
procedure Free;
begin
end;
begin
Randomize;
x:=Rnd(-100,100);
y:=Rnd(50,500);
z:=Rnd(-1500,-1000);
sendmsg ('Число x: '+Inttostr(x));
sendmsg ('Число y: '+Inttostr(y));
sendmsg ('Число z: '+Inttostr(z));
end.
Добавлено через 38 минут
Вылилось в такое (скрипт сырой, в частности нет блока считывающего Origin-координаты):
const
Name='Begun';
var
multt,multh,multl:string;
CharID,x,y,z,mult:integer;
OriginX,OriginY,OriginZ:integer;
function Rand(min,max:integer): integer;
var
i: extended;
begin
i:=Random;
result:=min+int((max-min)*i);
end;
procedure Init; //Вызывается при включении скрипта
begin
mult:=99; //стартовое значение разброса
CharID:=268535632; //OID ведущего - может выясняться в процессе работы
end;
procedure Free; //Вызывается при выключении скрипта
begin
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if FromServer and (connectname=name) and (pck[1]=#$2F) and (CharID=ReadD(2)) then begin
x:=ReadD(6);
y:=ReadD(10);
z:=ReadD(14);
buf:=#$0F;
WriteMask('ddddddd',[(x+rand(-mult,mult)),(y+rand(-mult,mult)),z,OriginX,OriginY,OriginZ,1]);
SendToServerEx(name);
end;
if Fromserver and (connectname=name) and (pck[1]=#$4a) and (ReadD(2)=CharID) and (Copy(ReadS(24),1,5)='mult ') then begin
multh:=Copy(ReadS(24),6,1);
multl:=Copy(ReadS(24),7,1);
if (multh<'0') or (multh>'9') then multh:=''; //проверки на опечатку в чате
if (multl<'0') or (multl>'9') then multl:=''; // если введено не число - то сброс в 99
multt:=multh+multl;
if (multt='') then multt:='99';
mult:=Strtoint(multt);
end;
end.
При команде в чат от главного "mult XX" - меняет значение min\max (-+mult) на введенное (число от 0 до 99 - в скрипте так же есть проверка на верность введенного), для случаев бега по мостикам всяким.
PS: оптимизация - приветствуется :D
vBulletin® v3.6.11, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot