это я понял - просто для того , чтобы команда эта(MarkObjectAsVisited) работала объект должен быть выключен - вот и другие герои с ним не могут взаимодействовать
Ну а че пишу - обьект выключен если че. :confused: :smile33:. Скриптами выключен он - иначе работает не так как надо. Взаимодействие через TOUCH_TRIGGER
Ну а че пишу - обьект выключен если че. :confused: :smile33:. Скриптами выключен он - иначе работает не так как надо. Взаимодействие через TOUCH_TRIGGER
пробуй другой сопособ- выключение путем region_enter_and_stop_trigger
а не может быть заковыкой с именем ? (т.е. игра считает ' geroy' весь массив героев под управлением игрока )
Ну вот, гляди, часть скрипта: num_stone=3; --kol-vo demon. kamnei for i=1,num_stone do SetObjectEnabled ('stone_'..i,nil); Trigger (OBJECT_TOUCH_TRIGGER,'stone_'..i,'up_herolider'); end;
function up_herolider(geroi,object) if geroi==Larion then ................ MarkObjectAsVisited (object,geroi); ................. else if geroi==Derin then ................. MarkObjectAsVisited (object,geroi); end;end; end; ..............
Derin и Larion - константы(имена героев), там еще мног чего, но основа есть. При 'контакте' любого из героев, для второго героя при нажатии на обьект 'stone' ПКМ пишет 'уже посещалось', но если подойти то бонус дается нормально. Визуально не углядишь - был у обьекта один герой, или оба - неясно пол-ся.
antonag07
14 лет назад
Я и хотел сразу у тебя спросить про сообщение при наведенном курсоре ; ибо так получается не слишком играбельно.
А если запускать потоки на предмет проверки посещения объекта тем или иным героем ?
Я и хотел сразу у тебя спросить про сообщение при наведенном курсоре ; ибо так получается не слишком играбельно.
А если запускать потоки на предмет проверки посещения объекта тем или иным героем ?
думаю не стоит - таких обьектов минимум 50 будет, слишком затармаживать игру будет. Помимо этого будут и другие потоки. Ну ты вообщем не знаешь в чем дело?
думаю не стоит - таких обьектов минимум 50 будет, слишком затармаживать игру будет. Помимо этого будут и другие потоки. Ну ты вообщем не знаешь в чем дело?
не знаю - могу только предполагать ;
пробовал записывать такое значение - MarkObjectAsVisited(sObjectID,true); где sObjectID - скриптовое имя объекта ?
KioM
14 лет назад
for i=1,num_stone do SetObjectEnabled ('stone_'..i,nil); Trigger (OBJECT_TOUCH_TRIGGER,'stone_'..i,'up_herolider'); end;
в циклах чтото не чисто, поробуйте иначе объект отрубать, например все три камня назвать по разному: stone01, stone02, stone03 и затем в скрипте выбрать их:
stone = {'stone01', 'stone02', 'stone03'}; stone.n = length(stone); ... for i=1, stone.n do SetObjectEnabled (stone,nil); Trigger (OBJECT_TOUCH_TRIGGER,stone,'up_herolider'); end; ...
пробовал записывать такое значение - MarkObjectAsVisited(sObjectID,true); где sObjectID - скриптовое имя объекта ?
да - соответственно выдает ошибку что нет героя '1' на карте. и третим параметром true ставил - думал может в мануале ошибка. Эффект то в принципе и так достигается, но не для отдельного героя.
Добавлено через 2 минуты KioM
в циклах чтото не чисто, поробуйте иначе объект отрубать, например все три камня назвать по разному: stone01, stone02, stone03 и затем в скрипте выбрать их:
stone = {'stone01', 'stone02', 'stone03'}; stone.n = length(stone); ... for i=1, stone.n do SetObjectEnabled (stone,nil); Trigger (OBJECT_TOUCH_TRIGGER,stone,'up_herolider'); end; ...
этот цикл вполне рабочий - уже не раз проверено. Ты предлагаешь сделать то же самое, но более долгим способом. (а если у меня 1000 'stone' будет? ;) )
KioM
14 лет назад
я возможно не верно понял MarkObjectAsVisited работает но не для конкретного героя а для всех?
да - соответственно выдает ошибку что нет героя '1' на карте. и третим параметром true ставил - думал может в мануале ошибка. Эффект то в принципе и так достигается, но не для отдельного героя.
)
а ошибка с именем героя всегда выдавалась или только после MarkObjectAsVisited(sObjectID,true); ?
( ибо в сообщ. 379 я выдвыинул и такое предположение )
а ошибка с именем героя всегда выдавалась или только после MarkObjectAsVisited(sObjectID,true); ?
( ибо в сообщ. 379 я выдвыинул и такое предположение )
конечно после того, как изменяешь параметры функции. Все ошибки ж легко print'ами ловятся. :) Дааа, нехорошая будет проблема у игроков - не знать, какой обелиск посещен :smile13:
KioM
14 лет назад
а тогда сори не правильно понял (сонный уже :)), вот так делайте:
function up_herolider(geroi,object) if geroi ==Larion then ................ -MarkObjectAsVisited (object,geroi); +MarkObjectAsVisited (object,Larion); ................. и т.п. т.е. напрямую на конкретного героя ссылайтесь