Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Поиск в массиве по исключению

-

Общение разработчиков

- Программирование для Perfect World, общение и обсуждене разработок

Ответ
 
Опции темы
Старый 02.10.2015, 17:46   #1
 Пехотинец
Аватар для diagnost
 
diagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражания
Регистрация: 03.01.2010
Сообщений: 95
Популярность: 1542
Сказал(а) спасибо: 110
Поблагодарили 460 раз(а) в 288 сообщениях
 
По умолчанию Поиск в массиве по исключению

Всем привет! Нужна помощь, совсем голову сломал уже, код:
Код:
function TfrmMain.PartyBaffsPresent(BaffsID: DWORD): boolean; // ID бафа, прогоняем через массив
var
  i, x: Integer;
begin
  Result := False;
  if PersInParty <> 0 then  // количество челов в пати
    for x := 0 to PersInParty - 1 do
       if  (Party[x].BaffsCount <> 0) and (Party[x].WID <> GamerInfo.WID) then //проверка есть бафы или нет, а также проверка на свой WID(в пати свои бафы не отображаются)
       begin
           for i := 0 to Party[x].BaffsCount - 1 do
               if (Party[x].Baffs[i] = BaffsID)  then // прогоняем через массив ищем совпадение
                  begin
                     Result := True;
                     iBF := x;
                     Break;// если совпало останавливаем цикл(не бафаем)
                  end;
//   Вот здесь загвоздка, Все хорошо если совпало, а если этого бафа нет, нужно его бафнуть.
//  Поучается прогнать по массиву число и если нет совпадений, его добавить(у нас бафнуть)
//  Ну ни как не получается, мозги кипят уже.
//


       end
       else
      if (Party[x].WID <> GamerInfo.WID) then // если количество бафо равно 0
       begin
         Result := False;
         iBF := x;
         Break;// бафаем
       end;
end;
Все хорошо работает, когда бафов вообще нет. Когда есть хотя бы 1 баф, и нет нужного бафа, не бафает. Дописывал недостающие строчки, бафает или только ПЛ или последнего в группе.

Опять куча вопросов, почему не могу прочитать имя через пати? Почему не могу прочитать свои бафы через пати?

Последний раз редактировалось diagnost; 02.10.2015 в 23:08.
  Ответить с цитированием
Старый 02.10.2015, 23:14   #2
 Разведчик
Аватар для fds255
 
fds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известен
Регистрация: 23.06.2012
Сообщений: 43
Популярность: 427
Сказал(а) спасибо: 18
Поблагодарили 59 раз(а) в 35 сообщениях
 
По умолчанию Re: Поиск в массиве по исключению

попробуй переписать кусок:

Код:
               for i := 0 to Party[x].BaffsCount - 1 do
               if (Party[x].Baffs[i] = BaffsID)  then // прогоняем через массив ищем совпадение
                  begin
                     Result := True;
                     iBF := x;
                     Break;// если совпало останавливаем цикл(не бафаем)
                  end;
следующим образом:

Код:
             Result := False;
               for i := 0 to Party[x].BaffsCount - 1 do
                  begin
                    if (Party[x].Baffs[i] = BaffsID)  then 
                       begin
                       Result := True;
                       Break;
                       end;
                  end;
              if Result = False then
                 begin
                    iBF := x;
                    Exit;// бафаем
                 end;
________________

Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).


Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
  Ответить с цитированием
Пользователь сказал cпасибо:
diagnost (03.10.2015)
Старый 03.10.2015, 00:00   #3
 Пехотинец
Аватар для diagnost
 
diagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражания
Регистрация: 03.01.2010
Сообщений: 95
Популярность: 1542
Сказал(а) спасибо: 110
Поблагодарили 460 раз(а) в 288 сообщениях
 
По умолчанию Re: Поиск в массиве по исключению

ОООгроооомное спасибо заработало вот так! Неделю мучился, час еще раз все перепроверю:
Код:
function TfrmMain.PartyBaffsPresent(BaffsID: DWORD): boolean;
var
  i, x: Integer;
begin
  Result := False;
  if PersInParty <> 0 then
    for x := 0 to PersInParty - 1 do
    begin
       Randomize;
       // Random(x);
       if (Party[x].WID <> GamerInfo.WID) then
        iBF:=x;
       //iBF := Random(x);
       if  (Party[iBF].BaffsCount <> 0) and (Party[iBF].WID <> GamerInfo.WID) then
       begin
           Result := False;
           for i := 0 to Party[iBF].BaffsCount - 1 do
           begin
               if (Party[iBF].Baffs[i] = BaffsID)  then
                  begin
                     Result := True;
                    // iBF := x;
                     Break;
                  end;
           end;
           if Result = False then
                 begin
                    iBF := x;
                    Exit;// бафаем
                 end;
       end
       else
       if (Party[iBF].WID <> GamerInfo.WID) then
       begin
         Result := False;
        // iBF := x;
        // Break;
       end;
    end;
end;
Вот для чего требовалось [Ссылки могут видеть только зарегистрированные пользователи. ]
Вот видео, как [Ссылки могут видеть только зарегистрированные пользователи. ] Еще раз спасибо за помощь.

Последний раз редактировалось diagnost; 03.10.2015 в 01:19.
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Услуги] Услуга по Обучению брута ProblemByBrut Товары/услуги в Сети 0 16.08.2013 15:03
Поиск данных в массиве.... крайслер Вопросы и ответы, обсуждения 4 20.01.2013 18:17
Поиск наименьшего и наибольшего значения в массиве rak511 С/С++ 1 06.02.2011 20:09

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 06:44.

Пишите нам: forum@zhyk.ru
Copyright © 2025 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net