Вверх Вниз


Модератор форума: Ipatow, КсюXa, ApeX  
Форум » Fallout: New Vegas » Мастерская » Скрипты (Вопросы и ответы)
Скрипты
a3apbi4  Offline Сообщение №1 написано: 07 Декабря 2010 в 21:01


Странник


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




JupiterJour  Offline Сообщение №1411 написано: 13 Марта 2015 в 19:03


_


1037
Цитата КсюXa ()
begin onActivate Player
 
Любой теоретик знает, что
Цитата ГЭКК-вики
OnActivate player will compile but act as OnActivate

То есть надо, как и было изначально, проверить внутри блока GetActionRef или IsActionRef.

Добавлено (13 Марта 2015, 18:11)
---------------------------------------------

Цитата КсюXa ()
Щя разнесут...

Я ж для пользы дела...

Добавлено (13 Марта 2015, 18:18)
---------------------------------------------

Цитата dianka48 ()
В FalloutNV  скрипт scn vGomorrahSlot01Script  содержит  строчку ShowSlotMachineMenuParams GomorrahCasinoData 1 60 0, при чем не пойму что за 60 и 0, а в скрипте от мода такая же строчка но выглядит так : ShowSlotMachineMenuParams GomorrahCasinoData 1 CasinoMillionCaps.RateCasinoChips 0.

Здесь изменяется максимальная ставка. Вместо фиксированного значения 60 крышек назначается какая-то переменная. К фишкам это отношения, похоже не имеет. А вот предупреждение Invalid Chip in CasinoData list, откуда бы оно там ни выскакивало, имеет. Неправильная фишка в объекте "казино"... То есто смотреть надо, что там переправлено в этих казино и их фишках (Miscellaneous - Casino и Miscellaneous - Casino Chip).
Хм, фишка там в каждом казино одна на все виды развлечений. Почему тогда не работают только автоматы? В чём эта нерабочесть, кстати, выражается в смысле симптомов?

Добавлено (13 Марта 2015, 19:03)
---------------------------------------------
Скачал, посмотрел. Мод простой как табуретка, ломаться там нечему. В казино ничего не трогали, кроме максимального выигрыша. В игре бага не наблюдал. Версия игры 1.4.


КсюXa  Offline Сообщение №1412 написано: 13 Марта 2015 в 19:29 | Отредактировано: КсюXa - Пятница, 13 Марта 2015, 21:20


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


1142
Цитата Joopeeter ()
Любой теоретик знает, что
Не знаю, как там в Лондоне на ГЕКК-вики, я не была. Может, там собака — друг человека! А у нас управдом — друг человека! а тут я проверила такую конструкцию ... Взяла модельку с набором анимашек, написала тот скрипт и зашла в игру. Работает жа. Что еще нужно человеку, чтобы достойно встретить старость,  получить желаемое.
RustWays, только там в скрипт нужно внести маленькое изменение. Потому что переменная State  успевает смениться, и анимашка форвард прерывается, едва начавшись. Попробуй так:
Scn RWTstcrn

int State

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

-------------
тут на твое усмотрение: хочешь - в типе блока пишешь OnActivate Player, хочешь - внутри блока - && GetActionRef == player . раз так  более правильно.
Я проверила именно на приведенном варианте.

Добавлено (13 Марта 2015, 19:29)
---------------------------------------------
А, да... Вместо
int State
я использовала
Short State
Переменной типа Short вполне достаточно, чтоб отслеживать два состояния: 0 и 1 без точности до n-знаков после запятой

Я шаурму в ларьках на улице не покупаю. Делаю дома сама. Получается как настоящая. Даже траванулась пару раз.
JupiterJour  Offline Сообщение №1413 написано: 13 Марта 2015 в 20:30


_


1037
Цитата КсюXa ()
Взяла модельку с набором анимашек, написала тот скрипт и зашла в игру

Ну и какой ты после этого теоретик?
Цитата КсюXa ()
OnActivate Player, хочешь - внутри блока - && GetActionRef == player . раз так  более правильно.

Написать, конечно, можно и OnActivate player, но только потом не надо удивляться, что блок срабатывает при активации кем попало, а не только игроком. Хоть неписи обычно активацией активаторов по своей инициативе и не занимаются, но в исходном скрипте проверка была. Наверное, в моде есть непись-любитель поактивировать что под руку подвернётся... unsure
Цитата КсюXa ()
без точности до n-знаков после запятой

int это short и есть. Целые числа.

КсюXa  Offline Сообщение №1414 написано: 13 Марта 2015 в 20:54 | Отредактировано: КсюXa - Пятница, 13 Марта 2015, 20:57


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


1142
Цитата Joopeeter ()
в моде есть непись-любитель поактивировать что под руку подвернётся

А нефиг...
Цитата Joopeeter ()
int это short и есть. Целые числа.

Бааааалиннн... спутала с Float
То-то казалось, что буков должно быть больше.

Я шаурму в ларьках на улице не покупаю. Делаю дома сама. Получается как настоящая. Даже траванулась пару раз.
dianka48  Offline Сообщение №1415 написано: 14 Марта 2015 в 20:23


Странник


9
Цитата Joopeeter ()
Здесь изменяется максимальная ставка. Вместо фиксированного значения 60 крышек назначается какая-то переменная. К фишкам это отношения, похоже не имеет. А вот предупреждение Invalid Chip in CasinoData list, откуда бы оно там ни выскакивало, имеет. Неправильная фишка в объекте "казино"... То есто смотреть надо, что там переправлено в этих казино и их фишках (Miscellaneous - Casino и Miscellaneous - Casino Chip).
Хм, фишка там в каждом казино одна на все виды развлечений. Почему тогда не работают только автоматы? В чём эта нерабочесть, кстати, выражается в смысле симптомов?


Я пыталась найти проблему, почему у меня мод не хочет работать, точнее работает все кроме игровых автоматов. Все происходит следующим образом: Покупаю фишки у кассира, подхожу к игровому автомату, пытаюсь его использовать, и мне выводится это сообщение : Invalid Chip in CasinoData list.   Вот и вся проблема. Версия игры 1.4.  НВСЕ МСМ ФНВЭДИТ всякие баг фиксы, и ни чего не спасает.

От Сердца К Солнцу
Xilandro  Offline Сообщение №1416 написано: 15 Марта 2015 в 00:53 | Отредактировано: Xilandro - Воскресенье, 15 Марта 2015, 00:57



33
Цитата RustWays ()
есть объект, есть две анимации -форвард и бэквард. Активируем впервые - форвард. Второй раз - бэквард.
Анимации объекта? Или игрока?
Немного почистил код для удобности, и забил всё в один блок. Всё работает.


Код
Scn RWTstcrn   
int State
Begin OnActivate
      if GetAR == player
          if State == 0
              Player.PlayGroup Forward 0 ;потому что 1-ца  багнутая
              Set State to 1
          elseif state == 1
              Player.PlayGroup Backward 0
              Set State to 0
          endif
      endif
End


если анимации для объекта - то всё то же самое, но обязательно используй в начале set SelfRef to This (очень часто игра багается и скрипт не воспринимает реф-носитель, в итоге можно запороть не только один а сразу нексколько скриптов) и selfRef.PlayGroup forward\backward

Цитата КсюXa ()
Я - теоретик.
 метко


Evaluate, adapt, destroy
JupiterJour  Offline Сообщение №1417 написано: 17 Марта 2015 в 11:12


_


1037
Цитата dianka48 ()
Я пыталась найти проблему, почему у меня мод не хочет работать, точнее работает все кроме игровых автоматов. Все происходит следующим образом: Покупаю фишки у кассира, подхожу к игровому автомату, пытаюсь его использовать, и мне выводится это сообщение : Invalid Chip in CasinoData list.   Вот и вся проблема. Версия игры 1.4.  НВСЕ МСМ ФНВЭДИТ всякие баг фиксы, и ни чего не спасает.

Как я уже говорил, этот мод никаких фишек не трогает. В казино он меняет только максимальный выигрыш, в скриптах автоматов, рулетки и блэкджека - только максимальную ставку.
Что самое смешное, в основном мастер файле и в дополнениях никаких сообщений о фишках-инвалидах не обнаруживается.
Пожалуй, на всякий случай уточню. Проверялось на чистой игре (по крайней мере без других "улучшителей казино")? Без этого мода работает? Если на чистой и без мода работает... Что ж, необъяснимое иногда случается. unsure

dianka48  Offline Сообщение №1418 написано: 17 Марта 2015 в 14:10


Странник


9
Joopeeter,  какие фишки инвалиды? :) Там же написано, что неправильное *ID*  фишки в CasinoData List или фишка которой я хочу активировать Слот-машину не найдена в CAsinoData List.  Улучшений на казино кроме этого мода нет. Посмотрела в FNVEdit, ну не пойму в чем проблема, может в различиях с поле SCDA - Complited Script.  RefCount?   Тогда будьте добры скажите мне, как найти CasinoData List?   Сама

От Сердца К Солнцу
Galko  Offline Сообщение №1419 написано: 17 Марта 2015 в 14:25


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


1889
Цитата dianka48 ()
какие фишки инвалиды?

те самые, про которые было сказано:
Цитата dianka48 ()
и мне выводится это сообщение : Invalid Chip in CasinoData list


:)

Ваше счастье, что я не ваше счастье
JupiterJour  Offline Сообщение №1420 написано: 17 Марта 2015 в 22:04


_


1037
Цитата dianka48 ()
Посмотрела в FNVEdit, ну не пойму в чем проблема, может в различиях с поле SCDA - Complited Script.  RefCount?

Проблема в том, что скрипты этих всех азартных игр к фишкам не относятся вообще никак. Как и весь этот мод. И сообщение берётся не пойму откуда. Я имею ввиду, что текст сообщения не обнаруживается в основном мастер-файле и тем более в моде. Оттого и подозреваю, что что-то ещё подключено к игре.

Цитата dianka48 ()
Тогда будьте добры скажите мне, как найти CasinoData List?

Полагаю, это те самые казино, которые в разделе Casino, если смотреть через FNVEdit. Через ГЭКК их видно наглядней (раздел Miscellaeuos - Casino). Признаюсь, что-то в них сломать мне так и не удалось.

dianka48  Offline Сообщение №1421 написано: 18 Марта 2015 в 00:25 | Отредактировано: dianka48 - Среда, 18 Марта 2015, 00:51


Странник


9
Joopeeter,  , зачем вы надо мной издеваетесь? Разве у слова Invalid  только одно значение? Я Вам сделал, что-то плохое или оскорбила Вас? Ни когда не понимала глум над человеком который пытается разобраться с проблемой и просит помощи у более знающих людей, а те в свою очередь вместо конструктива, буквально переводят слова, хотя это абсолютно неуместный перевод. Если посмотреть с юмором на это, то фишка то правда инвалид, раз её не видит игра.
А вот все моды:


В FOMM в другом порядке все выставлено.
 Тогда как игра определяет; могу я поиграть в слот-машину; какое количество у меня фишек; и соответствуют ли фишки этому казино?

От Сердца К Солнцу
JupiterJour  Offline Сообщение №1422 написано: 18 Марта 2015 в 09:29 | Отредактировано: Joopeeter - Среда, 18 Марта 2015, 03:00


_


1037
Да не издевается никто. Это я просто так шучу, что без смайлика об этом и не догадаешься.
Я вот о чём. Текст сообщения - его игра не сама сочинила, он где-то написан. В FalloutNV.esm и DLC его нет, по крайней мере поиск в ГЭКК ничего не выдаёт, а поиск там будь здоров какой дотошный. Значит оно в каком-то из этих модов. Значит мод, в котором оно находится, каким-то образом затрагивает казино, иначе за каким бы лешим автору мода вносить туда это сообщение. Значит, возможен конфликт с другими модами, затрагивающими казино. Наш рассматриваемый мод сам по себе, когда он единственный подключенный, ничего в казино сломать не может.
Конечно, скачивать всю эту гору модов я не стану. Да и поиск конфликтов среди чьих-то чужих модов - это не то, что я называю интересной задачей. Да и тема совсем не о том.
Поэтому просто несколько соображений, куда, по моему мнению, надо смотреть. Загрузить всю кучу в FNVEdit и в ГЭКК (ну, может, кроме тех, которые совсем вне подозрений - типа всяких классикпаков). Особенно под подозрением "исправители всех ошибок" и "улучшители всего". В Эдите посмотреть в разделы Casino и Casino Chip - какие моды туда залезают. Глянуть, не затронуты ли сами игровые автоматы - они в разделе Activator, игровой автомат Гоморры, например, называется, vGomorrahSlot01. В ГЭКК зайти в меню Edit - Find Text и ввести в поиск текст сообщения или его часть. В каком моде сообщение отыщется, тот, голубчик, и конфликтует.

Цитата dianka48 ()
Тогда как игра определяет; могу я поиграть в слот-машину; какое количество у меня фишек; и соответствуют ли фишки этому казино?

Разработчики сделали это на уровне игрового движка. Сделали такую разновидность игровых объектов - "казино" (в ГЭКК это Miscellaneous - Casino), сделали разновидность объектов "фишка для казино" (Miscellaneous - Casino Chip). В каждом казино в поле Currency указано, какая фишка имеет в нём хождение. Указаны максимальный выигрыш и квест, следящий за выигрышами через свой скрипт. Указаны модели и текстуры, которые будут на экране во время азартных игр. Указаны модели фишек, которые будут сложены стопочкой на игровом столе (это не объекты "фишка для казино").
Автоматы и столы для азартных игр, расставленные по залу - это просто активаторы. На каждом коротенький скрипт, который проверяет, можно ли игроку играть в этом казино, и если можно, то даётся команда показать меню соответствующей азартной игры из соответствующего объекта "казино". В скрипте же указывается и максимальная ставка. Наличие фишек в скрипте не проверяется. Остаётся предположить, что этой проверкой занимается лично движок, потому что больше тут вклиниться некому.

Добавлено (18 Марта 2015, 09:29)
---------------------------------------------

Цитата Xilandro ()
              Player.PlayGroup Forward 0 ;потому что 1-ца  багнутая

Нажал на кнопку и пошёл, пошёл, пошёл... А что, можно было бы использовать. Жаль, что это не работает хоть сколько-нибудь удовлетворительно. Особенно с нолём.

Quazar  Offline Сообщение №1423 написано: 19 Марта 2015 в 14:28



446
Никто еще не разбирался с этим плагином - JIP NVSE Plugin ?
Проект вроде многообещающий..

Xilandro  Offline Сообщение №1424 написано: 19 Марта 2015 в 17:51



33
Цитата Joopeeter ()
Нажал на кнопку и пошёл, пошёл, пошёл... А что, можно было бы использовать. Жаль, что это не работает хоть сколько-нибудь удовлетворительно. Особенно с нолём.
С нулем анимация не багается если используешь "if someInt == 0; rActor.playGroup; let someint := 1; endif", она проигрывается ровно один фрейм. Да и вообще для активаторов лучше использовать specialIdle а группы не трогать.
Если нужно чтобы "нажал на кнопку и пошел пошел пошел" - то лучше делать что-то вроде этого:
Нажал снова - встал на месте.
Код
scn someScriptName
int bLock
int bInit
Begin GameMode

     if IsKeyPressed 50
         let bLock := 1
     elseif bLock
         if bInit
             let bInit := 0
             player.PlayGroup Idle 0
         else
             let bInit := 1
         endif
         let bLock := 0
     endif
     if bInit == 1
         Player.PlayGroup Forward 0
     endif
End
На игроке работает моментами коряво, игра ждет пока обновится анимация, потому порой Playgroup начинается очень медленно, и при движении мыши - скорость фиксится. На НПС работает без этой неприятной мелочи.

Цитата Quazar ()
Никто еще не разбирался с этим плагином - JIP NVSE Plugin ?Проект вроде многообещающий..
Я разбирался. Есть пара странных функций типа Get\SetPrimitiveBound, а в остальном всё очень цивильно, звуки, погода, прожектили, интерфейс, новые функции для оружия и аммуниции. С первого взгляда плагин очень легко недооценить, но он на самом деле дает возможность сделать очень крутые моды о которых раньше даже мечтать было страшно) Да и проект очень быстро вышел из разряда пряника в разряд мастхеф.


Evaluate, adapt, destroy
JupiterJour  Offline Сообщение №1425 написано: 19 Марта 2015 в 19:06 | Отредактировано: Joopeeter - Четверг, 19 Марта 2015, 19:13


_


1037
Цитата Xilandro ()
С нулем анимация не багается если используешь "if someInt == 0; rActor.playGroup; let someint := 1; endif"

То есть тот предыдущий скрипт работает? Надо же, а мне показалось наоборот.

Цитата Xilandro ()
Если нужно чтобы "нажал на кнопку и пошел пошел пошел"

Не знаю, может и нужно. Я по простоте душевной подумал, что первоначально спрашивалось просто-напросто о запуске анимации активатора. В пешее путешествие игрока логичнее было бы отправить из диалога.

Цитата Xilandro ()
лучше делать что-то вроде этого

Не смотря на разные незнакомые слова типа IsKeyPressed и let, мне кажется, что принципиальных отличий от предыдущего скрипта тут нету. Это теоретически. Посмотрел бы и на практике, но я из тех странных типов, которые играют в ванильку без нормальных модов.

Xilandro  Offline Сообщение №1426 написано: 19 Марта 2015 в 19:25 | Отредактировано: Xilandro - Четверг, 19 Марта 2015, 19:27



33
Цитата Joopeeter ()
а мне показалось наоборот.
Всё там работает. Если нужно форвард\бэквард анимацию для активатора (не объекта) и есть какие-то проблемы с проигрыванием - нужно проверить
cycle type в kf и убедиться что там clamp. Одного фрейма playgroup
хватит чтобы анимация проигралась полностью. Если нет - можно
попробовать вместо нуля единицу, хотя не уверен багнется ли. Если начнет глючить - анимация типа specialIdle и rActivator.playIdle всё сделает.

Отличие второго скрипта в том что "нажал кнопку и пошел пошел пошел", а не "нажал кнопку и типа пошел, но не пошел" + всё на одной кнопке, работает как on\off
по поводу IsKeyPressed -  http://geck.bethsoft.com/index.php?title=IsKeyPressed
А let - тот же set только с кучей полезных возможностей, позволяет работать с массивами, стрингами и прочей кучей полезных новых функций в NVSE 4+. Чем быстрее перешел на Let - тем лучше, потому использую повсеместно вместо set. http://geck.bethsoft.com/index.php?title=Let


Evaluate, adapt, destroy
КсюXa  Offline Сообщение №1427 написано: 19 Марта 2015 в 19:26


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


1142
Цитата Joopeeter ()
которые играют в ванильку без нормальных модов.
Дай, Джу, на счастье лапу мне! Я тоже из таких.

Я шаурму в ларьках на улице не покупаю. Делаю дома сама. Получается как настоящая. Даже траванулась пару раз.
JupiterJour  Offline Сообщение №1428 написано: 19 Марта 2015 в 20:14 | Отредактировано: Joopeeter - Четверг, 19 Марта 2015, 20:40


_


1037
Может быть, скрипт отказывается работать за бесплатно?

Цитата Xilandro ()
Всё там работает.

Ну как не поверить такому уверенному тону? Раз "там" работает, то и тут должно. Всё, глазам своим верить отныне перестаю.

Цитата Xilandro ()
Отличие второго скрипта в том что "нажал кнопку и пошел пошел пошел", а не "нажал кнопку и типа пошел, но не пошел" + всё на одной кнопке, работает как on\off

Стало быть, в плане Player.PlayGroup Forward 0 отличий нет. Ну и хорошо. Работает же.

Цитата КсюXa ()
на счастье лапу

Кроличью?

Xilandro  Offline Сообщение №1429 написано: 19 Марта 2015 в 20:46 | Отредактировано: Xilandro - Четверг, 19 Марта 2015, 21:26



33
Фонтан сарказма в лучшем виде. Видимо, подробно объяснить что и где не работает, здесь не позволяет либо менталитет, либо религия.
p.s.



Может всё-таки проблема не в скрипте, а в тех у кого скрипт отказывается работать за бесплатно.


Evaluate, adapt, destroy
JupiterJour  Offline Сообщение №1430 написано: 19 Марта 2015 в 22:27 | Отредактировано: Joopeeter - Четверг, 19 Марта 2015, 22:29


_


1037
Скрипт - молодец. Вот только что он смог? Запустил ли он player.PlayGroup? По виду, он запустил просто PlayGroup или ВывескаРеф.PlayGroup. Это и я могу.

Цитата Xilandro ()
объяснить что и где не работает, здесь не позволяет либо менталитет, либо религия.

Вообще-то да, ну да ладно.
На всякий случай напомню, что речь о запуске анимации на игроке, а не на активаторе.
От первого лица только чуть дёргается камера, как при коротком нажатии на клавишу движения. Да и то, только если шевельнёшь мышкой или клавой. Что с нолём, что с единицей - без разницы.
От третьего лица с нолём та же история - короткий порыв к движению, как при кратком нажатии клавиши. От третьего лица с единицей начинается медленное движение. Шевельнёшь чем-нибудь - движение обретает нормальную скорость. При движении активировать активатор снова не удаётся, но это ладно, чёрт бы с ним.
Чистая игра без модов, улучшителей, исправителей и т.п.
Подробно описывать, как я, падкий до халявы, на форуме нажал Ctrl+C, а в редакторе - Ctrl+V, не стану. В то, что эту операцию я проделал правильно, придётся поверить на слово.

Добавлено (19 Марта 2015, 22:27)
---------------------------------------------
NPC на PlayGroup с нолём реагируют так же - коротким подёргиванием.

Quazar  Offline Сообщение №1431 написано: 20 Марта 2015 в 06:33



446
Цитата Xilandro ()
интерфейс,
Там достаточно много документации, нет возможности полностью с ней ознакомится. Меня интересовал вопрос - нет ли там функции, которая позволяет задать референс-ссылку на выделенный в пип-бое объект? Именно выделенный, а не одетый или использованный..

Ipatow  Offline Сообщение №1432 написано: 20 Марта 2015 в 07:30



2337
Цитата Quazar ()
референс-ссылку на выделенный в пип-бое объект
Если я правильно понимаю этот механизм, у большинства предметов, находящихся в инвентаре, нет собственного FormID. Точнее, он есть только у тех, которые недавно были именно референс-объектами, самостоятельными объектами игрового мира - на полу валялись например (и существование этого FormID привязано к загруженности той ячейки, в которой оно валялось).

Даже в тех случаях, когда FormID есть, это не "полноценный" референс - например, оружие в контейнере не может быть заряжено, хотя владелец у предмета может быть, отсутствуют координаты X/Y/Z, хотя масштаб может быть не единица...

Quazar  Offline Сообщение №1433 написано: 20 Марта 2015 в 08:38 | Отредактировано: Quazar - Пятница, 20 Марта 2015, 08:39



446
Ipatow, дело в том что в Обливионе такая функция была (точнее не в самой игре, а опять же в экстендере), вот правда ее название я конечно уже не вспомню.. Была надежда, что возможно ее все же перенесут в фоллаут.

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

Филя12  Offline Сообщение №1434 написано: 20 Марта 2015 в 13:36


Странник


11
А поможете еще с одним вопросом? Вот мне нужно сделать так чтобы после убийства гг 20 когтей смерти появился мессадж об этом... Есть лист-form куда вписаны все когти и есть GetDeadCount но скрипт не хочет сохранятся - пишет что-то про actorbase. 
Сама строчка такая:
IF Player.GetDeadCount CrDeathClawList > 20
   ShowMessage DeathClawDead20Message
ENDIF

и ничего не сохраняется. Вот так. Если вместо лист-form пишу ИД какогото когтя, тогда все хорошо сохраняется и работает. Но когтей ж много разных в игре у всех ИД разные, как тогда быть? как можно GetDeadCount вместе с  form заставить работать? Или нельзя так? 

..

и спасибо заранее ^_^

Galko  Offline Сообщение №1435 написано: 20 Марта 2015 в 13:41 | Отредактировано: Galko - Пятница, 20 Марта 2015, 13:45


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


1889
Цитата Филя12 ()
пишет что-то про actorbase.
А полностью текст ты привести не можешь? И мы должны гадать - что же там компилятор пишет?
А во вторых: CrDeathClawList
Лист. т.е - список. Получается в скрипте написано: если количество убитых СПИСКОВ больше 20. Как можно убить список?

А вообще-то все это уже реализовано в достижениях (в ГЕКК это раздел Challenge) Когда после убийства скольких-то там тараканов, скорпионов, мутантов, (нужное подчеркнуть) выводится сообщение о награде. Можешь посмотреть, как это сделано и повторить.

Ваше счастье, что я не ваше счастье
Филя12  Offline Сообщение №1436 написано: 20 Марта 2015 в 15:15


Странник


11
Пишет такую ошибку: invalid actor base 'CrDeathClawList' for parameter Actor Base  

и три кнопки Да , Нет, Отмена 

И все, скрипт не сохраняется.

>> в ГЕКК это раздел Challenge

А мне для Фоллаута нужно, там нет этих достижений.

>> Как можно убить список?

Я думал что будут считаться те кричеры которые в этом списке. Если убито 20 или больше кричеров из списка тогда и появится мессадж. 

..
я млжет не так что пишу но я 3 недели назад только gekk первый раз открыл, ничего не знаю еще.
Вот и пишу чтобы узнать как можно сделать такой скрипт. Очень нужно. я как раз и хочу сделать типа достижений как в Вегасе но конечно попроще. Для себя.

Xilandro  Offline Сообщение №1437 написано: 20 Марта 2015 в 15:38



33
Цитата Quazar ()
Там достаточно много документации, нет возможности полностью с ней ознакомится. Меня интересовал вопрос - нет ли там функции, которая позволяет задать референс-ссылку на выделенный в пип-бое объект? Именно выделенный, а не одетый или использованный..
Референс на выделенный в пипбое объект? К сожалению таких функций я не видел.
Ipatow прав. У предметов в инвентаре есть BaseID, но нет референсов. Так же нет возможности работать с этими BaseID как с обычными рефами в привычном нам порядке типа set xRef to Player.SomeFunction ItemBaseID
Грубо говоря инвентарь живет своей жизнью, и прямого доступа к нему не существует. Как игра с ним справляется - никто не знает. К счастью есть такая штука как inventory references функции и лупы, портированные с OBSE, в обле была такая же проблема. Эти функции дают предмету в контейнере собственный временный референс, но ровно на один фрейм, так что как только функция отвалилась и ты перешел в следующий if - endif блок - референс уже NULL. Очень сильно советую взять в привычку юзать IsFormValid прежде чем делать что-то с инвентори рефом.
вот такие функции.
  • GetFirstRefForItem
  • GetInvRefsForItem
  • GetNextRefForItem

Про луп подробно написано здесь: http://obse.silverlock.org/obse_command_doc.html#Inventory_Reference
Впрочем даже со всеми этими функциями много ты с инв.рефами не наделаешь. Только выудишь нужную инфу, например хп всего оружия в инвентаре.

Можешь описать зачем тебе получение рефа с выделенного объекта? Может есть некий обходной путь сделать то что ты задумал.

Добавлено (20 Марта 2015, 15:38)
---------------------------------------------

Цитата Quazar ()
вот правда ее название я конечно уже не вспомню..
Давай вспоминай. Вспомнишь - пойду спрошу злых кодеров ее портировать.)


Evaluate, adapt, destroy
Quazar  Offline Сообщение №1438 написано: 20 Марта 2015 в 16:48 | Отредактировано: Quazar - Пятница, 20 Марта 2015, 16:52



446
Цитата Xilandro ()
Давай вспоминай. Вспомнишь - пойду спрошу злых кодеров ее портировать.)
Порылся в старых плагинах для Обливиона, нашел название - GetActiveMenuSelection. Относится к UI Functions.
Сам я ее не использовал, но видел по крайней мере 3 плагина в котором она была задействована, один из них точно Kyoma Spell Renamer. В режиме меню она действует так - курсором мыши выделяется в нужный объект (не обязательно материальный предмет в инвентаре), потом фактически ты можешь делать с выделенным что хочешь на скриптовом уровне (трансформировать, добавить какие-то свойства, переименовать и т.д.) Как правило, для этого требовалось еще какое-то дополнительное действие (например нажатие назначенной клавиши).

Но, повторюсь, это было в OBSE...

Цитата Филя12 ()
Пишет такую ошибку: invalid actor base 'CrDeathClawList' for parameter Actor Base

GetDeadCount работает только с базовыми актерами, не со списками. Поэтому у тебя скрипт компилируется когда ты в качестве проверки используешь EditorID существа (ты сам писал Если вместо лист-form пишу ИД какогото когтя, тогда все хорошо сохраняется и работает.), но НЕ компилируется когда указываешь список. Текст ошибки как раз на это и указывает. "Помирить" ты их никак не сможешь, если функция не работает со списками, то она не работает не чуть-чуть а насовсем..

Ipatow  Offline Сообщение №1439 написано: 20 Марта 2015 в 19:04



2337
Цитата Xilandro ()
пойду спрошу злых кодеров ее портировать
Интересно, кто-нибудь сделал функцию SetLinkedRef в пару к оригинальной Get..? Она ведь до скрежета зубовного напрашивается с незапамятных времён - у линка роскошное почётное место практически во всех кондишнах, пакеты поведения без динамической линковки просто бледная тень того, что могло бы быть... Среди FOSE-плагинов такая определённо не появлялась.

Xilandro  Offline Сообщение №1440 написано: 20 Марта 2015 в 19:17 | Отредактировано: Xilandro - Пятница, 20 Марта 2015, 19:25



33
SetLinkedReference есть в JIP плагине. Но функция не сохраняет изменения в сейв. Вот что мне сказал кодер по поводу похожей функции CloneForm "The function relies on functionality of the saves that no longer exists in the engine since FO3"
Скорее всего потому SetLinkedRef и была оставлена ребятами за бортом как в FOSE, так и в NVSE. Hlp с оф.форума пытался найти выход, эдакой обходной путь сохранения разных изменений в сейв файл, но безуспешно. Можно в принципе подолбать разрабов NX'а, они сохраняют свои данные в отдельный файл, может смогут сделать то же самое с референсами.

вот описание SetLinkedReference:
(null) reference.SetLinkedReference objectRef:ref

Sets the calling reference's linked reference to objectRef or, if the latter is not provided, removes its current linked
reference. Unfortunately, the changes are not saved with the game and this function must be called again when the game is restarted.


Evaluate, adapt, destroy
Форум » Fallout: New Vegas » Мастерская » Скрипты (Вопросы и ответы)
Поиск: