А можно так создавать локальные переменные?
Пример:
Код:
local name = math.random(1,123)
local we..name
Должно получится we75, например.
Нет! Да и смысл? Ты хочешь, чтобы имя переменной было произвольно-рандомным. И как же ты хочешь его в последствии определять? Это самая глупая затея, из всех которые я слышал.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Как добавить топливную бомбу торговцам? В [supplies_start] прописую explosive_tank (если я не ошибаюсь, то это и есть бомба). С другими предметами все получается, а с бомбой ни как. Да и самого конфига бомбы так и не могу найти! В баре бармен ходит по этим бомбам fuelcan.
erlik Я никогда им не пользовался, но... А ты уверен, что значения выводятся в миллисекундах? Может как раз здесь счёт ведётся по наносекундам?
Скорость работы скриптов измерял обычно определением fps. Собственно вполне хватало. Хоть и замер не особо точный.
SkyLoader Не особо понятно выражение, что ты хочешь. Опиши подробней, где и зачем ты это хочешь применить?
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
nikolay_kr незнаю на счет данной бомбы но вообще они в wepons.ltx прописаны. Выкидывает он их видимо из-за того что у них по дефолту стоит can_take = false и поднимать их нельзя.
Журнал
- модель M79
- модель HK SL-8
- модель Milkor m32 WIP
Тут у меня интересный вылет случился:
..........
local number_storyline_eliminate_gunslinger = 3
local n = game.translate_string("number_"..item_alias)
for i=1, n do
..........
Он почему-то пишет что n неравно числу. Хотя поидее n должно принимать number_storyline_eliminate_gunslinger (т.к. item_alias = storyline_eliminate_gunslinger), а эта переменная равна 3. Где я ошибся?
#blackraven6 : nikolay_kr незнаю на счет данной бомбы но вообще они в wepons.ltx прописаны. Выкидывает он их видимо из-за того что у них по дефолту стоит can_take = false и поднимать их нельзя.
Действительно в файле wepons.ltx для этой бомбы (название tank) стоит параметр can_take = false. А как сделать, чтоб можно было подбирать предмет?
SkyLoader Я так понимаю, ты хочешь произвести двойное определение PM-ов. Тобишь есть ли PM в слоте, и есть ли PM в рюкзаке. Так? Если так, то всё не верно. Метод db.actor:object(pm:section()) всегда будет возвращать один и тот же PM (пока от него не избавишься), который был заспавнен или перемещён в инвентарь, самым первым. Тобишь, если он будет в слоте, то проверка на PM в рюкзаке, будет возвращать false, не зависимо от того, есть там PM, или нет.
Для точного определения, как минимум нужно инвентарь итерировать методом
iterate_inventory(function, object)
или inventory_for_each(const function&)
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
все равно вылет:
[error]Arguments : LUA error: gamedata\scripts\ogsm_notepad.script:471: 'for' limit must be a number
local number_storyline_eliminate_gunslinger = 3
local n = "number_"..item_alias
for i=1, n do
self:Part_descriptions_for_tasks(game.translate_string("desc_"..item_alias.."_"..i))
end
как исправить безлоговый вылет при спауне нпс? делал все как на вики и исправил потом то что сделал но вылет как был так и остался
Проблемма устранена
отредактировал(а) СидырыЧЪ: 16-09-2010 18:42 GMT3 час. Horrible area modВидео в журнале
--------------------------------------------------------------------
Важнейшая задача цивилизации - научить человека мыслить
Ma$ter Итератор for-do-end со строками не работает. А если тебе нужно проитерировать именно строку, то используй for - in string.gmatch(-) do-end
отредактировал(а) singapur22: 16-09-2010 18:50 GMT3 час. Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Expression : no_assert
Function : CXML_IdToIndex::GetById
File : e:\stalker\patch_1_0004\xr_3da\xrgame\xml_str_id_loader.h
Line : 112
Description : item not found, id
Arguments : ui_talk
что значит этот вылет?
Horrible area modВидео в журнале
--------------------------------------------------------------------
Важнейшая задача цивилизации - научить человека мыслить
Horrible area modВидео в журнале
--------------------------------------------------------------------
Важнейшая задача цивилизации - научить человека мыслить
singapur22
Мне нужно сделать так
1. Скрипт берет из таблицы значение и создает изображение и запоминает переменную в item_alias
2. Смотрит в другой таблице параметр для этого значения. Я параметр обозначал number_+параметр
3. Дальше в определенное окно записывается столько строк текста какому значению равен параметр
Вот собственно скрипт что у меня сейчас
function notepad:OnListItemClicked()
get_console():execute("prizrak1111")
if self.list_box:GetSize() == 0 then return end
local itm_index = self.list_box:GetSelectedItem()
local item = self.list_box:GetItem(itm_index)
if item == nil then return end
get_console():execute("prizrak2")
local item_text = item.fn:GetText()
get_console():execute("prizrak3")
local item_alias = item.fa:GetText()
get_console():execute("prizrak4")
if item_alias == "null" then return end
self.description_list:RemoveAll()
self.description_list:ScrollToBegin()
self.description_list:ShowSelectedItem(false)
self.picture:SetText("")
if current_mode == 1 then
get_console():execute("prizrakO1")
self:FillDescription(game.translate_string("enc_notepad_"..item_alias))
get_console():execute("prizrakO1desc")
self.picture:InitTexture("ui\\ui_noise_00")
get_console():execute("prizrakOtexture")
elseif current_mode == 2 then
get_console():execute("prizrakO2")
self:FillDescription(game.translate_string("enc_mutant_"..item_alias))
self.picture:InitTexture("ui\\monsters\\ui_monster_"..item_alias)
elseif current_mode == 3 then
get_console():execute("prizrakO3")
self:FillDescription(game.translate_string("enc_location_"..item_alias))
self.picture:InitTexture("ui\\locations\\ui_location_"..item_alias)
elseif current_mode == 4 then
get_console():execute("prizrakO4")
self:FillDescription(game.translate_string("enc_faction_"..item_alias))
self.picture:InitTexture("ui\\factions\\ui_faction_"..item_alias)
elseif current_mode == 5 then
get_console():execute("prizrakO5")
self:FillDescription(game.translate_string("enc_notepad_"..item_alias))
self.picture:InitTexture("ui\\ui_noise")
elseif current_mode == 6 then
get_console():execute("prizrakO6")
self:FillDescription(game.translate_string("enc_anomaly_"..item_alias))
self.picture:InitTexture("ui\\anomalies\\ui_anomaly_"..item_alias)
elseif current_mode == 7 then
get_console():execute("prizrakO8")
local task_description = game.translate_string("desc_"..item_alias)
if task_description == nil then
self:Part_descriptions_for_tasks("Описание для этого задания отсутствует")
end
local number_storyline_eliminate_gunslinger = 3
local n = "number_"..item_alias
for i=1, n do
self:Part_descriptions_for_tasks(game.translate_string("desc_"..item_alias.."_"..i))
end
self.picture:InitTexture("ui_iconsTotal_"..item_alias)
self.picture:SetWndSize(83, 47)
else
get_console():execute("prizrakO7")
self.picture:InitTexture("ui\\ui_disk_io")
self.picture:SetText("Ничего не выбрано")
end
get_console():execute("prizrak5")
--local r = self.picture:GetOriginalRect()
self.picture:SetOriginalRect(Frect():set(256,256,256,256))
get_console():execute("prizrak6")
self.list_box:ShowSelectedItem(true)
end
singapur22
Насчет миллисекунд не уверен - сам тоже вот в первый раз решил замерить этим методом.
Но если судить по вчерашним п**500240b7e12bf63c3891**unction GetNumpad()
local menu = ui_numpad.numpad()
local edit_window = menu:GetStatic("edit_window")
return edit_window
end [/code]
Делаю декодер и хотел для реализьму :-) сделать, чтобы все цифирки, которые скрипт перебирает, выводились в окошко эдит бокса.
в скрипте декодера - в теле цикла на 100000 итераций пишу
local code
for i=100000, 0, -1 do
code= tostring(i)
GetNumpad():SetText("") -- стираем предыдущий код
GetNumpad():SetText(code)-- вводим новый код в эдит бокс
CheckCode(code) --передаем код для проверки на соответствие
в итоге получаю зависание
Ладно - решил вводить в бокс только результат последней итерации - сам подобранный код:
[code]if IsHack(id_box) then -- если схрон вскрыт
local edit = GetNumpad()
edit:SetText(code) --вводим результат последней итерации
SendMessage("Схрон вскрыт декодером = "..code) -- вот здесь все выводится
break
end[/code]
а в окошке нумпада пусто. Сам перебор выполняется быстро - всего за несколько секунд. Так что буду увеличивать число итераций - хотя в SCITE этот цикл выполнялся за 16 сек - в сталкере почему то быстрее.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Ma$ter Ну дакс, если "number_"..item_alias --это ключь некой таблицы, то и указывать нужно его как ключь таблицы,**500140b7e12bf63c3891**for i=1, n do
self:Part_descriptions_for_tasks(game.translate_string("desc_"..item_alias.."_"..i))
end[/code]
Где, tbl --твоя вторая таблица, из которой ты берёшь числовое значение по ключу "number_"..item_alias
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Сингапур
дело в том что пока я не использую таблицу для получения параметра - пока что я тупо ввел переменную
number_storyline_eliminate_gunslinger которая равна 3. И самое главное я не могу вывести в лог значение переменной из таблицы:
get_console():execute("prizrak000 "...item_alias) выдает мне
! Unknown command: prizrak000
хотя должно выводить ! Unknown command: prizrak000 storyline_eliminate_gunslinger
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.