Ulman 5 Опубликовано 16 Августа 2011 *Shoker*, да разобрал я спавн и там у него нормальное имя, вот лучше объясните как выводить имена в лог сталкеров и желательно монстров? Поделиться этим сообщением Ссылка на сообщение
Ulman 5 Опубликовано 16 Августа 2011 (изменено) Виталкер, все они основаны на координатах, так что без замеров, это пальцем в небо. Ребята, так можно как то вывести в лог имена монстров и сталкеров, хоть как то? Изменено 16 Августа 2011 пользователем Ulman Поделиться этим сообщением Ссылка на сообщение
Ulman 5 Опубликовано 17 Августа 2011 Мне кажется лучше установить АИ вертолётов и не парится, как по мне лучший выбор. И ещё, ребята, дайте пожалуйста ссылку(и) на учебник(и) по LUA, только что бы нормальные были, так что бы от самого начала и по возможности до конца, а то надоело собирать по кускам. Поделиться этим сообщением Ссылка на сообщение
Ulman 5 Опубликовано 19 Августа 2011 Люди, у меня такой вопрос, за что отвечают такие строки в скриптах? for k, v in pairs(pstor) do for n, c in pairs(l) do for inum, infop in pairs(cond.infop_set) do for inum, infop in pairs(cond.infop_check) do Если можно, по детальнее, заранее спасибо. Поделиться этим сообщением Ссылка на сообщение
Ulman 5 Опубликовано 21 Августа 2011 (изменено) Ребята, помогите пожалуйста, у меня вот такой вылет: Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: ... game$\s.t.a.l.k.e.r\gamedata\scripts\xr_kamp.script:265: table index is nil Вот собственно 265 строка: deadmansids[self.a.choosed_deadman]=nil Чего это с ней не так, ведь такое значение вроде ей присваивается потому что действие надо отменить. Да и в других модах, видел эту строку и вылетов вроде не было... Как это исправить? Заранее большое спасибо. Добавлено через 120 мин.: И ещё такой вылет: Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: ... game$\s.t.a.l.k.e.r\gamedata\scripts\xr_kamp.script:808: attempt to index field '?' (a nil value) 808 строка выглядит так: self.npc[npc_id].states["eat_kolbasa"] = false Изменено 21 Августа 2011 пользователем Ulman Поделиться этим сообщением Ссылка на сообщение
Ulman 5 Опубликовано 21 Августа 2011 RvP, странно, а как это тогда исправить? И почему в других модах, да даже в Солянке, вроде так же всё написано и не вылетает? Поделиться этим сообщением Ссылка на сообщение
Ulman 5 Опубликовано 21 Августа 2011 *Shoker*, да спасибо, я и правда намудрил в одном скрипте, из за которого был такой вылет. Я вот кажется нашел корень зла моего безлогового вылета, во первых это лагерь на свалке, там где сидит Серый, то есть все люди, которые сидят с ним у костра, а точнее виновник вылета похоже сталкер, которого надо вылечить, который валяется раненным. Проблема заключается в следующем, я его попытался вылечить, около 5ти раз пытался, но не вышло, так как я ему даю аптечку, он встаёт, благодарит и сразу же опять падает раненным на землю. Ну я его не стал трогать и ушел на Агропром, вернулся, только дохожу на расстояние метров 150(расстояние алайфа) после чего они переходят в онлайн и происходит вылет. Ну тут просто других предположений у меня нет. Так вот, правильно ли я думаю, это во первых, а во вторых, чего это он не лечится как надо? Толика и Лиса я нормально вылечил, они не выпендривались. Есть ли у кого то идеи? P.S. У меня стоит медицинская резинка от Vergas`a(может полезная информация). Поделиться этим сообщением Ссылка на сообщение
Ulman 5 Опубликовано 22 Августа 2011 (изменено) *Shoker*, ну в техническом плане, как я понял во первых аптечки не лечат сами по себе, то есть добавляет новые параметры в секции медикаментов, а старые параметры, такие как eat_health, eat_satiety, eat_power, eat_radiation равны 0. Если что, вот ссылка на мод. И ещё, может виновато то, что в алл.спавне параметр здоровья предположительного виновника выглядит так: health = 0.0899999961256981 и так: upd:health = 0.0899999961256981 Изменено 22 Августа 2011 пользователем Ulman Поделиться этим сообщением Ссылка на сообщение
Ulman 5 Опубликовано 23 Августа 2011 *Shoker*, а почему Лиса и Толика я могу вылечить? Просто раньше, когда я не добовлял xr_wounded из мода, я никого не мог вылечить. Добавлено через 22 мин.: И ещё, может каким то обманным способом можно обойти лечение моего Психа? Поделиться этим сообщением Ссылка на сообщение
Ulman 5 Опубликовано 23 Августа 2011 *Shoker*, да у меня просто уже предположений нет, что с ним делать, хоть АИ сетку вырезать вокруг него... И ешё, вот у меня иногда происходят вылеты на Баре с переполнением стека. Это происходит из за того, что на локации лазит очень много НПС, только перешел на локацию, как смотрю с Армейских складов идёт отряд одиночек, человек с 10-15. Вот как мне ограничить количество НПС на локации? Поделиться этим сообщением Ссылка на сообщение
Ulman 5 Опубликовано 24 Августа 2011 Я вот тут вспомнил, есть в скрипте se_respawn таблица с названием simMaxCount вот ею можно урезать количество населения Зоны? Только там какие то значения слишком маленькие, это показывает количество НПС в alife или где? Поделиться этим сообщением Ссылка на сообщение
Ulman 5 Опубликовано 24 Августа 2011 abramcumner, да это вот только что тоже заметил, но ещё увидел, что одно обращение всё таки есть: function lstats() local can_spawn = {} printf("***************** LIMITS STATISTIC *********************") for k,v in pairs(respawners) do -- Запоминаем максимальное количество весов для данного респавнера local wage = 0 for kk,vv in pairs(v.respawn_section) do wage = wage + vv.prob end -- Заносим максимальное количество всех типов чуваков, которые данный респавнер может наспаунить. for kk,vv in pairs(v.respawn_section) do local tt = v.sectSpawnProps[vv.section] local community_rank = tt.community.."_"..tt.rank if can_spawn[community_rank] == nil then can_spawn[community_rank] = {community = tt.community, rank = tt.rank} end end end -- Выводим все это в общей статистике local total_max, total_prob, total_current, total_limit = 0,0,0,0 for k,v in pairs(can_spawn) do local cs = sim_statistic.simNpcCount(v.community, v.rank) local gl = simMaxCount[k] if gl == nil then gl = 0 end total_current = total_current + cs total_limit = total_limit + gl printf("%s current=%s limit=%s", k, cs, gl) end printf("TOTAL: current=%s limit=%s", total_current, total_limit) end Это не оно? Если всё таки это не сработает, то каким способом можно уменьшить? Поделиться этим сообщением Ссылка на сообщение
Ulman 5 Опубликовано 24 Августа 2011 Ну игра не тормозит, но просто это закономерность, вылеты с переполнением стека, только на Баре и там как раз людей, многовато лазит, по крайней мере учитывая малые размеры локации, в алайфе находится уж очень много НПС. Поделиться этим сообщением Ссылка на сообщение
Ulman 5 Опубликовано 24 Августа 2011 Artos, скорее всего проблема первая, так как комп у меня то хороший, но вот ОЗУ маловато, 2 планки по 2гб сгорели и вот сижу пока довольствуюсь одной на 2гб. А со вторым, ну АИ схемы нормально оптимизированы, я говорю про АИ пак 3в1? Поделиться этим сообщением Ссылка на сообщение
Ulman 5 Опубликовано 27 Августа 2011 Люди, а какая функция проверяет визуал НПС? Поделиться этим сообщением Ссылка на сообщение
Ulman 5 Опубликовано 27 Августа 2011 *Shoker*, спасибо, вроде нашел. Вот у меня имеется во такой кусок скрипта: if string.find(vis,"stalker_bandit_") then return section end if string.find(vis,"stalker_bandit_veteran") then return section end if string.find(vis,"stalker_bandit_master") then return section end if string.find(vis,"stalker_bandit_borov") then return section end if string.find(vis,"stalker_bandit_exoskeleton") then return section end Можно ли его заменить на вот такой: local stalker_gopnik = {"stalker_bandit_", "stalker_bandit_veteran", "stalker_bandit_master", "stalker_bandit_exoskeleton"} if string.find(vis,"stalker_gopnik") then return section end И если да, то я понял возвращаться будет "section", даже если хоть одна из переменных, из stalker_gopnik подходит? Поделиться этим сообщением Ссылка на сообщение
Ulman 5 Опубликовано 27 Августа 2011 (изменено) Artos, то есть лучше так оставить? if string.find(vis,"stalker_bandit_") then return section end if string.find(vis,"stalker_bandit_veteran") then return section end if string.find(vis,"stalker_bandit_master") then return section end if string.find(vis,"stalker_bandit_borov") then return section end if string.find(vis,"stalker_bandit_exoskeleton") then return section end И почему способ Призрака неправильный? Я вот в одном уроке видел такой способ: --Проверка на взятие нескольких разных предметов и выдача инфопоршня: local t_wpn = {"ПРЕДМЕТ1", "ПРЕДМЕТ1", "ПРЕДМЕТ1"} function search_ALL_weapons_complete() local gg = db.actor if gg then for i=1,#t_wpn do if not gg:object(t_wpn[i]) then return false end end gg:give_info_portion("ПОРШЕНЬ") return true end return false end Изменено 27 Августа 2011 пользователем Ulman Поделиться этим сообщением Ссылка на сообщение
Ulman 5 Опубликовано 27 Августа 2011 (изменено) *Shoker*, на счёт stalker_bandit_ то я ошибся, там должно быть название модели экзоскелета, хоть это теперь и не важно. А вообще мне надо, что бы была проверка на визуалы НПС, и если хоть один из визуалов одет на НПС то возвращался true. И вот я думал, что по примеру как в OGSE можно сделать, там вот так это всё выглядит, вот кусок: function vis_to_armor(npc) local section if npc then local obj = alife():object(npc:id()) if not obj then return "novice_outfit" end local stalk = xrs_utils.read_stalker_params(obj) local vis = tostring(stalk.visual) if vis then if npc:character_community()=="bandit" then -- bandits if string.find(vis,"stalker_bandit_") then section = "bandit_outfit" end if string.find(vis,"stalker_bandit_veteran") then section = "bandit_veteran_outfit" end if string.find(vis,"stalker_bandit_master") then section = "bandit_master_outfit" end if string.find(vis,"stalker_bandit_borov") then section = "bandit_master_outfit" end if string.find(vis,"stalker_bandit_exoskeleton") then section = "exo_bandit_outfit" end ... Изменено 27 Августа 2011 пользователем Ulman Поделиться этим сообщением Ссылка на сообщение
Ulman 5 Опубликовано 28 Августа 2011 К сожалению я не могу найти хотя бы пример, создания таблицы в которой не прерывается проверка, после первого найденного значения, я просто не делал никогда большие проверки и мне хватало использовать "elseif". Сейчас даже поискал по другим скриптам, так там как раз используется "elseif". А в некоторых была проверка по таблице, вроде так же как и я написал раньше, на предыдущей странице, так вот, он использовался как раз в проверке не на первый найденный, а вообще по всей таблице. Можете пожалуйсто хоть кто то дать мне пример написания, такой таблицы, что бы проверка шла по всей таблице и не прерывалась на первом найденном? P.S. Пример прошу, не потому что я его заучить хочу, а понять принцип, так сказать наглядное пособие. Поделиться этим сообщением Ссылка на сообщение
Ulman 5 Опубликовано 28 Августа 2011 Real Wolf, дак а мне надо искать не определённое значение, а именно все те которые есть в таблице, и если хоть одно совпало, то вернуть true. Поделиться этим сообщением Ссылка на сообщение