Artos 99 Опубликовано 6 Января 2012 Поделиться Опубликовано 6 Января 2012 (изменено) HellStalkerDog, ну ты же сама задаешь ему в логике быть снайпером и задаешь путь/точку куда ему идти и где быть ... Хочешь чтобы не сразу уходил - добавляй секций в логику, типа уходить после того-то и того-то ... или спавни сразу на точку где должен быть. Изменено 6 Января 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
dPlayer 471 Опубликовано 6 Января 2012 Поделиться Опубликовано 6 Января 2012 ЧН. На ряде локаций имеются m точек. При старте новой игры необходимо рэндомно выбрать из них n точек и заспавнить там аномалии(одну и ту же). (Цифры пока взял с потолка). ---создаем список точек на каждой локе--- local position_table = {} position_table["march"] = { {246.804992675781,15.5329999923706,494.454986572266}, {247.100006103516,13.7950000762939,439.272003173828}, {339.779998779297,-6.9539999961853,368.662994384766} } position_table["escape"] = { {246.804992675781,15.5329999923706,494.454986572266}, {247.100006103516,13.7950000762939,439.272003173828}, {339.779998779297,-6.9539999961853,368.662994384766} } Дальше необходимо выбрать из этих точек (на каждой локе) n количество. Как будет выглядеть фунция рэндомного выбора? math.random Ссылка на комментарий
alkogolik 43 Опубликовано 6 Января 2012 Поделиться Опубликовано 6 Января 2012 Всех с наступающим рождеством! У меня вопрос: Как вызвать в функции сообщения, чтобы вместо дефолтной иконки, отображалась иконка из ui/ui_iconstotal.dds К примеру функция смс function yan_sm_zone_sms() news_manager.send_tip(db.actor, "%c[255,160,160,160]".."ШРАМ:".."\\n".."%c[255,255,128,128]Готово! Охранника зачистил! Профессор, давай быстрей телепортируйся, и отключай защиту мать твою! .......".."".."\n", nil, nil, 40000) end В news_manager.script - Иконка Шрама, пусть по местонахождению наз. shram tips_icons = { killer = { 0, 658}, shram = { 83, 375} } Т.е. отобразить с сообщением имя (Шрам) и так же его иконку. :ny_rolleyes: Ссылка на комментарий
dPlayer 471 Опубликовано 6 Января 2012 Поделиться Опубликовано 6 Января 2012 alkogolik, http://www.stalkerin.gameru.net/wiki/index...бщения_на_экран это, не? Ссылка на комментарий
losiara 13 Опубликовано 6 Января 2012 Поделиться Опубликовано 6 Января 2012 (изменено) Старлей Можно конечно и зациклить, но суть не в этом, тогда и спавн повторяться будет, можно конечно и его обойти, но звук при этом только из одного файла воспроизводиться будет, вот в чем проблема, а надо что бы все поочередно или рандомно без разницы с задержкой 1-3 сек. одна от другой!!! characters_voice\scenario\rnd_fallscream, characters_voice\scenario\rnd_moan, characters_voice\scenario\rnd_the_horror3, characters_voice\scenario\rnd_scr3, characters_voice\scenario\rnd_ratchant Artos Хочешь рандомно и весь список - тут как раз своя функция сгодится, выбирая из списка и отсеживая его окончание ... Именно так и хочу, однако штатных функций не обнаружил. Изменено 6 Января 2012 пользователем losiara Жизнь следует измерять поступками, а не временем... Ссылка на комментарий
alkogolik 43 Опубликовано 6 Января 2012 Поделиться Опубликовано 6 Января 2012 (изменено) Igor88.89, Я через функцию хочу вызвать не только имя, но так же иконку. losiara Не пробовал по методу рупоров, т.е. схему, корая заложена в них? Звуки проигрываются поочерёдно. Через sound_theme.script Пример: snd = radio_music, далее схему отыграть в своём рестрикторе? Изменено 6 Января 2012 пользователем alkogolik Ссылка на комментарий
Viнt@rь 50 Опубликовано 6 Января 2012 Поделиться Опубликовано 6 Января 2012 Igor88.89 сорри, не помню точно, но помойму при спавне через скрипт, что бы заспавнить на определенный локе - обязательно надо указывать lvlid и gvid position_table = { [ 1] = {246.804992675781, 15.5329999923706, 494.454986572266,lvlid-твой,gvid-твой}, [ 2] = {247.100006103516, 13.7950000762939, 439.272003173828,lvlid-твой,gvid-твой}, [ 3] = {339.779998779297, -6.9539999961853, 368.662994384766,lvlid-твой,gvid-твой} -- и так далее } local aNums = {} function spawn_anoms() local rCount = math.random(1,#position_table) for i = 1,rCount do local rNum = math.random(1,#position_table) if aNums[rNum] then rNum = rNum+1 --что бы не спавнить в одно и тоже место end local tT = position_table[rNum] alife():create("секция твоей аномалии", vector():set(tT[1],tT[2],tT[3]), tT[4], tT[5] ) aNums[rNum] = {} --примено так, сорри если что, точно не помню end end в прочем как-то так)), но стоит доработать, так как всеравно может заспавниться аномалия по одним и тем же координатам GUI для конвертера от бардака(всего и вся в форматы сдк) Полезный утиль-"Utilits pack(mod)" Ссылка на комментарий
dPlayer 471 Опубликовано 6 Января 2012 Поделиться Опубликовано 6 Января 2012 Что находится в скобках (1,#position_table) ? Ссылка на комментарий
Viнt@rь 50 Опубликовано 6 Января 2012 Поделиться Опубликовано 6 Января 2012 (изменено) Igor88.89 #position_table - Операция получения длины массива/таблицы, а math.random(1,#position_table) берет рандомное число из промежутка от 1, до числа, которое вернет #position_table Изменено 6 Января 2012 пользователем Viнt@rь GUI для конвертера от бардака(всего и вся в форматы сдк) Полезный утиль-"Utilits pack(mod)" Ссылка на комментарий
dPlayer 471 Опубликовано 6 Января 2012 Поделиться Опубликовано 6 Января 2012 (изменено) Т.е. у меня один массив с координатами должен быть, ведь lvlid, gvid точно указывают на место на любой локации? Доработать нужно в любом случае. И массивов придётся делать на каждую локу. Необходимо на каждой локе из m точек рэндомно выбрать n-нное количество и родить там аномалии. Изменено 6 Января 2012 пользователем Igor88.89 Ссылка на комментарий
Viнt@rь 50 Опубликовано 6 Января 2012 Поделиться Опубликовано 6 Января 2012 (изменено) да... только обязательно учти стоит доработать, так как всеравно может заспавниться аномалия по одним и тем же координатам Изменено 6 Января 2012 пользователем Viнt@rь GUI для конвертера от бардака(всего и вся в форматы сдк) Полезный утиль-"Utilits pack(mod)" Ссылка на комментарий
KD87 718 Опубликовано 6 Января 2012 Поделиться Опубликовано 6 Января 2012 Igor88.89, вообще можно без координат обойтись. Для спавна через alife():create() координаты можно получить из левел вертекса так: level.vertex_position(lvid). Длина стороны аи-ноды составляет 0,7 метров, так что, думаю, такой точности для спавна аномалий хватит. Ссылка на комментарий
Wik 0 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 Скажите, а как квестовій предмет абазначить меткой на карте? И чтоб метка после взятия предмета исчезала. Ссылка на комментарий
Viнt@rь 50 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 Igor88.89, тогда примерно так local lTbl = {"marsh","escape"} local position_table= { ["marsh"] = { [ 1] = {246.804992675781, 15.5329999923706, 494.454986572266,lvlid-твой,gvid-твой}, [ 2] = {247.100006103516, 13.7950000762939, 439.272003173828,lvlid-твой,gvid-твой}, [ 3] = {339.779998779297, -6.9539999961853, 368.662994384766,lvlid-твой,gvid-твой} -- и так далее }, ["escape"] = { [ 1] = {246.804992675781, 15.5329999923706, 494.454986572266,lvlid-твой,gvid-твой}, [ 2] = {247.100006103516, 13.7950000762939, 439.272003173828,lvlid-твой,gvid-твой}, [ 3] = {339.779998779297, -6.9539999961853, 368.662994384766,lvlid-твой,gvid-твой} -- и так далее } -- и так далее } function spawn_anoms() for k,v in pairs(lTbl) do local aNums = {} local rCount = math.random(1,#position_table[v]) for i = 1,rCount do local rNum = math.random(1,#position_table[v]) if aNums[rNum] then rNum = rNum+1 --что бы не спавнить в одно и тоже место end local tT = position_table[rNum] alife():create("секция твоей аномалии", vector():set(tT[1],tT[2],tT[3]), tT[4], tT[5] ) aNums[rNum] = {} --примено так, сорри если что, точно не помню end end end GUI для конвертера от бардака(всего и вся в форматы сдк) Полезный утиль-"Utilits pack(mod)" Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 (изменено) Запутался... Вручаем неписю в руки что-нибудь. Скажем, item:enable_attachable_item( true ). Вручилось. Непись замечательно проигрывает с этим предметом анимации - ест/пьет/на гормошке играет. Вдруг, внезапно, непись умирает. Что будет идеологически правильно: сделать enable_attachable_item( false ), ничего не трогать вообще, удалить итем нафиг, что-то еще(что именно) ? Код, который смотрю, делает первое. Причем, похоже, после того, как по on_death удалил сам предмет. Что странно. Ну, то есть, function action_foo:finalize() item = npc:object( "figovina" ) if item then enable_attachable_item( false ) end end удаление вызывается в on_death() из мотиватора раньше, чем вызовется action_foo:finalize(). P.S. На всякий случай переформулирую: я правильно понял, что в :finalize() схемы предмет можно дисейблить, только если выполнение схемы прервано нештатным образом, но непись при этом жив ? И, кстати, объект, наверное, стоит не получать прямо здесь по секции, а где-то хранить, на случай, если их c такой секцией окажется несколько ? А удалять у мертвого непися можно в любой момент, при условии, что он (предмет, да и непись тоже) ни кем и ни чем больше не трогается ? P.P.S. Аналогичный вопрос для случая с on_net_destroy(): с предметами в руках у неписей в этот момент, наверное, ничего делать не стоит ? Изменено 7 Января 2012 пользователем ColR_iT Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
лнкс 0 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 Всем доброго времени суток, с прошедшими праздниками и наступившим Рождеством. Возник такой вопрос: что отвечает за непереход некоторых NPC в offline? Объясняю: в SoC на кордоне новички с Волком переходят в offline, а солдатня на блокпосте - нет. Сравнил их секции в All.spawn и заметил разницу в флагах. Причина только в этом? Лучше спросить глупость, чем её совершить. Ссылка на комментарий
KD87 718 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 лнкс, хотя в данном случае дело в этом, но в общем случае не обязательно. Флагами flSwitchOffline/flSwitchOnline можно управлять методами can_switch_offline()/can_switch_online() соответствующих серверных объектов. Доступ к этим методам можно получить через регистрацию сетов с помощью object_factory. Смотри se_stalker.script, например. Ссылка на комментарий
лнкс 0 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 Попробую. Ещё вопрос: заспавнил рюкзак [10279] ; cse_abstract properties section_name = physic_object name = predbannik_physic_object_0108 position = -425.600646972656,12.9063091278076,-149.377365112305 direction = 0,-1.92239999771118,0 ; cse_alife_object properties game_vertex_id = 3908 distance = 0 level_vertex_id = 290047 object_flags = 0xffffff3a ; cse_visual properties visual_name = equipments\item_rukzak ; cse_ph_skeleton properties ; cse_alife_object_physic properties physic_type = 0x3 mass = 1000 fixed_bones = link , сделал из него тайник [10280] ; cse_abstract properties section_name = inventory_box name = predbannik_inventory_box_0008 position = -425.600646972656,12.9063091278076,-149.377365112305 direction = 0,-1.92239999771118,0 ; cse_alife_object properties game_vertex_id = 3908 distance = 35 level_vertex_id = 290047 object_flags = 0xffffff3b custom_data = <<END [spawn] mag_30_7.62x39_fmj = 10 END ; cse_visual properties visual_name = equipments\item_rukzak , забираю всё из тайника и вижу как один из рюкзачков плавно поднимается примерно на метр. Как это можно исправить? Лучше спросить глупость, чем её совершить. Ссылка на комментарий
ColR_iT 171 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 (изменено) лнкс, а зачем ты спавнишь два рюкзачка на одно и тоже место? Тебе, по сути, достаточно второй секции в качестве тайника. У тебя поднимается второй рюкзак с именем predbannik_inventory_box_0008, поставь ему также fixed_bones = link и он подниматься перестанет. Добавлено через 71 мин.: Сообщение от модератора ColR_iT HellStalkerDog и strelok200, задавайте, пожалуйста, вопросы в соответствующие темы. Посты Ваши переместил, в следующий раз просто удалю. Спасибо за понимание. Изменено 7 Января 2012 пользователем ColR_iT Ссылка на комментарий
Viнt@rь 50 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 Igor88.89 вот сдесь я допустил ошибку надо не local tT = position_table[rNum] а local tT = position_table[v][rNum] вот только не помню передастся ли v из первого цикла во второй, если нет то после первого цикла добавь такое local level_name = v и тогда это будет так local tT = position_table[level_name][rNum] GUI для конвертера от бардака(всего и вся в форматы сдк) Полезный утиль-"Utilits pack(mod)" Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти