• Добро пожаловать, Гость. Войдите или зарегистрируйтесь.

Автор Тема: Как определить дистанцию до существа?  (Прочитано 3109 раз)

Описание:

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн da-kornev

  • *
  • Сообщений: 59
  • Репутация: 0
    • Просмотр профиля
0
Такой вопрос, мне нужно сделать следующий скрипт - если существо с конкретным EditorId оказывалось на определенном расстоянии от игрока срабатывл-бы скрипт. Getdistance не подходит, т.к там определяется расстояние до конкретной особи, а не для ысего вида в целом.

Оффлайн Visman

  • *
  • Сообщений: 185
  • Репутация: 0
  • Пол: Мужской
    • Просмотр профиля
    • AllTES: Плагины и моды
Re: Как определить дистанцию до существа?
« Ответ #1 : 07 Декабрь, 2008, 06:18:13 »
0
Помести скрипт на это существо (на оригинал) и определяй в нем расстояние до игрока Getdistance Player.
И ни каких проблем :)
Вам не кажется, что plаygrоund.ru есть синоним слову ворье?

Оффлайн da-kornev

  • *
  • Сообщений: 59
  • Репутация: 0
    • Просмотр профиля
Re: Как определить дистанцию до существа?
« Ответ #2 : 07 Декабрь, 2008, 11:47:20 »
0
В принципе, можно, проблема только в одном - мне нужно повесить этот скрипт на определенный предмет, одеваемый игроком. то есть придется править всех зверюг, добавляя им абилитку с соответствующим скриптом, что не есть гуд.
Но за идею спасибо!

Оффлайн Visman

  • *
  • Сообщений: 185
  • Репутация: 0
  • Пол: Мужской
    • Просмотр профиля
    • AllTES: Плагины и моды
Re: Как определить дистанцию до существа?
« Ответ #3 : 07 Декабрь, 2008, 13:05:55 »
0
Пусть твой предмет при одевании на игрока изменяет глобальную переменную на 1, а при снятии - на 0. Тогда скрипты на животных (или НПС) будут смотреть на эту переменную и при ее значении = 1 работать.
Если скрипты на них нельзя повесить, то попробуй заклинания скриптовые (типа способность) на животных (или НПС) разместить.
Вам не кажется, что plаygrоund.ru есть синоним слову ворье?

Оффлайн da-kornev

  • *
  • Сообщений: 59
  • Репутация: 0
    • Просмотр профиля
Re: Как определить дистанцию до существа?
« Ответ #4 : 07 Декабрь, 2008, 13:20:13 »
0
Спасибо, вот только зачем заморочки с глобалками? ведь отследить, что одето на игроке, можно и по
GetEquipped?

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

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

У меня получилось нечто такое

Цитировать (выделенное)
scriptname 1WitcherAlchemy


Begin Onequip
Short rabota
short button

set button to -1
set rabota to -1

MessageBox "Пожалуйста,закройте все меню"

if (Menumode==0)

   MessageBox "Какой состав вы хотите пригодовить?","Стандартный","Ведьмачий","Готово"
   set rabota to getbuttonpressed
   
   

if rabota==1
   MessageBox "Какой состав вы хотите пригодовить?","Ласточка","Кошка","Волк","Филин","Назад","Готово"
   set button to getbuttonpressed
endif
   
if(rabota==1 && button ==4)
   set button to -1
   set rabota to -1
   return

elseif(rabota==1 && button==0)
   if(getglobalvalue 1lastocka==1)
      if(player.getitemcount 1mortarpestlemaster>=1)
            if(player.getactorvalue alchemy >=10)
               if(player.getitemcount MandrakeRoot>=2)
               player.removeitem MandrakeRoot,2
               player.additem 1WitcherLastochka,1
            else
               MessageBox "У вас нет необходимых ингредиентов"
            endif
            else   
         MessageBox "Ваши познания в области алхимии недостаточны"
         endif
      else
      MessageBox "У вас нет необходимых инструментов"
      endif
   else
   MessageBox "Вы не знаете точного состава"
      set button to -1
   endif

elseif(rabota==1 && button==1)
   if(getglobalvalue 1cat==1)
      if(player.getitemcount 1mortarpestlemaster>=1 && player.getitemcount 1AlembicMaster>=1)
            if(player.getactorvalue alchemy >=30)
               if(player.getitemcount Radish>=1 && player.getitemcount MandrakeRoot>=1 && WormwoodLeaves>=1)
               player.removeitem MandrakeRoot,1
               player.removeitem Radish,1
               player.removeitem WormwoodLeaves,1
               player.additem 1WitcherKoshka,1
            else
               MessageBox "У вас нет необходимых ингредиентов"
            endif
            else   
         MessageBox "Ваши познания в области алхимии недостаточны"
         endif
      else
      MessageBox "У вас нет необходимых инструментов"
      endif
   else
   MessageBox "Вы не знаете точного состава"
      set button to -1
   endif

elseif(rabota==1 && button==2)
   if(getglobalvalue 1volk==1)
      if(player.getitemcount 1mortarpestlemaster>=1 && player.getitemcount 1AlembicMaster>=1 && player.getitemcount 1RetortMaster>=1 && player.getitemcount 1CalcinatorMaster>=1)
            if(player.getactorvalue alchemy >=60)
               if(player.getitemcount Radish>=1 && player.getitemcount GreenStainShelfCap>=1 && player.getitemcount SpiddalStick>=1)
               player.removeitem Radish,1
               player.removeitem GreenStainShelfCap,1
               player.removeitem SpiddalStick,1
               player.additem 1WitcherVolk,1
               player.additem 1WitcherKoshka,1
            else
               MessageBox "У вас нет необходимых ингредиентов"
            endif
            else   
         MessageBox "Ваши познания в области алхимии недостаточны"
         endif
      else
      MessageBox "У вас нет необходимых инструментов"
      endif
   else
   MessageBox "Вы не знаете точного состава"
      set button to -1
   endif

elseif(rabota==1 && button==3)
   if(getglobalvalue 1volk==1)
      if(player.getitemcount 1mortarpestlemaster>=1 && player.getitemcount 1AlembicMaster>=1 && player.getitemcount 1RetortMaster>=1 && player.getitemcount 1CalcinatorMaster>=1)
            if(player.getactorvalue alchemy >=60)
               if(player.getitemcount MandrakeRoot>=1 && player.getitemcount Radish>=1 && player.getitemcount GreenStainShelfCap>=1 && player.getitemcount SpiddalStick>=1)
               player.removeitem Radish,1
               player.removeitem GreenStainShelfCap,1
               player.removeitem MandrakeRoot,1
               player.removeitem SpiddalStick,1
               player.additem 1Witcherfilin,1
            else
               MessageBox "У вас нет необходимых ингредиентов"
            endif
            else   
         MessageBox "Ваши познания в области алхимии недостаточны"
         endif
      else
      MessageBox "У вас нет необходимых инструментов"
      endif
   else
   MessageBox "Вы не знаете точного состава"
      set button to -1
   endif

else
return
endif



endif
End

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

Оффлайн Visman

  • *
  • Сообщений: 185
  • Репутация: 0
  • Пол: Мужской
    • Просмотр профиля
    • AllTES: Плагины и моды
Re: Как определить дистанцию до существа?
« Ответ #5 : 07 Декабрь, 2008, 15:20:25 »
0
Вот это "if (Menumode==0)" у меня вызывает ассоциацию с Морроувиндом :)
Попробуй в блоке
Begin Onequip
...
End
выводить только сообщение "Пожалуйста,закройте все меню" и включать флаг (изменить состояние определенной переменной) использования предмета
А уже в блоке
Begin GameMode
...
End
смотреть на эту переменную и если она сигнализирует о том, что предмет пытались использовать выводить меню для выбора нужного зелья.
Также я думаю надо использовать не инвентарь алхимика (хоть новый), а предметы так скажем из прочих т.е. misc.
Если хочешь делать только новые зелья, то работает только скрит, если хочешь работать со стандартными ингредиентами, то в инвентарь добавляются настоящее алхимическое оборудование и оно используется, а после использования сразу удаляется.
З.Ы. Сам уже запутался в своих мыслях.
Вам не кажется, что plаygrоund.ru есть синоним слову ворье?

Оффлайн da-kornev

  • *
  • Сообщений: 59
  • Репутация: 0
    • Просмотр профиля
Re: Как определить дистанцию до существа?
« Ответ #6 : 07 Декабрь, 2008, 15:32:31 »
0
Спасибо, кстати я так и делаю, просто изменил ID алхимичиским приблудам,  соответственно записал их как новые элементы, и все, при активацмм вылезает алхимическое меню, не знаю как убить ;)

Оффлайн Visman

  • *
  • Сообщений: 185
  • Репутация: 0
  • Пол: Мужской
    • Просмотр профиля
    • AllTES: Плагины и моды
Re: Как определить дистанцию до существа?
« Ответ #7 : 07 Декабрь, 2008, 17:58:39 »
0
Новые приблуды нужно делать не алхимическими инструментами, а прочими вещами.
Все остальное у тебя должен делать скрипт висящий на них.
Вам не кажется, что plаygrоund.ru есть синоним слову ворье?

Оффлайн da-kornev

  • *
  • Сообщений: 59
  • Репутация: 0
    • Просмотр профиля
Re: Как определить дистанцию до существа?
« Ответ #8 : 08 Декабрь, 2008, 14:15:22 »
0
Понял, а как вызвать алхимическое меню скриптом? в ОСФМ я ничего похожего не видел

Оффлайн Visman

  • *
  • Сообщений: 185
  • Репутация: 0
  • Пол: Мужской
    • Просмотр профиля
    • AllTES: Плагины и моды
Re: Как определить дистанцию до существа?
« Ответ #9 : 08 Декабрь, 2008, 18:22:31 »
0
В "Volengrad Castle / Замок Воленград" сделано так (на столе скрипт висит :) ):
short Doonce

Begin OnActivate
   Set DoOnce to 0
      if(IsActionRef player == 1)
         Player.AddItem 0101A0ED, 1
         Player.AddItem 0101A0EE, 1
         Player.AddItem 0101A0EF, 1
         Player.AddItem 0101A0F0, 1
         Player.EquipItem 0101A0EF
      endif
End

Begin GameMode
      if( Doonce == 0 )
         Player.RemoveItem 0101A0ED, 1
         Player.RemoveItem 0101A0EE, 1
         Player.RemoveItem 0101A0EF, 1
         Player.RemoveItem 0101A0F0, 1
         Set Doonce to 1
      endif
End

При активации стола добавляются все алхимические приборы и активируется один из них, при выпадении из меню (в данном случае получается из меню алхимии) все приборы удаляются сразу же.
Вам не кажется, что plаygrоund.ru есть синоним слову ворье?

Оффлайн da-kornev

  • *
  • Сообщений: 59
  • Репутация: 0
    • Просмотр профиля
Re: Как определить дистанцию до существа?
« Ответ #10 : 14 Декабрь, 2008, 14:55:14 »
0
Нужен еще один скрипт - чтоб при его активации от актера по направлению прицела вылетала стрела. Анимация выстрела при этом проигроваться не должна (заменю ее на другую). Вообщкм что-то типа фунуции cast, только не для спелов, а для стрел. в OSFM что-то вскольз говорится про obse версия 16 beta1 но ничкго конкретного.

Оффлайн da-kornev

  • *
  • Сообщений: 59
  • Репутация: 0
    • Просмотр профиля
Re: Как определить дистанцию до существа?
« Ответ #11 : 19 Декабрь, 2008, 18:25:47 »
0
Хорошо, тогда поставим вопрос по-другому, как одному луку, с конкретным EditorID заменить анимацию натягивания/выстрела на анимацию каста?

Теги:
 

Wiki: Oblivion:Существа - создание, экспорт и включение их в и

Автор WikiBotРаздел Мастерская TES IV

Ответов: 0
Просмотров: 586
Последний ответ 06 Ноябрь, 2011, 20:30:59
от WikiBot
Магические существа

Автор NAVYgatorРаздел Вселенная TES

Ответов: 4
Просмотров: 674
Последний ответ 24 Ноябрь, 2011, 09:37:25
от Helmut

Поиск

 
Top
SimplePortal 2.3.5 © 2008-2012, SimplePortal