меченый(стрелок) 5 Опубликовано 5 Июля 2009 (изменено) Vano_Santuri, Да можно.... Тебе нужен будет скрипт от АМК(amk.script) в нём смотри функцию _g_start_timer ,потом _do_timer_action(select_string,params_string).. к примеру гденить в начале игры стартуешь таймер .. amk.g_start_timer("my_respawner",0,32,0) .. потом в _do_timer_action if select_string=="my_respawner" then --вызов твойх функций ... amk.g_start_timer("my_respawner",0,32,0)--стартуем таймер заново... end Изменено 5 Июля 2009 пользователем меченый(стрелок) Поделиться этим сообщением Ссылка на сообщение
меченый(стрелок) 5 Опубликовано 5 Июля 2009 (изменено) Смотря что спавнить. Предметы - script. НПС - spawn. Vano_Santuri, пожалуйста. Изменено 17 Октября 2011 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение
меченый(стрелок) 5 Опубликовано 7 Июля 2009 Vano_Santuri,из своего скрипта удали if load("spawn_anom",false)==false or respawn==true then ... ... save("spawn_anom",true) end end Удали ,то что выделено... Поделиться этим сообщением Ссылка на сообщение
меченый(стрелок) 5 Опубликовано 21 Июля 2009 IQDDD, Собственно вопрос не ко мне,а к xStream'у.... Могу предположить,что таким образом ,как предложили вы,универсальности не будет.... я представляю эту функцию примерно так function new_timer(cr,func_name,min) local begin = false timer[cr]=game.time+min ...тут считаем if begin then func_name() begin=false end end собственно загвоздка в том,что нету возможности сохранить имя функции...следовательно...если будет скажем два вызова этой функции(таймера) с разными функциями(переменными),то,когда первый раз begin будет истинным ,произойдёт вызов всех функций....ИМХО...Если покажите свой способ,то попытаюсь объяснить,чем он хуже(хотя возможно и лучше).... ЗЫ:Насчёт АМК скажу, по моим "данным" в АМК 2.0 не будет функций от xStream'a - следовательно и таймер будет другим... Поделиться этим сообщением Ссылка на сообщение
меченый(стрелок) 5 Опубликовано 21 Июля 2009 (изменено) IQDDD,Так бы сразу и писали....А то по одной строчке и не поймешь,в чём вообще задумка..Но меня терзают смутные сомнения насчёт луа в Сталкере... Вот небольшой пример.... function tert(fun) --vivod v log,mol vizvali tert break fun() end function gfga() --vivod v log,mol vizvali gfga end --i gde nit vizovem tert(gfga) И если в логе будут эти две строки,то значит ,что ваш метод не пойдёт...Думаю сами поймете почему... Изменено 21 Июля 2009 пользователем меченый(стрелок) Поделиться этим сообщением Ссылка на сообщение
меченый(стрелок) 5 Опубликовано 21 Июля 2009 IQDDD, ругать не буду .... break -"разбивать"... То есть брик прекращает выполнение функции... следовательно,та запись эквивалентна этой function tert(fun) --vivod v log,mol vizvali tert end .... А говорил я вот о чём... проверить ,сколько функций выполнится ... то есть, если в логе появятся 2 строки,а не одна...то ваш метод не будет работать правильно.... То есть если при таком вызове: test_func(myscript.func) будут вызваны две функции сразу.... test_func и myscript.func()...то будет не то ,что вы хотели... Вот,что я хотел сказать.... Если же вызовется только одна функция(test_func),то тогда ваш метод может вполне сработать... Поделиться этим сообщением Ссылка на сообщение
меченый(стрелок) 5 Опубликовано 30 Июля 2009 Orange Midday, Собственно ,что вам нужно объяснить по операторам? основные операторы такие же как и в любом языке....if,for,while,repeat,etc....По каким у вас вопросы из остальных? Вы хотите выводить информацию о сталкере куда? на экран? или как к примеру выводятся имена в оригинале?Поясните... Поделиться этим сообщением Ссылка на сообщение
меченый(стрелок) 5 Опубликовано 31 Июля 2009 Orange Midday,...Не совсем так... Операторов вывода инфы на экран нету...функции -есть(к примеру сообщение),а операторов нет .... Насчёт вашей задачи, это реализовать можно(знаю на 100%),но эта реализация требует много времени,а его у меня нету,да и желания тоже ... Как более легкий вариант: function npcinfo(first,second) news_manager.send_tip(db.actor,"npc id:"..tostring(second:id()).." npc name:"..second:name().." npc community:"..second:character_community()..",etc..",nil,1000) end далее пишете простенький диалог(или вставляете в существующий),где первой репликой является реплика ГГ и вставляете в action с ссылкой на скрипт... и когда вы начнёте диалог с нпс (у которого диалог этот конечно же прописан) ,то вы увидите на экране сообщение с данными нпс... Если уж вас такой вариант не устраивает,то ищи мод Симбион,там в скриптах отладки есть вывод имени смарт_террейна рядом с объектом(конечно это статичный объект,но переделать можно)... Насчёт ОпЕраторов - задавайте конкретный вопрос.К примеру: break,что он делает? Влад, есть функция в bind_stalker.script называется on_item_drop в этой функции проверяйте что использовали предмет if obj:section()=="предмет" then --вызов вашей функции ,самый простой вариант,но не лишённый недостатка,к примеру выбросите вы предмет условие станет истинным...это можно обойти..просто подумайте как можно поймать предмет end Поделиться этим сообщением Ссылка на сообщение
меченый(стрелок) 5 Опубликовано 27 Апреля 2010 (изменено) Как перевести выпарсенный список вещей в окошко? Создаёшь Лист-бокс и запихиваешь туда названия предметов. self:AddToBox(game_translate(ObjName)); где ObjName - ключ inv_name из секции предмета. Прочитать ключ можно используя функции по работе с ини-файлами. Только, это - метод AddToBox нужно написать самому Изменено 27 Апреля 2010 пользователем меченый(стрелок) Поделиться этим сообщением Ссылка на сообщение
меченый(стрелок) 5 Опубликовано 12 Июня 2010 Как и любой другой объект в игре . в цикле по инвентарю ищешь название и удаляешь по id либо просто отбираешь у игрока (посмотри в сторону dialogs.script или amk_mod.script) Поделиться этим сообщением Ссылка на сообщение
меченый(стрелок) 5 Опубликовано 16 Июня 2010 (изменено) Gektor, хм.... В общем : Делаешь имена объектов(бочки и электры) уникальными например бочка - my_ballon электра - my_electra получаешь сначала "бочку" по имени ,её координаты , получаешь электру и через пакет задаёшь ей позицию бочки. Или поизвращаемся: спавнишь только бочку а на её позици проигрываешь любой нужный эффект и при приближении кого-либо даёшь ему хит , играешь звук и эффект. obj:position = anm:position А вот это, по моей памяти, ничего не даст , кроме как вылета(не факт, не помню). Изменено 16 Июня 2010 пользователем меченый(стрелок) Поделиться этим сообщением Ссылка на сообщение
меченый(стрелок) 5 Опубликовано 16 Июня 2010 (изменено) можно воспользоваться известной со школьной доски функцией или методом объекта(а точней методом его позиции) distace_to или функцией between из _g.script math.sqrt(((x2*x2)-(x1*x1))+((y2*y2)-(y1*y1))+((z2*z2)-(z1*z1)));--школьная функция :) Если теорией то Расстояние между двумя точками равняется корню квадратному из суммы разностей квадратов соответсвующих координат точек.Или как-то так Изменено 17 Июня 2010 пользователем меченый(стрелок) Поделиться этим сообщением Ссылка на сообщение
меченый(стрелок) 5 Опубликовано 22 Июня 2010 (изменено) кровоSTALKER, Ещё как вариант можно сделать "отложенный" update именно твоей функции с помощью , скажем, time_global().Или через таймеры amk .Вариантов много Изменено 22 Июня 2010 пользователем меченый(стрелок) Поделиться этим сообщением Ссылка на сообщение
меченый(стрелок) 5 Опубликовано 22 Июня 2010 (изменено) ФеНиКс, думаю,ответ очевиден а НПСы(если ГГ в метре от этих(этого) НПС(ов) ) реагируют, ну допустим, говорят вот это мастер и т.п или отрицательно, т.е. рандомно реагируют на этот звук. А вот это можно сделать. Правда реализация со звуком никак не связана Изменено 22 Июня 2010 пользователем меченый(стрелок) Поделиться этим сообщением Ссылка на сообщение
меченый(стрелок) 5 Опубликовано 22 Июня 2010 (изменено) ФеНиКс, Разве не очевиден? Заставить нпс реагировать именно на звук нельзя доступными средствами, кроме того примера что предоставил ты., где всё решается несколькими проверками и каким нить флагом этой Гитарой уже маюсь.... ух как долго! осталось только скрипт как-то к юзанью этой гитары прицепить и всё! при чём тут "реакция на звук"? Про "заюзать скрипт": 1.bind_stalker.script 2.on_item_drop(obj) 3.if obj:section=="Гитара" then --заюзали,или выкинули :) А вот если не надо "выкинули" (), то проверяешь что id такого больше нету(для одноразового предмета) и вызываешь не в этом колбэке. Изменено 22 Июня 2010 пользователем меченый(стрелок) Поделиться этим сообщением Ссылка на сообщение
меченый(стрелок) 5 Опубликовано 22 Июня 2010 (изменено) ФеНиКс, невозможно это. можно пойти другим ходом .Его я описал выше.У меня нету сталка(и не будет ) и "практически" мне будет тяжелее помочь,а я очень ленивый Изменено 22 Июня 2010 пользователем меченый(стрелок) Поделиться этим сообщением Ссылка на сообщение
меченый(стрелок) 5 Опубликовано 28 Июня 2010 (изменено) кровоSTALKER, про отметку "пространство имён" - level ищи по слову spot. Также советую почитать lua_help.script и тему про Функциям сталкера на этом форуме - многие вопросы уйдут сами собой. Первый вопрос решается курением "порядка" вызыва методов апдейтов актёра. В общем : вставь перед теми строками из-за которых вылет(которые ты удалил) проверку что уровень загружен.опять таки методы "пространства имён" level, если вылет исчезнет,то думаю поймешь почему(хотя бы примерно). PS:Epic Fail.Не читайте это сообщение! Изменено 29 Июня 2010 пользователем меченый(стрелок) Поделиться этим сообщением Ссылка на сообщение
меченый(стрелок) 5 Опубликовано 30 Июня 2010 (изменено) ФеНиКс, удалить flobals = true . for i=1, 65535 do Это не рационально,если проверка не "отложена" (читать через промежуток) Изменено 30 Июня 2010 пользователем меченый(стрелок) Поделиться этим сообщением Ссылка на сообщение
меченый(стрелок) 5 Опубликовано 30 Июня 2010 TREWKO, посмотри "новостной" скрипт - там есть проверка которая даёт название уровня нпс. Дай бог памяти - из пространства alife() Поделиться этим сообщением Ссылка на сообщение
меченый(стрелок) 5 Опубликовано 30 Июня 2010 (изменено) math.random(table.getn(mes_sucko)) = math.random(#mes_sucko) = math.random(n) (где n - кол-во элементов в таблице). ФеНиКс, "%c[255,255,1,1]Татар\\n+%c[255,1,255,1] pos_mes %c[default]" Внимательно посмотри - у тебя это всё одна строка *** кровоSTALKER, Поэтому нужно использовать Зачем? (table.getn(mes_sucko)) - даст кол-во элементов, следовательно будет выбираться(math.random(table.getn(mes_sucko))) случайное сообщение из всей таблицы. Изменено 30 Июня 2010 пользователем меченый(стрелок) Поделиться этим сообщением Ссылка на сообщение