Перейти к содержимому


Фотография
* * * * - 9 Голосов

Вопросы по плагиностроению

как создать торговца oblivion cs торговец cs как создать торговца oblivion моделирование

  • Авторизуйтесь для ответа в теме

#1261 Ссылка на это сообщение X-command

X-command
  • Следопыт
  • 70 сообщений

Отправлено

Здесь задавать вопросы по плагиностроению для Обливиона.

Тема по Обливиону. Тема по Морровинду тут.


<a href="http://profile.xfire.../xcommand"><img src="http://miniprofile.x...2/xcommand.png" border="0" class="linked-sig-image" /></a>
Сила - способность улыбаться © Белльмере-сан "One Piece"<img src="http://www.kolobok.u...zer/pirate.gif" border="0" class="linked-sig-image" />


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2655

#1262 Ссылка на это сообщение Raser

Raser
  • Талант
  • 212 сообщений
  •  

Отправлено

Сегодня я сделаю конечные пояснения по самим скриптам. Во первых, вы все наверняка заметили, что в обоих вкриптах присутствует переменная fquestdelaytime. Казалось бы она не нужна, но если ее не вписать в скрипт, то скрипт будет работать очень медленно(примерно реакция скрипта на ваше движение будет через пять секунд, что очень много поверьте). Далее идет команда iskeypressed3. Впрочем эта команда реагирующая именно на нажатие клавиши или кнопок мыши, выбранных нами. Впрочем тут и подойдет команда iskeypressed2 только уже скрипт не будет реагировать на нажатия кнопок мыши. Есть еще команда iskeypressed но она не работает(не понятно почему). Далее messageboxex это новый вид выводимых сообщений, где могут быть использованный переменные любого типа(текстовые, числовые) в отличие от простой команды messagebox где могут быть использованны переменные только числовые. К тому же очень важно учесть следующий фактор, это кнопки выбора вариантов в командах mesagebox и messageboxex.
Просто приведу пример:

messageboxex"Открыть дверь?|Да|Нет не стоит"

messagebox"Открыть дверь", "Да", "Нет не стоит"

Как видите в messageboxex кнопки разделяются знаком | тем более первая кнопка отделяется от прочего предложения тоже знаком |. В messagebox кнопки отделяются кавычками с запятой после предложения и каждой кнопки(не включая последней.)

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

Есть некоторые правила написания скриптов, которые могут облегчить вам их написание:
1. Всегда используйте в названии переменных в названии самого скритпа имена, которые вам понятны, и которые отображают суть переменной или названия скрипта.
2. Делайте пометки, и пояснения. Пояснения делаются на одной строке после знака ; переход на новую строку означает написание новой команды.
3. Старайтесь избегать повторения команд. Лучше одну команду вписать в какую-нибудь переменную, и далее использовать эту переменную. Пример:

set weapout to player.isweaponout

if(weapout == 0)
message"Игрок не обнажил оружие"
else
message"Игрок обнажил оружие"
endif

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

4.Не пользуйтесь всегда глобальными скриптами(скрипты квестов). Если есть возможность используйте скрипты на предметах одежде и т.д. Потому что глобальные скрипты огромных размеров тратят очень много памяти.

5. И лично мое правило. Никогда не сидите за написанием скриптов и созданием мода более 2- х часов. Всегда делайте перерывы не менее получаса. Так обеспечите себе и здоровье и сохраните свежесть ума.

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

#1263 Ссылка на это сообщение Umbakano Jr

Umbakano Jr
  • Крестный внук

  • 3 967 сообщений
  •    
Наш автор

Отправлено

...неужто их вручную переназначали??

Отдельно не получится... собственно, да, вручную каждый НПС!

#1264 Ссылка на это сообщение TES-Diesel modding

TES-Diesel modding
  • Счастливый Довакин

  • 1 161 сообщений
  •    

Отправлено

Отдельно не получится... собственно, да, вручную каждый НПС!

Ниче ж себе...Ну, главное, что хотя бы так можно.
Конопля - тоже дерево, просто ему вырасти не дают...
Logo-tesdiesel.png
draOOger.gif

 

#1265 Ссылка на это сообщение che_guevaro

che_guevaro
  • Скиталец
  • 39 сообщений

Отправлено

Как изменить место появления игрока при начале новой игры?
Изображение

#1266 Ссылка на это сообщение Amphora

Amphora
  • Авантюрист
  • 122 сообщений

Отправлено

che_guevaro, ищешь самый первый квест, потом место в начале игры, а потом меняешь всё подряд: скрипты, маркеры, привязки etc.

#1267 Ссылка на это сообщение Raser

Raser
  • Талант
  • 212 сообщений
  •  

Отправлено

Привет. Я знаю, Только слушай внимательно а то ничего не поймешь. Вот запускаешь редактор, в окне Object window(там где еще списки доспехов, оружия, активаторов, NPC и т.д.) в левой колонке(а окно разделено на 2 колонки) есть списки. Вот находишь список Miscellaneous. Раскрываешь список, а там находится категория AnimObject. Нажимаешь на нее. Вот здесь и создаются новые объекты в анимациях. Теперь в правом колонке окна объектов(Object Window) нажимаешь ПКМ и выбераешь new. Появится окошко в котором кнопка Add Nif File это путь к модели объекта, список ниже это путь к папке анимаций, а самый нижний список, это название idle анимации, которую ты создал. Надеюсь помог.

#1268 Ссылка на это сообщение Raser

Raser
  • Талант
  • 212 сообщений
  •  

Отправлено

Люди я на днях понял еще один факт. Если создать огромный триггер, таких размеров, что равен почти сиродилу, то зависания не будет. Потом можно сделать определитель, что все кто сталкивается с триггером кроме игрока, являются теми или теми. Короче, данным способом можно создать скрипт, который будет обрабатывать всех без исключения, когда игрок с ними. Только триггер должен всегда быть вместе с игроком, а это уже не проблема.

#1269 Ссылка на это сообщение defmotion3

defmotion3
  • Талант
  • 235 сообщений

Отправлено

Не понятно зачем так делать?

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

#1270 Ссылка на это сообщение che_guevaro

che_guevaro
  • Скиталец
  • 39 сообщений

Отправлено

А не повлечет ли это за собой каких либо глобальных ошибок?
Изображение

#1271 Ссылка на это сообщение Пакость

Пакость
  • ночной жуть

  • 1 700 сообщений
  •    
Наш автор

Отправлено

Если всё правильно сделаешь (обработаешь все привязки) - то нет.
Ну, единственное: игровые квесты, связанные с мейнквестом, могут косо работать.

#1272 Ссылка на это сообщение che_guevaro

che_guevaro
  • Скиталец
  • 39 сообщений

Отправлено

Эх... надолго это затянется -__- во время учебы то.
Изображение

#1273 Ссылка на это сообщение che_guevaro

che_guevaro
  • Скиталец
  • 39 сообщений

Отправлено

Изображение
Создал новый terrain. Во время редактирования вот эта зона никак не закрывалась, а в игре вообще обрезало весь ландшафт.
Изображение
Красным выделен тот же самый участок.
Как это можно исправить?
Изображение

#1274 Ссылка на это сообщение Raser

Raser
  • Талант
  • 212 сообщений
  •  

Отправлено

Про использование массива прошу поподробней.

#1275 Ссылка на это сообщение TES-Diesel modding

TES-Diesel modding
  • Счастливый Довакин

  • 1 161 сообщений
  •    

Отправлено

Ребяяят...А подобного туториала по статической анимации, но при помощи макса, нигде нету? Изображение
Конопля - тоже дерево, просто ему вырасти не дают...
Logo-tesdiesel.png
draOOger.gif

 

#1276 Ссылка на это сообщение Demolir.uptar

Demolir.uptar
  • Новенький
  • 22 сообщений

Отправлено

Как вариант, можно задать ссылку на назначаемую "горячую клавишу" не через условие в скрипте, а методом создания так называемого внешнего BatchScript. Это отдельный скриптовый файл в формате ini, который располагается в папке с игрой (обычно для этого создается отдельная папка INI), и содержит в себе информацию, которая будут использоваться определенным модом (на подобие этого работает Papyrus Script в Skyrim).

Например, тело скрипта может содержать такую информацию:

scn ScriptName

long Key

Begin GameMode

if getgamerestarted
RunBatchScript "Data\Ini\ModName.ini" ; запуск внешнего скрипта с указанием пути к нему
endif
if ( IsKeyPressed key )
; здесь обычно выполняется нужное действие
endif
end

В таком случае в баш-скрипте ModName.ini указывается информация о назначении клавиши:

set QuestScript.key to 71 ; где QuestScript это QuestID, а 71 кодировка клавиши G (по таблице скан-кодов можно выбрать любую другую)

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


Есть еще команда iskeypressed но она не работает(не понятно почему)


Она работает, просто для этой команды используются скан-коды клавиш Windows (Virtual-Key Codes), а для iskeypressed2 и 3 используются коды DirectX. Клавиши те же, но разная нумерация.

#1277 Ссылка на это сообщение Demolir.uptar

Demolir.uptar
  • Новенький
  • 22 сообщений

Отправлено

Прошу помощи в создании скрипта.

Основное назначение скрипта в подсчете времени, которое использует активатор в активном режиме. Более подробно: я "включаю" активатор-свечу и начинается отсчет времени, но мне нужно чтобы свеча "сгорела" только после 2 часов (дней) игрового времени. И самое главное: учитывается то условие, что я могу "задувать" свечу в процессе, т.е. вопрос - как отследить скриптом именно "рабочее время" свечи, а не с того момента как я "зажег" ее впервые?

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

#1278 Ссылка на это сообщение TES-Diesel modding

TES-Diesel modding
  • Счастливый Довакин

  • 1 161 сообщений
  •    

Отправлено

Такая проблема, игра " не видит" некоторые текстуры в игре. В нифскопе, КС все нормально, и в максе тоже. А в игре...крах. Вот они, афроамериканские черные:

Изображение Изображение
Изображение Изображение


Закономерность: если выключить свет в КС, то текстуры пропадают, и становятся как в игре - чоорными.


Сообщение отредактировал Death The Kid: 20 Сентябрь 2012 - 12:31

Конопля - тоже дерево, просто ему вырасти не дают...
Logo-tesdiesel.png
draOOger.gif

 

#1279 Ссылка на это сообщение defmotion3

defmotion3
  • Талант
  • 235 сообщений

Отправлено

Прошу помощи в создании скрипта.

Основное назначение скрипта в подсчете времени, которое использует активатор в активном режиме. Более подробно: я "включаю" активатор-свечу и начинается отсчет времени, но мне нужно чтобы свеча "сгорела" только после 2 часов (дней) игрового времени. И самое главное: учитывается то условие, что я могу "задувать" свечу в процессе, т.е. вопрос - как отследить скриптом именно "рабочее время" свечи, а не с того момента как я "зажег" ее впервые?

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

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


Про использование массива прошу поподробней.

Подробней надо самому читать , что означают и как работают команды ОБСЕ,
могу показать только работающий скрипт:

scn aaAIQQQ
array_var qai
short busy
float tq
int si

begin menumode
set busy to 1
end

begin gamemode
let tq+=getsecondspassed
if tq>5||busy==1
let tq:=0
if qai
let qai:=ar_null
endif

let si:=ar_size qai
if si<0
let qai:=ar_construct array
endif

let qai:=GetHighActors ;собственно этой командой запоминаем в массив всех нпс в cell
let si:=ar_size qai
if si>0
printC"QAI SIZE==%0f"si
endif
set busy to 0
endif

end

#1280 Ссылка на это сообщение defmotion3

defmotion3
  • Талант
  • 235 сообщений

Отправлено

4.Не пользуйтесь всегда глобальными скриптами(скрипты квестов). Если есть возможность используйте скрипты на предметах одежде и т.д. Потому что глобальные скрипты огромных размеров тратят очень много памяти.


Тут в общем не хотелось бы спорить, но у скриптов на объектах и спеллах есть большой недостаток:

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

а также такие скрипты исполняются каждый фрейм, что тормозит ЦП,
так уж лучше использовать больше памяти , чем время ЦП и падение фпс,

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

#1281 Ссылка на это сообщение Пакость

Пакость
  • ночной жуть

  • 1 700 сообщений
  •    
Наш автор

Отправлено

Косо сохранены файлы текстур. Подбери правильные параметры сохранения DDS файлов





Темы с аналогичным тегами как создать торговца, oblivion cs торговец, cs как создать торговца, oblivion, моделирование

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых