|
Pinkbyte
Пользователь Регистрация: Дек. 2004
Всего: 10 сообщений
|
[вырезано, сам понял, как это делать] Такой вопрос: Игрок говорит с неписем, диалог заканчивается, а когда он начинается - это абсолютно новый(с виду диалог), с другими вариантами ответа и т.д. Куда это прописывать - в MVAR или LVAR? (Отредактировал(а) Pinkbyte - 20:12 - 22 Дек., 2004)
----- Нейтральность - высшее достижение сознания!
|
Отправлено: 19:16 - 22 Дек., 2004
|
|
Alan Killenger
Пользователь
Откуда: Россия, Ижевск Регистрация: Июль 2004
Всего: 404 сообщения
|
Pinkbyte, а в чем, собственно, у вас проблема? В скриптах есть функция random, почитайте как строятся координаты в Фаллоуте и рандомите себе в удовольствие точки назначения. Есть события по таймеру - это чтобы криттер ждал. В critter_p_proc делаете регулярную проверку положения, если флажок срабатывает - возвращаете ваше чудо ходячее. P.S. Быть может вам начать постить в скрипты?
|
Отправлено: 20:11 - 22 Дек., 2004
|
|
Pinkbyte
Пользователь Регистрация: Дек. 2004
Всего: 10 сообщений
|
Спасибо, больше надо факи читать! Теперь еще вопрос - после разговора с типом я хочу чтоб менялось описание типа. То есть он был скажем "Гражданин города" а стал "Мэр города"? Какие переменные лучше всего юзать - MVAR или LVAR? Все хуже и хуже... Привожу пример скрипта procedure talk_p_proc begin start_gdialog(NAME,self_obj,4,-1,-1); gSay_Start; call Node_1; gSay_End; end_dialogue; end procedure node_1 begin caps:=obj_carrying_pid_obj(self_obj,PID_ROMAR_GUN); if (caps!=0) then begin add_mult_objs_to_inven(dude_obj,caps,1); rm_obj_from_inven(self_obj,caps); end Reply(102); giQ_Option(4,NAME,103,Node_2,NEUTRAL_REACTION); giQ_Option(-3,NAME,104,Node_2,NEUTRAL_REACTION); end ------- Все бы ничего, но после выполнения скрипта я нажимаю выйти из игры и игра вылетает - неприятная штука, хоть и не смертельная! Скрипт выполняется нормально. Для справки: Pid_ROMAR_GUN - личная пушка Ромара(новый предмет, добавленный Romarom) И еще - один мой знакомый(Romar) начал делать мод Город НЕЧТО ко второму Fallout(угадайте, кто вызвался ему помогать ))) ). Мод пока очень сырой. Скачать это можно здесь - http://www.pinkbyte.narod.ru/fallout/mod.rar Описание мода: http://www.pinkbyte.h12.ru/viewtopic.php?p=583#583 (Отредактировал(а) Pinkbyte - 21:51 - 22 Дек., 2004)
----- Нейтральность - высшее достижение сознания!
|
Отправлено: 20:16 - 22 Дек., 2004
|
|
|
Pinkbyte
Пользователь Регистрация: Дек. 2004
Всего: 10 сообщений
|
Народ - у меня кривые руки! В этом я убедился только что: procedure start begin if (local_var(LVAR_Home_Tile) == 0) then begin set_local_var(LVAR_Home_Tile,tile_num(self_obj)); end end procedure critter_p_proc begin if ((local_var(LVAR_Hostile) == 2) and (obj_can_see_obj(self_obj,dude_obj))) then begin set_local_var(LVAR_Hostile,1); attack(dude_obj); end // Рандомизация ходьбы //if ((random(0,100)==1) and (In_Timed_Event == 0)) then begin In_Timed_Event:=1; add_timer_event(self_obj,game_ticks(random(5,9)),1); //end end procedure timed_event_p_proc begin if (fixed_param == 1) then begin if (tile_distance(tile_num(self_obj),local_var(LVAR_Home_Tile)) < MAX_TRAVEL) then begin animate_move_to_tile(tile_num_in_direction(tile_num(self_obj),random(0,5),random(3,7))); end else begin animate_move_to_tile(tile_num_in_direction(local_var(LVAR_Home_Tile),random(0,5),random(3,7))); end In_Timed_Event:=0; end if (LVAR_Hostile==0) then float_msg(self_obj,101,-1); end По идее криттер должен ходить из точки в точку, пока дистанция от начальной точки не достигнет предела и криттер не вернется назад в родное место. А еще каждые 5-9 секунд криттер должен морозить фразу №100 из родного мсг файла. Так вот ни 1 ни 2 не выполняется! Скрипт копировал из ACVillagr.ssl Где ошибся - не знаю!
----- Нейтральность - высшее достижение сознания!
|
Отправлено: 22:43 - 22 Дек., 2004
|
|
Raven
Пользователь
Откуда: Владик Регистрация: Февр. 2004
Всего: 408 сообщений
|
Вообще, лучше сделать так: ------------------------------------------------------------ procedure map_enter_p_proc begin if (local_var(LVAR_Home_Tile) == 0) then set_local_var(LVAR_Home_Tile,tile_num(self_obj)); add_timer_event(self_obj,0,1); end procedure timed_event_p_proc begin if fixed_param==1 then begin animate_move_to_tile(tile_num(local_var(LVAR_Home_Tile),random(1,MAX_TRAVEL),random(0,5)); add_timer_event(self_obj,random(5,9),1); end if not local_var(LVAR_Hostile) then float_msg(self_obj,101,-1); end ------------------------------------------------------------ (Отредактировал(а) Raven - 14:52 - 23 Дек., 2004)
|
Отправлено: 7:50 - 23 Дек., 2004
|
|
Pinkbyte
Пользователь Регистрация: Дек. 2004
Всего: 10 сообщений
|
А в scripts.lst надо прописывать localvar, а то у меня там прописано localvar=0?
----- Нейтральность - высшее достижение сознания!
|
Отправлено: 13:06 - 23 Дек., 2004
|
|
Pavel
Модератор
Откуда: Одесса Украина Регистрация: Май 2004
Всего: 368 сообщений
|
Да, localvar необходимо поставить. А само число это равно количеству локальных переменных: localvar_1 localvar_2 localvar_3 всего з localvar, значит localvar=3
----- В жизни нельзя быть уверенным на 100%, ведь никогда не знаешь когда...
|
Отправлено: 13:25 - 23 Дек., 2004
|
|
Pinkbyte
Пользователь Регистрация: Дек. 2004
Всего: 10 сообщений
|
Все работает. Всем спасибо. Теперь такой вопрос(может он конечно уже поднимался, так что если что - меня не пинать): нафиг нужны AIPackets и как организовать обновление того, что есть в магазине криттера. То есть если купил патроны, они обновились, нет - фиг с два! ))) И последнее - в чем суть spartial-скриртов и для чего они к примеру используются(кроме как для привязки машины). Заодно, как называется тот самый скрипт привязывающий машину к конкретному месту? Кстати, несколько постов назад я писал, про то что игра при переносе нового предмета в инвентарь игрока вылетает - в чем проблема? (Отредактировал(а) Pinkbyte - 12:50 - 25 Дек., 2004)
----- Нейтральность - высшее достижение сознания!
|
Отправлено: 12:47 - 25 Дек., 2004
|
|
Pavel
Модератор
Откуда: Одесса Украина Регистрация: Май 2004
Всего: 368 сообщений
|
1) AIPackets - это интеллект криттера. Этим все сказано? 2) Как организовать обновление того, что есть в магазине криттера - это смотря какой криттер, но в принцие основная масса торговцев имеет инвентарь в своем скрипте. И для добавления содержимого необходимо изменить скрипт криттера. 3) В чем суть spartial-скриртов и для чего они к примеру используются - любое действие на карте без предмета: например радиация в 1-м фале, проход в Наварро во втором, могу еще примеры привести, но думаю нет надобности. 4) Как называется тот самый скрипт привязывающий машину к конкретному месту - к какому месту: к локации или расположении в локации? 5) Несколько постов назад я писал - надо смотреть. На вскидку не скажу.
----- В жизни нельзя быть уверенным на 100%, ведь никогда не знаешь когда...
|
Отправлено: 13:09 - 25 Дек., 2004
|
|
|
|