» TeamX (Архив Форума)«


Форум TeamX » Тех. поддержка » Скрипты (Все вопросы по скриптингу - сюда)

Переход по темам
<< Пред. След. >>
Страницы этой темы [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 ] Все собщения

 
Oleg1969
Пользователь

Откуда: Саратов
Регистрация: Май 2006

Всего: 168 сообщений

Опять диалоговый режим...

Есть такой кусок...

procedure Node240
begin
 Reply(240);
 gsay_option(NAME,241,Remuv,-1);
 gsay_option(NAME,242,Node5271,-1);
 gsay_option(NAME,25,DialogEnd,-1);
end

procedure Remuv
begin
 variable  var0;
 var0:=create_object(PID_SUPER_STIMPAK,0,0);
 add_mult_objs_to_inven(dude_obj,var0,1);
 var0:=obj_carrying_pid_obj(dude_obj,PID_TOMORROW_MAP);
 add_mult_objs_to_inven(self_obj,var0,1);
 rm_obj_from_inven(dude_obj,var0);
 call Node250;
end

procedure Node250
begin
 Reply(250);
 gsay_option(NAME,251,Node260,-1);
 gsay_option(NAME,22,DialogEnd,-1);
end

Все отлично работает... НО! При любой попытке выхода из локации на мировую карту происходит вылет в систему...
Ремиш процедуру Remuv, и корректируешь переход на Node250 все работает.
В чем может быть глюк в процедуре Remuv?  Там же нет ничего сложного?...

-----
За сим прощаюсь, Олег.

Отправлено: 1:49 - 18 Сент., 2006
Wasteland Ghost
Маленькое Злое Привидение

Откуда: Россия, Самара
Регистрация: Дек. 2002

Всего: 2251 сообщение

Код:
procedure Remuv 
begin
variable  var0;
var0:=create_object(PID_SUPER_STIMPAK,0,0);
add_mult_objs_to_inven(dude_obj,var0,1);
var0:=obj_carrying_pid_obj(dude_obj,PID_TOMORROW_MAP);
add_mult_objs_to_inven(self_obj,var0,1);
rm_obj_from_inven(dude_obj,var0);
call Node250;
end


Ну, во-первых, объект сначала убирают из инвентаря, а затем помещают его в инвентарь другого объекта:
Код:
restock_obj := obj_carrying_pid_obj(source, the_pid); 
restock_trash := rm_mult_objs_from_inven(source, restock_obj, restock_amt);
add_mult_objs_to_inven(target, restock_obj, restock_amt);


Вообще, посмотри COMMAND.H, секцию "General commands restocking inventory". Потому что так просто удалять объект из инвентаря нельзя -- если он в руке или "одет", анимация сглючит. Не смертельно, но некрасиво.

ЗЫ Кстати, там кое-где в макросах ошибочки есть: вместо who_obj используется self_obj. Так что использовать их надо осторожно . И ошибки исправить .

Отправлено: 10:47 - 18 Сент., 2006
Oleg1969
Пользователь

Откуда: Саратов
Регистрация: Май 2006

Всего: 168 сообщений

Цитата:

Ну, во-первых, объект сначала убирают из инвентаря, а затем помещают его в инвентарь другого объекта:

Вообще, посмотри COMMAND.H, секцию "General commands restocking inventory". Потому что так просто удалять объект из инвентаря нельзя -- если он в руке или "одет", анимация сглючит. Не смертельно, но некрасиво.

ЗЫ Кстати, там кое-где в макросах ошибочки есть: вместо who_obj используется self_obj. Так что использовать их надо осторожно . И ошибки исправить .


Ну вообще-то делал как вы с пробками показывали... А за подсказку спасибо, бум посмотреть...
Кстати я выкрутился тем, что сначало удалял, а потом создавал снова... Несколько такой, заход не через то место...


-----
За сим прощаюсь, Олег.

Отправлено: 13:38 - 18 Сент., 2006
Wasteland Ghost
Маленькое Злое Привидение

Откуда: Россия, Самара
Регистрация: Дек. 2002

Всего: 2251 сообщение

С пробками? С крышками/бабками/тугриками? Так там можно, там логика другая.

Отправлено: 10:31 - 20 Сент., 2006
Oleg1969
Пользователь

Откуда: Саратов
Регистрация: Май 2006

Всего: 168 сообщений

ЭЭЭЭ Не уловил разници... Что пробки, что стимпаки сие есть инвентарь и лежит в мешке... В чем разность логики? Просветите пожалуста Уточняю, рассматривается мешок, а не руки и тело, там да другая логика, сначало лучче снять, а потом удалять...


-----
За сим прощаюсь, Олег.

Отправлено: 14:22 - 20 Сент., 2006
Wasteland Ghost
Маленькое Злое Привидение

Откуда: Россия, Самара
Регистрация: Дек. 2002

Всего: 2251 сообщение

Для работы с крышками есть функция item_caps_adjust. И тут уже не важно, дал ты сначала или отнял. Вообще движок деньги как-то отдельно обрабатывает. Как -- уже вопрос к двиглоковырятелям.

С объектами просто надо помнить логику.
Удаление:
1. Получил указатель.
2. Убрал из рук.
3. Убрал из инвентаря.
4. Удалил.
Перемещение:
1. Получил указатель.
2. Убрал из рук.
3. Убрал из инвентаря.
4. Положил в другой инвентарь.

Отправлено: 16:05 - 20 Сент., 2006
Oleg1969
Пользователь

Откуда: Саратов
Регистрация: Май 2006

Всего: 168 сообщений

А что есть за такая процедура combat_is_starting_p_proc и combat_is_over_p_proc?
combat_p_proc - выполняется во время боя, а эти когда и что делают?  В описаниях ничего не нашол про них... Просветите пожалуста, вдруг нужная штука...

ЗЫ: Судя по названиям они вызываются при начале и конце боя?

-----
За сим прощаюсь, Олег.

Отправлено: 0:22 - 22 Сент., 2006
Wasteland Ghost
Маленькое Злое Привидение

Откуда: Россия, Самара
Регистрация: Дек. 2002

Всего: 2251 сообщение

Угу. Проверяется просто: запихиваешь в эти процедуры display_msg("combat is starting") и display_msg("combat is over") соответственно. Ну и смотришь ;).

Отправлено: 8:48 - 22 Сент., 2006
Keha
Пользователь

Регистрация: Янв. 2006

Всего: 31 сообщение

Мне нужно в сюжете использование сотового телефона.
Вот кусок скрипта:
Код:
procedure use_p_proc begin 
  call talk_p_proc;
end

procedure talk_p_proc begin
    script_overrides;
    start_gdialog(5,dude_obj,-1,-1,-1);
    GSay_Start;
    call opt;
    GSay_End;
    End_Dialogue;
end

procedure opt begin
       gsay_reply(-1,"(ў®§®¦­лҐ ¤Ґ©бвўЁп)";

       gsay_option(-1, "Ћв«®¦Ёвм ®ЎЁ«Єг", enj, 0);
       giq_option(6, -1,"‡ў®­Ёвм ­  Їа®ЇгйҐ­л© §ў®­®Є", prop, 0);
       giq_option(6, -1, "Џ®§ў®­Ёвм ў Ё«ЁжЁо", enj, -1);    
       giq_option(5, -1, "‚л§ў вм бЄ®аго Ї®б®йм", enj, -1);
end


Если телефон использовать из руки при закрытом инвентаре то все хорошо.
Открывается окно диалога и все как надо.

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

Полазил по BIS_help в поисках чего-нибудь подходящего чтоб из скрипта перед вызовом диалога закрыть окно инвентаря, или как то иначе решить проблу не чего подходящего не нашел, возможно не по глазам.

Мож кто что подскажет?

Отправлено: 14:40 - 24 Сент., 2006 | ИСПРАВЛЕНО: Keha - 14:42 - 24 Сент., 2006
Oleg1969
Пользователь

Откуда: Саратов
Регистрация: Май 2006

Всего: 168 сообщений

Пока не знаю чем помочь, но такая-же проблема была в моде EPA со скриптом для буклета-путеводителя по ЕРА, вышло обновление, посмотри может там это уже решено?...

-----
За сим прощаюсь, Олег.

Отправлено: 21:04 - 24 Сент., 2006
 

Переход по темам
<< Пред. След. >>
Страницы этой темы [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 ] Все собщения


Powered by Ikonboard 2.1.9 RUS
Modified by RU.Board Team
© 2000 Ikonboard.com