Модератор форума: КсюXa, ApeX  
Форум » Fallout: New Vegas » Мастерская » Скрипты (Вопросы и ответы)

Скрипты
a3apbi4  Offline  Сообщение №1 написано: 7 декабря 2010, 18:01



11
Скрипты - неотъемлемая часть GECK. При написании возникает очень много казусов. Данная тема должна помочь не наступать на "грабли" новичкам и делиться опытом с другими более продвинутых мододелов.




Quazar  Offline  Сообщение №1381 написано: 9 февраля 2015, 04:11



446
У меня возник вопрос по скриптам: есть ли смысл объявлять переменную в самом скрипте? Т.е не в начале, как обычно, а в каком-либо блоке (в GameMode например).. 

Заметил такое в некоторых стандартных скриптах разработчиков, например в скриптовом эффекте касадора. Просто смысл этого непонятен..

Multigone  Offline  Сообщение №1382 написано: 9 февраля 2015, 04:34 | Отредактировано: Multigone - 9 февраля 2015, 04:37



832
Quazar, переменная в теле скрипта существует (и хранит свое значение) в течение всего времени его работы. Переменная в теле события существует в течение работы события. Со скриптами Fallout не знаком, однако, поскольку он и Skyrim используют один движок, думаю, общие принципы скриптов аналогичны.

Следовательно, разница только в занимаемом объеме памяти. Если событием является обновление с малым периодом, то разницы вообще не будет заметно в этом случае.

Enclave92  Offline  Сообщение №1383 написано: 19 февраля 2015, 17:26



252
Я столкнулся с непростой скриптовой задачкой.
Ситуация следующая: После заключения союза между НКР и Братством НПС принадлежащие к фракции
NCRSnifferFaction и со скриптом sniffer продолжают нападать на игрока в
фракционной броне Братства.
Кто знает как исправить?

War. War never changes...
Xilandro  Offline  Сообщение №1384 написано: 25 февраля 2015, 15:10 | Отредактировано: Xilandro - 25 февраля 2015, 15:23



33
Цитата rusik
В пипбое правым кликом ставится маркер на глобальной карте.Вопрос
заключается в том,как заставить НПС напарника ,двигаться к этому маркеру
на тактической карте-местности.Телепорт не интересует,так же как и
система заранее установленных на местности маячков-маркеров тоже.


Сначала переведи маркер на карте в координаты. Дальше выставь маячок по полученным координатам (1 маячок нужен 100%, нравится тебе это или нет). Ну а дальше напарнику включаешь пакет патруля с целью на свой маркер, и команда EVP чтобы данные о цели обновились и напарник потопал куда тебе надо. Когда дойдет до цели - удаляй пакет.

По поводу предотвращения смерти игрока. SetEssential сделает дело. Хоть фатманом бомби, игрок никогда не умрет. Там есть свои баги конечно, но при терпении они легко обходятся.

Evaluate, adapt, destroy
КсюXa  Offline  Сообщение №1385 написано: 25 февраля 2015, 16:13 | Отредактировано: КсюXa - 25 февраля 2015, 16:14


Гид по Мастерской


Цитата Xilandro

Player.SetHair...
...GetHotkeyItem


Только забыл добавить, что это функции из расширителя скриптов. Не все хотят юзать NVSE. ;)

Ой, всё...
Quazar  Offline  Сообщение №1386 написано: 26 февраля 2015, 05:53



446
Xilandro, подорвал вопросы столетней давности..)

Цитата Xilandro

SetHotkeyItem HotKey:int Item:ref

Когда задавался этот вопрос, этой функции еще не существовало в экстендере (она добавилась с версией 4.5.6.)..

Xilandro  Offline  Сообщение №1387 написано: 26 февраля 2015, 15:41



33
Цитата Quazar

подорвал вопросы столетней давности..)

Август 2014го. Это не так уж и давно =)

Evaluate, adapt, destroy
Quazar  Offline  Сообщение №1388 написано: 26 февраля 2015, 21:29 | Отредактировано: Quazar - 27 февраля 2015, 02:18



446
Цитата Xilandro

Странные типы. Пускай в ванильку играют, без нормальных модов, их право.

Ты не понял видно. Не у всех игра хочет "играть с NVSE", не в желании дело..

Xilandro  Offline  Сообщение №1389 написано: 27 февраля 2015, 06:26



33
Цитата Quazar

вопрос о прическе вообще с марта весит


Блин, там разница в одну страницу или две =)
Всё равно не вижу проблемы в том что я ответил на некоторые старые вопросы, на которые вообще не было ответа. Представь сидит новый скриптер, хочет сделать крутой мод чтобы менять прическу игроку по нажатию на кнопку, без интерфейса создания персонажа. Юзает он такой Плейер.СетХейр НьюХейр - а оно не работает на игроке. Вычитал он мол надо Update3D юзнуть, и юзает. На игроке. Хлоп, игра крашится. Он расстроен, ищет инфу что же делать. Находит вопрос на МГ в разделе скриптов. А ответа на него нет. И бросает наш юный падаван свою идею о прическе по требованию, и идет делать очередной дом в скайриме. Фол разочаровал, вайфу без причесок. Fin. А так у него есть шанс найти хоть какой-либо ответ. По себе знаю - иногда перелистывал сотни страниц LL, Bethforums'a, nexus'a и вгу в поисках нужных мне ответов по скриптам. Ты удивишься насколько бесполезным было это занятие. Вопросов на форумах куча, ответов ноль. Ведь "вопросы столетней давности", зачем на них отвечать.

Evaluate, adapt, destroy
Quazar  Offline  Сообщение №1390 написано: 27 февраля 2015, 07:46 | Отредактировано: Quazar - 27 февраля 2015, 07:56



446
Цитата Xilandro

Всё равно не вижу проблемы в том что я ответил на некоторые старые вопросы, на которые вообще не было ответа. Представь сидит новый скриптер, хочет сделать крутой мод чтобы менять прическу игроку по нажатию на кнопку, без интерфейса создания персонажа. Юзает он такой Плейер.СетХейр НьюХейр - а оно не работает на игроке. Вычитал он мол надо Update3D юзнуть, и юзает. На игроке. Хлоп, игра крашится. Он расстроен, ищет инфу что же делать. Находит вопрос на МГ в разделе скриптов. А ответа на него нет. И бросает наш юный падаван свою идею о прическе по требованию, и идет делать очередной дом в скайриме. Фол разочаровал, вайфу без причесок. Fin. А так у него есть шанс найти хоть какой-либо ответ. По себе знаю - иногда перелистывал сотни страниц LL, Bethforums'a, nexus'a и вгу в поисках нужных мне ответов по скриптам. Ты удивишься насколько бесполезным было это занятие. Вопросов на форумах куча, ответов ноль. Ведь "вопросы столетней давности", зачем на них отвечать.

Ну так бы сразу и сказал, что ты из службы спасения )) А то так и не поймешь..

Тогда давай, копай старину дальше, уверен тебе еще работаёнка найдется.. smile2

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

Как я уже где-то писал, желание - это главное!

Xilandro  Offline  Сообщение №1391 написано: 27 февраля 2015, 08:53



33
Цитата Quazar

Тогда давай, копай старину дальше, уверен тебе еще работаёнка найдется.. :smile2:

Вопросов интересных много, ответов мало, русский сегмент моддинга мертв, новых скриптеров не появляется как и геймплейных модов. Может хоть чему-то
научились бы новому, господа самостоятельные экспериментаторы smile2 Но нет же, "нехороший Ксил тронул старые вопросы, нихарошый, надо его на смех поднять". На этом оффтоп от меня прекращается и с темы самовыпиливаюсь. Спасибо и до свидания.

Evaluate, adapt, destroy
Филя12  Offline  Сообщение №1392 написано: 6 марта 2015, 02:51 | Отредактировано: Филя12 - 5 марта 2015, 08:24



11
Зарегистрировался чтоб узнать одну весчь - как проверить скриптово что гг перезаряжает оружие? Пробовал через IF player.GetAnimAction == 8 но ничего не получается, игра вовсе не реагирует никак.  Скрипт ставил на оружие, и в квест, но ничего. Что я не так делаю?
Мне это нужно для моего мода, там есть такое ружье, для него и нужно. Вот. Поможете?

Добавлено (06 Марта 2015, 05:51)
---------------------------------------------
Есть кто живой тут? unsure
Расскажу подробнее - мне нужно както сделать чтобы при перезарядке этого ружья появлялся мессадж. И все. Так можно сделать?


Galko  Offline  Сообщение №1393 написано: 6 марта 2015, 07:15


GALAктическая мартышка


Цитата Филя12

IF player.GetAnimAction == 8

команда вроде правильная...
Можно скрипт целиком?

Ваше счастье, что я не ваше счастье
Филя12  Offline  Сообщение №1394 написано: 6 марта 2015, 13:28 | Отредактировано: Филя12 - 6 марта 2015, 13:29



11
Scn RTYRifleScript

Begin Gamemode

IF player.Getequipped WeapRTYRifle
IF player.GetAnimAction == 8
Showmessage RTYMsg
Endif
Endif

End

Xilandro  Offline  Сообщение №1395 написано: 6 марта 2015, 14:09



33
Код
GetAnimAction == 8
не 8 а 9.

Evaluate, adapt, destroy
КсюXa  Offline  Сообщение №1396 написано: 6 марта 2015, 14:18


Гид по Мастерской


Цитата Xilandro

не 8 а 9.

А почему?
беседка пишет:
  • -1 - none
  • 0 - ANIM_ACTION_EQUIP_WEAPON
  • 1 - ANIM_ACTION_UNEQUIP_WEAPON
  • 2 - ANIM_ACTION_ATTACK
  • 3 - ANIM_ACTION_ATTACK_FOLLOW_THROUGH
  • 4 - ANIM_ACTION_ATTACK_THROW
  • 5 - ANIM_ACTION_ATTACK_THROW_ATTACH
  • 6 - ANIM_ACTION_???
  • 7 - ANIM_ACTION_BLOCK
  • 8 - ANIM_ACTION_RELOAD
  • 9 - ANIM_ACTION_STAGGER
  • 10 - ANIM_ACTION_DODGE
  • 11 - ANIM_ACTION_WAIT_FOR_LOWER_BODY_ANIM
  • 12 - ANIM_ACTION_WAIT_FOR_SPECIAL_IDLE
  • 13 - ANIM_ACTION_FORCE_SCRIPT_ANIM


Ой, всё...
Xilandro  Offline  Сообщение №1397 написано: 6 марта 2015, 14:22 | Отредактировано: Xilandro - 6 марта 2015, 14:30



33
Цитата КсюXa

А почему?беседка пишет:

-1 - none
0 - ANIM_ACTION_EQUIP_WEAPON
1 - ANIM_ACTION_UNEQUIP_WEAPON
2 - ANIM_ACTION_ATTACK
3 - ANIM_ACTION_ATTACK_FOLLOW_THROUGH
4 - ANIM_ACTION_ATTACK_THROW
5 - ANIM_ACTION_ATTACK_THROW_ATTACH
6 - ANIM_ACTION_???
7 - ANIM_ACTION_BLOCK
8 - ANIM_ACTION_RELOAD
9 - ANIM_ACTION_STAGGER
10 - ANIM_ACTION_DODGE
11 - ANIM_ACTION_WAIT_FOR_LOWER_BODY_ANIM
12 - ANIM_ACTION_WAIT_FOR_SPECIAL_IDLE
13 - ANIM_ACTION_FORCE_SCRIPT_ANIM

А кто тебе сказал что это беседка пишет? А еще, читай полностью описание команды.

Cкриптеры-теоретики, люблю вас <3

зы. в консоли будет последний активный animAction
Код
scn someScript
int animAction
begin gamemode
if animAction != player.getanimaction
        let animAction := player.getanimaction
        printc "%g" animaction
Endif
end

Evaluate, adapt, destroy
КсюXa  Offline  Сообщение №1398 написано: 6 марта 2015, 14:30 | Отредактировано: КсюXa - 7 марта 2015, 11:45


Гид по Мастерской


А я не скриптер. Я просто задала вопрос, потому что на geck.bethsoft.com было написано так.
Да, каюсь - не заглянула на том сайте на страничку обсуждения, поэтому и не знала, что на главной, оказывается, неверная инфа и вместо 8 - нужно ставить 9. Поэтому тут и спросила.
Спасибо за подсказку, мастер-сан. 

Ой, всё...
Филя12  Offline  Сообщение №1399 написано: 6 марта 2015, 16:17



11
>>не 8 а 9.
Спасибо, все заработало)

>>было написано так. 
И я тоже в примере с 8 посмотрел - пишут Determines if Buddy is performing the reload animation. думал это и есть анимация перезарядки.

RustWays  Offline  Сообщение №1400 написано: 12 марта 2015, 22:56



Принес скрипт на проверку. Что не так

Код
Scn    RWTstcrn

int State

begin onActivate
  if State == 0 && GetActionRef == player
  set State to 1
   playGroup Forward 1
endif

end

begin onActivate
if State == 1
playGroup Backward 1
endif
end


JupiterJour  Offline  Сообщение №1401 написано: 12 марта 2015, 23:21


_


Цитата RustWays

Что не так


Собственно, это мы от тебя должны узнать. Оно не включается? Оно не выключается?

Раньше я б сказал, что "не так" два одинаковых блока, с одинаково отсутствующими дополнительными параметрами. Но, говорят, при компиляции редактор их склеивает, так что это вроде допустимо.

Добавлено (13 Марта 2015, 02:21)
---------------------------------------------
Погадаю ещё. Оно должно шевелиться постоянно, а вместо этого шевельнулось раз и затихло?


RustWays  Offline  Сообщение №1402 написано: 12 марта 2015, 23:56



Цитата Joopeeter

Собственно, это мы от тебя должны узнать. Оно не включается? Оно не выключается?


Собственно как понятно (если вообще что-то понятно?) есть объект, есть две анимации -форвард и бэквард. Активируем впервые - форвард. Второй раз - бэквард. Это в теории.

На практике скрипт повешенный на этом активаторе вообще не исполняется. Ничего не происходит

JupiterJour  Offline  Сообщение №1403 написано: 13 марта 2015, 00:39


_


Цитата RustWays

На практике скрипт повешенный на этом активаторе вообще не исполняется.


Первая половина исполняется. А если не надеяться на то, что компилятор что-то там склеит, и самому поместить всё в один блок, то исполняется и вторая половина.

dianka48  Offline  Сообщение №1404 написано: 13 марта 2015, 03:17 | Отредактировано: dianka48 - 13 марта 2015, 03:18



9
Доброго утра всем. Я в скриптах и в ГЕККе полный ноль. НО установила мод на увеличение лимита игры в казино, столкнулась с проблемой. Фишки есть, мод работает, рулетка работает, блек-джек работает, а вот автоматы напрочь отказываются принимать Фишки своего казино. Полезла в ГЕКК, не знаю что я там хотела найти, но интуитивно набрела на скрипты. И заметила некую разницу в содержании скрипта в falloutNV.esm и в 7758_CasinoMillionCa.esp.  В FalloutNV  скрипт scn vGomorrahSlot01Script  содержит  строчку ShowSlotMachineMenuParams GomorrahCasinoData 1 60 0, при чем не пойму что за 60 и 0, а в скрипте от мода такая же строчка но выглядит так : ShowSlotMachineMenuParams GomorrahCasinoData 1 CasinoMillionCaps.RateCasinoChips 0.  Гоморру взяла просто как пример. В чем проблема почему фишки казино не видят только автоматы? в игре кстати выскакивает предупреждение следующего характера : Invalid Chip in CasinoData list.  Поэтому наверное я и полезла в скрипты.

От Сердца К Солнцу
RustWays  Offline  Сообщение №1405 написано: 13 марта 2015, 13:42



Цитата Joopeeter

А если не надеяться на то, что компилятор что-то там склеит, и самому поместить всё в один блок, то исполняется и вторая половина.


Я больше теоретик. Как засунуть в один блок?

КсюXa  Offline  Сообщение №1406 написано: 13 марта 2015, 13:50 | Отредактировано: КсюXa - 13 марта 2015, 14:03


Гид по Мастерской


Цитата RustWays

Как засунуть в один блок?


Ну как-то так:
------------------------
Scn RWTstcrn

int State

begin onActivate Player
if State == 0 ; это можно убрать && GetActionRef == player
set State to 1
playGroup Forward 1
endif
if State == 1
playGroup Backward 1
endif
end

--------------------------
Зачем два блока OnActivate - можно все в одном сделать.
В переводе на человеческий язык, текст скрипта гласит:
  Начало исполнения При активации (чего-то) Игроком
     если состояние = 0, то проиграть анимашку форвард
     если состояние = 1, то проиграть анимашку бэквард
  Конец выполнения


Состояние устанавливается при ПЕРВОЙ активации: было ноль по-умолчанию - стало 1. И осталось навсегда. И при всех последующих активациях будет проигрываться анимашка бэквард

Ой, всё...
RustWays  Offline  Сообщение №1407 написано: 13 марта 2015, 13:58 | Отредактировано: RustWays - 13 марта 2015, 14:00



Цитата КсюXa

было ноль по-умолчанию - стало 1


А вернуть на форвард? Setstate to 0?

КсюXa  Offline  Сообщение №1408 написано: 13 марта 2015, 14:05


Гид по Мастерской


А было заявлено:
Активируем впервые - форвард. Второй раз - бэквард.
:D

Добавлено (13 Марта 2015, 17:02)
---------------------------------------------
Наверное, так:
Scn RWTstcrn 

int State 

begin onActivate Player 
 if State == 0 
   playGroup Forward 1 
   set State to 1 
endif 
if State == 1 
playGroup Backward 1 
   set State to 0 
endif 
end

--------

Добавлено (13 Марта 2015, 17:05)
---------------------------------------------
Я - теоретик. :)


Ой, всё...
RustWays  Offline  Сообщение №1409 написано: 13 марта 2015, 14:08



Цитата КсюXa

Я - теоретик.


Дай пять. Проверю сейчас...

КсюXa  Offline  Сообщение №1410 написано: 13 марта 2015, 15:09 | Отредактировано: КсюXa - 13 марта 2015, 15:11


Гид по Мастерской


Цитата RustWays

Дай пять. Проверю сейчас...



Нам - капец... Смотри


Щя разнесут...

Ой, всё...
Форум » Fallout: New Vegas » Мастерская » Скрипты (Вопросы и ответы)
Поиск:





Ответ на жалобу смотрите в разделе жалоб