Перейти к содержимому


Фотография

Атака из диалога


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 11

#1 Kirsan

Kirsan

    Новичок

  • Пользователи
  • Pip
  • 7 сообщений

Отправлено 20 Февраль 2018 - 15:39

Здравствуйте. Меня одолел вопрос: как сделать, чтобы криттер атаковал из диалога. Изучив скрипты фаллаута, я сделал это:

CODE

procedure talk_p_proc begin

  start_dialogue(self_obj, neutral_fidget);
  gSay_Start;
      call Node000;
  gSay_End;
  end_dialogue;

end

procedure Node000 begin
gsay_reply(2, 1);
gsay_option(2, 2, Node999,50);
gsay_option(2, 3, Node998, 51);
end


procedure Node998 begin

  set_local_var(LVAR_Hostile, 2);
   
end


procedure critter_p_proc begin

  if (obj_can_see_obj(self_obj,dude_obj)) then begin
     if (local_var(LVAR_Hostile) == 2) then begin
     attack(dude_obj);
    set_local_var(LVAR_Hostile,1);
     end
     end
end



В итоге не сработало. Все нужные headers включены в скрипт, так что проблема не в макроссах (+ я пробовал использовать и обычные команды).

Так что, причина мне не ясна, т.к. я сделал, вроде, так же, как и в скриптах самого фаллаута. Надеюсь мне помогут, заранее спасибо.


#2 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 20 Февраль 2018 - 20:10

с точки зрения скрипта сделано все верно.
но нужно больше информации
какой номер определен у LVAR_Hostile, стандартно 5?
зарезервировано ли для скрипта в scripts.lst место под эту переменную?

Это сообщение отредактировано Fakeman - 20 февраля 2018 | 20:24


#3 Kirsan

Kirsan

    Новичок

  • Пользователи
  • Pip
  • 7 сообщений

Отправлено 20 Февраль 2018 - 20:55

Спасибо за ответ.

QUOTE

с точки зрения скрипта сделано все верно.


Ну, скрипт хотя бы правильно написал, хоть и нерабочий.

QUOTE

какой номер определен у LVAR_Hostile, стандартно 5?
зарезервировано ли для скрипта в scripts.lst место под эту переменную?


Определен стандартный пятый номер. Я использовал скрипт Test0, а там прописано место для восьми LVAR'ов.

Вообще, мне кажется, что какие-то проблемы с командой attack(dude_obj), т.к. если ввести её,
например, в map_enter, то ничего не произойдёт (хотя я не уверен, что одной этой команды достаточно). Может быть такое, что сам Маппер попросту не реагирует на эту команду?


#4 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 21 Февраль 2018 - 00:34

QUOTE
Вообще, мне кажется, что какие-то проблемы с командой attack(dude_obj), т.к. если ввести её,

Никаких проблем с attack никогда не было.
кидани скрипт полностью.
А может что-то с критером типа его AI установки не хотят атаковать?

Проверь так атакует?
CODE
procedure critter_p_proc begin
 if (obj_can_see_obj(self_obj,dude_obj)) then
    attack(dude_obj);
end

макрос у тебя там не поломан, так же определен?
#define attack(WHO) attack_complex(WHO,1,1,0,0,30000,0,0)

Это сообщение отредактировано Fakeman - 21 февраля 2018 | 00:38


#5 Kirsan

Kirsan

    Новичок

  • Пользователи
  • Pip
  • 7 сообщений

Отправлено 21 Февраль 2018 - 14:48

Вот весь скрипт:
QUOTE
#include "..\headers\define.h"


#define NAME                    SCRIPT_TEST0
#define TOWN_REP_VAR            (GVAR_TOWN_REP_)

#include "..\headers\command.h"
#include "..\headers\ModReact.h"

procedure start;
procedure critter_p_proc;
procedure pickup_p_proc;
procedure talk_p_proc;
procedure destroy_p_proc;
procedure look_at_p_proc;
procedure description_p_proc;
procedure use_skill_on_p_proc;
procedure damage_p_proc;
procedure map_enter_p_proc;


procedure Node998;                                   
procedure Node999;                                   
procedure Node000;
procedure Node001;

#define LVAR_Herebefore                (4)
#define LVAR_Hostile                    (5)
#define LVAR_Personal_Enemy            (6)
#define LVAR_Caught_Thief              (7)




procedure start begin

end

procedure map_enter_p_proc begin
end

procedure critter_p_proc begin
  if (obj_can_see_obj(self_obj,dude_obj)) then begin
      if (local_var(LVAR_Hostile) == 2) then begin
      Call Node001;
      attack(dude_obj);
    set_local_var(LVAR_Hostile,1);
      end
      end
end

procedure damage_p_proc begin

  if (obj_in_party(source_obj)) then begin
      set_local_var(LVAR_Personal_Enemy, 1);
  end

end

procedure pickup_p_proc begin

  if (source_obj == dude_obj) then begin
      set_local_var(LVAR_Hostile, 2);
  end
 
end


procedure talk_p_proc begin

  start_dialogue(self_obj, neutral_fidget);
  gSay_Start;
      call Node000;
  gSay_End;
  end_dialogue;

end


procedure destroy_p_proc begin

end

procedure look_at_p_proc begin


end


procedure description_p_proc begin



end


procedure use_skill_on_p_proc begin
     
end

procedure Node998 begin

  set_local_var(LVAR_Hostile, 2);
   
end

procedure Node999 begin

end

procedure Node000 begin
gsay_reply(2, 1);
gsay_option(2, 2, Node999,50);
gsay_option(2, 3, Node998, 51);
end

procedure Node001 begin
floater(random(4,6));
end


QUOTE

Проверь так атакует?
CODE
procedure critter_p_proc begin
if (obj_can_see_obj(self_obj,dude_obj)) then
    attack(dude_obj);
end


Так тоже не работает.

QUOTE

А может что-то с критером типа его AI установки не хотят атаковать?


Та вроде как нет. Подставлял скрипт Крису, который в Наварро не пускает. У него есть такая функция, что должен атаковать при одной из опций в диалоге, так что с АИ это, вроде, не связанно.

QUOTE
макрос у тебя там не поломан, так же определен?
#define attack(WHO) attack_complex(WHO,1,1,0,0,30000,0,0)


Он же уже должен быть в define.h + attack_complex я тоже пробовал.


#6 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 21 Февраль 2018 - 15:32

Если утебя и просто не атакует то что ты хочешь от диалога, для начало разберись почему криттер не атакует из kриттер_р_proc
Вот тестовый код
CODE
procedure critter_p_proc begin
Display_msg("criiter_p");
if (obj_can_see_obj(self_obj,dude_obj)) then begin
   Display_msg("see attack”);
   attack(dude_obj);
   End
end

Должно спамить двумя строками значит скрипт работает, если нет спама ищи проблему в другом :-)
В игре протестируй может у тебя проблема с маппером.

Это сообщение отредактировано Fakeman - 21 февраля 2018 | 15:40


#7 Kirsan

Kirsan

    Новичок

  • Пользователи
  • Pip
  • 7 сообщений

Отправлено 21 Февраль 2018 - 16:05

Спасибо, проблема реально была в маппере. Там не только мой скрипт не работал, но и все остальные скрипты с опцией атаки через диалог. В игре всё работает.

Но появляется новый вопрос. Есть ли вариант исправить это дело? Может другой маппер где-то взять? (сам скачивал маппер с teamx.ru)

Это сообщение отредактировано Kirsan - 21 февраля 2018 | 16:05


#8 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 21 Февраль 2018 - 21:16

QUOTE
Там не только мой скрипт не работал, но и все остальные скрипты с опцией атаки через диалог.

Скорее всего не установлена опция run_mapper_as_game
от сюда скачать настроенный https://disk.yandex....k/Fallout/Tools


#9 jordan

jordan

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 142 сообщений

Отправлено 13 Апрель 2018 - 23:15

QUOTE
Скорее всего не установлена опция run_mapper_as_game


Спасибо за инфу. С этой опцией можно в мапере при нажатии вроде f6, не просто бегать по локации, а играть? Насколько помню, ограниченный режим, скрипты не работают и т.д


#10 Foxx

Foxx

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 120 сообщений

Отправлено 14 Апрель 2018 - 00:24

jordan
F8


#11 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 14 Апрель 2018 - 01:59

QUOTE
Насколько помню, ограниченный режим, скрипты не работают и т.д

Все работает.
Сохраняет может и в ограниченном режиме что-то. я это не проверял — оно и не надо.

Это сообщение отредактировано Fakeman - 14 апреля 2018 | 02:00


#12 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 06 Май 2018 - 05:48

Какая-то проблема с атакой имеется в attack_complex(WHO,1,1,0,0,30000,0,0)
Если задавать другие параметры для настройки атаки криттеры не атакуют(




Похожие темы Свернуть

  Название темы Форум Автор Статистика Последнее сообщение


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Рейтинг@Mail.ru