DOC_VENOM
Портянки кодов принято прятать за спойлерами!
erlik Получить аргументы непосредственно у фраз естественно можно!
Каждая выбранная (кликнутая) фраза возвращает в качестве аргументов не только 'first_speaker, second_speaker' а именно весь набор, включая идентификатор диалога (стринг) и идентификатор самой фразы (number). Эти 'доп'-аргументы запросто можно использовать и в других скриптах, а не только в динамических диалогах.
Да и прекондишены с их набором тоже порой небесполезны. SkyLoader
Листани пару страниц назад, найдешь готовые примеры.
Короче, допустим время в игре 14.05, нужна функция, после вызова которой время станет на 5 минут больше, тоесть 14.10.Попробовал по приколу так, но не получилось:
Код:
function test()
local iii = level.get_time_minutes()
iii = iii + 5
end
Кто знает, как правильно надо? SkyLoader
Не, set_time_factor - это не то. DOC_VENOM
Цитататебе оно зачем надо?
Какая разница, раз спросил, значит нужно.
Сообщение было успешно отредактировано Stalk15 (29-09-2010 20:20 GMT3 часа, назад)
DOC_VENOM, игра нилит сам скрипт. Луа чекер нашел кучу ошибок в alife:create(), но никак не получается исправить. Stalk15, видишь, что написано level.get_time_minutes(), get - т.е. получить игровые минуты, а не изменить.
Есть некий set_time_factor(number);
SkyLoader
level.set_time_factor(number) метод - для изменения скорости течения времени в игре - ставишь
level.set_time_factor(100) и время течет в 10 раз быстрее, так как стандартный тайм-фактор равен 10.
Для рандомного спавна используй скрипт singapur'a22 из его журнала - специально для этого дела предназначен - и вариантов для применения много.
PS : по твоему примеру - метод в кавычки брать нельзя.
Artos
Так вот я именно не понял как у фразы получить все это. (если после нее нет ни прекондишена, ни экшена )
Через что?
В той же арене аргументы эти у прекондишена берутся. В оригинале вообще примеров нет.
Stalk15
По поводу изменения времени Artos не так давно писал как это делается. Поищи.
Вот тебе пример для ознакомления с методами:
Код:
function GetTime()
local t = game.get_game_time()
local y,m,d,h,min,sec,ms = t:get() -- получаем текущие значения
SendMessage(string.format("[%d:%d:%d]_[%d:%d:%d:%d]", y,m,d,h,min,sec,ms))
end
function SetTime()
local t = game.CTime() -- создание объекта с дефолтовыми значениями
t:set(2010, 9, 18, 0, 15, 22, 333) -- установили все значения
local y,m,d,h,min,sec,ms = t:get() -- получаем установленные значения
SendMessage(string.format("[%d:%d:%d]_[%d:%d:%d:%d]", y,m,d,h,min,sec,ms))
end
SendMessage заменяешь на news_manager.send_tip()
Но это реально время не меняет - так его еще нужно записать в нетпакет - тогда оно и на часах будет другое. Как записывать - смотри файл utils.script.
Сообщение было успешно отредактировано erlik (29-09-2010 20:54 GMT3 часа, назад)
Смотрим тут: #1352676 иль тут: #1352683 ... и через что же по-твоему там сделано? erlik
Кто-то из нас ... тормозит.
"Так вот я именно не понял как у фразы получить все это."
- Если ты о 'как получить идентификаторы' при создании графа дин.диалога, то ... они же в самом коде добавляемой фразы. Ты их сам задаешь.
- Если ты о получении уже в процессе диалога - так и посмотри сам принятую любую фразу из любого диалога, добавив к принимаемым аргументам 'first_speaker, second_speaker' еще парочку и выведя их в лог.
Примеры в исходниках есть, но единичны (сейчас не подскажу где именно, запамятовал ... Частично вспомнил: уже в 'dialogs.script' встречается 3-й аргумент - id/dialog_id, хотя и не используется). По поводу установки времени: Не требуется самому лезть в нет-пакеты. Необходимо изменить CTime в 'utils.script' и от сам все пропишет в нет пакеты. Не забыть также поменять этот же CTime и в 'smart_terrain.script', чтобы и гулаги не косячили.
Сообщение было успешно отредактировано Artos (29-09-2010 21:49 GMT3 часа, назад)
Artos, ааа, вот как, спасибо. Я просто под парой страниц думал страницы 2-3 назад . Все-таки много информации надо будет использовать.
А так, в отличии от таблицы, не будет больше грузить систему?
Код:
num = math.random(19)
if num==1 then
alife():create("wfagerge",vector():set(-184.57, -5.85, -32.50), 66391, 69)
end
...
И что же ты подразумеваешь под 'грузить систему'?
Свой код, в котором всего-то рандомный выбор+проверка на тождество+ спавн?
тут никакого 'табличного' спавна, банальный (сделаный через з..) рандомный спавн с вероятностью ~5%.
И чему тут грузить?
Грузит не 'это', а то, 'как и где' ты это используешь.
Artos, просто до этого я понял, что рандомный спавн - это ужасная весчь. Я заснял 19 неких мест спавна непися. Я знаю, что можно еще немного сократить этот кусок кода.
Насчет гружения, я имел ввиду, просто код несколько большой.
Код:
num = math.random(19)
if num==1 then
k_pos= vector():set(-184.57, -5.85, -32.50)
npc1 = alife():create(kont,k_pos, 66391, 69)
end
if num==2 then
k_pos= vector():set(-42.75, -8.08, -128.89)
npc1 = alife():create(kont,k_pos, 236069, 108)
end
if num==3 then
k_pos=vector():set(-79.10, -22.47, -234.73)
npc1=alife():create(kont,k_pos, 189409, 104)
end
if num==4 then
k_pos=vector():set(-218.15, -34.48, -318.69)
npc1=alife():create(kont,k_pos, 35150, 36)
end
if num==5 then
k_pos=vector():set(-114.94, 7.34, 89.33)
npc1=alife():create(kont,k_pos, 140849, 81)
end
if num==6 then
k_pos=vector():set(218.67, 12.07, 55.14)
npc1=alife():create(kont,k_pos, 510063, 154)
end
if num==7 then
k_pos=vector():set(295.86, 5.60, 146.74)
npc1=alife():create(kont,k_pos, 562151, 143)
end
if num==8 then
k_pos=vector():set(318.57, 13.30, 206.34)
npc1=alife():create(kont,k_pos, 574665, 146)
end
if num==9 then
k_pos=vector():set(273.22, 4.13, 314.71)
npc1=alife():create(kont,k_pos, 547156, 245)
end
if num==10 then
k_pos=vector():set(196.47, 2.09, 355.36)
npc1=alife():create(kont,k_pos, 494752, 247)
end
if num==11 then
k_pos=vector():set(166.49, 8.02, 255.48)
npc1=alife():create(kont,k_pos, 470359, 243)
end
if num==12 then
k_pos=vector():set(-38.41, -1.03, 212.05)
npc1=alife():create(kont,k_pos, 240153, 171)
end
if num==13 then
k_pos=vector():set(-118.53, 4.04, 229.44)
npc1=alife():create(kont,k_pos, 136434, 169)
end
if num==14 then
k_pos=vector():set(34.64, 2.57, 392.95)
npc1=alife():create(kont,k_pos, 315461, 198)
end
if num==15 then
k_pos=vector():set(51.11, 3.53, 459.84)
npc1=alife():create(kont,k_pos, 336229, 201)
end
if num==16 then
k_pos=vector():set(134.29, 2.54, 433.71)
npc1=alife():create(kont,k_pos, 439283, 224)
end
if num==17 then
k_pos=vector():set(104.89, 2.25, 535.44)
npc1=alife():create(kont,k_pos, 406153, 218)
end
if num==18 then
k_pos=vector():set(66.62, 6.83, 600.04)
npc1=alife():create(kont,k_pos, 356623, 215)
end
if num==19 then
k_pos=vector():set(178.23, 1.59, 353.23)
npc1=alife():create(kont,k_pos, 480568, 230)
end
Цитата
Если ты о получении уже в процессе диалога - так и посмотри сам принятую любую фразу из любого диалога, добавив к принимаемым аргументам 'first_speaker, second_speaker' еще парочку и выведя их в лог.
В dialogs есть такие примеры
Код:
function break_dialog(first_speaker, second_speaker, id)
function dialog_not_disable(object, victim, id)
allow_break_dialog(first_speaker, second_speaker, id)
и т.д.
НО это же ВСЕ функции вызываемые из тегов action или precondition!
То есть фактически я получаю аргументы точно также - только используя скриптовые аналоги тегов в виде методов AddAction() и AddPrecondition().
А где же третий способ?
Это все что меня интересует.
добавлено спустя 3 минут
SkyLoader
Зачем изобретать велосипед - тем паче такой неоптимальный?
Я ж тебе , говорю - посмотри как это сделано у singapur'a22 в скрипте универсального спавна объектов.
Цитатарандомный спавн - это ужасная весчь.
Неверный алгоритм применяешь - потому и получается ужасно.
Сообщение было успешно отредактировано erlik (29-09-2010 23:23 GMT3 часа, назад)
Всем еще раз доброго времени суток , вопрос следущего характера . . . Наверняка все играли в АМК-мод и наверняка все видели в нем такой предмет как GPS-маячки"они присутствовали и в других модах"так вот кто нибудь может вытащить эти маячки???а то я уже всё перепробовал,в игре они есть , но при их выбрасывании ничего не происходит , хотя должно появляться окно куда вписывается нашь оставленый хабар.
Razvedchick Править модель и анимации в 3д редакторе.
DOC_VENOM Поищи эти маячки на АМК форуме, там по ним помойму отдельная теме есть, если нет спрашивай в теме Раритеты.
Вот ссылка, но не прямая.
_http://www.amk-team.ru/forum/index.php?showforum=7
karavan, потому что это был кусок кода, а в полном коде были local.
num - это рандом чисел
kont - это название секции Gun12, все работало и до этого . Спасибо. Сразу код смог уменьшить.
Сообщение было успешно отредактировано SkyLoader (30-09-2010 03:53 GMT3 часа, назад)
erlik
Бум считать ступил я. Не поспамши перепьютал и посчитал 'AddPhrase' аналогом 'AddAction'.
Сорри, буду повнимательнее ... иль непроспавшись не постить заблуждалки.
Кстати: сейчас вожусь с диалогами, хотя и не с графами, но ...
Отмечен постоянный баг:
При проверке в диалоге наличия у актора некоего предмета (по секции) и прохождении в 1-ой фазе валидности проверки (типа: oActor:object(sItem)) - в 'Action' (вторичная валидация) предмет ... исчезает!
Грешу на то, что работает 'поясной' модуль (определитель предметов на поясе актора). И похоже в диалогах (между кликом по фразе и действием) происходит перетасовка рюкзака ГГ - найденный предмет (вероятно кешируемый движком) перемещается в рюкзаке и ... фатальная валидация его наличия.
Сообщение было успешно отредактировано Artos (30-09-2010 02:54 GMT3 часа, назад)
Помогите пожалуйста, что-то у меня не выходит с квестом. Сделал второстепенный квест, для нового Нпс. Квест берется у того самого Нпс. Но при начале новой игры, когда я Начинаю говорить с Сдором, в конце диалога происходит вылет, что это? Помогите пожалуйста
Вопрос по билду 1935, так как в том разделе подобной темы нет.
Спавню через левел едитор НПС, его id по умолчаню просто "неизвестный сталкер". Создаю в файле конфигурации новый блок, прописываю НПС уникальный id но игра все равно вылетает. Ради интереса пробовад прописать id реально существующего другого сталкера, но все равно вылет...
Сообщение было успешно отредактировано Курт (30-09-2010 15:23 GMT3 часа, назад)
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.