kotovstomat Опубликовано 7 декабря, 2008 Жалоба Опубликовано 7 декабря, 2008 Теория: //сброс global variable0 0: if global variable0==7 then global variable0==0 //проверка - если произошла перезарядка, то возвращаем скорость триггерера в исходное значение 1: if global variable0==0 then stat 11 of triggerer: adjust by 5 //если патроны в магазине кончились, то есть global variable==6, то переход на линию 4 2: if global variable0==6 then goto line4 else global variable0=global variable0+1 3: return and skip default //здесь можно вставить звук перезарядки оружия вместо (num). Кстати, можно в Арканум вставлять звуки помимо существующих или нет? 4: play sound (num) at triggerer //триггерер изображает популярный в фоллауте жест 5: have triggerer perform animation 12 //уменьшаеи скорость триггерера, вроде как "отнимаем action points". При следующем выстреле будет потрачено больше AP 6: stat 11 of triggerer: adjust by -5 7: return and skip default Вешается скрипт на HIT и MISS, то есть учитывается каждый выстрел. Можно еще напрячься и повесить на CRITICAL HIT и CRITICAL MISS, но возни очень много с ними. Практически реализовать это тоже не слишком сложно. Возможно, стоит сделать проверку триггерера на скорость, чтобы она не стала внезапно отрицательной. Или снимать процент со скорости. Самая большая задача - сидеть и вешать этот скрипт каждому прототипу огнестрельного оружия. Время это займет прилично. Так вот у меня вопрос - стоит ли овчинка выделки? Популярный в Фоллауте жест - это когда криттер делает поклон в одну четверть, отклянчивает зад, вытягивает руки и делает вращательные движения типа "наматывание проволоки". Этим простым и незамысловатым движением криттер открывает ящики, шкафчики, ворует, лечит, использует компьютер и другие не менее интересные и полезные вещи. Самое удивительное, что никто не жаловался. А попробуйте изобразить такие па в жизни. На мой взгляд, очень глупо выглядит. Работает или нет - понятия не имею. В теории все замечательно выходит) Возможно, будет разница между реалтаймом и пошаговым режимами.
Gentle Giant Опубликовано 7 декабря, 2008 Жалоба Опубликовано 7 декабря, 2008 Что за гвара 0? Где она устанавливается (в скрипте)? Почему именно глобал, а не локал? И москаль, и хохол — хитрые люди, и хитрость обоих выражается в притворстве: первый любит притворяться дураком, а второй умным. © В.О. Ключевский.
kotovstomat Опубликовано 7 декабря, 2008 Автор Жалоба Опубликовано 7 декабря, 2008 любой глобал вар берем. Ноль - это так, для примера. Проще конечно взять локал вар, но будет ли она сохраняться для каждого нового вызова скрипта? С глобал варами вообще засада. Потому что если в висинити будут хотя бы два криттера, имеющих огнестрельное оружие, то для каждого надо будет завести свою глобал вару. /я не пробовал его писать, и скорее всего не буду. Просто пришла в голову мысль по аналогии с тем скриптом что я пишу, и решил сюда выложить, вдруг кому пригодится/ а все переменные по умолчанию 0, не так ли? тогда к чему ее где-то в скрипте устанавливать?
Gentle Giant Опубликовано 7 декабря, 2008 Жалоба Опубликовано 7 декабря, 2008 Проще конечно взять локал вар, но будет ли она сохраняться для каждого нового вызова скрипта? Да. С глобал варами вообще засада. Потому что если в висинити будут хотя бы два криттера, имеющих огнестрельное оружие, то для каждого надо будет завести свою глобал вару. ... Поэтому лучше использовать локал вару. Должен быть какой-то инкремент на подсчет выстрелов, например: 0. Local 0 = Local 0 + 1 // Сделан выстрел... 1. IF Local 0 <= 5 // Проверка на кол-во выстрелов. THEN do nothing ELSE goto line X /* Если сделано 6 выстрелов, то переход на строчку с скрипта, где анимация, уменьшение скорости и установка Local 0 = 0. */ 2. return and RUN default Ну, это так, в теории. Возможно лучше использовать Counter'ы. И москаль, и хохол — хитрые люди, и хитрость обоих выражается в притворстве: первый любит притворяться дураком, а второй умным. © В.О. Ключевский.
kotovstomat Опубликовано 7 декабря, 2008 Автор Жалоба Опубликовано 7 декабря, 2008 все правильно, да. Ну раз можно с локал варами, тогда остается ровно одна проблема - развешать этот скрипт в прототипы. А нужен ли он народу? else global variable0=global variable0+1 вот мой инкремент! Уменьшению скорости обязательно должно следовать ее обратное увеличение, поэтому я настаиваю на этих строках: //сброс global variable00: if global variable0==7 then global variable0==0 //проверка - если произошла перезарядка, то возвращаем скорость триггерера в исходное значение 1: if global variable0==0 then stat 11 of triggerer: adjust by 5 Естественно, заменяя global на local. Но это все лирика и сотрясание воздуха. Кому нужен этот скрипт? Реально тактическую составляющую, даже минимальную, в пошаговый режим он не внесет. Или внесет? Пока что получается красивая теория, почти как опыты в пробирке.
Gentle Giant Опубликовано 7 декабря, 2008 Жалоба Опубликовано 7 декабря, 2008 else global variable0=global variable0+1 вот мой инкремент! Это не будет работать - вара спрятана за условием; строго говоря ее вообще не существует. Инкремент должен быть в первой строчке. P.S. Рекомендую использовать ScriptEd от Dj Unique. :wink: И москаль, и хохол — хитрые люди, и хитрость обоих выражается в притворстве: первый любит притворяться дураком, а второй умным. © В.О. Ключевский.
kotovstomat Опубликовано 7 декабря, 2008 Автор Жалоба Опубликовано 7 декабря, 2008 да, эта штука гораздо удобнее чем сцрмейкер. Спасибо. Попробую написать и потестить. УПД: удобнее то удобнее, но скрипт написаный в сокманки, отлично себя зарекомендовавший в игре, наотказ не хочет компилиться в скриптеде. Он, видите ли, не признает вычитание (5): invalid action opcode "Local 8 = 11 - Local 0"
Gentle Giant Опубликовано 7 декабря, 2008 Жалоба Опубликовано 7 декабря, 2008 Наверное, все же в рамках идеи нужно использовать Counter нежели гл. или лок. вары, в плане сохранения переменных: локал вар - для скрипта, каунтер - для моба. Если я ничего не забыл... Ты попробуй скрипт просто к мобу в WorldEd привяжи, протестируй (создай тестовый мод с картой). И москаль, и хохол — хитрые люди, и хитрость обоих выражается в притворстве: первый любит притворяться дураком, а второй умным. © В.О. Ключевский.
kotovstomat Опубликовано 7 декабря, 2008 Автор Жалоба Опубликовано 7 декабря, 2008 Зачем для моба counter? Это нецелевое расходование средств) Нам ведь нужно только учитывать количество вылетевших патронов. Это HIT и MISS.
Gentle Giant Опубликовано 7 декабря, 2008 Жалоба Опубликовано 7 декабря, 2008 УПД: удобнее то удобнее, но скрипт написаный в сокманки, отлично себя зарекомендовавший в игре, наотказ не хочет компилиться в скриптеде. Он, видите ли, не признает вычитание (5): invalid action opcode "Local 8 = 11 - Local 0" У меня эта строчка комплится. Настроить, наверное, надо, у меня примерно так в ScriptEd.ini: [General] DATPath=D:\GAMES\ARCANUM DLG_Editor=D:\Games\Arcanum Modding\DLG Debugger\dlgdebug.exe MES_Editor=D:\Games\Arcanum Modding\MES Editor\mesedit.exe Read File List=0 Debug Mode=0 Use Compressed Data=1 OpcodeBoxMaxItems=25 Generate Dialogue Lines=0 [Files] Open_DLG_LastDir=D:\Games\Arcanum\data\scr Save_DLG_LastDir=D:\Games\Arcanum\data\scr LastModuleDir=TestMod Главное - путь к DAT'ам в каталоге с игрой. Зачем для моба counter? Это нецелевое расходование средств) Нам ведь нужно только учитывать количество вылетевших патронов. Это HIT и MISS. Один моб = одна ед. огнестрельного оружия в игре, но на всех один скрипт... :wink: И москаль, и хохол — хитрые люди, и хитрость обоих выражается в притворстве: первый любит притворяться дураком, а второй умным. © В.О. Ключевский.
kotovstomat Опубликовано 7 декабря, 2008 Автор Жалоба Опубликовано 7 декабря, 2008 0. Local 0 = Local 0 + 1 1. damage Triggerer unresistably for Local 0 points of type 0 damage 2. IF Local 0 <= 5 THEN goto line 5 3. have Triggerer perform animation 12 4. stat 11 of Triggerer: adjust by -5 5. return and SKIP default Нет, увы, локал варами тут никак. У меня уже есть поправленный прото с приклепленными на него скриптами на HIT и MISS. Строка один у меня вроде отладчика, чтобы состояние лвар0 контролировать) Так вот, каждый выстрел Триггерер получает дмг ровно 1. А что там с каунтерами? Как их применять? УПД: с каунтерами все ясно. Заменил в коде локал0 на каунтер0. Все отлично работает без всяких там мобов. Скрипт у меня в .про прописан. Завтра буду доводить до ума. А пока уже почти три ночи и у меня голова плохо думает.
kotovstomat Опубликовано 8 декабря, 2008 Автор Жалоба Опубликовано 8 декабря, 2008 На конкретный момент работающий код, повешенный на HIT и MISS, имеет следующий вид: 0. Counter 0 = Counter 0 + 1 1. IF Counter 0 == 7 THEN do nothing ELSE goto line 4 2. Counter 0 = 0 3. stat 1 of Player: adjust by 4 4. IF Counter 0 <= 5 THEN goto line 7 5. have Triggerer perform animation 12 6. stat 1 of Player: adjust by -4 7. return and SKIP default
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти