Перейти к содержанию

Вис691

Управление проектами
  • Публикаций

    1 539
  • Пожертвование

    0,00 ₽ 
  • Зарегистрирован

  • Посещение

  • Победитель дней

    67

Весь контент Вис691

  1. С чего вдруг? Блок пройдётся полностью, потом этим флагом закроется. Просто в ГеймМоде постоянно будет эта строка вызываться. Где проблема? К чему такое отношение?
  2. Именно это я и хотел увидеть, в принципе. Единственное, я бы его разместил перед последним endif. Проблема была в том, что игрок мог зайти в меню крафта и просто выйти из него, ничего не крафтя. Тогда условие If iFlag выполнялось бы, и всё что в блоке также бы работало. А вот условие If iCurrentValue > iPreviousValue не выполнялось бы, а значит и строка Let iFlag := 0 была бы пропущена. Как-то так. Теперь точно всё. Мод готов к релизу. Если ты, конечно, этого хочешь.
  3. Да. Но пока что есть ситуация, когда блок не закрывается.
  4. Не, не надо ничего добавлять и усложнять. Надо всего лишь 1 строчку перенести, чтобы проход был единственным. Какая строка отвечает за остановку проходов? Т.е., какая строка влияет на НЕвыполнение условия If iFlag ? И куда её нужно перенести, чтобы она в любом случае выполнилась после одного прохода?
  5. Уточнение здесь вовсе необязательное, у переменной iFlag всегда одно из двух значений - 0 или 1. Было бы их было больше, тогда да, было бы важно. Ну а в скрипте всё ещё есть ситуация, когда постоянно будет работать почти весь код, что в GameMode. А это не очень хорошо (хотя на таком мелком скрипте и не будет проблем, но всё же понимание того, что большой скрипт в подобной ситуации будет грузить игру, нужно).
  6. Да тут мне надо тебя благодарить за трудолюбие. Приятно встретить человека, который готов поработать над тем, что он хочет получить. А не ждёт, пока за него всё сделают. В итоге получился вполне себе полный мод, который даже можно зарелизить. Добавить к нему, скорее всего, нечего, разве что какую-нибудь формулу для начисления опыта придумать. А то может немного читерным оказаться. А вот с этим что? Чисто от себя, как от администратора школы, хочу сказать, что очень рад, что смог помочь ученику. Я бы даже не против возобновить работу школы, вот только надо оно кому? Помнится, Даша говорила, что ей не помешало бы разобраться в азах... Так что пишите здесь, если хотите увидеть новые задания от меня или если захотите что-то создать (по типу мода от OldVaultBoy). Не стесняйтесь.
  7. Здравствуйте. Никогда не занимался скриптингом в Ф4, поэтому ничем помочь, увы, не могу.
  8. В принципе должно работать, проверяй. Естественно, скрипт вешается на квест. Но всё равно одна вещь меня не устраивает. Пока что, есть случай, когда скрипт будет работать в GameMode постоянно. Исправить нетрудно, подумай над этим.
  9. Ну смотри. Ситуация следующая. Игрок скрафтил какую-то вещь, счётчик показывает значение 100. Как только он вышел из меню крафта это значение записалось в нашу переменную (ибо мы так скрипт построили). Теперь при следующем входе в меню игрок скрафтил ещё 5 предметов. Пока он в меню, в нашей переменной всё ещё значение 100. Как только он выходит, начинает работать блок GameMode. Скрипт выполняется построчно, т.е. когда он дойдёт до строки Let iCurrentValue := (GetPCMiscStat "Items Crafted"), значение в переменной поменяется. Что это значит? Это значит, что нужно поменять структуру скрипта: вначале в предыдущее значение записываем текущее (Let iPreviousValue := iCurrentValue), затем уже в текущее записываем значение из функции (Let iCurrentValue := (GetPCMiscStat "Items Crafted")). Надеюсь, теперь стало понятнее. Вообще, я бы ещё некоторые элементы в скрипте переставил, но об этом позже. Вот как правильно должен быть оформлен твой текущий кусок кода. Сравни его со своим оформлением. scn CraftingRewardXP Int iFlag; переменная флаг Int iPreviousValue; предыдущее значение Int iCurrentValue; текущее значение Int iCraftXP Begin MenuMode 1077 Let iFlag := 1 End Begin GameMode If iFlag ; <- вообще, лично я выношу всё, что в блоке Begin/End, хотя это и необязательно Let iCurrentValue := (GetPCMiscStat "Items Crafted") Let iPreviousValue := ? Let iCraftXP:= (iCurrentValue - iPreviousValue) If iCurrentValue > iPreviousValue ; <- само новое условие не нужно табулировать, только его содержимое Player.RewardXP iCraftXP Let iFlag := 0 ; <- у тебя тут не совпадал отступ с предыдущей строкой Endif Endif End
  10. Не надо каждую новую строчку табулировать. Это делается только, когда новый блок появляется. Например, if/endif. А всё что внутри него должно быть с одинаковым отступом. If ... Команда 1 Команда 2 If ... Команда 3 Endif Endif Как можно видеть каждый Endif находится ровно под своим If'ом. Удобно, не правда ли? Она как раз таки текущее и показывает. Но ведь наша переменная не поменяется, пока строка на изменение переменной вновь не выполнится, правильно?
  11. Ой, ой, ой, так нельзя. Он же даже не сохранится. Я специально про 2 блока написал. Begin MenuMode 1077 Let iFlag := 1 End Begin GameMode If iFlag ... Let iFlag := 0 Endif End
  12. А что конкретно не понятно? Делаешь 2 блока в скрипте. В одном переменную увеличиваешь на 1, в другом делаешь проверку, а потом понижаешь.
  13. Я бы весь функционал в GameMode вынес. А в MenuMode просто бы флаг менял. А дальше уже сверяем наше предыдущее количество предметов с текущим. Если они разнятся, значит игрок что-то скрафтил. Обновляем предыдущее значение и начисляем опыт. Ну и флаг сбрасываем, когда закончили.
  14. Эх, мне кажется проблема в том, что ты думаешь немного не в том направлении. Мне почему-то кажется, что ты пытаешься представить ситуацию сразу в виде скрипта. Тут же всегда нужен другой подход, т.е. генерация самой идеи, а потом уже её перенос в код. Вот как бы я поступил, и как я пришёл к этому: нам нужно ловить выход из меню, так? А что это за меню такое вообще, дайте-ка глянем. Ага, "1077 = Recipe (New Vegas)", значит вход в него мы сможем отследить конструкцией Begin MenuMode 1077 ... End. Так, стоп, нам же выход нужен. Хм, что же происходит, когда мы выходим из меню крафта? Ой, точно, режим же меняется на GameMode, ибо больше никуда не выйти для продолжения игры! И что же нам делать? Заведём переменную-флаг. При входе в меню крафта будем менять её значение на 1. А в том же скрипте, но уже в блоке Begin GameMode сделаем проверку на [Наша переменная] == 1. Так мы точно можем сказать, что игрок был в меню и уже вышел из него. Можно работать с опытом и прочим. Достаточно понятно то, что я рассказал? Или ещё какие-то вопросы?
  15. Ну вот, а кто-то про бездарность говорил. Итого, что мы имеем: 2 переменные для хранения количества скрафченных предметов: текущее значение и предыдущее значение. Скрипт должен запускать начисление опыта после выхода из меню крафта. Собственно, не вижу проблем начинать, всё вроде обсудили. Разве что как нам отловить момент выхода из меню? Для этого советую взглянуть на MenuMode и предложить мне идею Ну и конечно, перед началом советую задать все возникшие вопросы.
  16. Раз уж такая тема появилась. В общем, мне нужно что-то в виде следующей фигурки: игральный кубик (а лучше сразу 2) на небольшой плоской платформе-подставке. Неплохо было бы, если они не просто лежали, а, грубо говоря, касались подставки и друг друга рёбрами. Т.е. если представить стол, мысленно кинуть на него кубики, и пока они перекатываются, как бы остановить время, то должно получиться нечто, что мне хотелось бы увидеть. Не знаю, как понятнее объяснить. Фигурка-статуэтка вся (или только кубики) должна быть золотая. Ну и с заделом на будущее, задам такой вопрос. Допустим я захочу, чтобы на подставке снизу были выгравированы какие-нибудь символы. Это нужно будет модель менять или можно реализовать при помощи карты нормали?
  17. Да, идея с верстаком здравая, только лично я предложу делать все сразу после выхода из меню крафтинга. Таким образом мы сможем прогнать наш скрипт всего один раз. Теперь по поводу чисел. У нас в любой момент всегда есть доступ к общему числу скрафченных предметов, верно? Ситуация получается следующая: до активации игроком верстака там хранится, допустим, 100. Наш ГГ крафтит 5 предметов, и после выхода мы уже имеем 105. И казалось бы, что сложного? Берем 105 - 100 = 5 и работаем с этим числом. Только вот 100 исчезнет сразу же после крафта. Что нужно сделать, чтобы исправить эту проблему?
  18. Окей, вот есть у нас количество скрафченных предметов за всё время. Как нам выудить число скрафченных в последний раз? И когда это стоит делать? Я в целом про начисление опыта. Придумать формулу нужно только, если соотношение не 1 exp за 1 предмет.
  19. Не, совсем не то. Искомая функция - GetPCMiscStat, с нужным параметром, конечно. Что ж, теперь хотелось бы услышать идею в целом. Как вообще вам видится работа плагина? Что нужно учесть, когда нужно учесть? В общих чертах, без всяких скриптовых особенностей.
  20. Что ж, первым делом очень простое задание: найти ту самую функцию. Подсказка: она находится в базовых, т.е. без всяких НВСЕ. Ну и вторая подсказка: она отвечает за кучу параметров, не только за скрафченные предметы.
  21. Вообще эта тема немного не о том была, но т.к. она заброшена, то не особо важно. Не, это совсем не так. В скрипте чётко выведена некая формула, которая и на странице мода есть: Так что соотношение не 1 к 1. А теперь к теме. По 1 единице опыта за 1 крафт, хм. Должно быть более чем реально. А если учесть, что в игре аж испытание есть, то шансы повышаются в разы, т.к. игра всё-таки считает количество скрафченных предметов. Вопрос лишь в том, как там всё устроено? Если какая-то переменная глобальная или ещё что-нибудь? В идеале, конечно, найти бы какую-нибудь функцию, верно? И, да, действительно, искать не пришлось совсем. Она попалась мне буквально за первые 15 секунд. Вот только не скажу я вам её . Предлагаю следующую схему, раз уж вы тут написали: тот, кто хочет этим заняться сейчас мне ответит, а хочет ли он попытаться сделать этот мод самостоятельно? Пока что в моей голове всё выглядит достаточно просто, поэтому это будет неплохая тренировка, которая позволит вам разобраться с основами скриптинга (и даже немного с продвинутым уровнем). Как я вижу, минимум 2 человека хотят увидеть такое нововведение в игре, поэтому я всё же надеюсь, что кто-то вызовется добровольцем (а ещё лучше, если сразу оба ). А т.к. это школа, то с моей стороны будет обеспечена любая помощь по любым вопросом, подсказки и проверка сделанного. Ну а если никто не хочет и пальцем о палец бить, или ни у кого катастрофически не хватает времени (как у меня например), то пишите в тему "Вопросы по моддингу", как найду время, так постараюсь что-то сделать.
  22. Вис691

    Конкурс историй - Итоги

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

×
×
  • Создать...