Страница 1 из 11
Форум » Игры Bethesda Softworks » Construction Set » Скриптописание для Oblivion (Здесь лучшие умы Bethplanet в области скриптонаписания.)
Скриптописание для Oblivion

Forlove 

Житель
Сообщений11
Награды0
Репутация0
ПолМужчина
8 апреля 2011 в 18:53. Сообщение # 1
Доброго времени суток!
В настоящий момент, я веду разработку одного проекта на , по ходу реализации которого, у меня появляются некоторые вопросы по скриптонаписанию Oblivion...
- - -
Один из актуальных:
Как написать скрипт, который выполняется каждый раз, как только открывается меню "инвентарь" и/или меню "торговый инвентарь";
Выполняясь, скрипт должен проверять наличие и колличество предмета "A" ,в инвентаре игрока, и пропорционально нему, добавлять/уменьшать колличество предметов "Б", в инвентарь игрока.
- - -
Иллюстрация:
*Инвентарь пуст-->Скрипт проверяет наличие и колличество "A"-->т.к. предмет отсутствует скрипт устанвливает колличество "Б" в 0 (т.е. "Б" сейчас также отсутствует в инвентаре)
*Игрок поднимает 7 предметов "A"-->Открывает инвентарь-->Скрипт проверяет наличие и колличество "A"-->Видит, что предмет "А" имеется в колличестве 7 штук-->Добавляет 7 предметов "Б" в инвентарь игрока.
*Игрок выбрасил 2 предмета "A"-->Открывает инвентарь-->Скрипт проверяет наличие и колличество "A"-->Видит, что колличество "А", теперь 5-->устанавливает колличество предмеов "Б" равным колличеству "А", т.е. 5!
- - -
Пожалуйста, если кто-то знает и умеет; - подсобите!
Спасибо!

ТемныйКот 

Почётный житель
Сообщений795
Награды25
Репутация69
ПолМужчина
8 апреля 2011 в 21:50. Сообщение # 2
Forlove, что то я запутался. Тоесть, как я понимаю, все крутится вокруг того, что "предмет Б" привязан к "предмету А"? Тоесть если у игрока 4 шт. "А" должно быть и 4 шт. "Б", так?
Если да, то мне кажется проще всего повесить на этот "А" скрипт который и будет добавлять/выбрасывать "Б" в соответствии с количеством "А". Да, и что такое "А"? (оружие, броня, одежда, кольцо)

Forlove 

Житель
Сообщений11
Награды0
Репутация0
ПолМужчина
9 апреля 2011 в 0:51. Сообщение # 3
ТемныйКот, да все так! Но как должен выглядеть скрипт, как написать!?
---
"А"-Лук
"Б"-Стрела
---
Помогите скрипт написать.

ТемныйКот 

Почётный житель
Сообщений795
Награды25
Репутация69
ПолМужчина
9 апреля 2011 в 1:02. Сообщение # 4
Условия напиши.
например: берешь в руки лук - автоматически надевается колчан с 100 стрелами, снимаешь лук - колчан исчезает
или: подбираешь лук - добавляется 100 стрел, выкидываешь лук - стрелы исчезают
В общем пропиши подробнее

Forlove 

Житель
Сообщений11
Награды0
Репутация0
ПолМужчина
9 апреля 2011 в 1:17. Сообщение # 5
Quote (ТемныйКот)
подбираешь лук - добавляется 100 стрел, выкидываешь лук - стрелы исчезают

---
Вот так, с одним отличаем:
1лук=1стрела!

ТемныйКот 

Почётный житель
Сообщений795
Награды25
Репутация69
ПолМужчина
9 апреля 2011 в 2:06. Сообщение # 6
Хм...
Получится: подобрал лук - добавилась стрела - выстрелил ей - выкинул лук - подобрал снова - добавилась ещё стрела.
Так пойдет?
Скрипт простейший:

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

End

Forlove 

Житель
Сообщений11
Награды0
Репутация0
ПолМужчина
9 апреля 2011 в 2:47. Сообщение # 7
ТемныйКот, нет! там другой скрипт будет - сложнее...
В данном скрипте, прямая зависимость между луком и стрелой и обратно между стрелой и луком...
Скрипт должен работать только при открытии меню а не в игре.
Добавлять стрелы пропорционально лукам и наооборот.
Удалять их .. . . .
И т. д. И. т .п.

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

ТемныйКот 

Почётный житель
Сообщений795
Награды25
Репутация69
ПолМужчина
9 апреля 2011 в 3:00. Сообщение # 8
Хм... ну лан, удачи smile Выложи мод потом, интересно зачем много луков и к ним по одной стреле.

Forlove 

Житель
Сообщений11
Награды0
Репутация0
ПолМужчина
12 апреля 2011 в 16:54. Сообщение # 9
Добрый день ! Пожалуйста, помогите отшлифовать скрипт | Суть :
______________________________________________________________
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
_________________________________________________________________
Может из-за этого такие проблемы...
ТЕМ НЕ МЕНИЕ, ОТЛАДИТЬ МОЖНО НАВЕРНЯКА! ПОДСОБИТЕ!

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

Inse 

Модератор
Стража
Сообщений3614
Награды93
Репутация214
ПолЖенщина
12 апреля 2011 в 17:12. Сообщение # 10
Forlove, у тебя ведь уже есть одна тема о скриптах.. Зачем еще одну создавать? Или планируешь каждому скрипту по теме?

RJ 

Тёмная лошадка
Смотритель
Сообщений1060
Награды51
Репутация315
ПолМужчина
12 апреля 2011 в 17:37. Сообщение # 11
Forlove, соединил темы. Так как одинаковы.

Forlove 

Житель
Сообщений11
Награды0
Репутация0
ПолМужчина
13 апреля 2011 в 1:12. Сообщение # 12
Здесь, что, никто ничего в этом не смыслит..?

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

Raser 

Почётный житель
Сообщений127
Награды1
Репутация5
ПолМужчина
25 июня 2012 в 19:34. Сообщение # 13
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)
---------------------------------------------
Если хочешь чтобы скрипт работал верно, нуэно добавлять таймеры, они помогут снять любой накал с компа, и обеспечить тебе более гладкое выполнение.

Форум » Игры Bethesda Softworks » Construction Set » Скриптописание для Oblivion (Здесь лучшие умы Bethplanet в области скриптонаписания.)
Страница 1 из 11
Поиск:

© 2008—2016 Bethplanet.ru