olol Опубликовано 16 декабря, 2005 Жалоба Поделиться Опубликовано 16 декабря, 2005 Все манипуляции с Объектами можно делать либо из подключенных к ним локальных скриптов или по уникальным ID, что бывает не всегда возможным. Однако эту связь можно обеспечить через глобальные переменные.Рассмотрим управление "Лифтом" ( вверх/вниз ) с помощью "Кнопок". Создадим глобальные переменные:--------------------------;Short nPlatformStat ;GlobalVariable;Float fPlatformPosX;Float fPlatformPosY;Float fPlatformPosZ;Float fPlatformDelta ;Default = 100 ;X,Y (+/-) fPlatformDelta;Short nPlatformSpeed ;Default = 5 ;2,5,10 Напишем следующие скрипты:Begin ButtonPosZ_Script Short nVar If ( OnActivate == 0 ) ReturnEndIf Set nPlatformStat to 1Set fPlatformPosX to GetPos, XSet fPlatformPosY to GetPos, YSet nVar to GetItemCount "Gold_001"Set fPlatformPosZ to GetItemCount "Gold_005"Set fPlatformPosZ to fPlatformPosZ - nVar EndBegin PlatformPosZ_Script Short nStat Float fVarFloat fPosXMinFloat fPosXMaxFloat fPosYMinFloat fPosYMax If ( MenuMode == 1 ) ReturnEndIf If ( nPlatformStat == 1 ) Set fVar to GetPos, X Set fPosXMin to fVar - fPlatformDelta Set fPosXMax to fVar + fPlatformDelta Set fVar to GetPos, Y Set fPosYMin to fVar - fPlatformDelta Set fPosYMax to fVar + fPlatformDelta If ( fPosXMin > fPlatformPosX ) ElseIf ( fPosXMax ElseIf ( fPosYMin > fPlatformPosX ) ElseIf ( fPosYMax Else Set nPlatformStat to 0 Set fVar to GetPos, Z If ( fVar Set nStat to 1 Else Set nStat to 2 EndIf EndIfEndIf If ( nStat == 0 ) ReturnEndIf Set fVar to GetPos, ZIf ( nStat == 1 ) If ( fVar If ( nPlatformSpeed MoveWorld Z 2 ElseIf ( nPlatformSpeed MoveWorld Z 5 Else MoveWorld Z 10 EndIf Else Set nStat to 0 EndIfElse If ( fVar > fPlatformPosZ ) If ( nPlatformSpeed MoveWorld Z -2 ElseIf ( nPlatformSpeed MoveWorld Z -5 Else MoveWorld Z -10 EndIf Else Set nStat to 0 EndIfEndIf EndЗдесь я для "Кнопки" использовал трюк с Контейнером.В этом случае скрипт получается универсальный, общий для всех "Кнопок". В качестве "Кнопки" можно использовать любой Контейнер в который необходимо положить золото:"Gold_001" - минус 'Z' или "Gold_005" - плюс 'Z' которое задает абсолютную координату для лифта. Примечание: Контейнер должен быть 'ЖИВОЙ' и НЕ пополняемый, и для каждой высоты - свой. (с разным количеством золота) "Лифтом" может быть любой активатор-платформа.Хотя поднимать можно и другие Объекты (например бутылку :) fPlatformDelta - задает область действия "Кнопки" плюс/минус по 'X' и 'Y'.При ее активации, рядом стоящий "Лифт" поднимется/опустится на соответствующую высоту. Примечание: Если рядом с "Кнопкой" поставить два "Лифта", то работать будет только один. Скорость движения "Лифта" задает nPlatformSpeed.Я заложил три: 2,5,10 но при желании их можно изменить. В данном примере можно спокойно обойтись и с уникальными ID, это дело вкуса.Лично мне так больше нравится... Главное, что этот подход можно применить и к другим не уникальным Объектам... Например: Чародей крыс... каждую крысу не сделаешь уникальной... :) Надеюсь идея кому-нибудь пригодится... Ссылка на комментарий Поделиться на другие сайты Поделиться
Sieg Warhrhei Опубликовано 24 декабря, 2005 Жалоба Поделиться Опубликовано 24 декабря, 2005 Спасибо!!!!!!!! Я как раз Такой скрипт мутил, только потом с ним лажа такая приключилась....Все равно спасибо!!!!! Ссылка на комментарий Поделиться на другие сайты Поделиться
olol Опубликовано 26 декабря, 2005 Автор Жалоба Поделиться Опубликовано 26 декабря, 2005 Я сделал это по проще, только для понятия принципа...но если будешь использовать, то могу чуть-чуть усложнить. Если лифт состоит из нескольких частей, то в случае уникальности -относительная позиция остальных привязывается к координатам ID этой платформы...а если она не уникальна ? Для этого необходимо в кнопке задать это количество, например четыре:Set nPlatformStat to 4 Для универсальности, это можно задать например количеством "Gold_010".а для частей платформы:Set nPlatformStat to nPlatformStat - 1 Кстати, в этом случае можно будет одной кнопкой вызывать сразу два соседних лифта. Для каждой части должен быть свой скрипт, учитывающий свою поправку к координате Z.Но, в таком случае, лучше и для них тоже использовать не активаторы,а контейнеры с золотом, задающее эту поправку, и общий скрипт... P.S.Вас не должно беспокоить большое количество используемого золота.Контейнеры не раскрываются и его никто не увидит и не возьмет. :1anim_ab: При желании можно использовать хоть вилки/ложки... Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти