Kober(BRUC) 99 Опубликовано 6 Июня 2016 (изменено) Добрый день. Как изменить логику(двери) скриптом? То есть есть файл enc_door и надо его заменить на enc_door_1. А точнее мне нужно скриптом дверь у Сидора открыть. И: вот вызываю я функцию из функции(например: Kober.outfit() ). Но вызывать мне ее надо не из файла Kober.script, а из этого же файла в котором я вызываю. Например я вызываю из none.script. Мне тогда так и писать none.outfit()? Правильно ли я создал таблицу? T = {ammo_9x18_fmj ammo_5.45x39_fmj ammo_5.7x28_fmj} function none () alife():create("T",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id()) end Изменено 6 Июня 2016 пользователем Kober(BRUC) Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 9 Июня 2016 (изменено) Добрый день. Написал я такой код: local pos_tbl={ set_01 = {lvid=261995, gvid=187, pos = -15.300880,5.824976,292.832062}, set_02 = {lvid=261995, gvid=187, pos = -13.200880,3.716976,292.832062}, set_03 = {lvid=261995, gvid=187, pos = -11.400880,1.908976,292.832062}, set_04 = {lvid=261995, gvid=187, pos = -19.100880,7.600976,292.832062} } function spawn_z_escape_1(section) local lv = math.random(pos_tbl[set_0 .. math.random(1,4)]["lvid"]) --Левел вертекс local gv = pos_tbl[set_0 .. math.random(1,4)]["gvid"] --Гэйм вертекс local ps = pos_tbl[set_0 .. math.random(1,4)]["pos"] --Position return alife():create(section, vector():set(ps),lv,gv) --Около фермы end function r_zombie_1() spawn_z_escape_1("zombie_new_k_1") spawn_z_escape_1("zombie_new_k_1") end Ловлю такой вылет: Expression : fatal errorFunction : CScriptEngine::lua_errorFile : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cppLine : 73Description :Arguments : LUA error: ...adow of chernobyl\gamedata\scripts\new_script.script:13: attempt to concatenate global 'set_0' (a nil value) Не знаю как это собственно исправлять. Как я понимаю вылет из-за того, что он не может рандомно вызвать одно из четырех "set_0*". Значит ошибка здесь: [set_0 .. math.random(1,4)]. Но вот как мне по-другому вызывать? Изменено 9 Июня 2016 пользователем Kober(BRUC) Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 9 Июня 2016 (изменено) @CRAZY_STALKER666, проблема то в том, что пользоваться мне этим не особо то и надо. А ваш велосипед я в интернете находил(иль похожий). А свой писать начал, так как интересно сделать что-то свое... Хоть это уже и есть, и даже лучше... но это то свое! Изменено 9 Июня 2016 пользователем Kober(BRUC) Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 9 Июня 2016 (изменено) Разберись, какие значения операндов Как я понял нужно всего навсего изменить set_0 на: "set_0" Изменено 9 Июня 2016 пользователем Kober(BRUC) 2 Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 10 Июня 2016 @Nazgool, т.е. между "x" "y" "z" нужно поставить”;”, так как если будет запятая, то он выберет только "x". З.ы. я себя чувствую дураком... Как я сразу это не заметил составляя таблицу координат?.. @Zander_driver, а гейм-вертекс и левел-вертекс во всех четырех вариантах совпадают. Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 10 Июня 2016 (изменено) @Nazgool, то есть это должно выглядеть так: return alife():create(section, vector():set(ps,ps[1],ps[2]),lv,gv) --Около фермы Изменено 10 Июня 2016 пользователем Kober(BRUC) Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 10 Июня 2016 @Nazgool, скорее не таблица, а ее компонент. Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 10 Июня 2016 (изменено) @Nazgool, координаты, левел и гейм-вертексы Изменено 10 Июня 2016 пользователем Kober(BRUC) Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 10 Июня 2016 @Nazgool, я когда говорил координаты я подразумевал ps - x; ps[1] - y; ps[2] - z. Но как я понял это не правильно. То есть нужно изменить таблицу на такую?: ... А вот на какую что бы, я со своими скудными познаниями смог вызвать из этой таблицы и "x", и "y", и "z", из этой строки вызывались сразу три: local ps = pos_tbl["set_0" .. math.random(1,4)]["pos"] --Position Значит нужно сделать так: local pos_tbl={ set_01 = {lvid=261995, gvid=187, pos = -15.300880, pos[1] = 5.824976, pos[2] = 292.832062}, set_02 = {lvid=261995, gvid=187, pos = -13.200880, pos[1] = 3.716976, pos[2] = 292.832062}, set_03 = {lvid=261995, gvid=187, pos = -11.400880, pos[1] = 1.908976, pos[2] = 292.832062}, set_04 = {lvid=261995, gvid=187, pos = -19.100880, pos[1] = 7.600976, pos[2] = 292.832062} } ... local ps = pos_tbl["set_0" .. math.random(1,4)]["pos"] --Position local ps[1] = pos_tbl["set_0" .. math.random(1,4)]["pos[1]"] --Position local ps[2] = pos_tbl["set_0" .. math.random(1,4)]["pos[2]"] --Position Но вот проблема тогда появляется. Тогда рандомно из всех четырех "set_0*" будет вызываться разные координаты "x", "y" и "z". Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 10 Июня 2016 (изменено) @Nazgool, а у меня ведь была идея сделать из pos еще одну таблицу... Что я понял из вашего кода: 1) Вы гениальны. 2) благодаря этой строчке: local data = math.random(#pos_tbl) -- Один раз получить таблицу с координатами можно решить проблему вызова левел-вертексов, гейм-вертексов и координат x, y,z из разных set_0* 3) То что в вашем коде pos является таблицей, а pos[1] - x и т.д. Изменено 10 Июня 2016 пользователем Kober(BRUC) Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 10 Июня 2016 (изменено) @Nazgool, а чем же окончательный отличается? Вроде бы и этот прекрасно должен работать. Я кажется понял отличие. Нет числа рандомного спавна. Точнее от сколки и до сколки зомби заспавнятся. Изменено 10 Июня 2016 пользователем Kober(BRUC) Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 16 Июня 2016 Добрый вечер. Есть у меня скрипт который можно включить и выключить. Делается это так: lvidgvid = false --true -включен; false - выключен Как мне скриптом менять его значения? Т.е. как в настройках. Отключить или включить данный параметр всего лишь нажав на определенную область экрана. Область есть, а вот функции нет. А так же, как изменить параметр если он находится не в скрипте, а в .ltx файле? Например: cheat_enable = 1 -- 1 включено; 0 выключено Все так же как и в первом варианте. Нужно нажать на определенную область. Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 17 Июня 2016 @Kober(BRUC), подсмотри в амк Посмотрел. Не нашел. Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 21 Июня 2016 Добрый вечер. Был заспавнен предмет через скрипт, самым обычным способом: alife():create(section,position,lv,gm) Предмет в игре один. То есть не как хлеб или колбаса, которых много, а один. Как мне удалить этот предмет из игры? Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 6 Июля 2016 (изменено) Добрый день. Могут ли скрипты взаимодействовать с инфо поршнями? Например(извиняюсь что в таком виде, с телефона сижу): function функция_1() if инфо_поршень then функция_2() else функция_3() end function функция_3() инфо_поршень print("это пример") end function функция_2() print("еще пример действия") end Или можно переменные выдавать за место инфо поршней? Я пробовал в функции выдавать локальную переменную, но она работала только в этой функции. З.ы. Модераторы, исправьте пожалуйста вид сообщения, если не сложно.. Изменено 6 Июля 2016 пользователем Kober(BRUC) Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 6 Июля 2016 @CRAZY_STALKER666, а без инфо поршней все таки можно? С помощью переменных например? Что бы не только в Сталкере работало. Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 13 Июля 2016 А как заставить Lua работать с Русскими буквами? Вот код и он не работает: local say = "Гора" -- Текст на Русском языке local say = say:match("(.)$") function as() if say == "а" then print(say) end end as() print(say) Выдает вот такой символ: "�". А сама функция не работает 1 Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 14 Июля 2016 (изменено) Добрый день. Где же я упустил ошибку?: local number = 10 say_tbl_one_ru = { -- Таблица с русскими ответами. 'Угадай число'; "Не верно. Чуть больше.", "Не верно. Чуть меньше.", "Вы угадали! Число равно:" } local complexity = 'esay' -- 'esay' - Легко; 'normal' - Срдне; 'hard' - Хардкор; 'random' - Рандомное число от 100, до 10000 function gl() if complexity == 'esay' then local cly = 25 elseif complexity == 'normal' then local cly = 100 elseif complexity == 'hard' then local cly = 1000 elseif complexity == 'random' then local ran_data = math.randomseed(os.time()) local ran_data = math.random(100, 10000) local cly = ran_data local num = math.random(1, cly) if number < num then print(say_tbl_one_ru[1]) elseif number > num then print(say_tbl_one_ru[2]) elseif number == num then print(say_tbl_one_ru[3]) end end end gl() Изменено 14 Июля 2016 пользователем Kober(BRUC) Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 14 Июля 2016 @Kirgudu, то что math.randomseed результат не возвращает - я знал. Но вот не знал что она действует только для следующей math.random. Вот и добовлял её в локальную переменную. А отступ обще принятый? Или можно хоть сколько пробелов ставить? А навыков у меня не только в чтении мало... Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 22 Июля 2016 (изменено) Добрый день. Есть у меня файл item.ltx. В нем есть секция: [New_eat]:bread. В секции есть значение item_create = перечисление, любых_секций, например, bread. Так же есть скрипт. И в нем пустая таблица. Допустим local item_tbl = {} Как мне заполнять эту таблицу значениями из item_create? Изменено 22 Июля 2016 пользователем Kober(BRUC) Поделиться этим сообщением Ссылка на сообщение