Artos твой вариант выбрасывает, но я не могу к нему прикрутить подсчет, он у**5001618d69873ce82a42**
autoweapon = autoweapon+1
if autoweapon > 4 then
Drop_Items(db.actor,v)
end
end
end[/code]
Struck
Ты написал глупость, как относительно кодов, так и коммента к нему.
В кодах при каждой(!) итерации ты запихиваешь в табличку и тутже(!) в этом же цикле итерации удаляешь объект.
Что же ты подразумеваешь под 'потом'? Тебя же singapur22 уже предупреждал о недопустимости удалять предметы в самом процессе итерации по инвентарю и тут же наступаешь на эти грабли да еще и не видишь этого.
Да и вообще для чего сохрагять в таблицу объета предметов и что иное от них, если эти объекты тут же удаляешь из игры? Тут ни логики ни разума ...
Struck
Поясни мне дураку, что тебе требуется от таблицы, в которую хочешь запоминать что-то об удаляемых у актора предметах? Какова ее цель, что далее ты собираешься с ней (с тем что она должна включать в себя) ты намерен делать?
Только после ответа может быть далее предметный разговор и пояснялки.
Struck
Мда-а-а, т.е. все что было понаписано - игра в куличики ... слепил-сломал-забыл ...
1. Про ошибки:
а) Бессмысленно запоминать объект или его игровой идентификатор, если этот объект тут же удаляется из игры. Воспользоваться запомненным объектом не получится (его уже нет), а идентификатор уже или свободен иль даже присвоен совершенно иному объекту.
б) Изъять предмет и позже вернуть - это совершено не то, ч**5005618d69873ce82a42**
local oActor = db.actor
oActor:iterate_inventory(
function (dummy,oItem)
if true then --/ тут 'true' какие-либо доп.условия изъятия
local soItem = alife():object(oItem:id())
if soItem and not oActor:marked_dropped(oItem) then
table.insert(tItems, oItem:section()) --/ запоминаем секцию
oActor:mark_item_dropped(oItem)
oActor:drop_item(oItem) --/ не обязательно делать, но не помешает
alife():release(soItem), true)
end
end
end
,oActor)[/code]
Имея список - по нему и возвращаешь спавном актору предметы. Но(!) список динамический и после перезапуска игры с вохранки - ничего не вернешь!
1-подскажите пожалуйста, как можно создать скайбокс нормальный (без полосок) и без майи) на нее просто файлика нету который в туторе указывается SkyRoom.mb нужен но он удален с сервера( помогите а? в долгу не останусь!
2-еще может кто знает где можно взять цветовую схему реалистичного освещения ночью вечером и утром в формате RGB естественно!
3-где взять норм скайбоксы в стиле фентази?
4-и текстуры гнилого кирпича готовые
Struck Мдааааа. Начал с дропа лишних предметов, .... а закончил перемещением всех предметов на хранение. Извиняй, но при таком разгуливании условий похотелки, никакой токовой помощи ты не дождёшся. Да и у пытающегося тебе помочь, только отбиваешь желание, вообще читать твои посты.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Artossingapur22 не, не, это уже другая 'похотелка', из той я уже все сделал что мне надо, перешел к следующей.
Artos и как тогда поступить, создать за пределами игровой зоны тайник, и оперировать с ним? Или я где то читал твой пост, о том что ты сделал "невидимый" ящик который по всей карте "преследует" ГГ...или привидилось?:-) Так как почитав предыдущие страницы топика, сделал вывод что работать лучше всего трансфером между ящиком в котором все запомнится.
Я хочу задать простой вопрос. Как можно вбить значение одной переменной в два разных скрипта, ко**5007618d69873ce82a42**e]
function CaptureTechProfile(first_speaker,second_speaker)
tech_profile = second_speaker:profile_name()
end
[/code]
Она должна запомнить профиль НПС, с которым я разговариваю в данный момент. Впринципе, это она и делает, проверял.
Но сразу после этой функции вызывается другой скрипт, точнее класс class "repair_dialog" (CUIScriptWnd). Но при попытке вызова переменной tech_profile внутри тела этого класса - игра не может прочесть значение этой переменной и вылетает. Значит не все так просто. Помогите пожалуйста.
Труд свободных скриптеров-любителей тяжел и утомителен, полон ошибок и багов, но в то же время интересен, захватывающ и благороден.
Upgrades mod build 1.006 готов. В журнале есть новое видео.
Подробнее в журнале.
Смотри:
Что бы сделать функцию доступной для других функций в этом скрипте ее просто нужно вынести за пределы функции. Вот так:
local tech_profile = ""
function CaptureTechProfile(first_speaker,second_speaker)
tech_profile = second_speaker:profile_name()
end
А что бы получить ее из других функций нужно делать так:
function get_tech_profile()
return имя_скрипта_с_переменной_tech_profile.tech_profile
end
Всем доброго времени суток. Назрел вопрос. В лаборатории Х-16, в колбе с мозгом есть статические партиклы (пузыри), я их сделал динамическими (зависят от состояния главного рубильника (вкл/откл)). Методом проб и ошибок установил, что для спавна партиклов им для чего-то требуется точка пути (path). Пришлось задеть алл.спавн, чего бы очень не хотел... Cобственно пара вопросов:
1. Объясните для чего партиклам нужна точка пути? 2. Что такое 'mode'? Ставил 0,1,3 и вообще без режима - получал вылет по _g.script. 3. Зачем нужен параметр 'looped'? Без него и так всё прекрасно зацикленно.
4. Можно ли при помощи скрипта заспавнить точку пути, если можно, то поделитесь готовым кодом, тк в языках программирования я не шпрехаю :)
скрипт:
local obj=alife():create('space_restrictor',vector():set(0,0,0),0,1530) --координаты до звизды, нужен только gv
local ps=amk.get_restrictor_data(obj)
ps.custom = '[logic]\n'..'active = sr_particle\n'..'[sr_particle]\n'..
'name = anomaly2\\mozg\n'..
'path = yan_mozg_particle\n'..'mode = 2\n'..'looped = true\n'..
'on_info = {+yan_labx16_switcher_primary_off} sr_idle\n'..
'[sr_idle]\n'..'on_info = {-yan_labx16_switcher_primary_off} sr_particle\n'
amk.set_restrictor_data(ps,obj)
Ma$ter
Не вводи в заблуждение. Локальная переменная из скрипт-файла НЕ будет возвращена строкою:
return имя_скрипта_с_переменной_tech_profile.tech_profile
Возвращаются значения такими строками только глабальных переменных, т.е. вынесение переменной из самой функции требует НЕ указывать 'local', а объявлять переменную глобальной для данного скрипт-файла.
Angel from Hell
Советую взять мануал по LUA и почитать часть, касающуюся области видимости переменных.
Расписывать и перепевать тут то, что расписано в мануале достаточно подробно и с примерами - нет смысла.
Если после прочтения останутся вопросы - их и можно задать и уточнить непонятки.
СуперМодер
В данном конкретном случае вы используете объект (рестриктор) и САМИ прописываете ему логику.
В логике задаете схему [sr_particle], использование которой требует задания некоторого набора параметров.
Посмотрите саму схему (sr_particle.script) и станет понятно и требование пути (для проигрывания партиклов по точкам) и параметра 'mode' (одиночная точка или цепочка), и 'looped' (зацикленность по точкам) и пр.
К сожалению, скриптами заспавнить путь (даже одну точку) невозможно. Движек читает их только из all.spawn'а, поэтому придется обязательно добавлять туда. Но(!) добавление/изменение пути НЕ требует начала новой игры и воспринимается корректно любым сэйвом. Так что это можно делать 'на лету'.
Struck Правила топика требуют ознакомления с предыдущими постами/ответами.
Кто-то конечно этим пренебрегает ..., не понимая, что доля их же пренебрежения начинает распространяться и на них самих и на их вопросы.
Делай выводы ...
DIFx
За подобное, о чем спрашиваешь, отвечает далеко не один скрипт. В конфиг-файлах задается логика. Эта логика в зависимости от ситуации обрабатывается, например, в xr_logic.script. Результаты передаются различным схемам, которые так же по ситуации могут выдавать например и некие инфопоршни. Получив/обнаружив такие инфопоршни различные скрипт-файлы могут выаолнять различные условия/действия.
Загляни например в 'xr_effects.script' в 'function bar_territory_logic(...)' - это один из примеров отработки условий, когда гулаги (и соответственно их члены) становятся враждебными к ГГ.
Изучай и разбирайся далее сам, дабы не повторятся неоднократно в аналогичных ситуациях, коих немало в игре.
И следует учитывать, что убивая врага к ГГ, ты вполне можешь убивать нейтрала или даже друга к иной группировке или конкретным НПС.
Стоит ли удивляться, если на улице кто-то начнет у(из)бивать другого и на него 'обидятся' окружающие? Хотя ... в наше время, к сожалению, уже нормой становится равнодушие и бездействие. Но в игре все еще 'человеческая' логика ...
P.S. Не оставляй в топиках пустых, неинформативных сообщений.
Спасибкам, понималкам и пр. подобным частностям место в лучшем случае в ЛС.
Есть какой то рациональный способ сравнения объема и количества сразу для нескольких видов? Т.е. в одну функцию засунуть к примеру 6 аптечек и 8 бинтов.
Вот как я думаю...опять он у меня каждый бинт выкидывает, а на аптечки никакой реакции
отредактировал(а) Struck: 07-08-2011 20:14 GMT3 час. Снова в строю.
1. Грубая ошибка/оплошность применения 'elseif sec == "bandage" ...'.
Именно по причине таких неочевидностей и на**5001618d69873ce82a42** oNPC:drop_item(oItem)
end
else
iCnt = iCnt +1
iCnt2 = iCnt2 + 1
end
end
,oNPC)
end
[/code]
И я бы посмотрел - не удобнее ли использовать классы ...
Struck
Все медикаменты и их порождения имеют 'clsid.obj_medkit'. Т.о. если ты не специально забыл про научную аптечку и не имеешь в моде порождений на базе аптесного класса, которые не следует учитывать - самое то использовать проверку не по секции, а по единому для них классу.
Бандаж также имеет 'clsid.obj_bandage' ...
А проверка условий сравнения чисел всегда быстрее, чем построчное сравнение ...
Но это уже из области оптимизации и на начальных этапах для имеющих недостаточно опыта - менее читабельно ...
P.S.
Прекращай задавать азбучные вопросы!
Если ты посмотрел в одном месте - почему из этого следует вывод об отсутствии нужной информации для ответа в другом азбучном месте?
1. Азбука для модмейкера - lua_help.script
2. Взглянув на конфиги аптечек и бандажа можно по строкам:
class = II_MEDKI
class = II_BANDG
сделать самостоятельный и однозначный вывод о "один ли класс у объектов?".
3. В своем ответе выше я даже привел конкретные наименования для классов и аптечек и бандажа (их табличные эквиваленты). Что мешает прочитать написанное и переварить в голове??? :st)
Совет: Перечитывай даваемые тебе ответы (и не только их) по нескольку раз и внимательно!
Я, например, часто НЕ даю однозначных ответов, а применение '...' (многоточия) - часто означает о необходимости сделать паузу и пошевелить извилинами, дополнив текст по-своему усмотрению.
Может и не в тему, но интересно.
Нашёл способ завалить Бармена без модов.
1. Спускаемся в бар, останавливаемся перед охранником, выбрасываем все патроны (не забываем предварительно разрядить наше оружие).
2. Выходим наружу (у нас должен появиться наш ствол без патронов).
3.Бежим вниз, при этом как можно быстрее щёлкаем разряженным оружием (не всегда получается с первого раза).
4. Заходим в бар, подбираем наши патроны и веселимся!
К слову, Бармен выдерживает выстрел из Грома в голову в упор! По моему, это рекорд пулестойкости.
P.S. Так же можно пробраться и к Сидоровичу, но он бессмертен.
Ma$ter
threat_fire - это стоя стреляет в точку look. Как направляюшая точки стрельбы соответственно путь.
guard_fire - это тоже стреляет постоянно, но как-то в сторону.
hide_fire - ведет огонь в присяди.
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.