Argonat Опубликовано 15 февраля, 2010 Автор Жалоба Поделиться Опубликовано 15 февраля, 2010 ахаха... ну теперь ваше вынос мозга Супер спальник, который дает добрые советы :)))Ааааа!!! Я забыл исправить вторую половинку скрипта. Выкинь совсем сообщение про "вам лучше спать на обычной кровати"Про запас оставлял. А как думаешь, игрока как нибудь предупреждать надо, что для него в данный момент эта возможность недоступна? Ссылка на комментарий Поделиться на другие сайты Поделиться
Цернон Опубликовано 15 февраля, 2010 Жалоба Поделиться Опубликовано 15 февраля, 2010 (изменено) да вот тут покумекать надо...подумал, вот есть стандартный скрипт. который управляет превращением в вампира: begin VampireCheck ;this is a global scritp that constantly runs checking for the blood disease that causes vampirism;there are three blood diseases that cause this. You can only get one.;So if you have one, or are a vampire, then the new one is removed. ;this script will check if you have the disease, then wait till the 3rd day, see if you still have it, then make you a vampire short currentDayshort dayCountshort hasDiseaseshort state ;PCVampire, 0 = Normal, 1 = Vampire, -1 = Cured if ( state == -1 ) return endif if ( state == 10 ) MessageBox "Мне снилась светловолосая дева. Я подошел и увидел, что она плачет, но ее слезы красны, как кровь. Я прикоснулся к ее слезам и попробовал их на вкус - они были чудесно соленые, острые и пряные. Но лицо девы изменилось, ее кожа стала серовато-белой, а красные слезы капали из ее губ, и ее волосы стали черными, и свивались вокруг ее головы, как змеи. Я испугался, но не мог бежать. Я закричал и проснулся с колотящимся, сжимающимся, пульсирующим болью сердцем.", "Готово" set state to -1 ;check which one they have and give the goods. if ( player->GetSpell "Vampire Blood Quarra" == 1 ) StartScript Vampire_Quarra_PC elseif ( player->GetSpell "Vampire Blood Aundae" == 1 ) StartScript Vampire_Aundae_PC elseif ( player->GetSpell "Vampire Blood Berne" == 1 ) StartScript Vampire_Berne_PC endif return endif if ( PCVampire != 0 ) stopscript VampireCheck ;stop this script if they become a vampire returnendif if ( player->GetSpell "Vampire Blood Quarra" == 1 ) if ( hasDisease == 0 ) set hasDisease to 1 set currentDay to Day endif elseif ( player->GetSpell "Vampire Blood Aundae" == 1 ) if ( hasDisease == 0 ) set hasDisease to 1 set currentDay to Day endif elseif ( player->GetSpell "Vampire Blood Berne" == 1 ) if ( hasDisease == 0 ) set hasDisease to 1 set currentDay to Day endif else if ( hasDisease == 1 ) ;they had it at one point, but don't anymore set hasDisease to 0 set currentDay to 0 set dayCount to 0 endifendif if ( hasDisease == 1 ) ;has disease will get set back to 0 before here if they cured it if ( currentDay != day ) ;the day has changed, so up the count set dayCount to dayCount + 1 set currentDay to Day endif if ( dayCount >= 3 ) ;goes over 3 days if ( GetPCSleep == 1 ) wakeupPC set state to 10 endif endif endif end VampireCheck отсюда вывод: надо к твоему скрипту к команде спать до утра прикрутить команду, которая действительно заставляет спать ... Изменено 15 февраля, 2010 пользователем Цернон Ссылка на комментарий Поделиться на другие сайты Поделиться
Argonat Опубликовано 15 февраля, 2010 Автор Жалоба Поделиться Опубликовано 15 февраля, 2010 отсюда вывод: надо к твоему скрипту к команде спать до утра прикрутить команду, которая действительно заставляет спать ...Да я так уже по твоему совету и сделал, я собсно спрашивал. Надо ли игрока сообщением предупреждать, что для него в данный момент недоступна возможность использовать функцию спать до у тра и он вручную должен задавать время? (немного коряво, но надеюсь понятно). P.S. А к чему этот скрипт? Ссылка на комментарий Поделиться на другие сайты Поделиться
bi-666 Опубликовано 15 февраля, 2010 Жалоба Поделиться Опубликовано 15 февраля, 2010 Надо ли игрока сообщением предупреждать, что для него в данный момент недоступна возможность использовать функцию спать до у тра и он вручную должен задавать время? (немного коряво, но надеюсь понятно). Кстати, можно при сне до утра вампиром "пробуждать" игрока ночью, когда искомый сон (из оригинального скрипта) пришел. А потм можно заменить "спать до утра" на "спать до заката/вечера" - несложно ведь. Ссылка на комментарий Поделиться на другие сайты Поделиться
Цернон Опубликовано 15 февраля, 2010 Жалоба Поделиться Опубликовано 15 февраля, 2010 хех... ну да меня понять трудно.. щас изложу идею так:можно переделать все вообще:нужно чтобы в опции "спать до утра" герой именно спал (т.е. запускался бы сон на некоторое время, которого не хватает до утра, которое скрипт бы выщитывал)Тада это убирает все проблемы с вампирамиэто был бы самый оптимальный вариант.Менее оптимальный, оставить как есть (т.е. не давать больному гемофилией венценосных спать до утра), тада сделать предупреждение типа "сейчас вы не можете спать до утра" и активировать showRestMenu Ссылка на комментарий Поделиться на другие сайты Поделиться
Foreigner Опубликовано 15 февраля, 2010 Жалоба Поделиться Опубликовано 15 февраля, 2010 Да я так уже по твоему совету и сделал, я собсно спрашивал. Надо ли игрока сообщением предупреждать, что для него в данный момент недоступна возможность использовать функцию спать до утра и он вручную должен задавать время? (немного коряво, но надеюсь понятно). "Зараза в вашей крови внушает вам страх перед рассветом. Вам не удаётся заснуть с мыслями о нём." Ссылка на комментарий Поделиться на другие сайты Поделиться
Argonat Опубликовано 15 февраля, 2010 Автор Жалоба Поделиться Опубликовано 15 февраля, 2010 Кстати, можно при сне до утра вампиром "пробуждать" игрока ночью, когда искомый сон (из оригинального скрипта) пришел. А потм можно заменить "спать до утра" на "спать до заката/вечера" - несложно ведь.Да этот вариант уже запланирован. :yess: хех... ну да меня понять трудно.. щас изложу идею так:можно переделать все вообще:нужно чтобы в опции "спать до утра" герой именно спал (т.е. запускался бы сон на некоторое время, которого не хватает до утра, которое скрипт бы выщитывал)Тада это убирает все проблемы с вампирамиэто был бы самый оптимальный вариант.Да это сразу бы решило все проблемы, но у мнея этого не получилось. Менее оптимальный, оставить как есть (т.е. не давать больному гемофилией венценосных спать до утра), тада сделать предупреждение типа "сейчас вы не можете спать до утра" и активировать showRestMenuСобсно об этом предупреждении и речь. "Зараза в вашей крови внушает вам страх перед рассветом. Вам не удаётся заснуть с мыслями о нём."Это класно имено что то такое и надо, но только стоит ли предупреждать игрока о болезни? Это лорно (а то в оригинале этого нет) Ссылка на комментарий Поделиться на другие сайты Поделиться
Boma Kuro Опубликовано 15 февраля, 2010 Жалоба Поделиться Опубликовано 15 февраля, 2010 нужно чтобы в опции "спать до утра" герой именно спал (т.е. запускался бы сон на некоторое время, которого не хватает до утра, которое скрипт бы выщитывал)Не получится так, вроде - насколько помню, нет такой функции, что бы насильно заставить игрока спать. Хм, а будет ли такой синтаксис будет работать?if ( VampireCheck.dayCount >= 3 )Если да, то все просто - проверяем у игрока налачие гемофилии, если есть - проверяем эту строчку, и запускаем превращение игрока в вампира, скопированное из VampireCheck. Если же так не получится, придется что-то изворотливое выдумывать... Ссылка на комментарий Поделиться на другие сайты Поделиться
Argonat Опубликовано 15 февраля, 2010 Автор Жалоба Поделиться Опубликовано 15 февраля, 2010 Хм, а будет ли такой синтаксис будет работать?if ( VampireCheck.dayCount >= 3 )Если да, то все просто - проверяем у игрока налачие гемофилии, если есть - проверяем эту строчку, и запускаем превращение игрока в вампира, скопированное из VampireCheck.А так разве можно? Я ничего подобного в MSFD не видел. Если же так не получится, придется что-то изворотливое выдумывать...Да, думаю можно что-нибудь придумать, НО вроде бы вероятность того что игрок станет вампиром после заражения гемофилией не 100%? (даже если он не вылечиться?) И придется все усложнять, что не хотелось бы. Ссылка на комментарий Поделиться на другие сайты Поделиться
Цернон Опубликовано 15 февраля, 2010 Жалоба Поделиться Опубликовано 15 февраля, 2010 Да, думаю можно что-нибудь придумать, НО вроде бы вероятность того что игрок станет вампиром после заражения гемофилией не 100%? (даже если он не вылечиться?) И придется все усложнять, что не хотелось бы. 100% ... собсна в том и суть... если он заражен гемофилией то запускается скрипт, который остановится только если успеть вылечиться Ссылка на комментарий Поделиться на другие сайты Поделиться
bi-666 Опубликовано 15 февраля, 2010 Жалоба Поделиться Опубликовано 15 февраля, 2010 Я ничего подобного в MSFD не видел. Таки не совсем. Использование переменных в других локальных скриптах и объектахSet … toЕсли уникальный объект имеет скрипт на себе, то вы можете изменять переменные на нем извне следующим образом: Set MyObject.variable to 100илиSet MyObject.variable to local_variable Этот метод изменяет локальную переменную в скрипте объекта. Объект должен при этом иметь скрипт на себе, и конечно, он должен быть активен (то есть локальный скрипт должен быть в той же ячейке). Примечание: Скриптовая система использует только первый объект в базе данных, поэтому вы должны иметь только одну копию объекта. Отметьте, что обратный метод не работает: Set local_variable to MyObject.variable ; Это не работает! Используйте глобальную переменную, чтобы перемещать информацию, или установите local_variable из другого скрипта, используя вышеприведенный пример. if ( anotherobject.x > 0 ) работает.Более того, недавно я осознал, что подобный синтаксис работает и для глобальных скриптов: set Global_script_name.variable to 1 Это полезно, чтобы избежать большого количества глобальных переменных или для отладки глобальных скриптов в консоли. Ссылка на комментарий Поделиться на другие сайты Поделиться
Argonat Опубликовано 15 февраля, 2010 Автор Жалоба Поделиться Опубликовано 15 февраля, 2010 100% ... собсна в том и суть... если он заражен гемофилией то запускается скрипт, который остановится только если успеть вылечитьсяЯсно, а вобщем надоли усложнять скрипт? Т.е. чтобы заражение шло не через обычный сон, а через "сон до рассвета"? bi-666 Спасибо за помощь. Но тут то надо наоборот - из локального в глобальный... хотя можно попробовать. Ссылка на комментарий Поделиться на другие сайты Поделиться
Цернон Опубликовано 15 февраля, 2010 Жалоба Поделиться Опубликовано 15 февраля, 2010 (изменено) Ясно, а вобщем надоли усложнять скрипт? Т.е. чтобы заражение шло не через обычный сон, а через "сон до рассвета"?Вобщем короче.. не ломай мозг себе... сделай просто чтобы зараженный не мог спать до утра и сообщение "Зараза в вашей крови внушает вам страх перед рассветом. Вам не удаётся заснуть с мыслями о нём." а для вампира сделай кнопку "спать до рассвета" Изменено 15 февраля, 2010 пользователем Цернон Ссылка на комментарий Поделиться на другие сайты Поделиться
bi-666 Опубликовано 15 февраля, 2010 Жалоба Поделиться Опубликовано 15 февраля, 2010 Кстати, а что, если просто сделать кнопки "спанья до вечера" и "спанья до утра" вне зависимости от вампиризма игрока? Ибо игрока предупреждают (в Храмах, если не ошбаюсь), что вампирам опасно появляться на солнце - пусть игрок думает перед тем, как нажимать на кнопку... Ссылка на комментарий Поделиться на другие сайты Поделиться
Цернон Опубликовано 15 февраля, 2010 Жалоба Поделиться Опубликовано 15 февраля, 2010 ох.. я совсем забыл, что надо повесить в скрипт команду, которая не будет давать "спать до утра/ вечера" если герой теряет здоровье, это архиважно Ссылка на комментарий Поделиться на другие сайты Поделиться
Foreigner Опубликовано 15 февраля, 2010 Жалоба Поделиться Опубликовано 15 февраля, 2010 ох.. я совсем забыл, что надо повесить в скрипт команду, которая не будет давать "спать до утра/ вечера" если герой теряет здоровье, это архиважноЗачем это? При обычном сне этого никто не запрещает... Хотя, если умереть при затемнении, оно вроде бы остаётся даже при перезагрузне, нэ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Boma Kuro Опубликовано 15 февраля, 2010 Жалоба Поделиться Опубликовано 15 февраля, 2010 if ( anotherobject.x > 0 ) работает.Хм. Ясно, а вобщем надоли усложнять скрипт? Т.е. чтобы заражение шло не через обычный сон, а через "сон до рассвета"?Ну а почему бы и нет? Попробовать стоит. Но тут то надо наоборот - из локального в глобальный...Почему? Надо именно из глобального VampireCheck вытащить переменную в твой локальный... ... сделай просто чтобы зараженный не мог спать до утра и сообщение "Зараза в вашей крови внушает вам страх перед рассветом. Вам не удаётся заснуть с мыслями о нём." а для вампира сделай кнопку "спать до рассвета"Это не труъ, хех.Заражение вампиризмом наоборот специально так сделанно, что бы ВНЕЗАПНО превратиться во сне. Ссылка на комментарий Поделиться на другие сайты Поделиться
Цернон Опубликовано 16 февраля, 2010 Жалоба Поделиться Опубликовано 16 февраля, 2010 Это не труъ, хех.Заражение вампиризмом наоборот специально так сделанно, что бы ВНЕЗАПНО превратиться во сне. Уважаемый, да не об том же речь... он же внезапно превратится если будет спать, а в данном случае "сон до рассвета" это как бе не сон (не Rest), а значит зараженный может так мотать многие дни, а вампиром так и не станет, а все будет с гемофилией ходить, покуда наконец просто не поспит пару часов Ссылка на комментарий Поделиться на другие сайты Поделиться
Boma Kuro Опубликовано 16 февраля, 2010 Жалоба Поделиться Опубликовано 16 февраля, 2010 он же внезапно превратится если будет спать, а в данном случае "сон до рассвета" это как бе не сон (не Rest), а значит зараженный может так мотать многие дни, а вампиром так и не станет, а все будет с гемофилией ходить, покуда наконец просто не поспит пару часовНу, а вот надо сделать так, что бы сон до рассвета полностью эмулировал Rest, имхо. Хех.А в общем-то я про то, что сообщения типа "зараза в вашей крови..." - это не дело, не надо объяснять игроку, что с ним что-то не так, сам догадываться должен. Ссылка на комментарий Поделиться на другие сайты Поделиться
Argonat Опубликовано 16 февраля, 2010 Автор Жалоба Поделиться Опубликовано 16 февраля, 2010 (изменено) ох.. я совсем забыл, что надо повесить в скрипт команду, которая не будет давать "спать до утра/ вечера" если герой теряет здоровье, это архиважноА что значит теряет здоровье? Каогда вампир на солнце?Хотя, если умереть при затемнении, оно вроде бы остаётся даже при перезагрузне, нэ?Вроде все нормально. Ну, а вот надо сделать так, что бы сон до рассвета полностью эмулировал Rest, имхо. Хех.А в общем-то я про то, что сообщения типа "зараза в вашей крови..." - это не дело, не надо объяснять игроку, что с ним что-то не так, сам догадываться должен.Выкладываю пока обновление с исправленными вампирами. Пока просто через меню сна, надпись я сделал нейтральную ("Смутное беспокойство не дает вам спокойно поспать до рассвета") я и сам думаю, что игрока не стоит предупреждать открыто. Пойдет наверное?А вот насчет полной эмуляции Rest. Надо же из моего в глобальный VampireCheck передать количество проспаных дней (3 дня), а из него в мой - разбудить игрока. Так вроде? (что-то я запутался ) Проще, наверно оригинальный скрипт подредактировать, но это наверно плохо будет. P.S. А оборотни нормально спят и переваплащаются?Marching.rar Изменено 16 февраля, 2010 пользователем Argonat Ссылка на комментарий Поделиться на другие сайты Поделиться
Boma Kuro Опубликовано 16 февраля, 2010 Жалоба Поделиться Опубликовано 16 февраля, 2010 А вот насчет полной эмуляции Rest. Надо же из моего в глобальный VampireCheck передать количество проспаных дней (3 дня), а из него в мой - разбудить игрока. Так вроде? (что-то я запутался )Не, не так - что делал игрок за эти три дня, значения никакого не имеет вовсе, спал он, не спал - не важно.Когда игрок подцепляет гемофилию, запускается счетчик дней и считает до трех. Когда проходит три дня, скрипт начинает отслеживать, не спит ли игрок, и если спит - превращает его в вампира.Так что надо просто отследить эти самые три дня. Оптимальным способом было бы взять их из VampireCheck... Хм, можно даже вот так попробовать - поставить после DisablePlayerControls следующее:if ( VampireCheck.dayCount >= 3 ) set VampireCheck.state to 10 return endifСудя по цитате из MSFD, должно работать... Ссылка на комментарий Поделиться на другие сайты Поделиться
Argonat Опубликовано 16 февраля, 2010 Автор Жалоба Поделиться Опубликовано 16 февраля, 2010 Хм, можно даже вот так попробовать - поставить после DisablePlayerControls следующее:if ( VampireCheck.dayCount >= 3 ) set VampireCheck.state to 10 return endifСудя по цитате из MSFD, должно работать...Так не работает что-то. Разве что сам скрипт VampireCheck подправить. P.S. Приложил esp может кто еще в игре попробует на всякий случай.Marching.esp Ссылка на комментарий Поделиться на другие сайты Поделиться
Boma Kuro Опубликовано 16 февраля, 2010 Жалоба Поделиться Опубликовано 16 февраля, 2010 Так не работает что-то. Разве что сам скрипт VampireCheck подправить. Мм, ошибку выдает? Ссылка на комментарий Поделиться на другие сайты Поделиться
Argonat Опубликовано 16 февраля, 2010 Автор Жалоба Поделиться Опубликовано 16 февраля, 2010 Мм, ошибку выдает?Да нет, собщений об ошипках нет, просто не превращается. Ссылка на комментарий Поделиться на другие сайты Поделиться
Foreigner Опубликовано 16 февраля, 2010 Жалоба Поделиться Опубликовано 16 февраля, 2010 (изменено) А что если скрипт VampireCheck продублировать? if ( VampireCheck.dayCount >= 3 ) MessageBox "Мне снилась светловолосая дева. Я подошел и увидел, что она плачет, но ее слезы красны, как кровь. Я прикоснулся к ее слезам и попробовал их на вкус - они были чудесно соленые, острые и пряные. Но лицо девы изменилось, ее кожа стала серовато-белой, а красные слезы капали из ее губ, и ее волосы стали черными, и свивались вокруг ее головы, как змеи. Я испугался, но не мог бежать. Я закричал и проснулся с колотящимся, сжимающимся, пульсирующим болью сердцем.", "Готово" if ( player->GetSpell "Vampire Blood Quarra" == 1 ) StartScript Vampire_Quarra_PC elseif ( player->GetSpell "Vampire Blood Aundae" == 1 ) StartScript Vampire_Aundae_PC elseif ( player->GetSpell "Vampire Blood Berne" == 1 ) StartScript Vampire_Berne_PC endif StopScript VampireCheck endif Вот, теперь точно так. Изменено 16 февраля, 2010 пользователем Foreigner Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти