Уточни-уточни! То есть в GameMode объектного скрипта, назначенного неписю, AddItem исполняет эту же феерию? Мне казалось ключевым, что скрипт эффектовый. Если и в GameMode опасно вызывать AddItem, это ж вовсе черепаху из-под слонов вышибает...
Ну да. Если сделать вот так:
Код
SCRIPTNAME BlinkerGamemodeScript FLOAT Timer BEGIN OnLoad IF GetItemCount Ammo10mm == 0 AddItem Ammo10mm 100 ENDIF IF GetItemCount Weap10mmPistol == 0 AddItem Weap10mmPistol 1 ENDIF END BEGIN GameMode SET Timer TO Timer - GetSecondsPassed IF Timer > 0 RETURN ENDIF SET Timer TO 5 AddItem Caps001 1 END
то оружие тоже начинает пропадать из рук и заново выниматься из кармана. Причём, как и с эффектом, на каждой крышке, а не на чётных или нечётных. Так что другая половина тревоги не ложная.
Такие вот дела. Если не секрет, это ради научного любопытства или как? А то чем хлюпать напрямик по колено в чужих багах, может, можно обойти где-нибудь по сравнительно твёрдой почве?
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №663
| Тема: Бункер модмейкеров
написано: 30 сентября 2014, 20:16
| Отредактировано: Joopeeter - 30 сентября 2014, 20:18
Ipatow, отвечу-ка лучше в мастерской. А то люди сидят, культурно остограммливаются, а мы тут припёрлись, разложили какие-то запчасти от модов все в масле, скрипты наружу торчат. Багами вокруг намусорили...
если NPC хочет держать оружие в руке, он заново экипированное заново и вынимает из кобуры, без "мёртвого" периода, когда он вообще неспособен пользоваться оружием
Вот именно так оно и работает. Одинаково в обоих случаях. Если присмотреться, то и на бедре видно короткое моргание пистолета. А когда в руках, то строго в момент добавления каждой крышки из руки пропадает пистолет и через секунду-другую вынимается по новой. Иногда не слишком быстро, иногда непись даже успевает переключиться на кулаки.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №665
| Тема: ВОПРОСЫ по моддингу
написано: 2 октября 2014, 17:49
| Отредактировано: Joopeeter - 2 октября 2014, 17:50
пытаюсь добиться баланса с bForceNPCsUseAmmo=1; стандартный расклад патронов в игре ориентирован в первую очередь на то, чтобы ГГ не добывал много патронов с убитых противников - но при этом неписи жгут патроны с жуткой скоростью. Я пока не придумал варианта, кроме как подбрасывать им патроны в карман во время боя - чтобы и после убийства немного на трупе осталось, и сами неписи через 10 секунд с начала боя не переходили к рукопашной...
??? Заставить неписей тратить патроны и ломать голову как бы теперь они не кончались и игроку не слишком много доставалось? Зачем было заставлять? Надо, я так понял, чтобы они, патроны, рано или поздно всёж таки кончались (скорее поздно чем рано), при этом игрок не мог бы их стырить 100500 шт. или снять с тела оставшиеся 999 шт. (Интересно, патроны весят. У меня в при этом вечная проблема не где их побольше взять, а какие из них выкинуть к лешему ) Раз нельзя прибавлять, можно отнимать: засечь время начала боя (GetCombatTarget != 0) и через случайный промежуток времени взять и отобрать все патроны.
Добавлено (02 Октября 2014, 21:46) --------------------------------------------- Смущают эффекты с блоком ScriptEffectUpdate на всех вокруг неписях. Не ты ли объянял, что они самые для производительности тяжёлые?
Добавлено (02 Октября 2014, 21:49) --------------------------------------------- дюша, вот тут было обсуждение.
начинаем с того, что забиваем какому-нибудь стальному братцу карманы патронами
Нет, мы оставляем патроны в покое, не трогаем их количество в инвентаре, ничего не добавляем в начале боя и до поры позволяем им быть бесконечными. А через пару минут имитируем, что непись все патроны расстрелял - отбираем их у него.
когда первые две минуты мои компаньоны стреляют на халяву, а потом либо берутся за сапёрные лопатки, либо, если я как босс не поленился в нужный момент выдать каждому ещё один патрон, опять задаром поливают местность крупнокалиберным... Тут твоё решение уже не кажется особенно перспективным
Насколько я заметил, члены команды игрока на халяву могут поливать только из неиграбельного оружия, а оно использует неиграбельный патрон, который никакой босс ни изъять, ни выдать всё равно не сможет.
Кстати, а как пользоваться этим bForceNPCsUseAmmo=1? А то я хотел посмотреть, как оно влияет на играбельное и неиграбельное оружие, но что-то так и не понял, куда это надо вписывать...
Насчёт тиммейтов и неиграбельных патронов. Я временами феерически невнятен в выражениях, то называю одно и то же разныим словами, то одним словом разные вещи ("Вот тут где sex что писать? - ну как что, пишите мальчик или девочка! - Да.. Мальчик.. Девочка.. Иногда верблюд..."). "Команда игрока" по моим представлениям - не только PlayerTeammate. Это рейнджеры в отеле, это рабы на безголовом мемориале, это кто угодно, кто дерётся за меня, на моей стороне. И это ещё без модов...
О ужас! А как же точность мыслей, следующая за точностью речи?!
Ну и так, не для поспорить, а для прояснения того замысла в части, касающейся неписей-союзников. При использовании предложенного способа (отъём по таймеру) вручную выдать один патрон для двухминутного халявного поливания можно было бы только редким квестовым персонажам типа Рыжей, которые не PlayerTeammate, но инвентарь доступен. Рейнджеры и прочие, которые "за наших", экипировкой с игроком не меняются, разве что через результ-скрипты, у них патроны "кончались" бы на общих основаниях. У напарников патрон неиграбельный, выдать через обмен нельзя. Ну, тем персонажам, которые входят в "настоящий" PlayerTeammate, можно было бы таймер отъёма и подольше поставить - на несколько сражений, чтобы успеть добыть им играбельное оружие с возможностью пополнения боезапаса.
Тогда во избежании недопонимания вследствии "феерической невнятности в выражениях" давай сразу определимся, что есть "записаться в команду": Add to Faction TeammateFaction или Set PlayerTeammate 1 ?
Давай. Отказываемся от слова "команда" переходим на Set PlayerTeammate 1 если говорим о Set PlayerTeammate 1 и на TeammateFaction, если говорим о фракции. TeammateFaction или любая другая фракция вроде не должны влиять на приседания. А у Вишенки и Рыжей (и Коротышки, и Синди, и у персонала Проекта Чистоты) оказывается, совершенно одинаково стоят Set PlayerTeammate 1 и 0 в результ-скриптах Begin и End пакетов Follow. Приседания-то нам были без разницы, речь была о том, что у неписей с Set PlayerTeammate 1 в оригинале расходуются патроны, если они пользуются играбельным оружием.
Я рассматриваю "приседаемость" исключительно как визуальный индикатор "Set PlayerTeammate 1" при котором патроны начинают расходоваться, и вот совпадение - Коротышка Рыжая и Синди расходуют патроны (из Playable-стволов), а Вишенка и доктора-чистюли нет...
У меня для проверки расхода патронов, из пригодных к найму компаньонов есть только Харон, который, конечно, далеко не Вишенка. А из прочих актёров - супермутанты на Молле. Так что насчёт вишенок и докторов ничего сказать не могу. А вот произвольный супермутант, если ткнуть в него и приказать SetPlayerTeammate 1, начинает тратить свои патроны. И часто наблюдался баг, когда мутант, израсходовав боеприпасы, не переключался на кулаки, а начинал бегать туда-сюда с бесполезным миниганом в руках - ни драться не может, ни убежать не хочет.
Где-то я читал, что использовать несколько одинаковых блоков - плохо. Что можно так делать только если у них стоят разные параметры. Типа Begin OnTriggerEnter и Begin OnTriggerEnter player.
"пообрывать Never Resets всем, кому он не по делу"
А там нечего обрывать. Ни ячейке, ни контейнерам в ней никакие зоны не назначены. Как и в третьем Фоллауте, если я правильно помню. В третьем, однако ж, обновление работает чётко, а тут нет.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №675
| Тема: Бункер модмейкеров
написано: 21 октября 2014, 08:16
| Отредактировано: Joopeeter - 21 октября 2014, 08:17
Насчёт меня в модераторы. Каин, если ты заметил, с регулярностью посещения форума у меня сейчас неважно. Не знаю, будет ли от меня при таких условиях толк в смысле поддержания порядка. А для "Картотеки" я уже что мог, всё сделал. Но если твёрдо решил оставить должность, других желающих нету, а "Мастерской" непременно нужен "надзиратель с нагайкой" то я, хоть и не в восторге от такого сравнения и не знаю, надолго ли меня хватит, готов взяться за эту работу. Особенно если "Картотека" достанется Ипатову.
Добавлено (21 Октября 2014, 12:16) ---------------------------------------------
Цитата Ipatow
Тихо в мастерской, только не спит... гмм... а кто не спит-то?
Да кто угодно, выбор огромный: ковбой портной пип-бой бухой Маккой кот глухой за рекой...
Вобще никто незнает какой скрипт прикрутить, чтобы здоровье уходило?
Предположим (хоть из вопроса хрен поймёшь), что имелось ввиду какой скрипт прикрутить не к хвосту собачьему, а к облаку, чтобы здоровье не чьё-нибудь, а игрока, уходило в смысле не погулять, а постепенно уменьшалось. Для этого на месте облака ставим сферический триггер (если облако не кубическое, конечно) и к нему прикручиваем что-то вроде (написал без проверки):
Код
float timer
Begin OnTrigger player
if timer < 0 set timer to 1 player.DamageAV health [сколько уходить в секунду] else set timer to timer - GetSecondsPassed endif
End
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №677
| Тема: Помощь по моддингу
написано: 22 октября 2014, 22:15
| Отредактировано: Joopeeter - 22 октября 2014, 22:15
а кидаться триггерами можно? Ну, вот я гранату допустим газовую кинул и оно должно две минуты вонять...
А в "Мёртвых деньгах" это граната? А то я не играл, так что не в курсе. Подумал про стационарное облако типа утечки газа.
Нет, кидаться триггерами не получается. Непосредственно назначать его как Placed Impact Object, как я понимаю, бесполезно - размер-то задаётся в ГЭКК. Но это ладно, можно было бы растянуть заранее и потом его MoveTo куда требуется. Но передвинутый триггер, хоть и показывает новые "передвинутые" координаты, все свои триггерские свойства оставляет где они были. То есть блоки OnTrigger и OnTriggerEnter как срабатывали на старом месте, так и продолжают срабатывать на том же самом старом месте.
На замену триггеру в голову приходит только что-то совсем громодкое. Типа сделать взрыв огромного радиуса, а в середину положить маленькую постоянную ссылку. Взрыв всем вокруг бродячим актёрам - потенциальным жертвам выдаст эффект, который будет отслеживать расстояние до постоянной ссылки. И такой же взрыв, но без постоянной ссылки в середине, одновременно помещается персонально под игрока. Чтобы эффект гарантированно достался ему и спутникам. Ну и кто подойдёт к ссылке близко, у того здоровье и уходит. Смущает то, что GetDistance вроде считается тяжёлой функцией, да ещё в таких количествах, да ещё на стольких актёрах.
Плюс к тому непись, в отличие от игрока, не сможет распознать атаку, сообразить отчего вдруг ему поплохело и что надо быстрее бежать от ссылки подальше. Так и помрёт там в облаке. Разве что ещё скриптовый пакет какой-нибудь ему дать заодно, чтобы выманить из ядовитого места.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №678
| Тема: Помощь по моддингу
написано: 24 октября 2014, 14:42
| Отредактировано: Joopeeter - 24 октября 2014, 14:44
Вот например как заставить брамина или собаку ходить по маркерам?
Точно так же как и супермутанта, как и таракана, и бойца Братства Стали. Сделать маршрут, настроить патрол дату на маркерах, актёру выдать пакет, настроить его и позаботиться, чтобы он был активен - подходил по условиям, расписанию, порядку в списке пакетов. Если брамин не идёт патрулировать пастбище, значит в чём-то из перечисленного ошибка.
Минус 30, но вода чуть тёплая, значит, до переохлаждения время ещё есть. Закинул мокрую одежду наверх, подождал, пока примёрзнет и залез по ней? Мокрый тулуп на два метра из воды не подбросишь, а тельняшку с подштанниками, наверное, можно, особенно если длинной удочкой помочь.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №681
| Тема: Скрипты
написано: 5 ноября 2014, 16:53
GameMode будет активен всё время, пока триггер в загруженной области. Ну, может, будет пореже обрабатываться, когда он на краю этой области, то есть далеко от игрока. Если надо чтобы работало только когда игрок внутри, то для этого есть блок OnTrigger с параметром player. Ещё можно отслеживать вхождение игрока в блоке OnTriggerEnter, выхождение в блоке OnTriggerLeave, а остальное делать в гейммоде или ещё где-нибудь. Это если получается слишком огромный триггер. Где-то я читал, что большой триггер чересчур жрёт ресурсы, лучше вместо одного большого огородить область несколькими маленькими.
нету разницы модель -это или триггер т.к. в моём случае - любой скрипт триггера будет работать как на триггере, так и на моей модели. Я еще раз повторяю -модель триггер
О! Я, блин, дотелепатил наконец. Модель - ловушка! Скриптование ловушек - особый случай. Там и некоторые переменные должны называться строго определённым образом, и функции какие-то невиданные то и дело попадаются. Тут, боюсь, тебе самому экспериментировать. Хотя можно, наверное, заскриптовать ловушку как обычный триггер, но тогда это ничем не будет отличаться от какой-нибудь Movable static, накрытой триггером.
И к вопросу о кидании триггерами. Ловушка может быть назначена как Placed impact object, имеет модель и, следовательно, собственный размер при помещеннии её в мир. Может быть, даже пригодна для перемещеия без потери ловушечных свойств.
Добавлено (06 Ноября 2014, 21:27) --------------------------------------------- Продолжая рассуждать о Placed impact object. Раз ловушка-триггер может быть помещена в мир уже в игре, то нет необходимости расставлять тысячу ловушек, чтобы они всю дорогу жрали ресурсы, когда игрок в до них ещё не добежал (а до некоторых, может, и не добежит никогда). Можно вместо этого положить тысячу невидимых и неощутимых мин, которые, когда игрок подходит на заданное расстояние, при подрыве порождают ловушку через Placed impact object своего невидимого и неощутимого взрыва. А заскриптованная ловушка через какое-то время перед самоуничтожением порождает обратно невидимую мину. Интересно, а тысяча мин много ресурсов сожрёт? А то ведь мина тоже небось каждый фрейм вокруг себя проверяет нет ли кого... Подозреваю, что хороший кусок ресурсов потребует тысяча чего угодно, хоть триггеров, хоть консервных банок.
Возможно скрипт с "Begin OnLoad" и "Enable/Disable" поможет решить проблему? Ну вот входит ГГ в определённый CELL и скрипт включает(Enable) "триггеры/ловушки", а покидая "выключает" (Disable) или например уничтожает "setdestroyed".
Насчёт SetDestroyed не знаю, но на отключенных Disable объектах скрипты продолжают работать. Чтобы полностью отключить скрипт на ссылке, надо эту ссылку вообще стереть MarkForDelete. Но тогда её уже не восстановишь, можно только создать новую такую же, а для этого нужно что-то в в локации, что будет следить за игроком и включать, стирать и восстанавливать ловушки. То есть опять триггеры.
Возвращаясь к Placed impact object (уж очень я их люблю). Интересно, можно ли сделать мину в виде газового облака? Чтобы при взрыве она становилась ловушкой в виде газового облака?
Юпитер вылез из небытия, сразу припёрся в бункер и говорит: А я ещё когда предупреждал, что оглавление у Картотеки неудобочитаемое. Ну то есть вот я нуб и ищу там про этот несчастный труп. Где это, как это, это в ГЭКК? Это эффект, скрипт? Может, это что-то совсем базовое? Или этому посвящён миниурок? А то, может, это вон оно как (как придать позу)? Когда была там пара десятков ответов, то можно было оглавление просто подряд прочитать и найти нужное. А сейчас даже когда точно знаешь, что оно там есть и даже формулировку вопроса помнишь, приходится искать поиском. Плюс к тому любой мало-мальски сложный вопрос относится сразу к двум и более разделам - ГЭКК и скрипты; ГЭКК, оружие и эффекты, и т.д. Какую классификацию можно предложить. Может быть так. Простое. Базовое, типа где вообще искать неписей и их здоровье. Среднее. Навроде этого трупа и как его положить и какие подводные камни. Предполагается, что читатель знает, где у непися вкладка статов и что такое ресет. Сложное. Типа как сделать, чтобы один непись подошёл к другому и превратил его в труп, произнеся при этом речь. Уроки. Типа как Каин пишет - не про самое простое, но на двенадцать экранов с разжёвыванием элементарного и картинками, так что любой разберётся.
Что за чёрт, перестали растягиваться окошки текста, приходится писать через эту амбразуру на десять строчек.
И следующий вопрос будет "я удалил дома и деревья, теперь вместо деревьев из земли торчит какая-то плоская фигня, а дома при взгляде издаля стоят как стояли, чо делать?" Если кто не хочет в своём плагине таких выкрутасов и геморроя в виде перегенерации ЛОДов, то ему не следует удалять из мира объекты, этот ЛОД имеющие, то есть любые мало-мальски габаритные.
Добавлено (24 Декабря 2014, 21:02) --------------------------------------------- И копать в ландшафте ямы и насыпать горы ему тоже не надо.
Можно ещё и радиоспектакль забабахать (аудиокнигу по-нынешнему)
Что, ещё никто не дал ссылку на "Моё первое убежище"? А, ну да, все ж сами осваивали. Однако про то, как делать локации (интерьеры), чтобы они были не duplicate, и ставить в них неписей, там как раз есть.
где X - величина, на которую надо подкрутить счётчик, может быть и положительной, и отрицательой. Если телепатия подсказывает неправильно, и имеется ввиду счётчик GetDeadCount, то никак.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №690
| Тема: Помощь по G.E.C.K.
написано: 5 февраля 2015, 22:12
| Отредактировано: Joopeeter - 5 февраля 2015, 20:12
Можно куски скрипта вынести в результ-скрипты стадий квеста. У этих результ-скриптов такая особенность, что они срабатывают сразу при установке стадии функцией SetStage, прямо посерёдке другого скрипта. То есть к примеру пишем в такой-то стадии некоего квеста в результ-скрипте
Код
if player.GetEquipped WeapGrenadeFrag == 1 if player.getav Explosives < 25
player.UnEquipItem WeapGrenadeFrag 0 1
showmessage TweakoutNotEnoughSkills
elseif player.getav Strength < 2
player.UnEquipItem WeapGrenadeFrag 0 1
showmessage TweakoutNotEnoughStrength
endif
set [некий квест].VanillaWeapon to 1
endif
а в самом скрипте вместо этого
Код
SetStage [некий квест] [такая-то стадия]
что заметно короче.
Добавлено (06 Февраля 2015, 01:12) --------------------------------------------- И, наверное, если перебирать оружия, то стоит это делать не if-endif...-if-endif, а if-elseif-elseif...-endif. Может, первое же подойдёт, чего потом зря скрипт гонять.