Форум работает в тестовом режиме. Все данные были перенесены со старого сайта 2018 года. Некоторая информация может быть недоступна, например вложения или хайды. Просьба сообщать о данных случаях через функционал "Жалоба", прямо под постом, где отсуствуют данные из хайда или проблемы с вложением.
Могут быть проблемы в "выкидыванием" с форума (слетевшей авторизацией). Нужно собрать статистику таких случаев.
Есть Тема, куда можете сообщить о проблемах с сайтом либо просто передать привет.

Функция регруппа для трейнов.

Рег
16 Мар 2016
Сообщения
10
Реакции
0
const
Members:array[0..7]of string=(
'' ,
'' ,
'' ,
'' ,
'' ,
'' ,
'' ,
''
); //Ники пати мемберов
function AllHere():boolean;
var i:integer;
obj:TL2Live;
begin
for i:=0 to 7
do if charlist.byname(Members,obj)
and (obj.DistTo(User) < 100)
then Result:=True else
begin
Result:=false;
break;
end;
end;





Пример использования:
begin
if AllHere() then
begin
//Действия после регрупа
end;
end.

Тем кто водит трейны может пригодиться.
 
Твой код не будет правильно работать вообще-то.
Если 1ый мембер будет далеко, а 7ой близко, то функция вернет true.

Нужно так.
Вернет False если персонаж не в пати / кто-то из пати далеко

Код:
function AllHere: boolean;
var
  i: integer;
begin
  Result:= true;

  if (Party.Chars.count = 0) then
  begin
    Result:= false;
    exit;
  end;
  for i:= 0 to Party.Chars.count - 1 do
    if (not Party.Chars.items(i).valid) or (User.DistTo(Party.Chars.items(i)) > 100) then
    begin
      Result:= false;
      exit;
    end;
end;
 
Поправил в своем варианте, спасибо. Я пробиваю по никам т к, конь и барды находятся офпати.
 
@gglol, тогда так поприятнее будет:
Код:
const
  OffPartyList: array of string = [
  'Ник коня',
  'Ник СВСа'
  ];

function AllHere: boolean;
var
  i: integer;
  Ch: TL2Char;
begin
  Result:= true;

  if (Party.Chars.count = 0) then
  begin
    Result:= false;
    exit;
  end;
  for i:= 0 to Party.Chars.count - 1 do
    if (not Party.Chars.items(i).valid) or (User.DistTo(Party.Chars.items(i)) > 100) then
    begin
      Result:= false;
      exit;
    end;
  for i:= 0 to high(OffPartyList) do
    if (not CharList.ByName(OffPartyList[i], Ch)) or (not Ch.valid) or (User.DistTo(Ch) > 100) then
    begin
      Result:= false;
      exit;
    end;
end;
 
Назад
Сверху