Moorindal Опубликовано 6 ноября, 2008 Жалоба Поделиться Опубликовано 6 ноября, 2008 Вот мои наработки. Как вы уже догадались, не работает.begin Script_id float time long x if (OnActivate == 1) set time to (time + GetSecondsPassed ) if (time >= x*86400) cost "Spell_id" Player set x to (x+1) elseif (time < x*86400) Messagebox "Вы уже использовали предмет сегодня" endif endif end Ссылка на комментарий Поделиться на другие сайты Поделиться
Boma Kuro Опубликовано 6 ноября, 2008 Жалоба Поделиться Опубликовано 6 ноября, 2008 Moorindal сказал: cost "Spell_id" PlayerНадо cast. И структуру скрипта надо как-то так выстроить:begin Script_id float time short flag long x if (OnActivate == 1) set flag to 1 endif if (flag == 1 ) set time to (time + GetSecondsPassed ) if (time >= x*86400) cast "Spell_id" Player set x to (x+1) elseif (time < x*86400) Messagebox "Вы уже использовали предмет сегодня" endif endif end А вообще, почему бы не использовать day и gamehour? Ссылка на комментарий Поделиться на другие сайты Поделиться
Moorindal Опубликовано 6 ноября, 2008 Автор Жалоба Поделиться Опубликовано 6 ноября, 2008 Я в этом деле новичок, строго не суди. Cost написал по памяти, в настоящем скрипте Cast. Про day и gamehour знать не знал, ведать не ведал.Не работает. Срабатывает раз, но закл не используется (по крайней мере на ГГ), сообщение про предмет выводится каждый фрейм, даже через сутки закл не повторяется... Все, кажись. Ссылка на комментарий Поделиться на другие сайты Поделиться
NmLs Опубликовано 6 ноября, 2008 Жалоба Поделиться Опубликовано 6 ноября, 2008 (изменено) Begin _XYZ short State short SDay if ( MenuMode == 1 ) Return Endif if ( OnActivate == 1 ) if ( State == 0 ) set state to 1 else MessageBox "Вы уже использовали сегодня. Чачача!(с)" endif endif if ( State == 1 ) Cast "SpellID" player set State to 2 set sday to day endif if ( State == 2 ) if ( sday != day ) set state to 0 endif endif End _XYZ Изменено 6 ноября, 2008 пользователем NmLs Ссылка на комментарий Поделиться на другие сайты Поделиться
Moorindal Опубликовано 7 ноября, 2008 Автор Жалоба Поделиться Опубликовано 7 ноября, 2008 Черт! Теперь он кастует заклинание раз в сутки, независимо от активации предмета. Ссылка на комментарий Поделиться на другие сайты Поделиться
NmLs Опубликовано 7 ноября, 2008 Жалоба Поделиться Опубликовано 7 ноября, 2008 Странно О_о не должен... Ссылка на комментарий Поделиться на другие сайты Поделиться
Moorindal Опубликовано 7 ноября, 2008 Автор Жалоба Поделиться Опубликовано 7 ноября, 2008 Мож конфликт? Глянте кто-нибудь:GameFile0=Bloodmoon.esmGameFile1=Morrowind.esmGameFile2=Tribunal.esmGameFile3=Trib_BM_patch_1C.esmGameFile4=100ProjectileStoreChance.espGameFile5=Animal Behaviour.espGameFile6=Better Clothes_v1.0_1C_my.espGameFile7=Better Heads Tribunal addon.espGameFile8=Better Heads.espGameFile9=Better_Sounds_1C.espGameFile10=Blight Bounties_1C.espGameFile11=BS_BM_WeatherChange.espGameFile12=Carry your Bedroll Rus.espGameFile13=Chrysamere Replacement_russian_edition.espGameFile14=ClearGlassEquipment_1C.espGameFile15=ClearIceEquipment_1C.espGameFile16=DB_Attack_Mod_1C.espGameFile17=DN_AshVampires.espGameFile18=Elemental BB2_2 Races.espGameFile19=FortFrostmothRestoration_1C.espGameFile20=GMST-Fix_1C.espGameFile21=Hidden Vampire M.T.B.espGameFile22=Hurt_fire_1C_Trib_BM.espGameFile23=IceNioLivRobeReplacerPLUS 1C.espGameFile24=Magic.espGameFile25=Manor on Ascadians Isles.esp *GameFile26=MournholdTravelFix_1C.espGameFile27=OR_DaeRace.espGameFile28=SneakingRealism_v2_1.espGameFile29=Yagrum's_Book.espGameFile30=Better Bodies.esp * - мой плагин, это здесь неработает скрипт. Ссылка на комментарий Поделиться на другие сайты Поделиться
NmLs Опубликовано 7 ноября, 2008 Жалоба Поделиться Опубликовано 7 ноября, 2008 называть скрипты можно как угодно. во всех моих плагинах используется "_" и все работает. плагины тут не причем. надо думать над порядком блоков в скрипте, моррка на такие вещи очень капризная. Ссылка на комментарий Поделиться на другие сайты Поделиться
Moorindal Опубликовано 7 ноября, 2008 Автор Жалоба Поделиться Опубликовано 7 ноября, 2008 Будем думать, а у кого еще можно помощи спросить? Ссылка на комментарий Поделиться на другие сайты Поделиться
Smokingbird Опубликовано 7 ноября, 2008 Жалоба Поделиться Опубликовано 7 ноября, 2008 (изменено) господи, зачем так все усложнять? вот пробуйте, переписал. фреймворк у вас корявенький был Begin _XYZ short State short SDay if ( MenuMode == 1 ) Return Endif if ( OnActivate == 1 ) if ( State == 0 ) set state to 1 endif endif if ( State == 1 ) if ( sday != day ) set sday to day Cast "SpellID" player else MessageBox "Вы уже использовали сегодня. Чачача!(с)" endif set State to 0 endif End _XYZ Изменено 7 ноября, 2008 пользователем Smokingbird Ссылка на комментарий Поделиться на другие сайты Поделиться
Moorindal Опубликовано 8 ноября, 2008 Автор Жалоба Поделиться Опубликовано 8 ноября, 2008 Тоже самое, все-равно глючит. Ссылка на комментарий Поделиться на другие сайты Поделиться
NmLs Опубликовано 11 ноября, 2008 Жалоба Поделиться Опубликовано 11 ноября, 2008 Муриндал, что-то у тебя с морркой . У меня и моя версия нормально работает... Ссылка на комментарий Поделиться на другие сайты Поделиться
Deon Опубликовано 3 декабря, 2008 Жалоба Поделиться Опубликовано 3 декабря, 2008 Объясните чайнику, чем вынесение if (OnActivate==1) в отдельный блок лучше применения этого ифа напрямую, если он только раз используется в скрипте да и то в начале? Ссылка на комментарий Поделиться на другие сайты Поделиться
Boma Kuro Опубликовано 3 декабря, 2008 Жалоба Поделиться Опубликовано 3 декабря, 2008 Deon сказал: Объясните чайнику, чем вынесение if (OnActivate==1) в отдельный блок лучше применения этого ифа напрямую, если он только раз используется в скрипте да и то в начале?Он не один раз используется, хех. Каждый раз, когда игрок кликает по активатору, выполняется условие ( OnActivate == 1 ).А смысл таков, что каждый раз, когда выполняется условие ( OnActivate == 1 ), должны выполняться действия, описанные под условием ( State == 1 ). А сделанно так из-за особенностей морровиндовских скриптов - хорошим тоном считается обеспечение максимально четко расписанной последовательности событий.Хотя, в принципе, попробовать можно, хех. Кстати, скрипт так и не заработал? Может, поменять местами блоки ( OnActivate == 1 ) и ( State == 1 )? Ссылка на комментарий Поделиться на другие сайты Поделиться
Deon Опубликовано 3 декабря, 2008 Жалоба Поделиться Опубликовано 3 декабря, 2008 Что-то я не понял... Не один раз используется блок ОнАктивейт тут? Не вижу. Вижу только один раз применение условия... (Я ж не спрашивал, сколько раз и как часто СКРИПТ искользуется, я про условие внутри скрипта). Можно пояснить про замену местами чего-то? Не вижу этого варианта. Ссылка на комментарий Поделиться на другие сайты Поделиться
Boma Kuro Опубликовано 4 декабря, 2008 Жалоба Поделиться Опубликовано 4 декабря, 2008 Deon сказал: Что-то я не понял... Не один раз используется блок ОнАктивейт тут? Не вижу. Вижу только один раз применение условия... (Я ж не спрашивал, сколько раз и как часто СКРИПТ искользуется, я про условие внутри скрипта). Можно пояснить про замену местами чего-то? Не вижу этого варианта.А, это... Ну так - да, проверка используется один раз каждый фрейм, хех. Если поменять блоки местами, то проверка на State будет в следующем фрейме - иногда тоже помогает. Еще можно вместо else использовать elseif, еще можно вложить "set State to 0" в оба подусловия проверки на sday... Морр любит подобное шаманство. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти