Пользователей: 1
Гостей: 1445
Всего: 1446

» Подробно
» Сегодня

Привет, гость!









Автор Сообщение
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
16-09-2010 12:22 GMT3 час. #1345595   
SkyLoader

А можно так создавать локальные переменные?
Пример:
Код:
local name = math.random(1,123)
local we..name

Должно получится we75, например.


Нет! Да и смысл? Ты хочешь, чтобы имя переменной было произвольно-рандомным. И как же ты хочешь его в последствии определять? Это самая глупая затея, из всех которые я слышал.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
16-09-2010 14:59 GMT3 час. #1345681   
singapur22
Ты для замера времени работы скрипта классом profile_timer() пользовался?
Тут у меня одна непонятка в**500140b7e12bf63c3891**

отредактировал(а) erlik: 16-09-2010 15:07 GMT3 час.

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
qwqwqwqw1
    
Посты: 28
Откуда: Новокуйбышевск
Возраст: 33
16-09-2010 16:00 GMT3 час. #1345720   
Может кто подсказать что не так? Попытался сделать случайную выдачу вещей Сидору в начале игры
а награда вообще не выдаётся.


function give_detector_to_actor(trader, actor)
local reward_item = math.random(1,3)
if reward_item == 1 then
dialogs.relocate_item_section(trader, "medkit", 1)
dialogs.relocate_item_section(trader, "ammo_7.62x25_ps", 2)
dialogs.relocate_item_section(trader, "wpn_tt33_sk1")
dialogs.relocate_item_section(trader, "detector_advances_tutorial", 3)
end
if reward_item == 2 then
dialogs.relocate_item_section(trader, "conserva", 5)
dialogs.relocate_item_section(trader, "ammo_16x70_buck", 5)
dialogs.relocate_item_section(trader, "wpn_bm16")
dialogs.relocate_item_section(trader, "detector_advances_tutorial")
dialogs.relocate_item_section(trader, "medkit", 1)
end
if reward_item == 3 then
dialogs.relocate_item_section(trader, "ammo_16x70_buck", 2)
dialogs.relocate_item_section(trader, "ammo_9x18_fmj", 1)
dialogs.relocate_item_section(trader, "wpn_bm16")
dialogs.relocate_item_section(trader, "wpn_pm")
dialogs.relocate_item_section(trader, "detector_advances_tutorial")
dialogs.relocate_item_section(trader, "bandage", 3)
dialogs.relocate_item_section(trader, "medkit", 1)
end
end


Fantom2323
    
Посты: 778
Откуда: 25 RUS
Возраст: 29
16-09-2010 16:10 GMT3 час. #1345727   
karavan

В ТЧ как и в других частях игры начальный набор редактируется только в АллСпавне.

В ТЧ да, нужно править алл.спавн, НО В ЧН, ЗП это можно сделать правкой конфига character_desc_general.xml ;-)

Оспаривать бесполезно, проверенно на практике...


Новый проект в разработке, ищи в моём журнале.
В теории - всё легко, а вот на деле - гораздо сложнее.
SkyLoader
    
Посты: 755
Откуда: Москва
Возраст:
16-09-2010 16:12 GMT3 час. #1345729   
singapur22, хммм, жаль.


А можно на апдейт взять локальную переменную, когда мне надо, и сделать та


Хочешь работать нормально, работай один!
nikolay_kr
    
Посты: 6
Откуда:
Возраст: 41
16-09-2010 16:32 GMT3 час. #1345746   
Как добавить топливную бомбу торговцам? В [supplies_start] прописую explosive_tank (если я не ошибаюсь, то это и есть бомба). С другими предметами все получается, а с бомбой ни как. Да и самого конфига бомбы так и не могу найти! В баре бармен ходит по этим бомбам fuelcan.


singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
16-09-2010 17:09 GMT3 час. #1345766   
erlik Я никогда им не пользовался, но... А ты уверен, что значения выводятся в миллисекундах? Может как раз здесь счёт ведётся по наносекундам?
Скорость работы скриптов измерял обычно определением fps. Собственно вполне хватало. Хоть и замер не особо точный.

SkyLoader Не особо понятно выражение, что ты хочешь. Опиши подробней, где и зачем ты это хочешь применить?


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
blackraven6
    
Посты: 624
Откуда: СПб
Возраст: 32
16-09-2010 17:13 GMT3 час. #1345768   
nikolay_kr незнаю на счет данной бомбы но вообще они в wepons.ltx прописаны. Выкидывает он их видимо из-за того что у них по дефолту стоит can_take = false и поднимать их нельзя.



Журнал
- модель M79
- модель HK SL-8
- модель Milkor m32 WIP
Ma$ter
    
Посты: 477
Откуда: Tamboff
Возраст:
16-09-2010 17:23 GMT3 час. #1345775   
Тут у меня интересный вылет случился:
..........
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. Где я ошибся?


Знание assembler, C/C++, Pascal, Lua.
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
16-09-2010 17:38 GMT3 час. #1345793   
Ma$ter Ну ты выдал :-) А как же:

local n = game.translate_string("number_"..item_alias)

Ты это не учитываешь? Данным кодом ты ей переназначаешь установленное ранее значение, на текст взятый из папки text.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
nikolay_kr
    
Посты: 6
Откуда:
Возраст: 41
16-09-2010 17:49 GMT3 час. #1345800   

# blackraven6 :
nikolay_kr незнаю на счет данной бомбы но вообще они в wepons.ltx прописаны. Выкидывает он их видимо из-за того что у них по дефолту стоит can_take = false и поднимать их нельзя.



Действительно в файле wepons.ltx для этой бомбы (название tank) стоит параметр can_take = false. А как сделать, чтоб можно было подбирать предмет?


blackraven6
    
Посты: 624
Откуда: СПб
Возраст: 32
16-09-2010 17:55 GMT3 час. #1345810   
nikolay_kr Ну наверное true поставить!

Или вообще убрать.



Журнал
- модель M79
- модель HK SL-8
- модель Milkor m32 WIP
SkyLoader
    
Посты: 755
Откуда: Москва
Возраст:
16-09-2010 18:00 GMT3 час. #1345814   
singapur22, Пример: если итем в слоте, то сохраним его юзердату. Потом идет п


Хочешь работать нормально, работай один!
nikolay_kr
    
Посты: 6
Откуда:
Возраст: 41
16-09-2010 18:03 GMT3 час. #1345815   
да отлично! Теперь все стало на свои места. Спасибо.


singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
16-09-2010 18:19 GMT3 час. #1345825   
SkyLoader Я так понимаю, ты хочешь произвести двойное определение PM-ов. Тобишь есть ли PM в слоте, и есть ли PM в рюкзаке. Так? Если так, то всё не верно. Метод db.actor:object(pm:section()) всегда будет возвращать один и тот же PM (пока от него не избавишься), который был заспавнен или перемещён в инвентарь, самым первым. Тобишь, если он будет в слоте, то проверка на PM в рюкзаке, будет возвращать false, не зависимо от того, есть там PM, или нет.
Для точного определения, как минимум нужно инвентарь итерировать методом

iterate_inventory(function, object)
или
inventory_for_each(const function&)


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Ma$ter
    
Посты: 477
Откуда: Tamboff
Возраст:
16-09-2010 18:20 GMT3 час. #1345826   
все равно вылет:
[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


Знание assembler, C/C++, Pascal, Lua.
СидырыЧЪ
    
Посты: 208
Откуда:
Возраст: 30
16-09-2010 18:25 GMT3 час. #1345829   
как исправить безлоговый вылет при спауне нпс? делал все как на вики и исправил потом то что сделал но вылет как был так и остался

Проблемма устранена

отредактировал(а) СидырыЧЪ: 16-09-2010 18:42 GMT3 час.

Horrible area mod Видео в журнале
--------------------------------------------------------------------
Важнейшая задача цивилизации - научить человека мыслить
Stalk15
    
Посты: 1023
Откуда: Как-бэ Новосибирск(Точно не знаю=))
Возраст: 30
16-09-2010 18:40 GMT3 час. #1345838   
Можно ли выдать квест не тегами task, а скриптом?Если да, то как?

отредактировал(а) Stalk15: 16-09-2010 18:49 GMT3 час.

Новые фишки для сталкера(см. журнал)
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
16-09-2010 18:47 GMT3 час. #1345842   
Ma$ter Итератор for-do-end со строками не работает. А если тебе нужно проитерировать именно строку, то используй for - in string.gmatch(-) do-end

отредактировал(а) singapur22: 16-09-2010 18:50 GMT3 час.

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
SkyLoader
    
Посты: 755
Откуда: Москва
Возраст:
16-09-2010 18:56 GMT3 час. #1345850   
singapur22, я хочу взять юзердату ПМа, если он есть он в слоте, а потом ждем, пока он не окажетс**500140b7e12bf63c3891**


Хочешь работать нормально, работай один!
СидырыЧЪ
    
Посты: 208
Откуда:
Возраст: 30
16-09-2010 19:03 GMT3 час. #1345862   
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 Видео в журнале
--------------------------------------------------------------------
Важнейшая задача цивилизации - научить человека мыслить
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
16-09-2010 19:13 GMT3 час. #1345870   
SkyLoader Ну дыкс дела**500140b7e12bf63c3891** end
end
end[/code]


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Dietrich2009
    
Посты: 219
Откуда: Kiev
Возраст: 15
16-09-2010 19:14 GMT3 час. #1345873   
СидырыЧЪ ui_talk не может найти ХML


MOD: The Story of a Stalker.
Подробнее в журнале
СидырыЧЪ
    
Посты: 208
Откуда:
Возраст: 30
16-09-2010 19:23 GMT3 час. #1345876   
Dietrich2009
это как понять?


Horrible area mod Видео в журнале
--------------------------------------------------------------------
Важнейшая задача цивилизации - научить человека мыслить
Ma$ter
    
Посты: 477
Откуда: Tamboff
Возраст:
16-09-2010 19:28 GMT3 час. #1345885   
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


Я менял все только в самом конце


Знание assembler, C/C++, Pascal, Lua.
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
16-09-2010 19:37 GMT3 час. #1345890   
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",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
16-09-2010 19:48 GMT3 час. #1345904   
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" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
16-09-2010 20:05 GMT3 час. #1345922   
erlik Во первых, это лишнее:

GetNumpad():SetText("") -- стираем предыдущий код

А во вторых, способом:

local menu = ui_numpad.numpad()

Ты создаёшь новый (скрытый) объект нумпада, а не определяешь текущий.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
SkyLoader
    
Посты: 755
Откуда: Москва
Возраст:
16-09-2010 20:05 GMT3 час. #1345924   
singapur22, LUA error: No such operator defined :-(


Ma$ter, в консоли все пробелы надо заменять _

отредактировал(а) SkyLoader: 16-09-2010 20:15 GMT3 час.

Хочешь работать нормально, работай один!
Ma$ter
    
Посты: 477
Откуда: Tamboff
Возраст:
16-09-2010 20:11 GMT3 час. #1345929   
Сингапур
дело в том что пока я не использую таблицу для получения параметра - пока что я тупо ввел переменную
number_storyline_eliminate_gunslinger которая равна 3. И самое главное я не могу вывести в лог значение переменной из таблицы:
get_console():execute("prizrak000 "...item_alias) выдает мне
! Unknown command: prizrak000

хотя должно выводить ! Unknown command: prizrak000 storyline_eliminate_gunslinger


Знание assembler, C/C++, Pascal, Lua.


Форумы Архив » Свалка Вопросы и ответы (ТЧ по 18.11.2010)


Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для
просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.

Использование материалов сайта возможно с разрешения администрации. Все права защищены. © 2004–2025 «Stalker-Portal.ru»