metalolom Опубликовано 29 июня, 2005 Жалоба Поделиться Опубликовано 29 июня, 2005 Не хочет запускаться скрипт (пишет ошибку при сохранении скрипта и при загрузке игры), ошибка в строках: If ( [iD лифта] -> GetPos, Z <= [нижняя точка] )If ( [iD лифта] -> GetPos, Z >= [верхняя точка] ) Трабла в том, что скрипт не принимает никакие "[iD лифта]", за исключением "Player" и "Npc", т.е. остальные (Activator, Static) он просто не видит! А кому нужен лифт-npc? Я вешал скрипт на кнопку, в "[iD лифта]" прописывал Static: oc_lift_01. Испробованные варианты: ставил различные кавычки: " и '. Пробовал задавать переменную:Short liftposSet liftpos to oc_lift_01 -> GetPos, Z 13000 ; пробовал тоже в кавычки соответственно изменяется:If ( liftpos <= [нижняя точка] )If ( liftpos >= [верхняя точка] ) Ничего не работает. Что делаю неправильно? :( ps Кстати, странны еще 2 строчки:move z, [число]Ведь при этом, должна двигаться кнопка, а не лифт! Чтобы двигался лифт, нужно написать:ObjectId -> Move z, [число]илиObjectId -> MoveWorld z, [число]? ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Майк Опубликовано 29 июня, 2005 Жалоба Поделиться Опубликовано 29 июня, 2005 лифт наверно должен быть активатором? а не статиком Ссылка на комментарий Поделиться на другие сайты Поделиться
metalolom Опубликовано 29 июня, 2005 Автор Жалоба Поделиться Опубликовано 29 июня, 2005 лифт наверно должен быть активатором? а не статиком<{POST_SNAPBACK}>пробовал...писал же: остальные (Activator, Static) он просто не видит! Ссылка на комментарий Поделиться на другие сайты Поделиться
EJ-12 Опубликовано 29 июня, 2005 Жалоба Поделиться Опубликовано 29 июня, 2005 Не понял, как ты хотел его сделать? Вот вариант одного скрипта на лифт.Лифт опускаеться вниз, при нажатии выключателя (который при этом поворачивается), а потом автоматически поднимается обратно.Можно поменять условие, вместо активате - на выключателе, поставить set onMe to (GetStandingActor) - уже на самой кабине лифта. Begin @@@ float timershort state if ( MenuMode == 1 ) returnendif if ( OnActivate == 1 ); дернули за ручкуif ( X_State == 0 ); опрос глобальной переменной"%%%%"->Playsound3DVP "FabBossWhir" 1.0 1.0; пошел шум от движения лифта"№№№"->Playsound3DVP "FabBossWhir" 1.0 1.0; а это щелкнул выключатель Set X_State to 10; установили переменную на первое деление Set state to 10 endifendif if ( state >= 10 ); первое деление set timer to ( timer + GetSecondsPassed );ОБЯЗАТЕЛЬНО поставить таймер!!! Движение завязанно на время, время движения и расстояние определяет скорость перемещения объекта. if ( timer < 5 )"%%%%"->MoveWorld z -397 ;типа лифт пошел вниз"_dwrv_neon01"->MoveWorld z -397; а вместе с ним лампочка"№№№№№"-> Rotate z, 360; а выключатель повернулся elseif ( timer > 21 ); конечный тайм-код, вернем все на их места и закончим скрипт."%%%%"->SetAtStart;с этого тайм-кода все пошло (поехало) обратно на верх автоматически, можно поменять условия и лифт останется ждать внизу.set X_State to 0 set state to 0set timer to 0; все переменные и время сбрасываем на НУЛЬ. elseif ( timer > 18 ) ; в этом ключе проиграем немного музыки и подготовимся к подъемуif ( state == 10 )"%%%%"->Playsound3DVP "FabBossWhir" 1.0 1.0set state to 60endif ; собственно подъем обратно "%%%%"->MoveWorld z 397"_dwrv_neon01"->MoveWorld z 397"№№№№№"-> Rotate z, -360endif end Галка references установленна? статик или активатор неважно. Ссылка на комментарий Поделиться на другие сайты Поделиться
metalolom Опубликовано 30 июня, 2005 Автор Жалоба Поделиться Опубликовано 30 июня, 2005 EJ-12: Спасибо, конечно, но это не совсем то, что мне нада, вот смысл действия:Есть 2 этажа, на 1 и 2 этаже кнопки (одинаковые, с одинк. скриптами), Если я наверху, а лифт внизу, то при нажатии кнопки лифт поднимается, захожу в лифт, нажимаю еще раз эту же самую кнопку - он опускается. Если я вверху, и лифт вверху тоже, то при нажатии кнопки, он сразу едет вниз. Еслия я внизу - аналогично.Скрипт брал [dvp], а он наверное ( :rolleyes: ) его тестил, значит у него работал.... >>>Галка references установленна? статик или активатор неважно.а где именно не подскажешь (и еще, что она делает..., т.к. у меня как раз скрипт при сохданении выдавал ошибку, типа 'oc_lift_01' ... references.... ) Ссылка на комментарий Поделиться на другие сайты Поделиться
metalolom Опубликовано 30 июня, 2005 Автор Жалоба Поделиться Опубликовано 30 июня, 2005 Все! Исправил! Скрипт-лифт. Вешается на кнопку (или несколько кнопок), которые заставляются двигаться лифт. Внимание! Лифт должен быть активатором и у него должна быть включена функция: References Persist. Begin [Название скрипта] ;Author – [dvp] ;URL - http://fullrest.ru Short Selector Short Working Short status Short liftpos Set liftpos to ["ID_лифта] -> GetPos, Z If ( menumode == 1 ) return endif If ( Working == 0 ) If ( OnActivate == 1 ) If ( Selector == 0 ) Set Working to 1 Set status to 1 Elseif ( Selector == 1 ) Set Working to 1 Set status to 2 Endif Endif Elseif ( Working == 1 ) If ( status == 1 ) ["ID_лифта] -> Move Z, [скорость опускания с минусом] If ( liftpos <= [нижняя точка] ) Set status to 0 Set Working to 0 Set Selector to 1 Endif Elseif ( status == 2 ) ["ID_лифта] -> Move Z, [скорость подъема] If ( liftpos >= [верхняя точка] ) Set status to 0 Set Working to 0 Set Selector to 0 Endif Endif Endif End Как вы думаете, это можно назвать координальным изменением скрипта (если учесть, что предыдущий не работал (у меня))? :) Ссылка на комментарий Поделиться на другие сайты Поделиться
metalolom Опубликовано 2 июля, 2005 Автор Жалоба Поделиться Опубликовано 2 июля, 2005 Еще 2 траблы с лифтомами, но не факт, что со скриптом (здесь пишу, чтобы форум не засорять :) ). Описание проблемм:1.Есть 2 лифта. Первый ходит только вертикально, траектория пути - небольшая. Второй ходит - Z, Y, Z (вертикально, горизонтально (по Y), вертикально), траектория пути большая (сравнительно). Итак: первый лифт ходит как надр: вверх и вних, лагов нет (кроме второй проблеммы). А второй лифт, когда начинает идти по оси Y и проходит некоторое время (где-то на середине траектории Y), игрок (я) как бы "подбрыгивает", но не вверх а просто на лифте, спустя пару секунд игрок падает вниз (через лифт, будто он не материален (внизу пропасть, потом лава)). Как быть? Лифт ведь предназначен для перевозки игрока, а не для "сбрасывания" его в лаву...2. Этот "баг" я обнаружил в первом лифте (во-втором вроде нормально), при первом нажатии кнопки - лифт нормально работает, а потом, когда 1 раз нажимаешь кнопку - лифт немного сдвигается (подравнивается?), а начинает двигаться только после 2 нажатия на кнопку.Примечание: у 1 лифта 2 кнопки (с одинаковым скриптом), у 2 лифта - пока только 1... Ссылка на комментарий Поделиться на другие сайты Поделиться
Boblen Опубликовано 4 июля, 2005 Жалоба Поделиться Опубликовано 4 июля, 2005 Разобраться в скрипте на Magic Crapet, Рыбацкой академии, Галеоне и прочих. Впрочем если это в интерьере - странное дело. Но можно, по идее, делать его Disable/Enable за 1 фрейм, тогда Collision обновляются.Про перевозящие объекты в экстерьерах и про то, как их делать, написано в МСФД8. Ссылка на комментарий Поделиться на другие сайты Поделиться
metalolom Опубликовано 25 июля, 2005 Автор Жалоба Поделиться Опубликовано 25 июля, 2005 Разобраться в скрипте на Magic Crapet, Рыбацкой академии, Галеоне и прочих. Впрочем если это в интерьере - странное дело. Но можно, по идее, делать его Disable/Enable за 1 фрейм, тогда Collision обновляются.Про перевозящие объекты в экстерьерах и про то, как их делать, написано в МСФД8.<{POST_SNAPBACK}> Так ее кажись с фуллреста убрали...., можно оттуда скриптик вырезать? Ссылка на комментарий Поделиться на другие сайты Поделиться
metalolom Опубликовано 28 июля, 2005 Автор Жалоба Поделиться Опубликовано 28 июля, 2005 Значит так, вот отчет: 1. Пробовал делать disable/enable лифта, вроде так:If ( GetDisabled == 0 ) Disable Else Enable EndIfВешал его на лифт... Лифт мерцал, Очень заметно, так что такая тема не прокатит (только если делать дисейбл/энейбл намного чаще) 2. Пробовал тоже, но при помощи Timer'a, примерно так:Float Timer Set Timer to GetSecondsPassed If ( Timer == 1 ) Enable Elseif ( Timer >= 5 ) Disable EndIf Ничего из этого не вышло :( Никогда с Timer'ом "не дружил"... 3. Т.к. я проваливаюсь сквозб лифт из-за того, что долго еду по оси ОУ (или по ОХ), то решал на полпути поставить еще 1 лифт, с повешенным на него disable, когда 1 лифт доезжает до координат 2-ого, он останавливается, потом исчезает (disable), а 2 наоборот - появляется (enable) и начинает двигаться, вот так:[morrscript]Begin oc_button_02_script ;Author - [dvp];URL - реклама на форуме запрещена, читай правилаfullrest.ru;Изменял скрипт - metalolom;URL - реклама на форуме запрещена, читай правилаmetalolom-tes.narod.ru Short SelectorShort WorkingShort statusShort liftposzaShort liftposyaShort liftposzbShort liftposyb Set liftposza to oc_lift_02a -> GetPos, ZSet liftposya to oc_lift_02a -> GetPos, YSet liftposzb to oc_lift_02b -> GetPos, ZSet liftposyb to oc_lift_02b -> GetPos, Y If ( MenuMode == 1 ) Returnendif If ( Working == 0 ) If ( OnActivate == 1 ) If ( Selector == 0 ) Set Working to 1 Set status to 1 Elseif ( Selector == 1 ) Set Working to 1 Set status to 2 Endif EndifElseif ( Working == 1 ) If ( status == 1 ) oc_lift_02a -> Move Z, -100 If ( liftposza <= 11220 ) Set Working to 2 Endif Elseif ( status == 2 ) oc_lift_02b -> Move Z, -100 If ( liftposzb <= 11220 ) Set Working to 2 Endif EndifElseif ( Working == 2 ) If ( status == 1 ) oc_lift_02a -> Move Y, 100 If ( liftposya >= 4668 ) Set Working to 3 oc_lift_02a -> Disable oc_lift_02b -> Enable Endif Elseif ( status == 2 ) oc_lift_02b -> Move Y, -100 If ( liftposyb <= 4668 ) Set Working to 3 oc_lift_02a -> Enable oc_lift_02b -> Disable Endif EndifElseif ( Working == 3 ) If ( status == 1 ) oc_lift_02b -> Move Y, 100 If ( liftposyb >= 6248 ) Set Working to 4 Endif Elseif ( status == 2 ) oc_lift_02a -> Move Y, -100 If ( liftposya <= 3088 ) Set Working to 4 Endif EndifElseif ( Working == 4 ) If ( status == 1 ) oc_lift_02b -> Move Z, 100 If ( liftposzb >= 11724 ) Set status to 0 Set Working to 0 Set Selector to 1 Endif Elseif ( status == 2 ) oc_lift_02a -> Move Z, 100 If ( liftposza >= 12136 ) Set status to 0 Set Working to 0 Set Selector to 0 Endif EndifEndif End[/morrscript] Эффекта: 0 :( Буду рад любой помощи... Ссылка на комментарий Поделиться на другие сайты Поделиться
LonWolf Опубликовано 28 июля, 2005 Жалоба Поделиться Опубликовано 28 июля, 2005 А не пробовал вместо двух лифтов, в кондиции когда лифт доехал до определенной точки просто обновлять на один фрейм? К примеру: if ( doehal == 1 ) Disable Enable Set doehal to 0 endif Ссылка на комментарий Поделиться на другие сайты Поделиться
metalolom Опубликовано 29 июля, 2005 Автор Жалоба Поделиться Опубликовано 29 июля, 2005 >>>LonWolf Можно попробовать, но лифт все равно "моргнет"... Но можно как-то сделать, чтобы не "моргал", об этом в MSFD8 писали, но не написали КАК это сделать Ссылка на комментарий Поделиться на другие сайты Поделиться
LonWolf Опубликовано 29 июля, 2005 Жалоба Поделиться Опубликовано 29 июля, 2005 Может и не моргнет. Ты же ставил else - условие, а это ведь один лишний кадр. Ссылка на комментарий Поделиться на другие сайты Поделиться
metalolom Опубликовано 30 июля, 2005 Автор Жалоба Поделиться Опубликовано 30 июля, 2005 Может и не моргнет. Ты же ставил else - условие, а это ведь один лишний кадр.<{POST_SNAPBACK}>Сделал... Похоже скрипт проигнорировал написанное... Лифт даже не обновился. У меня есть еще 1 вариант, чтобы обойти этот баг: когда игрок становится на него, блокировать ему управление, написать что-то вроде "Стойте смирно" и двигать игрока вместе с лифтом... Но это будет выглядеть очень не естественно :( Вообще есть такая команда: обновить все в ячейке, но в MSFD 8 писали, что она испорчена... Ссылка на комментарий Поделиться на другие сайты Поделиться
LonWolf Опубликовано 30 июля, 2005 Жалоба Поделиться Опубликовано 30 июля, 2005 Не обновился, говоришь? А как ты узнал? Делай тогда тоже самое, что в твоем первом примере, но без else. Ссылка на комментарий Поделиться на другие сайты Поделиться
metalolom Опубликовано 1 августа, 2005 Автор Жалоба Поделиться Опубликовано 1 августа, 2005 Не обновился, говоришь? А как ты узнал?Ну игрок-то проваливается... Делай тогда тоже самое, что в твоем первом примере, но без else.<{POST_SNAPBACK}> Сделал... лифт может и обновляется (когда идет по оси Я вниз, чар немного подпрыгивает...), но все равно слетает, когда идет по Oy А еще кстати забыл сказать, после того, как чар начнет "слетать", стать на лифт уже нельзя -( Всегда проваливаться будешь... Ссылка на комментарий Поделиться на другие сайты Поделиться
LonWolf Опубликовано 1 августа, 2005 Жалоба Поделиться Опубликовано 1 августа, 2005 Охренеть. У тебя там часом обновление ячейки не идет? Ссылка на комментарий Поделиться на другие сайты Поделиться
metalolom Опубликовано 2 августа, 2005 Автор Жалоба Поделиться Опубликовано 2 августа, 2005 Охренеть. У тебя там часом обновление ячейки не идет?<{POST_SNAPBACK}>Команда SellUpdate (или как-то так) не работатет (MSFD 8 писали), так бы я ее попробовал юзнануть, но... :( Ссылка на комментарий Поделиться на другие сайты Поделиться
LonWolf Опубликовано 2 августа, 2005 Жалоба Поделиться Опубликовано 2 августа, 2005 Примечание: обход этой проблемы (необходим Трибунал) в том, чтобы отключить и удалить (SetDelete) объект (для перемещающихся объектов, при перемещении в новую ячейку) и немедленном помещении новой версии (PlaceItem) в ту же позицию, используя глобальный скрипт (смотри лодочный скрипт от MadMax из плагина Fishing Academy Mod). Смотри раздел Советы и Трюки для более подробного объяснения самим MadMax. Это похоже на колдовство, потому что таким образом объект никогда не покидает ячейку, в которой он был создан.Я так полагаю, это выглядит примерно так:if ( CellChanged == 1 ) Set oA to GetAngle z * 60;Эти Set oX to GetPos x;переменные Set oY to GetPos y;будут Set oZ to GetPos z;глобальными. StartScript cc endifЭто была часть на лок. скрипт лифта. Теперь, собственно, глобальный:Begin cc [id лифта] -> Disable [id лифта] -> SetDelete 1 [id лифта] -> PlaceItem, oX, oY, oZ, oA StopScript cc End Ссылка на комментарий Поделиться на другие сайты Поделиться
metalolom Опубликовано 5 августа, 2005 Автор Жалоба Поделиться Опубликовано 5 августа, 2005 Да, но ведь мой лифт не переходин в следующую ячейку.. Но попробую, вместь disable/enable сделать удалить/вставить... Ссылка на комментарий Поделиться на другие сайты Поделиться
lost81 Опубликовано 5 августа, 2005 Жалоба Поделиться Опубликовано 5 августа, 2005 Да, но ведь мой лифт не переходин в следующую ячейку.. Но попробую, вместь disable/enable сделать удалить/вставить...<{POST_SNAPBACK}> Мне тебя искрене жаль! И я всей душой надеюсь что тебе удастся победить этот скрипт! А вобще респект за настырность! ;) Ссылка на комментарий Поделиться на другие сайты Поделиться
metalolom Опубликовано 8 августа, 2005 Автор Жалоба Поделиться Опубликовано 8 августа, 2005 Да я уже забил на скрипт: надоело жутко! Решил переделать траекторию движения лифта, теперь он будет идти по Oy, Oz, Oy, Oz. Так вот... Благодарю всех за помощь, отдельно LonWolf за упорность, в общем тему можно закрывать... Ссылка на комментарий Поделиться на другие сайты Поделиться
Джэк Опубликовано 21 ноября, 2005 Жалоба Поделиться Опубликовано 21 ноября, 2005 metalolom! У меня скрипт для лифта твой не пашет.Нажимаю на рычаг, лифт идёт, и не хочет останавливатся.Верхняя точка поставлена. Ссылка на комментарий Поделиться на другие сайты Поделиться
mammuthus Опубликовано 10 февраля, 2007 Жалоба Поделиться Опубликовано 10 февраля, 2007 Может ктонибудь выложить работоспособный скрипт на лифт (вверх-вниз, три кнопки (вызов, поехали и стоп)...И еще вопрос? Лифт закрывает обыкновенная дверь. , что нужно прописать, чтобы когда лифт приехал, дверь автоматически открылась? :1anim_ah: И есть у разработчика сайт? или откуда вообще где можно найти скрипт Ссылка на комментарий Поделиться на другие сайты Поделиться
UraXa Опубликовано 1 августа, 2007 Жалоба Поделиться Опубликовано 1 августа, 2007 пропиши activate Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти