Перейти к содержанию

Рекомендуемые сообщения

ахаха... ну теперь ваше вынос мозга :megalol:

Супер спальник, который дает добрые советы :)))

Ааааа!!! Я забыл исправить вторую половинку скрипта. :rofl:

Выкинь совсем сообщение про "вам лучше спать на обычной кровати"

Про запас оставлял. :jokingly: А как думаешь, игрока как нибудь предупреждать надо, что для него в данный момент эта возможность недоступна?

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 145
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

да вот тут покумекать надо...

подумал, вот есть стандартный скрипт. который управляет превращением в вампира:

 

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 currentDay

short dayCount

short hasDisease

short 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

return

endif

 

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

endif

endif

 

 

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

 

 

отсюда вывод: надо к твоему скрипту к команде спать до утра прикрутить команду, которая действительно заставляет спать ...

Изменено пользователем Цернон
Ссылка на комментарий
Поделиться на другие сайты

отсюда вывод: надо к твоему скрипту к команде спать до утра прикрутить команду, которая действительно заставляет спать ...

Да я так уже по твоему совету и сделал, я собсно спрашивал. Надо ли игрока сообщением предупреждать, что для него в данный момент недоступна возможность использовать функцию спать до у тра и он вручную должен задавать время? (немного коряво, но надеюсь понятно). :jokingly:

P.S. А к чему этот скрипт?

Ссылка на комментарий
Поделиться на другие сайты

Надо ли игрока сообщением предупреждать, что для него в данный момент недоступна возможность использовать функцию спать до у тра и он вручную должен задавать время? (немного коряво, но надеюсь понятно). :jokingly:

Кстати, можно при сне до утра вампиром "пробуждать" игрока ночью, когда искомый сон (из оригинального скрипта) пришел. А потм можно заменить "спать до утра" на "спать до заката/вечера" - несложно ведь.

Ссылка на комментарий
Поделиться на другие сайты

хех... ну да меня понять трудно.. щас изложу идею так:

можно переделать все вообще:

нужно чтобы в опции "спать до утра" герой именно спал (т.е. запускался бы сон на некоторое время, которого не хватает до утра, которое скрипт бы выщитывал)

Тада это убирает все проблемы с вампирами

это был бы самый оптимальный вариант.

Менее оптимальный, оставить как есть (т.е. не давать больному гемофилией венценосных спать до утра), тада сделать предупреждение типа "сейчас вы не можете спать до утра" и активировать showRestMenu

Ссылка на комментарий
Поделиться на другие сайты

Да я так уже по твоему совету и сделал, я собсно спрашивал. Надо ли игрока сообщением предупреждать, что для него в данный момент недоступна возможность использовать функцию спать до утра и он вручную должен задавать время? (немного коряво, но надеюсь понятно). :jokingly:

 

"Зараза в вашей крови внушает вам страх перед рассветом. Вам не удаётся заснуть с мыслями о нём."

Ссылка на комментарий
Поделиться на другие сайты

Кстати, можно при сне до утра вампиром "пробуждать" игрока ночью, когда искомый сон (из оригинального скрипта) пришел. А потм можно заменить "спать до утра" на "спать до заката/вечера" - несложно ведь.

Да этот вариант уже запланирован. :yess:

хех... ну да меня понять трудно.. щас изложу идею так:

можно переделать все вообще:

нужно чтобы в опции "спать до утра" герой именно спал (т.е. запускался бы сон на некоторое время, которого не хватает до утра, которое скрипт бы выщитывал)

Тада это убирает все проблемы с вампирами

это был бы самый оптимальный вариант.

Да это сразу бы решило все проблемы, но у мнея этого не получилось. :dontknow:

Менее оптимальный, оставить как есть (т.е. не давать больному гемофилией венценосных спать до утра), тада сделать предупреждение типа "сейчас вы не можете спать до утра" и активировать showRestMenu

Собсно об этом предупреждении и речь.

 

"Зараза в вашей крови внушает вам страх перед рассветом. Вам не удаётся заснуть с мыслями о нём."

Это класно имено что то такое и надо, но только стоит ли предупреждать игрока о болезни? Это лорно ;-) (а то в оригинале этого нет)

Ссылка на комментарий
Поделиться на другие сайты

нужно чтобы в опции "спать до утра" герой именно спал (т.е. запускался бы сон на некоторое время, которого не хватает до утра, которое скрипт бы выщитывал)
Не получится так, вроде - насколько помню, нет такой функции, что бы насильно заставить игрока спать.

 

Хм, а будет ли такой синтаксис будет работать?

if ( VampireCheck.dayCount >= 3 )

Если да, то все просто - проверяем у игрока налачие гемофилии, если есть - проверяем эту строчку, и запускаем превращение игрока в вампира, скопированное из VampireCheck.

 

Если же так не получится, придется что-то изворотливое выдумывать...

Ссылка на комментарий
Поделиться на другие сайты

Хм, а будет ли такой синтаксис будет работать?

if ( VampireCheck.dayCount >= 3 )

Если да, то все просто - проверяем у игрока налачие гемофилии, если есть - проверяем эту строчку, и запускаем превращение игрока в вампира, скопированное из VampireCheck.

А так разве можно? Я ничего подобного в MSFD не видел. :dontknow:

Если же так не получится, придется что-то изворотливое выдумывать...

Да, думаю можно что-нибудь придумать, НО вроде бы вероятность того что игрок станет вампиром после заражения гемофилией не 100%? (даже если он не вылечиться?) И придется все усложнять, что не хотелось бы. :dontknow:

Ссылка на комментарий
Поделиться на другие сайты

Да, думаю можно что-нибудь придумать, НО вроде бы вероятность того что игрок станет вампиром после заражения гемофилией не 100%? (даже если он не вылечиться?) И придется все усложнять, что не хотелось бы. :dontknow:

100% ... собсна в том и суть... если он заражен гемофилией то запускается скрипт, который остановится только если успеть вылечиться

Ссылка на комментарий
Поделиться на другие сайты

Я ничего подобного в MSFD не видел. :dontknow:

Таки не совсем.

Использование переменных в других локальных скриптах и объектах

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

 

Это полезно, чтобы избежать большого количества глобальных переменных или для отладки глобальных скриптов в консоли.

 

 

Ссылка на комментарий
Поделиться на другие сайты

100% ... собсна в том и суть... если он заражен гемофилией то запускается скрипт, который остановится только если успеть вылечиться

Ясно, а вобщем надоли усложнять скрипт? Т.е. чтобы заражение шло не через обычный сон, а через "сон до рассвета"?

 

bi-666 Спасибо за помощь. Но тут то надо наоборот - из локального в глобальный... хотя можно попробовать. :dontknow:

Ссылка на комментарий
Поделиться на другие сайты

Ясно, а вобщем надоли усложнять скрипт? Т.е. чтобы заражение шло не через обычный сон, а через "сон до рассвета"?

Вобщем короче.. не ломай мозг себе... сделай просто чтобы зараженный не мог спать до утра и сообщение "Зараза в вашей крови внушает вам страх перед рассветом. Вам не удаётся заснуть с мыслями о нём." а для вампира сделай кнопку "спать до рассвета"

Изменено пользователем Цернон
Ссылка на комментарий
Поделиться на другие сайты

Кстати, а что, если просто сделать кнопки "спанья до вечера" и "спанья до утра" вне зависимости от вампиризма игрока? Ибо игрока предупреждают (в Храмах, если не ошбаюсь), что вампирам опасно появляться на солнце - пусть игрок думает перед тем, как нажимать на кнопку...
Ссылка на комментарий
Поделиться на другие сайты

ох.. я совсем забыл, что надо повесить в скрипт команду, которая не будет давать "спать до утра/ вечера" если герой теряет здоровье, это архиважно
Ссылка на комментарий
Поделиться на другие сайты

ох.. я совсем забыл, что надо повесить в скрипт команду, которая не будет давать "спать до утра/ вечера" если герой теряет здоровье, это архиважно

Зачем это? При обычном сне этого никто не запрещает... Хотя, если умереть при затемнении, оно вроде бы остаётся даже при перезагрузне, нэ?

Ссылка на комментарий
Поделиться на другие сайты

if ( anotherobject.x > 0 )

 

работает.

Хм.

 

Ясно, а вобщем надоли усложнять скрипт? Т.е. чтобы заражение шло не через обычный сон, а через "сон до рассвета"?
Ну а почему бы и нет? Попробовать стоит.

 

Но тут то надо наоборот - из локального в глобальный...
Почему? Надо именно из глобального VampireCheck вытащить переменную в твой локальный...

 

... сделай просто чтобы зараженный не мог спать до утра и сообщение "Зараза в вашей крови внушает вам страх перед рассветом. Вам не удаётся заснуть с мыслями о нём." а для вампира сделай кнопку "спать до рассвета"
Это не труъ, хех.

Заражение вампиризмом наоборот специально так сделанно, что бы ВНЕЗАПНО превратиться во сне.

Ссылка на комментарий
Поделиться на другие сайты

Это не труъ, хех.

Заражение вампиризмом наоборот специально так сделанно, что бы ВНЕЗАПНО превратиться во сне.

 

Уважаемый, да не об том же речь... он же внезапно превратится если будет спать, а в данном случае "сон до рассвета" это как бе не сон (не Rest), а значит зараженный может так мотать многие дни, а вампиром так и не станет, а все будет с гемофилией ходить, покуда наконец просто не поспит пару часов

Ссылка на комментарий
Поделиться на другие сайты

он же внезапно превратится если будет спать, а в данном случае "сон до рассвета" это как бе не сон (не Rest), а значит зараженный может так мотать многие дни, а вампиром так и не станет, а все будет с гемофилией ходить, покуда наконец просто не поспит пару часов
Ну, а вот надо сделать так, что бы сон до рассвета полностью эмулировал Rest, имхо. Хех.

А в общем-то я про то, что сообщения типа "зараза в вашей крови..." - это не дело, не надо объяснять игроку, что с ним что-то не так, сам догадываться должен.

Ссылка на комментарий
Поделиться на другие сайты

ох.. я совсем забыл, что надо повесить в скрипт команду, которая не будет давать "спать до утра/ вечера" если герой теряет здоровье, это архиважно

А что значит теряет здоровье? Каогда вампир на солнце?

Хотя, если умереть при затемнении, оно вроде бы остаётся даже при перезагрузне, нэ?

Вроде все нормально. :da:

Ну, а вот надо сделать так, что бы сон до рассвета полностью эмулировал Rest, имхо. Хех.

А в общем-то я про то, что сообщения типа "зараза в вашей крови..." - это не дело, не надо объяснять игроку, что с ним что-то не так, сам догадываться должен.

Выкладываю пока обновление с исправленными вампирами. Пока просто через меню сна, надпись я сделал нейтральную ("Смутное беспокойство не дает вам спокойно поспать до рассвета") я и сам думаю, что игрока не стоит предупреждать открыто. Пойдет наверное?

А вот насчет полной эмуляции Rest. Надо же из моего в глобальный VampireCheck передать количество проспаных дней (3 дня), а из него в мой - разбудить игрока. Так вроде? (что-то я запутался :dontknow: ) Проще, наверно оригинальный скрипт подредактировать, но это наверно плохо будет. :scratch:

P.S. А оборотни нормально спят и переваплащаются?

Marching.rar

Изменено пользователем Argonat
Ссылка на комментарий
Поделиться на другие сайты

А вот насчет полной эмуляции Rest. Надо же из моего в глобальный VampireCheck передать количество проспаных дней (3 дня), а из него в мой - разбудить игрока. Так вроде? (что-то я запутался :dontknow: )
Не, не так - что делал игрок за эти три дня, значения никакого не имеет вовсе, спал он, не спал - не важно.

Когда игрок подцепляет гемофилию, запускается счетчик дней и считает до трех. Когда проходит три дня, скрипт начинает отслеживать, не спит ли игрок, и если спит - превращает его в вампира.

Так что надо просто отследить эти самые три дня. Оптимальным способом было бы взять их из VampireCheck...

 

Хм, можно даже вот так попробовать - поставить после DisablePlayerControls следующее:

if ( VampireCheck.dayCount >= 3 )
set VampireCheck.state to 10
return
endif

Судя по цитате из MSFD, должно работать...

Ссылка на комментарий
Поделиться на другие сайты

Хм, можно даже вот так попробовать - поставить после DisablePlayerControls следующее:

if ( VampireCheck.dayCount >= 3 )
set VampireCheck.state to 10
return
endif

Судя по цитате из MSFD, должно работать...

Так не работает что-то. Разве что сам скрипт VampireCheck подправить. :dontknow:

P.S. Приложил esp может кто еще в игре попробует на всякий случай.

Marching.esp

Ссылка на комментарий
Поделиться на другие сайты

А что если скрипт 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

 

Вот, теперь точно так.

Изменено пользователем Foreigner
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...