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

FAQ-Тема для простых вопросов - "Что? Где? Как?"


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

Скрипт внизу вешается на дверь. Когда эту дверь активируешь, при условии что на игроке эффект хамелеона < 60п, то игроку должна добавиться запись в журнал, и Сирилонве должна начать диалог с игроком. Но проблема в том, что даже если у игрока хамелеон > 60п, то запись и диалог все равно происходят. А должно просто открывать дверь.

 

Begin MG_sirilonwe_script

short once

if (once == 0)
if ( OnActivate ==  1)
	if ( GetJournalIndex MG_StealBook == 10 )
		if ( player->GetEffect, sEffectChameleon < 60 ) ; Пробовал и if ( GetChameleon, Player < 60 )
	Journal MG_StealBook 50
Set once to 1
Sirilonwe->Forcegreeting
		endif
	endif
endif
endif

if (once == 1)
if (OnActivate == 1)
Activate
endif
endif

End

 

В чем дело?

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

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

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

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

Изображения в теме

Попробуй проверку на хамелеон первым условием. У компа после n ифов могут начаться глюки.
Ссылка на комментарий
Поделиться на другие сайты

Блин. Вы у кого хамелеон проверяете?! У двери, на которой скрипт висит. А у нее хамелеон 0.

Нужно player->GetChameleon.

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

Дак разве "GetChameleon, Player" не одно и то же?

Так, спасибо, теперь правда при наличие на игроке эффекта выше 60 п - дверь просто не открывается, но это уже легко решить :)

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

  • 3 недели спустя...

Можно криворуко сделать.

short nlevel

if ( player->getlevel > nlevel )

set nlevel to player->getlevel

MessageBox "Уровень изменился"

endif

> можно заменить !=, но тогда при понижении уровня будет появляться сообщение.

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

В таком виде скрипт не работает и даже не сохраняется (ругается CS)

Но ты навёл меня на мысль, спасибо.

Скрипт проверяет уровень таким образом: где nlevel -глобальная short переменная

begin Bed_Standard

if ( MenuMode == 0)

if ( OnActivate == 1 )

ShowRestMenu

if ( player->getlevel > nlevel )

set nlevel to nlevel+1

endif

if ( nlevel == 1 )

MessageBox "Уровень 2"

elseif ( nlevel == 2 )

MessageBox "Уровень 3"

endif

endif

endif

end

P.S. Ещё раз спасибо

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

В таком виде скрипт не работает и даже не сохраняется (ругается CS)

Begin

end я не ставил.

if ( player->getlevel > nlevel )

set nlevel to nlevel+1

endif

Лучше while и endwhile, чтобы nlevel сразу стал равен getlevel. Или каждый фрейм плюс левел, т.е. придется кликнуть раз по getlevel.

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

  • 2 недели спустя...
Быстрый вопрос! Как записать команду, чтобы отнять от глобальной переменной -1? Modify и mod не работают. Нужно для скриптов чтобы активация всех приносила нужный результат глобальной переменной, вне зависимости от очередности активации.
Ссылка на комментарий
Поделиться на другие сайты

Такие вот чисто теоретические вопросы из раздела "а возможно ли?":

 

Первый - можно ли сделать такую штуку:

1. Покупаешь предмет.

2. В любом месте активируешь его.

3. Дома кладёшь его на полку, он превращается в активатор.

4. При активации он перемещает туда, где был активирован в пункте 2, отнимая немного маны.

 

Второй - возможно ли:

1. Есть кричер/непись.

2. Как и любой кричер/непись он в бою получает урон.

3. Но его невозможно вылечить зельями и/или заклом восстановления.

4. Зато он лечится обрезками металла и кожей даэдра.

5. При критическом уроне он не умирает (он вообще неубиваем), но замирает и не сдвинется, пока не починишь.

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

Чтобы перемещался без MWSE не сделать. CS использует локальные переменные или же нужно айди цели. А в оригинальном Морре не сделать.

1/3 возможно сделать.

Можно проверять, если хитов больше, значит -- зелье/спелл. Возвращаем хиты к прежнему состоянию. Если меньше, то ничего не будет делать.

При съедании вначале увеличиваем переменную с хитами, потом лечим здоровье.

Т.е. возможно, правда, криво.

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

на сколько корректна такая ситуация:

bla-bla-bla

Set My_var to ( Player-> GetItemCount "My_apparatus" )
if ( GetDistance -> Player >= XXX )
if ( My_var != 0 )
	Player -> Drop "My_apparatus", My_var
endif
endif

bla-bla-bla

 

Мне не удается удалить "My_apparatus" из инвентаря, хотя на пол но падает исправно, в чем фишка?

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

А строку с Disable прописать? Или через RemoveItem? Изменено пользователем _aL_
Ссылка на комментарий
Поделиться на другие сайты

А строку с Disable прописать? Или через RemoveItem?

 

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

ЗЫ: с RemoveItem та же беда... мессагу выдает, что все убито, а вещи в инвентаре.... :(

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

Хм. У тебя другим скриптом не добавляется этот предмет в инвентарь?

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

MSFD 7.0 гласит, что да.

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

Хм. У тебя другим скриптом не добавляется этот предмет в инвентарь?

 

MSFD 7.0 гласит, что да.

 

Нет, смысл скрипта в том, чтобы не было возможности вынести из локации данный предмет(ы). Они добавлены в мир ч\з редактор, на самих предметах скрипта нет, а данный находится на активаторе... Не только MSFD 7.0 но и 8.1

ЗЫ может ли проблема быть в том, что Морр в реестре не зареган? (просто скопировал директорию с Морром и НоСД)

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

ЗЫ может ли проблема быть в том, что Морр в реестре не зареган? (просто скопировал директорию с Морром и НоСД)

Вряд ли.

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

Вряд ли.

 

Ну и что тогда за ....ня?http://fullrest.ru/forum/public/style_emoticons/default/107.gifhttp://fullrest.ru/forum/public/style_emoticons/default/74.gifhttp://fullrest.ru/forum/public/style_emoticons/default/96.gifhttp://fullrest.ru/forum/public/style_emoticons/default/new%20(11).gif

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

А если после дропа сделать проверку на наличие предмета в инве, а только затем прописать строчку с ремовитемом?
Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Хелп. xP

 

Begin DoorShelf

 

Short OpenState

 

if (MenuMode == 1)

return

endif

 

if ( OpenState == 0 )

if ( OnActivate == 1 )

Rotate x, -30

Set OpenState to 1

PlaySound3D "Crystal Ringing", 1.0, 1.0

Endif

endif

 

if ( OpenState == 1 )

if ( OnActivate == 1 )

Rotate x, 30

Set OpenState to 0

PlaySound3D "Crystal Ringing", 1.0, 1.0

Endif

Endif

 

end

 

Что не так? Дверь смещается на 1 градус, а не на нужные 30. :'-( Нужен именно быстрый ответ, какой команды не хватает. Либо подскажите каким образом заставить дверь в морровинде открываться строго НАружу, К игроку, а не внутрь, от игрока. Открывается упорно дверь шкафа внутрь, проходя сквозь полки.(((

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

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

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

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

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

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

Войти

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

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

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