Прежде чем задавать вопрос - посмотрите в >> КАРТОТЕКЕ << Возможно, там уже есть готовый ответ.
Тема предназначена для общих вопросов. Прежде, чем тут что-то написать, посмотрите другие темы этого раздела. Вполне возможно, что они больше соответствуют тематике вашего вопроса.
Это странно. Вот прямо взял, и прямо проверил прямо в Вегасе прямо вот этот вот скрипт:
Код
scn zzScript
short DoOnce short Z
ref MyDead ref MyOuterItem
Begin OnLoad PlaceAtMe caps001 zzGlobal Disable MarkForDelete End
Begin GameMode
if DoOnce == 0 set MyDead to GetContainer if MyDead set Z to GetPos z + 100 set zzGlobal to ( MyDead.GetAV barter ) if MyDead.IsLimbGone 1 if GetRandomPercent <= 99;( player.GetAV luck) set MyOuterItem to PlaceAtMe zzItem MyOuterItem.SetPos z Z endif endif endif set DoOnce to 1 endif
End
Это работает как должно. Единственное, что заметил, это что некоторая часть крышек куда-то проваливается, наверное всё же под пол. Собрать удаётся всегда меньше, чем у жертвы был навык бартера. Работать перестаёт, когда дописываю удаление заскриптованного предмета. По-видимому, предмету в инвентаре нужно какое-то время, чтобы разместить внешний предмет. Ввожу задержку перед удалением 10 оборотов - работает снова:
Код
scn zzScript
short DoOnce short Z
ref MyDead ref MyOuterItem
Begin OnLoad PlaceAtMe caps001 zzGlobal Disable MarkForDelete End
Begin GAmeMode
if DoOnce == 0 set MyDead to GetContainer if MyDead set Z to GetPos z + 100 set zzGlobal to ( MyDead.GetAV barter ) if MyDead.IsLimbGone 1 if GetRandomPercent <= 99;( player.GetAV luck) set MyOuterItem to PlaceAtMe zzItem MyOuterItem.SetPos z Z endif endif endif set DoOnce to 1 elseif DoOnce > 0 && MyDead set DoOnce to DoOnce + 1 endif
if DoOnce >= 10 ShowMessage GenericDebugMsg set DoOnce to -1 RemoveMe endif
Блин, да вроде всё тоже самое делала. Единственное - убирала глобальную, вместо неё просто число 10 при "раскидывании" крышек ставила. А! Ну еще рандомпроцент убирала Не надо было?
Ой, всё...
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №5854
написано: 2 апреля 2018, 12:46
| Отредактировано: Joopeeter - 2 апреля 2018, 12:47
Да нет, почему не надо, надо. Это всё свистелки, принцип-то работы в другом...
Добавлено (02 Апреля 2018, 15:46) --------------------------------------------- Проверь, гейммод вообще работает? Ну то есть я привык, что всегда гейммод работает в инвентаре обычным образом и никогда не сталкивался с ситуацией, чтобы он там не работал, но мало ли, может, от каких-то настроек зависит Тогда, естественно, всё пойдёт прахом.
Гацтво... Всё равно не работает Даже если скрипт в "первозданном" виде. и глобальную вводила, и рандомпроцент оставила - нифига. Гейммод работает до команды if MyDead, дальше - молчит
Добавлено (02 Апреля 2018, 16:14) ---------------------------------------------
Цитата Joopeeter
никогда не сталкивался с ситуацией, чтобы он там не работал, но мало ли, может, от каких-то настроек зависит
Чистая игра с ДЛС плюс мой модик на всякое разное. Но в настройки не лажу, ничего не меняю. Что может быть-то?
Возможно, надо дать предмету больше времени, чтобы осмотреться и понять, что он в инвентаре:
Код
scn zzScript
short DoOnce short Z
ref MyDead ref MyOuterItem
Begin OnLoad PlaceAtMe caps001 zzGlobal Disable MarkForDelete End
Begin GAmeMode
if DoOnce == 10 set MyDead to GetContainer if ( MyDead != 0 ) set Z to ( GetPos z + 100 ) set zzGlobal to ( MyDead.GetAV barter ) if MyDead.IsLimbGone 1 if GetRandomPercent <= 99;( player.GetAV luck) set MyOuterItem to PlaceAtMe zzItem MyOuterItem.SetPos z Z endif endif endif endif
if ( DoOnce >= 0 ) && ( DoOnce < 20 ) set DoOnce to ( DoOnce + 1 ) else set DoOnce to -1 RemoveMe endif
Всё верно перки вот эти, квиклут, а точнее лут меню это (его просто можно через МСМ настраивать). В принципе можно просто изменить кнопку действия в назначении клавиш, но как было по умолчанию уже слишком привычно стало.
Как ты узнаешь на какой строчке происходит "поломка"?
Дык... по-колхозному Вписываю в скрипт в нужном месте дополнительную additem игроку какую-нибудь хрень и в игре смотрю - появилось ли сообщение о добавлении. Есть еще команда Print, но я её не знаю и как пользоваться - тоже . Кто бы научил
Дык... по-колхозному Вписываю в скрипт в нужном месте дополнительную additem игроку какую-нибудь хрень
Неужели это работает, я бы в жизнь не догадался, ну ты сама гениальность . А команду Print действительно надо бы изучить, про нее не раз уже слышу, явно инструмент отладки. Вообще, существовал бы инструмент который после вылета/зависания игры давал информацию по какой причине это произошло, ну там строку скрипта указывал или тип проблемы(скрипт, модели, что угодно), но думаю это уже было бы колдоство .
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №5865
написано: 3 апреля 2018, 00:55
| Отредактировано: Joopeeter - 3 апреля 2018, 01:12
Как сказал бы Каин, учу! Это как вставлять переменные в сообщения, только проще. Например, есть у тебя в скрипте переменная Var типа float и надо узнать c точностью два знака после запятой, какое же она приняла значение в каком-то месте скрипта. Пишем в этом месте: PrintToConsole "Var == %.2f" Var Когда скрипт дойдёт досюда, в консоли само напишется: Var == [тут будет значение Var с точностью два знака после запятой] В кавычках можно писать всё что угодно любыми словами, строго регламентировано только форматирование переменных - то, что идёт после знака процента. После форматированной переменной можно снова писать всё что угодно. Например: Printc "Var == %.2f and AnotherVar == %0.2f" Var AnotherVar Главное, чтобы количество переменных в кавычках и после кавычек совпадали, переменные после кавычек шли в нужном порядке и подходили по типу к формату (чтобы не получилось, что в кавычках стоит %.0f, а после кавычек реф-переменная). Всего функция принимает до двадцати одной переменной. Если в консоль вываливается слишком много всего, то можно записать это в файл для просмотра вне игры. Консольная функция называется SetConsoleOutputFile (это стандартная функция, не FOSE), но сама консоль понимает только сокращённое обозначение - SCOF. Например: scof "zz.txt" Будет создан файл zz.txt и всё, что будет после этого написано в консоли, сохранится в нём. Так что пользоваться не сложно, сложнее потом вычистить всё это из скрипта после отладки. Я например, когда вааще не понимаю, почему ничо не работает, втыкаю PrintToConsole чуть ли не после каждой строчки. На примере крышечного взрыва это выглядело бы примерно так:
Код
scn zzScript
short DoOnce short Z
ref MyDead ref MyOuterItem
;DEBUG VARIABLES short Outside short OutsideZ
Begin OnLoad set OutsideZ to GetPos z PrintToConsole "Outer item has appeared with %0.f Z position" OutsideZ set Outside to 1 PlaceAtMe caps001 zzGlobal PrintToConsole "Caps placed %0.f" zzGlobal Disable MarkForDelete End
Begin GAmeMode
if DoOnce == 10 PrintToConsole "DoOnce is %0.f, it's time to check where the item is" DoOnce set MyDead to GetContainer if MyDead != 0 PrintToConsole "The item is inside a container, the container is %n, RefID is %i " MyDead MyDead set Z to GetPos z + 100 set zzGlobal to ( MyDead.GetAV barter ) PrintToConsole "Variable Z is set to %0.f " Z PrintToConsole "Variable zzGlobal is set to %0.f" zzGlobal if MyDead.IsLimbGone 1 PrintToConsole "The container had a head 1 when it was alive but now does not have" if GetRandomPercent <= 99 PrintToConsole "Random percent is less than 99, it is predictable" set MyOuterItem to PlaceAtMe zzItem if MyOuterItem != 0 PrintToConsole "Variable MyOuterItem is set in script to %n, RefID is %i " MyOuterItem MyOuterItem else PrintToConsole "VARIABLE MYOUTERITEM IS NOT SET IN SCRIPT" endif MyOuterItem.SetPos z Z PrintToConsole "Item's Z position is set in script to %0.f" Z else PrintToConsole "Random percent is more than 99 O_o" endif else PrintToConsole "The container's head 1 is untouched or this container has no head from the beginning" endif else PrintToConsole "VARIABLE MYDEAD IS NOT SET IN SCRIPT" endif endif
if DoOnce < 20 && DoOnce >= 0 set DoOnce to ( DoOnce + 1 ) if Outside == 0 PrintToConsole "DoOnce is %0.f" DoOnce else PrintToConsole "GAMEMODE IS RUNNING OUTSIDE DOONCE IS %0.f" DoOnce endif else PrintToConsole "DoOnce is %0.f, the item should remove itself" DoOnce set DoOnce to -1 RemoveMe endif
if DoOnce < 0 PrintToConsole "GAMEMODE IS STILL RUNNING INSIDE DOONCE IS %0.f" DoOnce set DoOnce to DoOnce - 1 endif
End
Сорри фор май Инглиш, ит из нот май нэйтив лэнгвидж.
И потом в файле можно почитать как оно всё было:
SetConsoleOutputFilename >> 'zz.txt' player.addperk 02000adf Added Perk zzPerk to with rank 1 coc primmtents player.placeatme 7f4e5 prid ff001099 killactor player 1
тут я удалил не относящиеся к делу сведения, которые игра вываливает в консоль после killactor
DoOnce is 1 DoOnce is 2 DoOnce is 3 DoOnce is 4 DoOnce is 5 DoOnce is 6 DoOnce is 7 DoOnce is 8 DoOnce is 9 DoOnce is 10 DoOnce is 10, it's time to check where the item is The item is inside a container, the container is Рейдер, RefID is FF001099 Variable Z is set to 7448 Variable zzGlobal is set to 11 The container had a head 1 when it was alive but now does not have Random percent is less than 99, it is predictable Variable MyOuterItem is set in script to zzItemName, RefID is FF00109D Item's Z position is set in script to 7448 DoOnce is 11 DoOnce is 12 Outer item has appeared with 7448 Z position Caps placed 11 GAMEMODE IS RUNNING OUTSIDE DOONCE IS 1 DoOnce is 13 DoOnce is 14 DoOnce is 15 DoOnce is 16 DoOnce is 17 DoOnce is 18 DoOnce is 19 DoOnce is 20 DoOnce is 20, the item should remove itself qqq Bye.
Заодно можно обнаружить всякое интересное. Например, мы задаём наружному айтему координату Z за два оборота до его появления. Он, как ни странно, эту координату принимает как будто так и надо, но вообще-то конструкция держится на соплях. Надо, если по хорошему, записать Z во внешнюю переменную, в блоке OnLoad брать её оттуда, и позицию Z задавать в этом же блоке.
Изменение репутации для пользователя KALOPLIUM31
KALOPLIUM31Offline
Сообщение №5866
написано: 3 апреля 2018, 07:17
| Отредактировано: KALOPLIUM31 - 3 апреля 2018, 07:23
Доброго времени суток ! Подскажите как сделать возможным устанавливать обвесы на "уникальное оружие" ? к примеру "Секвойя Рейнджера" или "Мария". Я пробовал с Марией на примере пистолета 9мм , но когда в игре устанавливаю модули Мария визуально превращается в обычный пистолет 9мм и оптика не переходит в режим прицеливания а просто стоит на оружии. Буду крайне признателен за помощь !!!
Модели этого уникального оружия с установленными обвесами я нашёл а вот сами обвесы найти не могу , нашёл только обвесы простого пистолета 9 мм. И ApeX если можно в лс а то вдруг весь форум испишем ) а лучше по громкой связи объяснишь и всё.
Дык я тоже не заморачивался. Но ведь куда-то же мне надо было попасть: на стартовом экране не шибко потестируешь А палатка возле Примма - единственная ячейка Вегаса, у которой я помню ID.
Здравствуйте! Хотел задать такой вопрос. Решил сделать в ГЭККе плазменный пистолет, урон которого зависел бы от степени радиоактивного облучения. Можете подсказать, как создавать подобные эффекты для оружия или если есть статьи на эту тему скинуть ссылки на них?
Облучения кого? К тому же радиация на НПС не влияет.
Изменение репутации для пользователя Shtuka
Shtuka
Сообщение №5875
написано: 4 апреля 2018, 20:20
| Отредактировано: Shtuka - 4 апреля 2018, 20:17
OtecZoper, проще некуда, создать обжект ефект и повесить на пушку, в эффекте сделать к примеру так, но тут по вкусу: https://yadi.sk/i/XH2D-DcV3U73qT Пороги и дамаги это сочинение на свободную тему, спрашивай если что.
Добавлено (04 Апреля 2018, 23:12) --------------------------------------------- ApeX, я понял что гг, но все бывает...
Добавлено (04 Апреля 2018, 23:16) --------------------------------------------- Хотя не знаю что тут лучше будет, может новый базовый эфект создать со своим резистом и скриптом?
Добавлено (04 Апреля 2018, 23:17) --------------------------------------------- Смотрите у меня в лайках: ошибка 404 .
Добавлено (04 Апреля 2018, 23:20) --------------------------------------------- Думаю лучше вообще просто повесить скрипт на пушку.
Решил сделать в ГЭККе плазменный пистолет, урон которого зависел бы от степени радиоактивного облучения. Можете подсказать, как создавать подобные эффекты для оружия
Если не упираться в именно магические решения, я бы предположил, что проще всего, наверное, как-то так это исполнить:
GRUP Top "PERK" ……PERK - Perk [01000EA6] …………Record Header ………………Signature: PERK ………………Data Size: 348 ………………Record Flags ………………FormID: PERK - Perk [01000EA6] ………………Version Control Info 1: 09 40 00 00 ………………Form Version: 15 ………………Version Control Info 2: 00 00 …………EDID - Editor ID: RadPlasma …………DESC - Description …………DATA - Data ………………Trait: No ………………Min Level: 0 ………………Ranks: 1 ………………Playable: Yes ………………Hidden: Yes …………Effects ………………Effect ……………………PRKE - Header …………………………Type: Entry Point …………………………Rank: 0 …………………………Priority: 0 ……………………DATA - Effect Data …………………………Entry Point ………………………………Entry Point: Calculate Weapon Damage ………………………………Function: Set Value ………………………………Perk Condition Tab Count: 3 ……………………Perk Conditions …………………………Perk Condition ………………………………PRKC - Run On: Perk Owner ………………………………Conditions ……………………………………CTDA - Condition …………………………………………Type: Greater than …………………………………………Comparison Value: 400.000000 …………………………………………Function: GetActorValue …………………………………………Parameter #1: Rad Level …………………………………………Parameter #2: 00 00 00 00 …………………………………………Run On: Subject …………………………………………Reference: 0 ……………………………………CTDA - Condition …………………………………………Type: Less than or equal to …………………………………………Comparison Value: 600.000000 …………………………………………Function: GetActorValue …………………………………………Parameter #1: Rad Level …………………………………………Parameter #2: 00 00 00 00 …………………………………………Run On: Subject …………………………………………Reference: 0 …………………………Perk Condition ………………………………PRKC - Run On: Weapon ………………………………Conditions ……………………………………CTDA - Condition …………………………………………Type: Equal to …………………………………………Comparison Value: 1.000000 …………………………………………Function: GetIsID …………………………………………Parameter #1: WEAP - Weapon [00004343] "Плазменный пистолет" …………………………………………Parameter #2: 00 00 00 00 …………………………………………Run On: Subject …………………………………………Reference: 0 ……………………Entry Point Function Parameters …………………………EPFT - Type: Float …………………………EPFD - Data ………………………………Float: 200.000000 ……………………PRKF - End Marker ………………Effect ……………………PRKE - Header …………………………Type: Entry Point …………………………Rank: 0 …………………………Priority: 0 ……………………DATA - Effect Data …………………………Entry Point ………………………………Entry Point: Calculate Weapon Damage ………………………………Function: Set Value ………………………………Perk Condition Tab Count: 3 ……………………Perk Conditions …………………………Perk Condition ………………………………PRKC - Run On: Perk Owner ………………………………Conditions ……………………………………CTDA - Condition …………………………………………Type: Greater than …………………………………………Comparison Value: 200.000000 …………………………………………Function: GetActorValue …………………………………………Parameter #1: Rad Level …………………………………………Parameter #2: 00 00 00 00 …………………………………………Run On: Subject …………………………………………Reference: 0 ……………………………………CTDA - Condition …………………………………………Type: Less than or equal to …………………………………………Comparison Value: 400.000000 …………………………………………Function: GetActorValue …………………………………………Parameter #1: Rad Level …………………………………………Parameter #2: 00 00 00 00 …………………………………………Run On: Subject …………………………………………Reference: 0 …………………………Perk Condition ………………………………PRKC - Run On: Weapon ………………………………Conditions ……………………………………CTDA - Condition …………………………………………Type: Equal to …………………………………………Comparison Value: 1.000000 …………………………………………Function: GetIsID …………………………………………Parameter #1: WEAP - Weapon [00004343] "Плазменный пистолет" …………………………………………Parameter #2: 00 00 00 00 …………………………………………Run On: Subject …………………………………………Reference: 0 ……………………Entry Point Function Parameters …………………………EPFT - Type: Float …………………………EPFD - Data ………………………………Float: 100.000000 ……………………PRKF - End Marker