Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Заметил.
Sirj
сообщение 21.3.2017, 16:34
Сообщение #1


*

Registred
Сообщений: 6
Регистрация: 20.3.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.394
Возраст: 24



Нужен опытный пользователь пилота. вот есть такой скрипт.
он с другой программы название ее l2 epic
// ------------- NPC helper functions -----------------

function IsAggrEnemy(Npc: TNpcClass): Boolean;
var
s: String;
begin
try
if Npc.Target = nil then
begin
Result:= False;
Exit;
end;

if Script.GetGuiCheck('cbAttackAggr') and (Npc.Target = SelfNpc) then
begin
Result:= True;
Exit;
end;

if Script.GetGuiCheck('cbAttackAggrParty') then
if PartyLst.GetById(Npc.Target.ObjectId) <> nil then
begin
Result:= True;
Exit;
end;

s:= #13#10 + Script.GetGuiText('edAutoPartyList') + #13#10;
Result:= Pos(#13#10 + LowerCase(Npc.Target.Name) + #13#10, s) > 0;
except
Result:= False;
end;
end;

function IsTargeted(Npc: TNpcClass): Boolean;
var
i: Integer;
fNpc: TNpcClass;
begin
try
if Npc.Target = SelfNpc then //если моб держит нас в таргете, идут все нафиг
begin
Result:= False;
Exit;
end;

for i:= 0 to NpcList.Count-1 do
try
fNpc:= NpcList.GetByInd(i);
if not fNpc.IsMob then
if not fNpc.IsDead then
if fNpc <> SelfNpc then
if not fNpc.IsMyParty then
if fNpc.Target = Npc then
if fNpc.DistanceTo(Npc.X, Npc.Y, Npc.Z) - 200 < SelfNpc.DistanceTo(Npc.X, Npc.Y, Npc.Z) then
begin
Result:= True;
Exit;
end;
except end;
except end;
Result:= False;
end;


procedure DoTarget(Npc: TNpcClass);
begin
try
if SelfNpc.Target = Npc then Exit; //уже у нас в таргете
Action(Npc.ObjectId, 0, 0, 0, 0); //1 - Shift, 0 - без
Sleep(150);
except end;
end;

procedure DoAttack(Npc: TNpcClass);
begin
try
if SelfNpc.Target <> Npc then DoTarget(Npc);
Action(Npc.ObjectId, 0, 0, 0, 0);
Sleep(50);
except end;
end;

var LastAngle: Double;
procedure DoWalkTo(Npc: TNpcClass);
var
zx,zy: Double;
Dist: Double;
begin
try
if SelfNpc.DistanceTo(Npc.X, Npc.Y, Npc.Z) > 10000 then Exit;

zx:= Npc.X;
zy:= Npc.Y;

//бежим зигзагом
if Script.GetGuiCheck('cbFarmWalkZZ') then
begin
Dist:= Npc.Distance * StrToIntDef(Script.GetGuiText('edFarmWalkZZ'), 50) / 100;
if Math.Random < 0.3 then LastAngle:= Math.Random*360;

zx:= Npc.X + Dist*Sin(LastAngle);
zy:= Npc.Y + Dist*Cos(LastAngle);
end;

MoveTo(zx, zy, Npc.Z);
except end;
end;

// --------------------------------------------------

// mobs targets
function MobsCountAround(Target: TNpcClass; Radius: Integer; AddAggred: Boolean): Integer;
var
i: Integer;
dist: Double;
npc: TNpcClass;
begin
Result:= 0;

for i:= 0 to NpcList.Count-1 do
try
npc:= NpcList.GetByInd(i);
if npc.IsMob then
if not npc.IsDead then
begin
dist:= npc.DistanceTo(Target.X, Target.Y, Target.Z);
if (dist <= Radius) or (AddAggred and IsAggrEnemY(npc)) then Inc(Result);
end;
except end;
end;







( хочу узнать. если ли возможность его переделать как то под сам пилот? и возможно-ли сделать что то подобное )
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 22.3.2017, 2:11
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26576
Пользователь №: 16.971
Возраст: 29



Переделать - нет, написать - да. Начать можно с этого: Введение_в_пилотный_скриптинг
Список_функций

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 29.3.2024, 14:39
Designed by Nickostyle