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

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

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









Автор Сообщение
dm.dav23
    
Посты: 3683
Откуда: Н.Новгород
Возраст: 41
18-11-2010 20:35 GMT3 час. #1385455   

отредактировал(а) Geralt of Rivia: 29-01-2011 16:52 GMT3 час.

>>ПРАВИЛА<<
TheDoktor
    
Посты: 3814
Откуда: Керчь
Возраст: 37
18-11-2010 21:05 GMT3 час. #1385467   
У меня проблема с долговцем, которого спасает Пуля, не помню как там его. Я не могу с ним поговорить, а он вечно куда то целится со своей беретты, даже когда прибегает на блокпост долга. Как эту каку исправить?
P.S. я ничего не менял, глюк "пришёл" из OGSM'а.


Я – хозяин своей судьбы, но только судьба знает, где закончится мой путь.

RENTGEN_4444
    
Посты: 48
Откуда:
Возраст:
18-11-2010 21:10 GMT3 час. #1385471   
Вот такой вопросик-как изменить группировку нпс?Мне надо из одиночки сделать бандита(через диалог).


Дробитель
    
Посты: 22
Откуда:
Возраст:
18-11-2010 21:17 GMT3 час. #1385474   
Я уже задавал вопрос, но как сделать "Новости зоны"?
Немного подробнее опишу:
Нашел я в АМК 1.4.1. вот такие файлы:
amk_death_lists
amk_modders
amk_dolg
amk_freedom
amk_names_lists
amk_news_lists
amk_uniq_news_lists
news_data
news_main
news_manager
Там указаны смерти, диалоги и разные "Бла-бла-бла" короче чат
Я понял, что их нужно где-то прописывать, но где?
З.Ы.Не предлагать установить АМК, я хочу внедрить в другой мод этот "чат"


Тут типа должна быть оригинальная запись?
Ma$ter
    
Посты: 477
Откуда: Tamboff
Возраст:
18-11-2010 21:34 GMT3 час. #1385482   
Дробитель
http://narod.ru/disk/22401797000/news.7z.html
Инструкция:http://www.amk-team.ru/forum/index.php?s=&showtopic=8986&view=findpost&p=406090
Сорри что на украинском
Или можно взять новости отсюда - http://www.amk-team.ru/forum/index.php?showtopic=8986#entry374420
Правда новости от АМК 1.2
RENTGEN_4444
function ваше_название_функции(actor, npc)
if npc:character_community() ~= "(сюда пишем название группировки куда хотите вступить" then
npc:set_character_community("пишем сюда еще раз группировку в которую хотите вступить", 0, 0)
end
end


Знание assembler, C/C++, Pascal, Lua.
Дробитель
    
Посты: 22
Откуда:
Возраст:
18-11-2010 21:40 GMT3 час. #1385484   
Ma$ter
Ниче, у меня и 1.2. есть :-)
Вообщем спасибо


Тут типа должна быть оригинальная запись?
Artos
    
Посты: 4176
Откуда:
Возраст: 65
18-11-2010 21:50 GMT3 час. #1385492   
Дробитель
СтОит выбирать себе задачку по силам и навыкам.
Ты хочешь портировать в 'свой' мод одну и самых трудоемких 'фенечек' из АМК-мода.
Если у тебя нет навыков по совмещению скриптовых модов, то подобная задачка тебе сейчас НЕ по силам, а объяснять тебе многочисленные места/шаги по 'где/как/чего' - врядли кто возьмется.
Тем более на твое "где прописывать", никто не ответит, т.к. что у тебя за 'другой мод' - только тебе ведомо.
Перечисленные тобою файлы, во-первых, не единый "чат", а два: "обычный" (работает из amk_mod.script - новости не зависят от игры) и "интерактивный" (news_main и news_data - содержание новостей зависит от игры/прохождения). Во-вторых, используют и другие файлы из AMK-мода, используя сторонние функции.
Если у тебя нет достаточного опыта и навыков по скриптам игры (что скорее всего судя по заданному вопросу), то или ищи на просторах инета (пмнится было что-то кусочно-выделенное) или ищи знакомого скриптера ...

RENTGEN_4444
Даже в оригинальной игре есть 'перевод игрока' в другую группировку (Долг, Свободу).
Почему ленишься посмотреть САМ в уже имеющемся под рукою материале?
Загляни в оригинальный 'dialogs.script' и найдя еомментарий от разрабов "-- Community" поизучай функции проверки актора в группировке и перевод его в нее (например: 'actor_set_dolg()').

TheDoktor
Подобные баги неписей ('молчалки-неотвечалки') - имеют корни в логике неписей.
Хочешь исправлять - изучай логику для конкретного непися и правь ее.
Задачка далеко не из простых. Во-первых, как обычно без всех исходных материалов, влияющих на логику/выбор логики, из твоего мода не обойтись. Во-вторых, без общих и частных знаний 'как и что' в логике неписей - ты только сторонним читателем будешь, а кто-то должен будет тебе написать/разжевать.
Советую поштудировань материалы на вики на эту тему и уже с неким багажем знаний вернуться к вопросу.
Подсказка по частному случаю: ищи в сторону параметра 'meet' (т.е. условий когда неписю (не)запрещено болтать).

отредактировал(а) Artos: 18-11-2010 22:54 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
batment
    
Посты: 267
Откуда: Киев
Возраст: 30
18-11-2010 23:27 GMT3 час. #1385544   
делал по статье
---------------------------"Звук при съедании предмета,(ов) (BSF assemblage)"-------------------------
Код:
local eat = nil

function use_med() - это надо ставить на всем знакомый актор апдейт
if eat and type(eat) == 'number' then
if not level.object_by_id( eat ) then
local snd_obj = xr_sound.get_safe_sound_object([[пишем путь до звука]])
snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
end
eat = nil
end

if eat and type(eat) == 'userdata' then
eat = eat:id()
else
eat = nil
end
end

function drop_med(obj) - это надо ставить на on_item_drop (obj)
local obj_sect = obj:section()
if obj_sect == 'предмет1' or obj_sect == 'предмет2' or obj_sect == 'предмет3' then - здесь пишем итемы
eat = obj
end
end

Но тут в функции я показал пример с множеством предметов, а если у нас допустим только один предмет, то пишем так:
Код:
function drop_med(obj) - это надо ставить на on_item_drop (obj)
local obj_sect = obj:section()
if obj_sect == 'предмет1' then - здесь пишем итемы
eat = obj
end
end


после этого вылет
вот мой bind_stalker
function init (obj)
xr_motivator.AddToMotivator(obj)
end

function actor_init (npc)
npc:bind_object(actor_binder(npc))
end

lasthealth = 0
lasttime = 0
post_process = 0
local weapon_hide = false
----------------------------------------------------------------------------------------------------------------------
class "actor_binder" (object_binder)
----------------------------------------------------------------------------------------------------------------------
function actor_binder:__init (obj) super(obj)
self.bCheckStart = false
self.weather_manager = level_weathers.WeatherManager()
self.actor_detector = xr_detector.actor_detector()
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:net_spawn(data)
printf("actor net spawn")

level.show_indicators()

self.bCheckStart = true
self.weapon_hide = false -- спрятано или нет оружие при разговоре.
weapon_hide = false -- устанавливаем глобальный дефолтовый флаг.

if object_binder.net_spawn(self,data) == false then
return false
end

db.add_actor(self.object)

if self.st.disable_input_time == nil then
level.enable_input()
end

self.weather_manager:reset()
-- game_stats.initialize ()

if(actor_stats.add_to_ranking~=nil)then
actor_stats.add_to_ranking(self.object:id())
end

--' Загружаем настройки дропа
death_manager.init_drop_settings()

return true
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:net_destroy()
if(actor_stats.remove_from_ranking~=nil)then
actor_stats.remove_from_ranking(self.object:id())
end
-- game_stats.shutdown ()
db.del_actor(self.object)

sr_light.clean_up ()

self.object:set_callback(callback.inventory_info, nil)
self.object:set_callback(callback.article_info, nil)
self.object:set_callback(callback.on_item_take, nil)
self.object:set_callback(callback.on_item_drop, nil)
--self.object:set_callback(callback.actor_sleep, nil)
self.object:set_callback(callback.task_state, nil)
self.object:set_callback(callback.level_border_enter, nil)
self.object:set_callback(callback.level_border_exit, nil)
self.object:set_callback(callback.take_item_from_box, nil)

if sr_psy_antenna.psy_antenna then
sr_psy_antenna.psy_antenna:destroy()
sr_psy_antenna.psy_antenna = false
end

xr_sound.stop_all_sound_object()

object_binder.net_destroy(self)
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:reinit()
object_binder.reinit(self)

local npc_id = self.object:id()

db.storage[npc_id] = { }

self.st = db.storage[npc_id]
self.st.pstor = nil

self.next_restrictors_update_time = -10000

self.object:set_callback(callback.inventory_info, self.info_callback, self)
self.object:set_callback(callback.article_info, self.article_callback, self)
self.object:set_callback(callback.on_item_take, self.on_item_take, self)
self.object:set_callback(callback.on_item_drop, self.on_item_drop, self)
self.object:set_callback(callback.trade_sell_buy_item, self.on_trade, self) -- for game stats
--self.object:set_callback(callback.actor_sleep, self.sleep_callback, self)
self.object:set_callback(callback.task_state, self.task_callback, self)
--self.object:set_callback(callback.map_location_added, self.map_location_added_callback, self)
self.object:set_callback(callback.level_border_enter, self.level_border_enter, self)
self.object:set_callback(callback.level_border_exit, self.level_border_exit, self)
self.object:set_callback(callback.take_item_from_box, self.take_item_from_box, self)
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:take_item_from_box(box, item)
local story_id = box:story_id()
if story_id == nil then
return
end

treasure_manager.take_item_from_box(box, story_id)
--[[
local respawner = se_respawn.get_respawner_by_parent(story_id)
if respawner == nil then
return
end

--' Необходимо уменьшить счетчик в респавнере
respawner:remove_spawned(item:id())

local smart_terrain = db.strn_by_respawn[respawner:name()]
if smart_terrain == nil then
return
end

local npc = smart_terrain.gulag:get_nearest_online_obj(db.actor:position())
if npc ~= nil then
xr_sound.set_sound_play(npc, "reac_box")
xr_gulag.setGulagEnemy(smart_terrain:name() , db.actor)
end
]]
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:level_border_enter(npc, info_id)
self.actor_detector:actor_enter()
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:level_border_exit(npc, info_id)
self.actor_detector:actor_exit()
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:info_callback(npc, info_id)
printf("*INFO*: npc='%s' id='%s'", npc:name(), info_id)
--' Сюжет
level_tasks.proceed(self.object)
-- Отметки на карте
level_tasks.process_info_portion(info_id)
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:on_trade (item, sell_bye, money)
if sell_bye == true then
game_stats.money_trade_update (money)
else
game_stats.money_trade_update (-money)
end
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:article_callback(npc, group, name)
--printf("article_callback [%s][%s]", group, name)
if device().precache_frame >1 then return end

if group == "Diary" then
news_manager.send_encyclopedy("diary", group)
else
news_manager.send_encyclopedy("encyclopedy", group)
end
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:on_item_take (obj)
level_tasks.proceed(self.object)
--game_stats.update_take_item (obj, self.object)
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:on_item_drop (obj)
level_tasks.proceed(self.object)
--game_stats.update_drop_item (obj, self.object)
function drop_med(obj)
local obj_sect = obj:section()
if obj_sect == 'conserva' then
eat = obj
end
end

end
----------------------------------------------------------------------------------------------------------------------

function actor_binder:task_callback(_task, _objective, _state)
task_manager.task_callback(_task:get_id(), _objective:get_idx(), _state)
if _objective:get_idx() == 0 then
if _state == task.fail then
news_manager.send_task(db.actor, "fail", _task, _objective)
elseif _state == task.completed then
task_manager.reward_by_task(_task)
news_manager.send_task(db.actor, "complete", _task, _objective)
else
news_manager.send_task(db.actor, "new", _task, _objective)
end
else
if _task:get_objective(0):get_state() == task.in_progress then
news_manager.send_task(db.actor, "update", _task, _objective)
end
end
end

----------------------------------------------------------------------------------------------------------------------
function actor_binder:map_location_added_callback(spot_type_str, object_id)
if (false==app_ready()) or (device().precache_frame>1) then return end
--'news_manager.send_task(db.actor, "new")
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:update(delta)
object_binder.update(self, delta)

-- DEBUG slowdown
-- slowdown.update()

local time = time_global()

game_stats.update (delta, self.object)

-- апдейт погоды
self.weather_manager:update()

-- апдейт схемы детектора
self.actor_detector:update()

-- апдейт звуковой схемы актера
xr_sound.update_actor()

--' Проверка потери жизни
--[[
if self.object.health - lasthealth > 0.001 or
self.object.health - lasthealth < -0.001 then
printf("%f | %f", self.object.health, self.object.health - lasthealth, game.time() - lasttime)
lasthealth = self.object.health
lasttime = game.time()
end
]]
-- Обновление отключения ввода с клавиатуры.
if self.st.disable_input_time ~= nil and
game.get_game_time():diffSec(self.st.disable_input_time) >= self.st.disable_input_idle
then
level.enable_input()
self.st.disable_input_time = nil
end
-- Обновление сна с переносом чувака в указанную позицию
if self.st.sleep_relocate_time ~= nil and
game.get_game_time():diffSec(self.st.sleep_relocate_time) >= self.st.sleep_relocate_idle
then
self.object:set_actor_position(self.st.sleep_relocate_point)
local dir = self.st.sleep_relocate_point:sub(self.st.sleep_relocate_look)
self.object:set_actor_direction(dir:getH())
self.st.sleep_relocate_time = nil
end

-- Апдейт прятание оружия игрока во время диалога
if weapon_hide == true or self.object:is_talking() then
if self.weapon_hide == false then
self.object:hide_weapon()
self.weapon_hide = true
end
else
if self.weapon_hide == true then
self.object:restore_weapon()
self.weapon_hide = false
end
end

-- обновление рестрикторов, которые под логикой, срабатывает через интервалы времени
if self.next_restrictors_update_time < time then
bind_restrictor.actor_update(delta)

self.next_restrictors_update_time = time + 200

task_manager.actor_update()
end

-- обновление постпроцессов
if post_process ~= 0 then
if post_process:update () == true then
post_process = 0
end
end

-- обновление пси-антенны
if sr_psy_antenna.psy_antenna then
sr_psy_antenna.psy_antenna:update(delta)
end

--' Вывод сообщения о большой радиации
if self.object.radiation >= 0.7 then
local hud = get_hud()
local custom_static = hud:GetCustomStatic("cs_radiation_danger")
if custom_static == nil then
hud:AddCustomStatic("cs_radiation_danger", true)
hud:GetCustomStatic("cs_radiation_danger"):wnd():SetTextST("st_radiation_danger")
end
else
local hud = get_hud()
local custom_static = hud:GetCustomStatic("cs_radiation_danger")
if custom_static ~= nil then
hud:RemoveCustomStatic("cs_radiation_danger")
end
end



if self.bCheckStart then
printf("SET DEFAULT INFOS")

if not has_alife_info("storyline_actor_start") and
(level.name() == "l01_escape")
then
self.object:give_info_portion("storyline_actor_start")
_G.g_start_avi = true
printf("*AVI* RUN START AVI")
end

-- if not has_alife_info("encyclopedy") then
-- self.object:give_info_portion("encyclopedy")
-- end

if not has_alife_info("global_dialogs") then
self.object:give_info_portion("global_dialogs")
end

if not has_alife_info("level_changer_icons") then
self.object:give_info_portion("level_changer_icons")
end

level_tasks.add_lchanger_location()

self.bCheckStart = false
end

local eat = nil

function use_med()
if eat and type(eat) == 'number' then
if not level.object_by_id( eat ) then
local snd_obj = xr_sound.get_safe_sound_object(sounds\monsters\drink_1)
snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
end
eat = nil
end

if eat and type(eat) == 'userdata' then
eat = eat:id()
else
eat = nil
end
end

end

----------------------------------------------------------------------------------------------------------------------
function actor_binder:save(packet)
printf("actor_binder:save(): self.object:name()='%s'", self.object:name())
object_binder.save(self, packet)

--' Сохраняем данные об отключенном вводе
if self.st.disable_input_time == nil then
packet:w_bool(false)
else
packer:w_bool(true)
utils.w_CTime(packet, self.st.disable_input_time)
end

xr_logic.pstor_save_all(self.object, packet)
self.weather_manager:save(packet)

sr_psy_antenna.save( packet )
task_manager.save(packet)
self.actor_detector:save(packet)
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:load(reader)
printf("actor_binder:load(): self.object:name()='%s'", self.object:name())
object_binder.load(self, reader)
printf("actor_binder:object_binder.load(): self.object:name()='%s'", self.object:name())

if reader:r_eof() then
abort("SAVE FILE IS CORRUPT")
end

local stored_input_time = reader:r_u8()
if stored_input_time == true then
self.st.disable_input_time = utils.r_CTime(reader)
end

xr_logic.pstor_load_all(self.object, reader)
self.weather_manager:load(reader)

sr_psy_antenna.load(reader)
task_manager.load(reader)
self.actor_detector:load(reader)
end
----------------------------------------------------------------------------------------------------------------------

--старт префетча звуков
--if string.find(command_line(), "-noprefetch") == nil then
-- sound_prefetch.prefetch_sounds()
--end


-- Weapon functions
function hide_weapon()
weapon_hide = true
end
function restore_weapon()
weapon_hide = false
end

// this is test for section iteration
/**
local function test_section_iteration(file_name, section_name)
printf ("file : %s",file_name)
printf ("section : %s",section_name)

local file = ini_file(file_name)
local n = file:line_count(section_name)
printf ("lines : %d",n)

local id, value = "", "", result
for i=0,n-1 do
result, id, value = file:r_line(section_name,i,"","")
printf ("line %d : %s = %s",i,id,value)
end
end

test_section_iteration("system.ltx","space_restrictor")
/**/



что там непровильного ?


-=NSM=-
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
19-11-2010 00:01 GMT3 час. #1385560   
batment
Сильно сомневаюсь Artos будет тебе это разжевывать(и будет кстати правильно с его стороны), но дабы ты в который раз не заполнял топик подобными элементарными вопросами отвечу\подскажу за него:
нужно вписывать в тело методов bind_stalker.script не сами функции, а только их вызов:
имя_файла.use_med() -- в метод апдейта
и имя_файла.drop_med(obj) -- в каллбек на дроп
а сами функции положи в любой скриптовый файл (свой или уже имеющийся).
В вызове функций вместо строчки имя_файла укажи имя файла куда положил функции.
И еще путь до звука указан неверно:
1)папку sounds указывать не нужно - указывается путь относительно ее.
2) путь до файлов указывается через двойной слеш+кавычки. (либо - при одном слеше - нужно вместо кавычек использовать двойные квадратные скобки).


PS: Как можно изучать С++ (сужу по подписи на твоей аве)- далеко непростой кстати язык с огромным числом библиотек, классов, методов((сужу по изученному мной в базовой версии его родственнику C#)- не разобравшись в таких основополагающих вещах как вызов функции, тело функции, аргументы функции, операторы функции? Неужели книжка создателя lua - камрада Роберта Иерусалимского настолько тяжела, что ее даже руки взять страшно...
Вопрос само собой риторический.

PPS: В топике ушедшем в архив я кстати дал другой вариант отслеживания использования предмета - более простой. Для кого интересно?
Вопрос опять же риторический.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
batment
    
Посты: 267
Откуда: Киев
Возраст: 30
19-11-2010 01:15 GMT3 час. #1385569   
звук не проигрывается


-=NSM=-
Alex-San
    
Посты: 1015
Откуда:
Возраст: 51
19-11-2010 10:03 GMT3 час. #1385610   

# batment :
звук не проигрывается


Эт у тя со статьи эрлика? Я тож её нашёл когда звук сьедания искал) Но ещё не пробовал.

ЗЫ. Кстати ты с анимацией доразабрался? А то я завис там(


Vich2010
    
Посты: 46
Откуда:
Возраст: 47
19-11-2010 10:06 GMT3 час. #1385611   
Artos Привет.Подскажи в каких файлах прописана одна(любая) люкация из ТЧ.Хочу в свой мод вставить.


Большая Земля - это часть Зоны Отчуждения и наоборот.
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
19-11-2010 10:48 GMT3 час. #1385624   
Alex-San
Это не моя статья - а код из сборки Struck'a BSF assemblage. Использованный там вариант отслеживания использования предмета(хотя и является рабочим при условии его применения с умомом - его автор singapur22) - тем не менее слегка устарел. Более простой пример я приводил на последней странице прошлого темы.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Zhekcon
    
Посты: 127
Откуда:
Возраст: 39
19-11-2010 11:07 GMT3 час. #1385628   
Подскажите пожалуйсто. Что неправельно в этих строках?
Перекрестие прицела заменено на курсор(который у бинокля).
if device().fov<67 then
if string.find(db.actor:active_item():section(),"wpn_") and get_hud():GetCustomStatic("old_cursor") then
get_hud():RemoveCustomStatic("old_cursor")
end
else
if not get_hud():GetCustomStatic("old_cursor") then get_hud():AddCustomStatic("old_cursor") end
end
Игра вылетает при смерти ГГ и ссылается на эту строку:
if string.find(db.actor:active_item():section(),"wpn_") and get_hud():GetCustomStatic("old_cursor") then
Зарание спасибо.


erlik большое спасибо, помогло.

отредактировал(а) Zhekcon: 19-11-2010 13:00 GMT3 час.

Si vis pacem, para bellum - Хочешь мира, готовся к войне.
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
19-11-2010 12:30 GMT3 час. #1385648   
Zhekcon
Попробуй добавить проверку на наличие в игре живого эктора:-)
if db.actor and db.actor:alive() and device().fov<67 then


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
SkyLoader
    
Посты: 755
Откуда: Москва
Возраст:
19-11-2010 13:14 GMT3 час. #1385652   
erlik, возвращаясь к чьему-то вопросу про изменение имени ГГ. Можно же воспользоваться твоей статьей про переименовывание файлов. Сделать 2 файла: с оригинальным именем и измененным. После диалога их подменить.


Хм... ясно. Ну в диалогах можно не использовать имя Меченого - убрать.

отредактировал(а) SkyLoader: 19-11-2010 14:08 GMT3 час.

Хочешь работать нормально, работай один!
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
19-11-2010 13:48 GMT3 час. #1385658   
SkyLoader
Ну во первых файлов, где используется имя Меченого - вагон и маленькая тележка (одних только диалогов, где упоминается в тексте имя Меченый несколько десятков - как ты представляешь их перезапись\подмену - делать копии каждого файла?), а во вторых подмена - я об этом писал - ничего не дает, конфигурационые параметры (да и диалоги наверно тоже - впрочем не проверял) во время игры считываются не из самих файлов, а из памяти куда они загружаются туда при старте новой игры. После перезагрузки игры с сейва идет обращение не к конфигурационным файлам, а к данным записанным в сейвы с их последующей загрузкой в память.
Простая проверка чтением во время игры параметров через методы класса ini_file() показал, что чтение идет вовсе не из самого текстового файла - в папке у меня лежал подменный файл с новыми параметрами, результат же его якобы чтения выдал значение дефолтного параметра. И для предмета по прежнему использовались настройки из дефолтного файла.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Dima 0020
    
Посты: 208
Откуда: Забайкальский край
Возраст: 29
19-11-2010 16:26 GMT3 час. #1385745   
Ребята помогите!
Мне нужны коды для Исполнителя желании, для одного дела, кто знает, напишите,


Спасибо заранее!


To each his own
новиков сергей
    
Посты: 413
Откуда: Москва
Возраст:
19-11-2010 16:53 GMT3 час. #1385757   
Dima 0020 кодов на сталкер не существует.


создание NPC через All.spawn почти с нуля у меня в журнале
Так же известен, как Stunder
batment
    
Посты: 267
Откуда: Киев
Возраст: 30
19-11-2010 17:50 GMT3 час. #1385776   

и имя_файла.drop_med(obj) -- в каллбек на дроп


имеется ввиду в function actor_binder:on_item_drop (obj)
?


-=NSM=-
RENTGEN_4444
    
Посты: 48
Откуда:
Возраст:
19-11-2010 17:51 GMT3 час. #1385777   
А можно как-нибудь изменять конфиги(и желательно на время)игры через скрипт?Например когда актор пьет таблетку,он начинает быстро бегать и высоко прыгать.


Gun12
    
Посты: 773
Откуда: СССР
Возраст: 52
19-11-2010 18:11 GMT3 час. #1385786   
RENTGEN_4444
Ответ на твой вопрос находится на этой странице (ещё "горячее" - в посте Erlik-а).
Совсем обленились!


Не стань номинантом премии Дарвина.
новиков сергей
    
Посты: 413
Откуда: Москва
Возраст:
19-11-2010 18:44 GMT3 час. #1385806   
batment написано же, имя файла. Логично, наверное, что это имя файла, в котором лежит скрипт?


создание NPC через All.spawn почти с нуля у меня в журнале
Так же известен, как Stunder
RENTGEN_4444
    
Посты: 48
Откуда:
Возраст:
19-11-2010 18:47 GMT3 час. #1385809   
Если бы я увидел в посте erlik'a то что мне нужно,я бы не задал такой вопрос.Мне бы поточнее объяснить.


Gun12
    
Посты: 773
Откуда: СССР
Возраст: 52
19-11-2010 18:57 GMT3 час. #1385812   

# erlik :...конфигурационые параметры...во время игры считываются не из самих файлов, а из памяти куда они загружаются туда при старте новой игры. После перезагрузки игры с сейва идет обращение не к конфигурационным файлам, а к данным записанным в сейвы с их последующей загрузкой в память.


Что тут не понятного?
На всякий случай скажу - НЕТ, НЕЛЬЗЯ.
Хотя в принципе-то можно, но для этого нужно переписать память.
Того, кто это сможет сделать не знаю.
Лично я занимаюсь Luа. Это высокоуровневый язык программирования.
Для реализации того, о чем я сказал необходимо знать ассемблер как минимум.


Не стань номинантом премии Дарвина.
batment
    
Посты: 267
Откуда: Киев
Возраст: 30
19-11-2010 19:07 GMT3 час. #1385819   
новиков сергей
я спрашиваю где эта строчка должна быть в bind_stalker'e


-=NSM=-
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
19-11-2010 19:08 GMT3 час. #1385821   
RENTGEN_4444

А можно как-нибудь изменять конфиги(и желательно на время)игры через скрипт?

Смотря какие. Если параметр пишется в нет пакет объекта - тогда можно попробовать, если знать как с ним работать. Считать\перазаписать\перевести объект в онлайн\оффлайн.
Или если есть специальные методы для изменения значения конкретного параметра.
Например динамически изменить скорость течения времени в игре(параметр из файла alife) -можно.
Высоту прыжка ГГ\скорость передвижения - практически нет. Вариантов реализации не существует.

batment
Да. В on_item_drop (obj).


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
batment
    
Посты: 267
Откуда: Киев
Возраст: 30
19-11-2010 19:51 GMT3 час. #1385850   
а теперь вообще вылетает с логом мол
LUA error: ...s\s.t.a.l.k.e.r\gamedata\scripts\bind_stalker.script:217: attempt to index global 'xr_havka_sound' (a nil value)

хотя раньше этого не было


-=NSM=-
Дмитрий-Ган
    
Посты:
Откуда:
Возраст:
19-11-2010 20:35 GMT3 час. #1385871   
Люди сори может не в тему, но вопрос небольшой! есть ли какая-нибудь модификация которая добавляет ТОЛЬКО спальный мешок без других нововведений? желательно на версию 1.0004rus


новиков сергей
    
Посты: 413
Откуда: Москва
Возраст:
19-11-2010 22:08 GMT3 час. #1385918   
Дмитрий-Ган Так сложно в поисковик вставить название?
Первая же ссылка в яндексе: http://stalker.filefront.com/file/ABC_Sleeping_Bag_Mod;82029


создание NPC через All.spawn почти с нуля у меня в журнале
Так же известен, как Stunder


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


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

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