-
Публикаций
1 113 -
Зарегистрирован
-
Посещение
-
Победитель дней
3
Сообщения, опубликованные N42
-
-
Спойлерmanx функция, указанная в логике, не напрямую работает, сначала эту строчку спарсивает основной скрипт логики/торговли/или еще чего, подготавливает и выполняет в нужный момент. Он добавляет еще actor и npc в аргументы (npc - это объект, которому прописана использующаяся логика). На выходе получается if_hip_veteran(actor, npc, p) - тут actor и npc - объекты, передающиеся всегда и независимо от записи в конфиге , p - это таблица как раз с тем, что написано в скобках у =if_hip_veteran(actor). В итоге получится вот так:
function if_hip_veteran(actor, npc, {"actor"})
Т.е., (actor) передается третьим аргументом как строка в таблице, а с ней никаких действий в самой функции нет. В первой функции действия выполняются для npc-торговца, который идет вторым аргументом, а во второй функции выполняется для actor, поэтому только вторая функция работала. А переданный в скобках "actor" вообще не задействован.
Аргументы на самом деле можно называть как захочется, но надо следить за тем, что передается изначально в функцию и в каком порядке, порядок важен.
4 часа назад, manx сказал:В аргумент тут, по идее, нужно вписать название ранга (veteran, master и т.д.). Но кого он будет проверять на соответствие? npc ? Какого npc ? И как сделать, чтобы он проверял на ранг игрока, то есть actor ? Что вписывать в аргумент при вызове функции?
Будет проверять того, в чьей логике/конфиге эта функция прописана. Если у торговца-найма прописано - будет проверяться он. Кроме названия ранга там ничего не вписать без редактирования самой функции.
4 часа назад, manx сказал:Это все при условии, что я не хочу менять саму функцию, а просто использовать ее для условий в trade_.ltx
Тут в любом случае не обойтись без редактирования либо создания копии функции. Сама функция npc_rank предназначена для проверки у нпс, а не у гг. Может быть уже есть такая же, но для гг, не смотрел.
Чтобы в скобках передавать того, кого надо проверять - это надо писать новую функцию, которая будет по переданному в нее сиду или секции сначала получать объект, а потом проверять его на ранг, но это нужно только если надо проверять не гг и не торговца, а других. Для проверки гг достаточно сделать копию функции с другим названием и поменять там на if ranks.get_obj_rank_name(actor) == p[1] then , заморочки с написанием новой функции лишние, если нет какой-то большой системы зависимости торговли от других нпс, не от одного торговца и гг
-
Спойлер9 часов назад, manx сказал:А как мне узнать, какое название (с actor_ или без) приписал герою движок?
Движок сам ничего не приписывает, группировку задает мододел или в character_desc_general.xml или скриптом. Что мододел присвоит, то присвоит движок, сам он название не меняет.
9 часов назад, manx сказал:По поводу return, то есть эти функции (к примеру) равнозначны:
Да.
9 часов назад, manx сказал:Почему здесь actor:character_reputation() , а не db.actor:character_reputation() ?
Потому что actor прописан аргументом у функции
9 часов назад, manx сказал:function if_actor_powerful(actor, npc)
db.actor используется или если он не объявлен в какой-то переменной или если не передался в функцию. Можно использовать передавшийся actor, можно db.actor, но раз все равно он передался в функцию - используют actor (или другое название, назвать можно как угодно, это просто название для использования в функции)
9 часов назад, manx сказал:Могу ли я использовать эти функции как условие в файлах trade_.ltx ?
Да. Любую функцию можно использовать как условие, главное, чтобы возвращала true/false
- 1
-
Paracetamol точно также как у нпс db.actor:character_community(), db.actor:profile_name(), db.actor:character_name(), db.actor:range(), db.actor:character_reputation()
- 1
-
Спойлер15 часов назад, manx сказал:1. То есть можно с уверенностью сказать, что функция character_community(db.actor) возвращает actor_dolg, а не просто dolg? В game_relations.ltx есть и actor_dolg и dolg... В чем разница между этими понятиями? Ведь герой может быть просто dolg
Функция вернет группировку гг без изменений, а какую группировку присвоит гг мододел - не суть важно, хоть actor_dolg, хоть dolg, хоть terminator. Но лучше делать отдельные с actor_... чтобы не смешивались с нпс. Да и отношения гг с группировками можно делать отдельные, если нпс этих группировок враждуют, а с гг должны быть нейтральными
15 часов назад, manx сказал:2. sub(7) получается обрезает возвращенный ответ на 7 символов? Я правильно понял?
Типа того, вернет строку начиная с 7 символа. Почитай про string.sub (да и в целом про string для работы со строками).
15 часов назад, manx сказал:3. Каким именно образом character_community(db.actor) получает actor_dolg ? Можно объяснить подробно новичку в программировании?
character_community(db.actor) группировку получает из движка через метод obj:character_community(), она не со скриптов получает.
15 часов назад, manx сказал:Что значит вот это: obj:character_community() ? Что вообще делает двоеточие?
obj - это объект, принадлежащий к какому-нибудь классу (в данном случае класс game_object), после двоеточия указывается его метод. Т.е., это обращение к функции character_community() у объекта класса чтобы эта функция вернула группировку этого объекта. Про основные классы и их методы почитай тут (это по оригиналу, в коке добавили своих методов, но надо сначала изучить основу, а отдельно по коку таких тем не видел) https://www.amk-team.ru/forum/topic/7450-spravochnik-po-funkciyam-i-klassam/#comments
Также там есть про то, как в сталкере вообще объекты работают, про клиенские и серверные, про нетпакеты, в общем, всё там изучай, чтобы стало понятно как всё работает
15 часов назад, manx сказал:Точка в db.actor - это ссылка либо на файл, либо на таблицу?
15 часов назад, manx сказал:db.actor - это ссылка на файл db.script ? Но там же actor = nil Как так?
Он там ниже добавляется
15 часов назад, manx сказал:Почему в функции указаны параметры (actor, npc, p), хотя они не все используются? Зачем лишние?
Потому что эта функция написана для использования в логике объектов, туда передается объект, для которого эта логика используется. Часто для таких функций нужен сам этот объект, и чтобы постоянно не извращаться и не получать его отдельно он сразу передается
15 часов назад, manx сказал:return db.actor and string.find(character_community(db.actor),comm) ~= nil
Я правильно понял, что после return идут условия этого return ? Это какая-то недокументированная фича? В руководствах об этом ни слова не сказано. Там сказано, что return всегда идет в конце и после него ничего не должно быть из условий
Это не после него, это вместе с ним. Эти условия должны вернуть true или false, и их уже передает return. Сначала вычисляются эти условия, потом return передает. Так меньше кода получается, удобнее
Дополнено 4 минуты спустя14 часов назад, StrawFlux сказал:в сталкере не чистый луа используется, по этому читать сухие мануалы по луа особо в модинге не продвинут тебя, но базу подтянешь
В любом случае нужно, чтобы не наплодить кучу корявого кода)
- 2
-
3 часа назад, manx сказал:return obj:character_community()
Движок возвращает группировку, это не со скриптов
3 часа назад, manx сказал:В чем разница между этими двумя функциями и почему они вообще по-разному написаны, если делают, по-сути, одно и то же?
Например, у гг группировка actor_dolg. В функцию передается какое-то значение, с которым надо сравнить группировку гг. Через character_community(db.actor) получаешь actor_dolg, но в первой функции идет "обрезка" полученной группировки character_community(db.actor):sub(7) (получится dolg), во второй функции нет обрезки, проверяется без изменений. Значит, в первую функцию надо передавать dolg, потому что идет обрезка строки с группировкой гг, и если туда передать actor_dolg - функция всегда будет возвращать false (ведь у гг обрежется до dolg)
is_actor_from_faction(dolg)
Во вторую функцию передаешь actor_dolg, там нет обрезки, сравнивается сразу с actor_dolg
actor_community(actor_dolg)
Да, функции делают одно и то же, но лучше использовать вторую
- 2
-
Stalk873 да, цифры прописать, а отсутствующие секции добавить по аналогии. Еще предмет может не появиться если у него в секции useful_for_npc = false, вроде сталкивался с таким (может не прям у него, а в начальной секции, с которой наследуется)
- 1
- 1
-
Stalk873 а в стандартном конфиге торговли разрешена продажа проверяемых предметов? Trade/generic. ltx. Может усложняем слишком 😁
- 2
-
Stalk873 в trade.script в first_update есть перебор инвентаря, проверка по спискам и удаление, может оно
- 1
-
-
-
ivanstrannik22 тему создал не разработчик, так что, если разработчик удалил по ссылке и никуда не перезалил - ну всё А что там с перезаливами хз, разработчики разругались и разошлись
Дополнено 0 минут спустя2 часа назад, ivanstrannik22 сказал:а теперь как бомж по всему интернету приходится искать эти файлы
С заброшенными и старыми модами часто так
- 1
- 1
-
Pe4nik закинь в gamedata/scripts/ui, загрузи сохранение и нажми esc+1. Сохранение не важно какое, если успел со скинутого сохранения уйти куда-то - грузи последнее
- 2
- 1
-
Pe4nik геймдата много весит? Скинь ее тоже
Дополнено 2 минуты спустяivanstrannik22 https://stalker-worlds.games/forum/topic/10730-ofitcialnaia-tema-moda-obedinyonnyj-pak-22-opis/#entry405794
- 1
-
Pe4nik если какой-то не тот кейс заспавнил - лучше откатиться до его спавна, вдруг на его появление у гг что-то повешено, потом могут быть проблемы с квестом, в котором этот предмет используется. Не обязательно, что будет, но лучше перебдеть. Если сильно далеко откатываться с лежкой - скинь последнюю сохранку (лучше в ВП около лозы). Патч какой установлен?
- 3
- 1
-
18 часов назад, Pe4nik сказал:Когда-то выполнил квест для Басти на чумодан денюх, но решил сразу не отдавать и куда-то сунул. Перерыл всю географию - ни в одной нычке его нет. Заспавненный он не берет!
Может не то спавнил? "case_buusty"
18 часов назад, Pe4nik сказал:Вернулся с первой лежки Фенрира и он послал в ВП на дом с лозой. Прихожу, а там ни рюкзака с винтовкой, ни врагов... Да, и задание почему-то не появилось!
Должно было задание появиться. Лучше откатись, может багнуло
- 1
- 1
-
-
Valera09 посмотри в axr файл torch.cpp, я оттуда брал исправление (щас уже не вспомню, что там было)
-
-
22 часа назад, Fujien сказал:После какого момента я смогу получить точную или приблизительную наводку на тайник с рабочим Телепортатором?
По ветке тайников Кости надо идти
17 часов назад, Фраер_Жованный сказал:взял задание акима на кубик рубик, вернулся, он на меня агрессирует, при чем гружу сейвы до кубика, он везде красный, что за х..ня и как исправить
Перестреливался около него?
17 часов назад, off_4elovek сказал:А когда я патч установлю, смогу играть дальше или заново придется? И можешь еще сказать, как установить патч и где его взять?
Да, сможешь дальше играть. Патч в шапке
2 часа назад, Makson123911 сказал:Почему не у кого аптечек нет
Ищи хабар на локе, ящики разбивай, валялись халявные
- 1
- 1
-
imcrazyhoudini может недораспаковал что, или распаковщик что-то съел, у меня не было проблем при удалении всех архивов
-
off_4elovek у меня патч другой, сохранка вылетать будет. Со скинутого автосейва сбей верт, перезайди на локу, если снова заспавнится - походу баг в установленном патче (раз у меня нет бага), обнови его.
9 часов назад, Denikius сказал:когда на Янтаре не будет Дошифратора или еще какого-нибудь квестового предмета
Квестовые предметы в исключениях, можно не переживать насчет них. Ну на самом деле, проблемы с количеством объектов в основном у тех, кто тонну барахла носит с собой и кто не чистит квестовый спавн, в оп 2 мне столько таких попадалось, и не разу не было проблем из-за того, что нпс там пылесосили всё. А lexa уже привык, что там в теме в основном вот такие с тонной в инвентаре, вот и по-умолчанию так отвечает. Если человек понимает, что делает, то и проблем никаких не будет.
- 1
- 2
-
Stalkervernite ну да, которые в sounds\characters_voice\human_01, human_02, human_03, reac_box прописаны reactions\box\box_
- 1
-
Stalkervernite а, это оригинальный закомменченный код. У себя попробовал - проигрывается, но не у ближайшего нпс и тихо
Дополнено 7 минуты спустяМожет еще сами реплики не особо удачные, не выделяются на фоне боевых, попробуй у newbie заменить звуки из stalker (ну это я по деревне новичков сужу)
-
Stalk873 вроде он не особо менялся. Я не помню, чтобы у меня были сильные отличия в 2.2 от 2.1, а вот по сравнению с оп 2 стали меньше обыскивать. Но это к лучшему, быстрее на цз и хомяки накопится) Поковыряй дистанцию в ev_see_stuff:evaluate и ev_see_body:evaluate, но если сам нпс не видит объект - он к нему все равно не пойдет
- 1
- 1
Возвращение Шрама 2
в Моды Тень Чернобыля
Опубликовано · Изменено пользователем N42
Alex Jerki диск с формулами из х10 принес Сахарову? Маячки нет смысла продавать тем, кто задействован на разных локах, в основном это копии нпс, один удаляется - спавнится другой