1. Главная
  2. Форум
  3. Игры Bethesda Softworks
  4. Construction Set
  5. Скриптописание для Oblivion
  • Страница 1 из 1
  • 1
Скриптописание для Oblivion
автор темы Житель
Доброго времени суток!
В настоящий момент, я веду разработку одного проекта на , по ходу реализации которого, у меня появляются некоторые вопросы по скриптонаписанию Oblivion...
- - -
Один из актуальных:
Как написать скрипт, который выполняется каждый раз, как только открывается меню "инвентарь" и/или меню "торговый инвентарь";
Выполняясь, скрипт должен проверять наличие и колличество предмета "A" ,в инвентаре игрока, и пропорционально нему, добавлять/уменьшать колличество предметов "Б", в инвентарь игрока.
- - -
Иллюстрация:
*Инвентарь пуст-->Скрипт проверяет наличие и колличество "A"-->т.к. предмет отсутствует скрипт устанвливает колличество "Б" в 0 (т.е. "Б" сейчас также отсутствует в инвентаре)
*Игрок поднимает 7 предметов "A"-->Открывает инвентарь-->Скрипт проверяет наличие и колличество "A"-->Видит, что предмет "А" имеется в колличестве 7 штук-->Добавляет 7 предметов "Б" в инвентарь игрока.
*Игрок выбрасил 2 предмета "A"-->Открывает инвентарь-->Скрипт проверяет наличие и колличество "A"-->Видит, что колличество "А", теперь 5-->устанавливает колличество предмеов "Б" равным колличеству "А", т.е. 5!
- - -
Пожалуйста, если кто-то знает и умеет; - подсобите!
Спасибо!
Цитировать
Почётный житель
Forlove, что то я запутался. Тоесть, как я понимаю, все крутится вокруг того, что "предмет Б" привязан к "предмету А"? Тоесть если у игрока 4 шт. "А" должно быть и 4 шт. "Б", так?
Если да, то мне кажется проще всего повесить на этот "А" скрипт который и будет добавлять/выбрасывать "Б" в соответствии с количеством "А". Да, и что такое "А"? (оружие, броня, одежда, кольцо)


Злодей – это не очень толерантное слово. Я предпочитаю называться представителем моральной оппозиции.
Цитировать
автор темы Житель
ТемныйКот, да все так! Но как должен выглядеть скрипт, как написать!?
---
"А"-Лук
"Б"-Стрела
---
Помогите скрипт написать.
Цитировать
Почётный житель
Условия напиши.
например: берешь в руки лук - автоматически надевается колчан с 100 стрелами, снимаешь лук - колчан исчезает
или: подбираешь лук - добавляется 100 стрел, выкидываешь лук - стрелы исчезают
В общем пропиши подробнее

ТемныйКот - Суббота, 09 Апреля 2011, 01:03



Злодей – это не очень толерантное слово. Я предпочитаю называться представителем моральной оппозиции.
Цитировать
автор темы Житель
Quote (ТемныйКот)
подбираешь лук - добавляется 100 стрел, выкидываешь лук - стрелы исчезают

---
Вот так, с одним отличаем:
1лук=1стрела!
Цитировать
Почётный житель
Хм...
Получится: подобрал лук - добавилась стрела - выстрелил ей - выкинул лук - подобрал снова - добавилась ещё стрела.
Так пойдет?
Скрипт простейший:

scn TkBowScript
Begin OnAdd
player.additem
EditirID стрелы 1

End

ТемныйКот - Суббота, 09 Апреля 2011, 02:18



Злодей – это не очень толерантное слово. Я предпочитаю называться представителем моральной оппозиции.
Цитировать
автор темы Житель
ТемныйКот, нет! там другой скрипт будет - сложнее...
В данном скрипте, прямая зависимость между луком и стрелой и обратно между стрелой и луком...
Скрипт должен работать только при открытии меню а не в игре.
Добавлять стрелы пропорционально лукам и наооборот.
Удалять их .. . . .
И т. д. И. т .п.

28 строк всего!
- - -
Всем спасибо, вопрос [РЕШЕН] !

Цитировать
Почётный житель
Хм... ну лан, удачи smile Выложи мод потом, интересно зачем много луков и к ним по одной стреле.


Злодей – это не очень толерантное слово. Я предпочитаю называться представителем моральной оппозиции.
Цитировать
автор темы Житель
Добрый день ! Пожалуйста, помогите отшлифовать скрипт | Суть :
______________________________________________________________
ScriptName MyItemA

short countMyItemA
short countMyItemB
short diff

begin OnAdd player

set countMyItemA to player.GetItemCount MyItemA
set countMyItemB to player.GetItemCount MyItemB

if ( countMyItemA > countMyItemB )
set diff to countMyItemA - countMyItemB
player.AddItem MyItemB diff
endif

end

begin OnDrop player

set countMyItemA to player.GetItemCount MyItemA
set countMyItemB to player.GetItemCount MyItemB

if ( countMyItemA < countMyItemB )
set diff to countMyItemB - countMyItemA
player.RemoveItem MyItemB diff
endif

end
______________________________________________________________
Данный скрипт, почему-то, как я понимаю выполняется каждый фрейм, т. к. чем больше объектов добавляется в инвентарь, тем сильнее тормозит Обливион... Получается, скрипт работает непрерывно да еще и скаждым следующим добавляемым объектом дублируется... В конце концов их работает тысяча наверное, т.к набрав в инвентаре 1000 предметов все практически намертво виснет...
-
Необходимо как-то отладить скрипт:
Либо принудительно останавливая скрипт после каждого добавленного объекта.
Либо приостанавливая на время выполнение скрипта в определенное время.
Иное....
Как быть ? ? !

Добавлено (12.04.2011, 16:54)
---------------------------------------------
Вообще, у меня два скрипта, контролирующих объекты...
Тот что выше для MyItemA, висит на первом объекте.
---
А для MyItemB, - второй объект, на нем висит такой скрипт:
___________________________________________________________________
ScriptName MyItemB

short countMyItemA
short countMyItemB
short diff

begin OnAdd player

set countMyItemA to player.GetItemCount MyItemA
set countMyItemB to player.GetItemCount MyItemB

if ( countMyItemA < countMyItemB )
set diff to countMyItemB - countMyItemA
player.AddItem MyItemA diff
endif

if ( countMyItemA > countMyItemB )
set diff to countMyItemA - countMyItemB
player.RemoveItem MyItemA diff
endif

end
_________________________________________________________________
Может из-за этого такие проблемы...
ТЕМ НЕ МЕНИЕ, ОТЛАДИТЬ МОЖНО НАВЕРНЯКА! ПОДСОБИТЕ!

Эти скрипты рыботают взаимосвязанно !

Forlove - Вторник, 12 Апреля 2011, 18:38

Цитировать
Стража
Модератор
Forlove, у тебя ведь уже есть одна тема о скриптах.. Зачем еще одну создавать? Или планируешь каждому скрипту по теме?
Цитировать
Смотритель
Тёмная лошадка
Forlove, соединил темы. Так как одинаковы.
Ну-с, посмотрим на что вы способны.
Цитировать
автор темы Житель
Здесь, что, никто ничего в этом не смыслит..?

Мне кто-нибудь ответит; ЕСТЬ КТО ЖИВОЙ ? !

Цитировать
Почётный житель
Quote (Forlove)
Один из актуальных:
Как написать скрипт, который выполняется каждый раз, как только открывается меню "инвентарь" и/или меню "торговый инвентарь";
Выполняясь, скрипт должен проверять наличие и колличество предмета "A" ,в инвентаре игрока, и пропорционально нему, добавлять/уменьшать колличество предметов "Б", в инвентарь игрока.
- - -
Иллюстрация:
*Инвентарь пуст-->Скрипт проверяет наличие и колличество "A"-->т.к. предмет отсутствует скрипт устанвливает колличество "Б" в 0 (т.е. "Б" сейчас также отсутствует в инвентаре)
*Игрок поднимает 7 предметов "A"-->Открывает инвентарь-->Скрипт проверяет наличие и колличество "A"-->Видит, что предмет "А" имеется в колличестве 7 штук-->Добавляет 7 предметов "Б" в инвентарь игрока.
*Игрок выбрасил 2 предмета "A"-->Открывает инвентарь-->Скрипт проверяет наличие и колличество "A"-->Видит, что колличество "А", теперь 5-->устанавливает колличество предмеов "Б" равным колличеству "А", т.е. 5!


Поехали, ну во первых скрипт нужно реализовывать используя блок begin menumode 1002(для инвентаря) или 1008(для контейнеров) или 1025(для торговли).
Далее добавляешь новую переменную. Для этого пишешь сразу после имени скрипта

short a

далее в меню каком ты выбрал, печатаешь следующие строки

set a to getitemcount "item" и вместо item пишешь id предмета кол-во которого тебе нужно. Далее, пишешь,

player.additem item1 a то есть вместо item1 пишешь id предмета, который ты хочешь получить, а переменная a служит для кол-ва предметов в инвентаре.

пример:

scn itemgiving

short a

begin menumode 1008
set a to getitemcount firstitem

player.additem seconditem a

end

легче некуда.

Добавлено (25.06.2012, 19:32)
---------------------------------------------

Quote (Forlove)
Добрый день ! Пожалуйста, помогите отшлифовать скрипт | Суть :


Во первых запомни, что необязательно писать такие длинные команды, для scriptname пиши scn, и т.д. так будет удобнее, а насчет того что скрипт твой зависает, сейчас объясню.

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

Добавлено (25.06.2012, 19:34)
---------------------------------------------
Если хочешь чтобы скрипт работал верно, нуэно добавлять таймеры, они помогут снять любой накал с компа, и обеспечить тебе более гладкое выполнение.

Я решил стать модмейкером на TES4. Поэтому, если будут вопросы, по скриптам, конструктору и т.д обращайтесь либо на форум, либо в лс. Чем смогу помогу.
Цитировать
  • Страница 1 из 1
  • 1
Поиск: