Твоя цитата применяется тогда, когда ты ВЫЗЫВАЕШЬ модуль из какого либо файла.
Необязательно.
Я лишь имел в виду что Stalk15 со своей таблицей может поступить двояко: либо создать функцию ее возвращающую(расходы по памяти в данном случае ничтожны и значения не имеют) либо объявить ее как глобальную (тем самым оставим к ней доступ извне), но пользоваться ей в самом модуле\файле как локальной (чтобы не потерять на скорости доступа ). И все - а уж выбирать конкретный вариант ему.
...В общем думаю не стоит нам засорять топик "умным" трепом для форума значения не имеющим.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik
Не соглашусь с незначительностью подобного "трепа" для форума и для неопытных модмейкеров.
Конечно для мелких поделок подобное не важно, но для серьезных модов - немалознАчимо, ИМХО.
Суть применения локальной или глобальной в контексте данного топика двояка:
а) Есть возможность применять одни и те же имена переменных в одних и тех же модулях и пр ... (упрощенно).
б) Экономия ресурсов игры. Логальные переменные очищаются финализатором LUA по мере окончания их использования (упрощенно), что высвобождает память/стеки. Глобальные же таблицы, попав в память - там и сидят ...
Если взять пример Stalk15, то (как я понимаю) данная таблица применяется для неких диалогов бартера (иль подобного), которые относительно редки. Брать таблицы из памяти/кешей или из кодов модулей - для диалогов не имеет значения и не снижает FPS'ов. А вот экономия (хотя в данном случае и небольшая) при применении локальной таблицы - налицо.
Т.о. "умный треп" сводится к выбору модмейкером по ситуации между некоторой экономией ресурсов в игре или потерей нескольких процессорных тактов ... Все это конечно не может иметь однозначных ответов.
SkyLoader
Удалить без проблем: getFS()):file_delete("$game_saves$", sFileFullName), только предварительно следует проверить наличие удаляемого файла.
Произошло ли сохранение тоже можно проверить по наличию в папке сохранок соответствующего файла. Для квиков и/или авто- сохранок придется проверять дату ...
Животрепещущий вопрос: как сохранить ссылку на конкретную функцию(она передается как аргумент в другую функцию), чтобы затем можно было эту функцию по этой ссылке вызвать.
Поясню подробнее: в некую функцию() передается для вызова в нужное время другая функция\функции и требуется сохранять ссылки на них дабы после перезагрузки игры не потерять возможность вызывать их.)
Вызвать функцию по имени (сохранив его в таблице как строку) не совсем то:
this["my_func"]() - так без проблем вызовется функция из данного файла. А если она нахо
отредактировал(а) erlik: 06-01-2011 18:37 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik
Что-то непонятна твоя заминка с ссылками на функции.
И модули и функции имеют имена (строки). Зная их всегда можно вызвать из нужного модуля нужную функцию.
Конструкция типа: Func = _G[sModuleName][sFuncName] давно применяется разрабами игры в том же 'xr_logic.script' при разборе конфигов логики ...
Сохраняй где удобно имена-стринги sModuleName и sFuncName и вызывай их в удобное время ...
Mr House
А разве это не **5001b67681f3126adde4**acked
pause[/code]
вместо gamedata.xp0 название архива из билда.
У меня 1472 нет - но прочие билды этим батником на ура распаковываются.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
И все таки ты не прав в данном конкретном случае.
Конечно прав и Artos - однозначно наиболее правильный вариант выбрать сложно, однако тот факт что функция всего лишь помещается в стек (а это как ты знаешь динамическая структура - вот она есть там функция (мы ее вызвали), а вот ее уже нет там -- вытолкнула следующая) - делает более привлекательным именно этот вариант. Зато глобальная таблица будет висеть в памяти постоянно до момента выхода из программы и жрать память(который ты так дорожишь). А если как верно указал singapur22 она еще и большая и ключи в ней строковые - то очень много жрать памяти. И что же логичнее - создать маленькую функцию, которая займет (и то лишь временно - в момент своего вызова) крохотный участок стека или создать монстра, который как VIP персона будет требовать постоянного внимания? А то что каждое обращение к глобальной таблице автоматически ПОМЕЩАЕТ ее в стек - это ты учел? Это получается что она там и сям - и везде требует ресурсов. Вывод на мой взгляд очевиден.
... Да, конечно любая функция тоже является частью глобального контекста - но не может функция на три строчки кода занимать больше памяти чем таблица на 100.
отредактировал(а) erlik: 07-01-2011 12:28 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Вобщем, тренировался в создании простых второстепенных квестов, врод**5001b67681f3126adde4**ror]Arguments : LUA error: ...ое Издание\shoc\gamedata\scripts\task_manager.script:210: attempt to index field '?' (a nil value)[/code]
Что писал:
> В misc\task_manager:
[code]
;----------Trader--------------------------------------------------
;----------AleX MOD tasks----------
;-----------Monster Part------------
trader_find_monster_part_zombie_hands
[trader_find_monster_part_zombie_hands]
type = monster_part
community = actor
text = trader_find_monster_part_zombie_hands_text
description = trader_find_monster_part_zombie_hands_descr
parent = trader
target = mutant_zombie_hand, 2
reward_money = 300
reward_reputation = +5
reward_rank = 1
time = 172800
prior = 10[/code]
> В gameplay\storyline_info_taskmanager:
[code];---------Monster Part--------------
;---------trader--------------
;----------AleX MOD Tasks---------- trader_find_monster_part_zombie_hands_descr [/code]
> В text\rus\stable_task_manager_alex_mod:
[code] Притащить две руки зомби
Притащить две руки гражданского зомби
Тут недавно ко мне один сталкер-шаман заходил, оставил заказ на две руки гражданских зомби. Хрен его знает зачем ему эта дрянь... Вобщем, говорят у нас на Кордоне, видели несколько этих... зомби. Как только они сюда добрели - неизвестно. Ну, что берёшся?
[/code]
(зарегестрирован в localization.ltx)
отредактировал(а) Stalker_Alex333: 07-01-2011 17:17 GMT3 час.
Stalker_Alex333
Я ни где не видел, что можно писать так:
target = mutant_zombie_hand, 2
Я думаю, это и есть причина твоего вылета.
Мой совет: Делай квесты лучше так, как сделано в файлах типа game_task.xml. Я всегда так делаю. Там типа возможностей больше и легче. Stalker_Alex333
Есть ссылки на статьи, туторы?
На самом сталкер-вики и есть.
отредактировал(а) Stalk15: 07-01-2011 16:58 GMT3 час. Новые фишки для сталкера(см. журнал)
Я тоже поначалу подумал, что дело в target = mutant_zombie_hand, 2, но после изменения этой строки (к примеру на target = mutant_flash_eye) вылет не исчез, значит дело не в ней...
З.Ы. Что касается game_task - я с ним никогда не работал, можно поподробнее?
(Есть ссылки на статьи, туторы?)
А через скрипт,на wiki написано,что нужно ещё сделать апдейт в bind_stalker,вот из мап пака телепорты КостиV:
bind_restrictor.actor_update(delta)
-- Апдейтим наш телепорт
bind_mteleport.actor_update(delta)
И ещё,в этом же файле:function actor_binder:net_spawn(data)
death_manager.init_drop_settings()
FLIKER
Телепорты от Imp'a?
Есть там такой глюк,что они иногда не срабатывают.
Ошибка по моему здесь(в биндере телепорта):
-- Телепорт запущен
if ( time_global() <= s.time ) then --нужно заменить знак < на >
-- Если время отведенное на показ спецэфектов
-- прошло, производим телепортацию
teleportate(s.poz_x,s.poz_y,s.poz_z)
Иначе получается, что если биндер проморгал когда time_global() ==s.time то условие тупо не выполняется так как значение time_global() по любому уже больше, чем s.time.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Короче я хочу перенести из ЗП в ТЧ текстолитовые платы, коробку с транзисторами и пр. фигню, которою надо было Азоту притащить.
Так вот, достаточно ли тупо скопировать модели, текстуры и прописать эту модель некоторому объекту?
Mehanik Yar Не знаю насчет "текстолитовых плат" и пр, но для того что бы перенести двери я их прогонял через СДК 0.4, возможно с физическими обьектами тоже нужно перегонять через СДК.
Попробуй, если не получится то тогда без Милки и СДК 0.4 не обойтись.
Существует ли возможность проверить установлен ли на данный объект fastcall?
... Принцип установки фасткалла как мне кажется такой: существует некая таблица (то ли в движке, то ли еще где) ключи которой - id объектов переданных методу set_fastcall(), а поля - ссылки на функцию, которую нужно вызывать(также передается в set_fastcall как аргумент). Эта таблица постоянно итерируется и каждая функция вызывается в порядке итерации. Но вот как получить к ней доступ, чтобы узнать есть ли уже в ней ключ соответствующий айди определенного объекта?
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Можно ли поставить эти значения отдельно для монстров и отдельно для нпс? Файл se_respawn.
local idle_spawn_preset = { seldom = 300, medium = 300, often = 300
добавлено спустя 2 минут
Mehanik Yar
Да, если ты имееш ввиду не те модельки, которые считаются объектом карты. А так 3D Max в помощь.
отредактировал(а) СидырыЧЪ: 08-01-2011 00:49 GMT3 час. Horrible area modВидео в журнале
--------------------------------------------------------------------
Важнейшая задача цивилизации - научить человека мыслить
1)Давно мучает вопрос: что происходит со скелетом после ломания? Секция целого скелета теряется. Так какие же секции образуются на месте скелета?
2)Какие методы есть в Lua, чтобы узнать реальные дату и время?
отредактировал(а) SkyLoader: 08-01-2011 03:51 GMT3 час.
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.