|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
Ну и выкинь нойдовский компилер нафиг :). Гм... Ну давай сюда свои скрипты. И рассказывай, что конкретно делал.
|
Отправлено: 10:21 - 22 Фев., 2005
|
|
YikxX
Пользователь
Откуда: NCR :) Регистрация: Февр. 2004
Всего: 304 сообщения
|
Скрипт ящика: ... procedure start; procedure map_enter_p_proc; procedure map_update_p_proc; import variable sf_tanker_bar_box; ... procedure start begin sf_tanker_bar_box := op_self_obj(); end procedure map_enter_p_proc begin sf_tanker_bar_box := op_self_obj(); if (op_metarule(22, 0) == 0) then begin if (op_local_var(0) < op_game_time()) then begin restock_amt := op_random(1, 2); if (op_obj_is_carrying_obj(op_self_obj(), 71) < restock_amt) then begin ... (в общем, тут как я понимаю, идет процесс заполнения ящика конкретными вещами - взято из скрипта ящика для бармена в казино Бишопа) procedure map_update_p_proc begin sf_tanker_bar_box := op_self_obj(); end Скрипт карты: ... export variable i_suze_obj := 0; export variable i_tgun_table_swap := 0; export variable i_tgun_merchant := 0; export variable i_tmer_table_swap := 0; export variable i_tmer_merchant := 0; export variable sf_tanker_bar_box := 0; ... procedure start begin if (inited == 0) then begin inited := 1; i_suze_obj := -1; i_tgun_merchant := -1; i_tmer_merchant := -1; end end ... (если добавить сюда sf_tanker_bar_box := -1; то игра вылетает, когда по скрипту бармена ему должны вещи добавляться :( ) Скрипт самого бармена: ... import variable sf_tanker_bar_box; ... procedure talk_p_proc begin Evil_Critter := 0; Slavery_Tolerant := 2; Karma_Perception := 10; op_set_global_var(37, 0); op_set_global_var(38, 0); op_set_global_var(39, 0); op_set_global_var(40, 0); ... else if (op_local_var(4) == 0) then begin op_start_gdialog(1103, op_self_obj(), 4, -1, -1); maybe_start_dialog(); call Node001(); maybe_close_dialog(); maybe_op_end_gdialog(); end else begin op_start_gdialog(1103, op_self_obj(), 4, -1, -1); maybe_start_dialog(); call Node006(); maybe_close_dialog(); maybe_op_end_gdialog(); end op_move_obj_inven_to_obj(op_self_obj(), sf_tanker_bar_box); op_set_local_var(4, 1); end ... procedure Node003 begin op_move_obj_inven_to_obj(sf_tanker_bar_box, op_self_obj()); op_gsay_reply(1103, 113); op_giq_option(1, 1103, 115, @NodeBarter, 50); end ... В итоге нефига не работает. Ящичек в маппере рисую и скрипт ему вешаю, в scripts.lst скрипт ящика прописываю (# local_vars = 0 ставлю для него).
----- Обломись! Я подложил туда носок...
|
Отправлено: 11:51 - 22 Фев., 2005
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
А зачем ты в скрипте карты что-то инициализируешь? Только ящик должен в ту вару писать "себя".
|
Отправлено: 14:22 - 22 Фев., 2005
|
|
YikxX
Пользователь
Откуда: NCR :) Регистрация: Февр. 2004
Всего: 304 сообщения
|
В смысле? Про это чтоли? export variable sf_tanker_bar_box := 0; Я вроде ничего не инициализирую в скрипте карты.
----- Обломись! Я подложил туда носок...
|
Отправлено: 14:31 - 22 Фев., 2005
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
А это что? procedure start begin if (inited == 0) then begin inited := 1; i_suze_obj := -1; i_tgun_merchant := -1; i_tmer_merchant := -1; end end (Добавление от 15:01 - 22 Фев., 2005.) Да... SVARы-то у тебя используются в скрипте ящичка, так что не ноль их, а как минимум одна...
|
Отправлено: 15:00 - 22 Фев., 2005
|
|
YikxX
Пользователь
Откуда: NCR :) Регистрация: Февр. 2004
Всего: 304 сообщения
|
Про свары ясно. А в скрипте карты это переменные торговцев на танкере (оружейника и другой тетки )
----- Обломись! Я подложил туда носок...
|
Отправлено: 18:46 - 22 Фев., 2005
|
|
YikxX
Пользователь
Откуда: NCR :) Регистрация: Февр. 2004
Всего: 304 сообщения
|
Новый вопрос. Почему не работаеа такая конструкция (LVar1 не увеличивается на единицу и т.д.)? if (op_party_member_obj(16777558) != 0) then begin if (op_tile_in_tile_rect(16324, 16312, 17924, 17912, op_tile_num(op_party_member_obj(16777558)))) then begin LVar1 := LVar1 + 1; op_critter_damage(op_party_member_obj(16777558), 1000, 0); end end Потому, что я оставляю НПС подождать или углы прямоугольника не в той последовательности заданы или еще почему?
----- Обломись! Я подложил туда носок...
|
Отправлено: 13:43 - 2 Марта, 2005
|
|
Raven
Пользователь
Откуда: Владик Регистрация: Февр. 2004
Всего: 408 сообщений
|
Всё проще :-) set_local_var( LVar1,get_local_var( LVar1)+1);
|
Отправлено: 14:43 - 2 Марта, 2005
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
... или макрос inc_local_var(LVar1).
|
Отправлено: 15:48 - 2 Марта, 2005
|
|
YikxX
Пользователь
Откуда: NCR :) Регистрация: Февр. 2004
Всего: 304 сообщения
|
Всем спасибо - я разобрался. Не работало потому, что я оставлял соратника подождать и он как party_member_obj уже не считался. Это можно как-то исправить?
----- Обломись! Я подложил туда носок...
|
Отправлено: 16:27 - 2 Марта, 2005
|
|
|
|