Подскажите, как можно пропарсить таблицу типа:
local foto_array = {
{name="razradotka", info="nil", tbl = {foto1,foto2,foto3}}
}
Чтобы достать из нее значения {foto1,foto2,foto3}
На 4 ерсии функция distance_to_sqr у меня работала нормально. А вот на 5 версии она работает не правильно. Я пишу:
Код:
if db.actor:position():distance_to_sqr(vector():set(364.13,15.17,-39.98),593414,0) < 20 then
Это условие выполняется, только когда я подойду к данным координатам вплотную, хотя в условии стоит 20 метров. Что может быть не так? erlik
Не знал, спасибо.
Сообщение было успешно отредактировано Stalk15 (31-01-2011 21:25 GMT3 часа, назад)
Stalk15
Открою тебе маленький такой секрет... этот метод(с постфиксом sqr ) требует сравнения с квадратом числа, в отличие от метода distance_to()
А вообще у тебя он правильно работает: корень квадратный из 20 равен~4.5
Тема заняла принадлежащее ей по праву, "важное" место. Никаких поползновений на её статус не было, просто когда разделял топик забыл переместить её наверх.
Вместо того, чтобы разводить "философию" на десяток постов, связались бы лучше с модератором.
___________________
Надеюсь на этом "инцидент" исчерпан и оффтоп закончен
Доброй ночи! Я решил удалить через all.spawn некоторые аномалии и, на мой взгляд, лишние предметы (валяющиеся ни к месту броники). Все прекрасно удаляется\заменяется. Удалил я электры из тоннеля на Кордоне, там я планирую заспавнить зомби гражданских, как в билде, игра запустилась, электр нет, все работает. Но недавно я прочитал статью о том, что удалять аномалии и предметы просто так нельзя, что для этого надо еще править скрипты. Меня эта статья несколько сбила с толку, так получается, что удалять аномании и удалять\заменять предметы просто через all.spawn нельзя или все-таки можно? Заранее спасибо.
Black Auto Если ссылаешься на внешний источник, не уточняя сути, то неплохо бы давать или ссылку или кратко суть из источника по теме вопроса.
1. Наиболее вероятно в прочитанной тобою статье шла речь про удаление аномалий из уже запущенной/созданной игры/сэйва, т.е. из онлайна и/или с текущей локации.
2. При удалении объектов правятся НЕ скрипты, а скриптами обрабатываются дополнительные условия/параметры ... (для аномалий: предварительно отключать их, удалять рестрикторы, ...).
Кратко: Разница удаления из all.spawn'а и скриптами в том, что удаленный объект из all.spawn'а вообще НЕ появляется в новой игре, т.е. по сути объект и не требуется удалять, а значит - и все что с ними связано(!).
Скриптами же наоборот - удаляются только объекты, которые уже в игре (или хотя бы начинают объявляться).
Короче: В твоем случае удаляй аномалии сколько угодно.
Важны только два условия:
1. Изменения all.spawn'а - только для новой игры и для сэйвов (объекты/аномалии уже в игре!) могут быть фатальны ('могут' - не значит обязательно);
2. В оставшихся кодах игры НЕ должно быть завязок (логики, например) на удаленные объекты.
Сообщение было успешно отредактировано Artos (01-02-2011 04:48 GMT3 часа, назад)
Вопрос, также касающийся аномалий. Нашел интересные наработки, аномалии Event_horizont (синий сияющий шар в Варлабе) и летающий островок (laputa) из ранних эскизов разработчиков. Эти моды затрагивают файлы particles.xr и gamemtl.xr. Редактировать партиклы (файл particles.xr) я научился с помощью программы Particle Editor Tools, но какой программой редактировать файл gamemtl.xr? Заранее благодарю.
Black Auto
Статья Kamikazze все же расчитана не на новичка, а подразумевает начальные/общие знания/понятия по объектному программированию, поэтому и не уточнены само-собою подразумевающиеся моменты.
Утилитку для работы с 'gamemtl.xr' см.тут: ссылка
(прим: на практике я этим не занимался)
Сообщение было успешно отредактировано Artos (01-02-2011 06:03 GMT3 часа, назад)
ага, понял. Привет всем. помогите плииз: играю в тайные тропы. в баре только начинаю идти искать графа-тут же вылет! все остальное в норме. если не выполнять миссию с графом, то всё супер. но хочется ведь целиком. может чё подскажете. P.S. а где ждать ответ?
Сообщение было успешно отредактировано grafabashev (01-02-2011 18:21 GMT3 часа, назад)
Всем привет.Такой вопрос про постэффект,вернее про его остановку.
Ф-я стоит на апдейте в бинд_сталкер.
Мне нужно чтобы ф-я срабатывала один раз если здоровье у актёра меньше или равняется 80.
А ф-я соответственно срабатывает бесконечно пока не повысить здоровье.Что очень плохо..
Как мне правильно написать остановку?
function small_wound()
local stope = false
if not stope then
if db.actor.health <= 0.8 then
this.wound_sounds()
this.wound_anm_effects()
level.add_pp_effector("fire_hit.ppe", 0001, false)
stope = true
end
else
stope = false
end
end
И ещё один вопрос насчет проверки на грозу или тучи.
Вот проверка на дождливую погоду:
if level.get_weather()=="rain" then
А вот как проверить грозу или плохую погодку?
Цитата#ДатчикХабара :
А вот как проверить грозу или плохую погодку?
Видел в файле sound_theme.script функцию weather_class(). В ней по силе дождя устанавливают тип погоды:
function weather_class(avail_types, npc)
local type = "weather_good"
if level.rain_factor() < 0.07 then
type = "weather_good"
else
type = "weather_bad"
end
return type
end
Может, не совсем то, но по силе дождя можно для себя установить какая погода будет считаться плохой.
asmodey7_77
В Народной Солянке игровое время управляется/изменяется так же как и в оригинальной игре (и так же как и в моде АМК), т.е. вопрос из банального ФАК'а.
Правится в конфиг-файле '\gamedata\config\alife.ltx' изменением параметра 'time_factor' из секции [alife]. Придется вытащить этот файл из архивов игры (*.dbX).
Поставишь: time_factor = 1
- и будет тебе реальное время.
Вот только зачем? Помимо того, что сутки в игре будут как сутки в реале, у тебя и многие события будут так же растянуты (т.е. увеличены по времени в 10 раз). А значит тот же выброс будет длиться ой как до-о-олго ... Собираешься дневать-ночевать за компом?
-- Проверяем нужно ли попить. Вызывается каждые 6 игровых минут
function test_for_need_pit()
amk.save_variable("pit",amk.load_variable("pit",0)+2)
amk.g_start_timer("pit",0,0,6)
pit_reduce_power()
end
-- Уменьшение силы, если долго не пил
function pit_reduce_power()
local tmp = amk.load_variable("pit",0)
if tmp > 150 then
if db.actor.power > 0.15 then
db.actor.power = - 0.30
end
if not snd:playing() then
snd:play_at_pos(db.actor, vector():set(0,0,0), 0, sound_object.s2d)
end
end
end
-- питье
function pit_item(oid, time)
if alife():object(oid)==nil then
local tmp = amk.load_variable("pit",0) - time*10
if tmp < 0 then tmp = 0 end
amk.save_variable("pit", tmp)
pit_reduce_power()
end
end
Собственно вопрос в функции pit_item в каких строках определяется имя объекта?
(например при использовании объекта "Вода" сбрасывать таймеры)
ну ктонить помогите а, проблема жестокая...СДК Компилирует локацию (После изменения) в исходную (то есть без изменений) причем окно компилятора не вылазеет, создание с нуля приводи к вылету в сетевую игру , Лог не пишется, пробовал все компиляторы... ЛЕ не верно настроено чертов старый... Помогите! в долгу не останусь!
Всем привет.
Можно ли убрать у гранаты партикл взрыва?Вообще убрать?
вот так поставить не получится explode_particles =
Может есть какой нибудь способ.
Strchi
Может быть хватит засорять топик своими стенаниями по СДК?!
Есть специальный тематический топик: "SDK для игры S.T.A.L.K.E.R.", в нем и пиши, соблюдая элементарные правила русского языка!
Леня_Агитатор
Изменив 'pit_item' так:
Код:
--/ питье
function pit_item(oid, time)
local soObj = alife():object(oid) --/ серверный объект
if soObj then
sObjName = soObj:name() --/ имя объекта (string)
--/ ... тут пиши свои действия
else
local tmp = amk.load_variable("pit",0) - time*10
if tmp < 0 then tmp = 0 end
amk.save_variable("pit", tmp)
pit_reduce_power()
end
end
- сможешь использовать объект и его имя
Сообщение было успешно отредактировано Artos (02-02-2011 18:56 GMT3 часа, назад)
function news_of_npc_kill(victim)
if (IsStalker(victim) or victim:id()==db.actor:id()) then
local victum_name = victim:character_name()
local level_name = level.name() --\имя_локации
local gde_text = locations_name[level_name]
local dead_news = "Погиб:"..victum_name..""..gde_text
end
db.actor:give_game_news(dead_news, "ui\\ui_icons_npc", Frect():set(2,130,124,124), 1, 4000)
end
Что тут не так?
Сообщение было успешно отредактировано ДатчикХабара (02-02-2011 20:15 GMT3 часа, назад)
ДатчикХабара
Нужно НЕ путать названия переменных и их значения.
название поля в таблице - это по сути та же переменная, а level_name = level.name() - это уже переменная, значением которой является строка (string).
Выбираешь из таблицы по названию (стрингу) - так укажи в ней строковые поля, а не наименования полей.
Переделай таблицу по типу:
и выбирай из таблицы по значению/названию локации.
Прим: Не стОит расцвечивать без причины тексты (тем более кодов), так что их читабельность падает ... Используй форматирование и тэг <cоde>, плз.
Ведь так читать приятнее и понятнее:
Artos
В данном случае это будут две идентичные таблицы, поскольку в lua не имеет никакого значения пишется ли строковой ключ таблицы без кавычек и квадратных скобок или же и в кавычках и скобках.
-- anti_sp_news[math.random(#anti_sp_news)]
function news_of_npc_kill(victim)
if (IsStalker(victim) or victim:id()==db.actor:id()) then
local victum_name = victim:character_name()
level_name = level.name() --\имя_локации
local gde_text = locations_name[level_name]
local dead_news = "Погиб:"..victum_name..""..gde_text
end
db.actor:give_game_news(dead_news, "ui\\ui_icons_npc", Frect():set(2,130,124,124), 1, 4000)
end
function news_of_npc_kill(victim)
if victim and IsStalker(victim) then
local gde_text = locations_name[level.name()] or "" --/< имя_локации
local dead_news = "Погиб: "..victim:character_name().." "..gde_text
end
db.actor:give_game_news(dead_news, "ui\\ui_icons_npc", Frect():set(2,130,124,124), 1, 4000)
end
Сообщение было успешно отредактировано Artos (02-02-2011 23:15 GMT3 часа, назад)
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.