|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
Нет. Отловить воровство можно только в скрипте кролика и только при неудаче через pickup_p_proc.
|
Отправлено: 8:09 - 24 Мая, 2005
|
|
Dar
Пользователь
Откуда: Воронеж Регистрация: Дек. 2004
Всего: 289 сообщений
|
Эх, жаль.
|
Отправлено: 0:12 - 25 Мая, 2005
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
Вообще, вопросами воровства занимался Рейвен. Посмотри в этой теме.
|
Отправлено: 8:15 - 25 Мая, 2005
|
|
Dar
Пользователь
Откуда: Воронеж Регистрация: Дек. 2004
Всего: 289 сообщений
|
Не - там все помимо чека вне кролика.
|
Отправлено: 23:51 - 26 Мая, 2005
|
|
binyan
Пользователь
Откуда: Israel Регистрация: Март 2005
Всего: 292 сообщения
|
Написал я скрипт.Пробовал скомпилировать,компилятор выдавал ошибки. Отловил ошибки.Всё скомпилировалось. Добавил скрипт в игру,добавил мсг в игру. Через маппер привязал скрипт к криттеру. Отлично!!Захожу в игру... Подхожу к криттеру(к которому скрипт прикреплён),завязываю с ним диалог.И что вы думаете?Выдаёт мне ПУСТОЕ диалоговое окно.То есть диалог-то начался,а вот реплик и опций тю-тю. Вот мне и интерестно,что у меня за ошибка в скрипте? Может кто нибудь знает? Вот скрипт : #include "..\headers\command.h" #include "..\headers\define.h" #include "..\headers\myhead.h" #define LVAR_PARTY_MAN (0) #define LVAR_talk_pistol (1) #define LVAR_have_pistol (2) #define NAME 1461 #define Have_pistol ((obj_carrying_pid_obj(dude_obj,PID_10MM_PISTOL))BWOR(obj_carrying_pid_obj(dude_obj,PID_LASER_PISTOL))BWOR(obj_carrying_pid_obj(dude_obj,PID_14MM_PISTOL))BWOR(obj_carrying_pid_obj(dude_obj,PID_PLASMA_PISTOL))BWOR(obj_carrying_pid_obj(dude_obj,PID_ALIEN_LASER_PISTOL))BWOR(obj_carrying_pid_obj(dude_obj,PID_223_PISTOL))BWOR(obj_carrying_pid_obj(dude_obj,PID_NEEDLER_PISTOL))BWOR(obj_carrying_pid_obj(dude_obj,PID_PK12_GAUSS_PISTOL))BWOR(obj_carrying_pid_obj(dude_obj,PID_YK32_PULSE_PISTOL))BWOR(obj_carrying_pid_obj(dude_obj,PID_MAGNETO_LASER_PISTOL))) (Это всё в одной строчке.Просто на форуме не вмещается) 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 use_obj_on_p_proc; procedure damage_p_proc; procedure map_enter_p_proc; procedure push_p_proc; procedure Node001; procedure Node002; procedure Node003; procedure Node004; procedure Node005; procedure Node006; procedure Node007; procedure start begin end procedure talk_p_proc begin dialogue(self_obj,Node001); end procedure Node001 begin if (LVAR_talk_pistol==2) then begin rep(4); if (LVAR_have_pistol==2) then begin opt(40,Node005); opt(41,Node006); end else opt(42,Node006); end else if(LVAR_talk_pistol==3)then begin rep(6); opt(60,end_dialogue); end else begin rep(1); opt(10,Node002); opt(11,end_dialogue) ; end end procedure Node002 begin rep(2); opt(20,Node003); opt(21,end_dialogue); end procedure Node003 begin rep(3); opt(30,Node004); opt(31,end_dialogue); end procedure Node004 begin set_local_var(LVAR_talk_pistol,2); end procedure Node005 begin rep(50); opt(5,Node007); end procedure Node006 begin rep(411); opt(412,end_dialogue); end procedure Node007 begin critter_add_trait (self_obj, 1, 6, 0); critter_add_trait (self_obj, 1, 5, 194); party_add(self_obj); set_local_var(LVAR_talk_pistol,3); set_local_var(LVAR_PARTY_MAN,3); end procedure critter_p_proc begin if Have_pistol then set_local_var(LVAR_have_pistol,2); end procedure pickup_p_proc begin 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 use_obj_on_p_proc begin end procedure damage_p_proc begin end procedure map_enter_p_proc begin end procedure push_p_proc begin end Вот myhead.h : #define rep(x) gsay_reply(NAME,mstr(x)) #define opt(x,y) gsay_option(NAME,x,y,-1) #define dialogue(x,y) start_gdialog(NAME, x, 4, -1, -1);\ gsay_start;\ call y;\ gsay_end;\ end_dialogue Вот мсг: 1. Привет,что тебе надо? 10.Пойдём со мной 11.Ничего 2.Сначала мне нужно оружие 20.Я принесу тебе оружие 21.У меня нет оружия,прощай. 3.Мне нужен пистолет 30.Хорошо,я принесу тебе пистолет 31.Забудь.Я передумал.Я не пойду за оружием.Прощай. 4.Ты уже нашёл пистолет для меня? 40.Да,вот он [Показываете пистолет] 41.[Врёте] нет,пока не нашёл 42.Нет,пока не нашёл 411.Тогда желаю удачи в поисках 412.Спасибо [уходите] 5.Хорошо.Я рад к тебе присоединиться 50.Отлично,пойдём 6.Ну вот я и в команде 60.Да.Класс (Отредактировал(а) binyan - 14:08 - 3 Июня, 2005)
----- ...выражая озадаченность, граничащую с озабоченностью..
|
Отправлено: 13:24 - 3 Июня, 2005
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
Цитата: opt(60,end_dialogue);
Что это? Так нельзя. Если ты хочешь завершить диалог, то сделай пустую ноду и ссылайся на неё, например,так:
Код:
procedure Node999 begin end procedure NodeXXX begin opt(60,Node999); end
Ещё настораживает макрос #define opt(x,y) gsay_option(NAME,x,y,-1) Реакция -1 равна не бывает. Или 49, или 50, или 51.
|
Отправлено: 17:51 - 3 Июня, 2005
|
|
binyan
Пользователь
Откуда: Israel Регистрация: Март 2005
Всего: 292 сообщения
|
Сначала я и делал пустую ноду,но мне компилятор выдавал,что нода не заполнена,или что то в этом роде. А насчёт gsay_option...Это мне Павел myhead делал.Не знаю...Но думаю,что если бы реакции такой не было,то скрипт попросту не скомпилировался бы. (Добавление от 21:02 - 3 Июня, 2005.) А!!!Вспомнил.По моему -1 это никакой реакции.Нет?
----- ...выражая озадаченность, граничащую с озабоченностью..
|
Отправлено: 20:56 - 3 Июня, 2005
|
|
binyan
Пользователь
Откуда: Israel Регистрация: Март 2005
Всего: 292 сообщения
|
Ок..Чуть чуть разобрался.Заменил end_dialogue на Node999.Не компилировалось у меня ,потому что я(тупая мая башка) забывал объявить Node999,поэтому мне выдавалось сообщение о том,что Нода не объявлена. Ну ладно.Заменил я,обьявил,всё скомпильнулось,я добавил скрипт в игру. Захожу,начинаю новую игру,подхожу к криттеру,делаю попытку заговорить. На диалоговом экране мне с жутким лязгом вылезает сообщение о том,что я полный дурак,и не дружу с английским языком. А сообщение такого типа : GDialog::Error Grabbing text mesagge Ну что граждане,какие будут мысли по этому поводу? (Отредактировал(а) binyan - 0:19 - 4 Июня, 2005)
----- ...выражая озадаченность, граничащую с озабоченностью..
|
Отправлено: 0:16 - 4 Июня, 2005
|
|
Dar
Пользователь
Откуда: Воронеж Регистрация: Дек. 2004
Всего: 289 сообщений
|
>>GDialog::Error Grabbing text mesagge Ошибки в мсг или он не там, где должен быть или не прописан или в нем левые символы, например # - одна штука. Гм, у тебя случаем в мсг буквально не написано >> 1. Привет,что тебе надо? надо {1}{}{Привет,что тебе надо?} и т.д.
|
Отправлено: 0:46 - 4 Июня, 2005
|
|
Pavel
Модератор
Откуда: Одесса Украина Регистрация: Май 2004
Всего: 368 сообщений
|
Может ошибка тут: #define NAME 1461 //тут необходимо поставить правильный номер по списку, и все заработает. Список это и есть номер по списку в script.lst. А то уж как то одинаковый с моим номером, а у меня там скиптов немножко добавлено...
----- В жизни нельзя быть уверенным на 100%, ведь никогда не знаешь когда...
|
Отправлено: 1:18 - 4 Июня, 2005
|
|
|
|