Перейти к контенту

[SoC] Ковыряемся в файлах


Рекомендуемые сообщения

alex210192, только скриптом. И то это будет только имитация слота. Слоты и управление ими - все в движке.

НЛС-6: У каждого своя зона

_______________________________________________________________

Не ищи легких путей и не возвращайся той же дорогой

@Vergas

 

Ну да, насчёт имитации ты конечно прав.Но если назначить шлемам максимально 2х2 клеток а костюмам минимально 3х2?Тогда может и не глупо будет выглядеть или?

Вот вопрос:распаковывал всегда ACDCом all.spawn,но вот недавно сменил винду и перестало распаковыватся,все запускается но стоит на месте без изменений

Башка,Актив перл не забыл поставить?

гопыч, Нужно в папке саунд/диалог создать файл с id одинаковым с id диалога(или фразы) ну и кажется в саунд тем скрипт его прописать

Pihan13, Насколько я знаю -в свойсвах респавнера прописываются условия(респавн по рестрикту например,поставь такой в месте которое ГГ точно не пройдет например там где появляешься на локе и респавн будет каждый раз при заходе).Но это про те респавнеры которые в аллспавне,а скриптовые не знаю тем более в АМК они кажется особенные)Еще есть респавн гулагов

Изменено пользователем gruber

Ребята, помогайте.

Слздал на новой локации респавнер для монстров. Вопрос: нужно ли куда нибудь его прописывать, чтобы он САМ срабатывал время от времени?

З.Ы. принудительный вызов респавнера функцией срабатывает нормально.

А что делает эта функция (по-детальней):

 

-- переключает камеру на монстра или на актёра
function alien_control( actor, npc, p )
printf( "alien_control(%s)", p[1] )
npc:set_alien_control( p[1] == "true" )
end

 

И при обращении к этой функции, что надо писать в аргумент P (что в таблицу пихать?)?

SkyLoader

Да не работает она стопроцентно. И не нужно никакой таблицы - аргумент true передай и узнаешь.

Подскажите, кто знает. Что может вызывать такой вылет:

Expression    : assertion failed
Function      : CSE_Abstract::Spawn_Read
File          : E:\stalker\patch_1_0004\xr_3da\xrGame\xrServer_Object_Base.cpp
Line          : 236
Description   : M_SPAWN==dummy16

Вопрос в "Ошибках", но я помочь не могу. Проверил, с данным мне сейвом на свежеустановленном чистом АМК такой вот вылет.

Изменено пользователем kokkai

gruber, спасибо с диалогами разобрался.

Еще вопрос: как сделать чтобы НПС говорили ГГ при приходе и уходе оного (Как Сидорович при приветствии говорит здорово Меченный а когда ГГ уходит говорит Удачной охоты сталкер) Звуки из ЧН перегнал но не знаю куда что вставлять. Подскажите пожалуйста.

гопыч, это вообщето азы логики -как у Сидора кстати не получится у него логика монстра.В соседней теме логика НПС предпоследний пост как раз пример такой логики как ты спрашиваешь и если хочешь как у кого то(у Сидора или кого еще)-логичней посмотреть как в игре сделано

kokkai,

Подскажите, кто знает. Что может вызывать такой вылет:

Function      : CSE_Abstract::Spawn_Read
Description   : M_SPAWN==dummy16

Странно, даже не знаю, как такую ошибку можно скриптом вызвать. Суть этой проверки в том, что первое значение нетпакета для CSE_Abstract всегда должно быть 1. Но до этой части нетпакета скриптами не добраться никак. Соответственно и испортить там не получиться. Разве что можно грешить на фатально битый сейв.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

malandrinus, любопытно другое. Если погуглить на M_SPAWN==dummy16, то видно, что такой лог уже встречался, но только в связи с ошибками модостроения.

Я недавно нашел такую инфу, может кто хочет сыграть с вырезанным монстром - зомби-блевуном (Ставим на апдейт монстера):

    if self.object:section()=="zombie_beee" and time_global()>(self.charge_time or 0)+5000 and 3>(self.charges_done or 0) and not is_fake and self.object.health>0.1 then
        local target = self.object:get_enemy() or db.actor
        local dist = target:position():distance_to(self.object:position())
        if dist < 10 and self.object:see(target) then
            local dir=self.object:direction()
            local delta=vector():set(self.object:position()):sub(target:position())
            local scalarmul=(delta.x*dir.x+delta.z*dir.z)/math.sqrt(delta.x*delta.x+delta.z*delta.z) 
            if scalarmul < -0.8 then
                bind_monster.play_particle(self.object,
                {
                    obj=self.object,
                    particle="amk\\zomb_beee",
                    pos=self.object:bone_position("bip01_head"),
                    dir=amk.sub(target:bone_position("bip01_head"),self.object:bone_position("bip01_head")),
                    gravity=vector():set(0,-0.01,0),
                    len=10,
                    life_time=2000,
                    give_dmg=true,
                    target=target,
                    sound="monsters\\zombie\\zombie_take_damage_3"
                })
                self.charge_time=time_global()
                self.charges_done=(self.charges_done or 0) + 1
            end
        end
    end

 

-------------------

Garry_Galler, malandrinus, ясно, спс

Изменено пользователем SkyLoader

SkyLoader,

npc:set_alien_control( ... )

Эта функция переключает камеру на "смотреть глазами монстра". Применима только к кровососам. Кроме камеры ещё и проигрывается специальный постэффект. Оригинальное назначение функции в игре мне неведомо.

 

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Real Wolf

Встречный вопрос - а таблицу сохранял? В методах save\load биндера эктора или в любом другом биндере.

function init_dlg(dlg)
    dlg:AddPhrase("Привет, как дела?", "0", "", -10000)
    dlg:AddPhrase("Нормально, у тебя?", "1", "0", -10000)
    dlg:AddPhrase("Тоже.", "2", "1", -10000)
end

 

Тут диалог идет как надо - по порядку, но иногда(типа рандомно) случается вот так:

ss092210205851l01escape.jpg

 

Uploaded with ImageShack.us

 

Чоё к чему не пойму, то в правильном порядке идет, то нет.Ни кто не знает, мож чоё не правильно сделано?

--------------------------------------------------------------------------------------------------------

XrAlexR

Почитай справочник по функциям и классам про диалоги.Там написано, для чего может пригодиться скриптовый диалог, и у меня как раз такой случай.

Изменено пользователем Stalk15

Stalk15, а зачем ты сам себе работу усложняешь? Не легче ли обычный диалог написать черех xml, а если надо будет какой скрипт вызвать просто акшеном воспользуешься?

Всем привет!

У меня нарисовалась проблема... или глюк!?

В общем получаю вот такой вылет:

 

[error]Expression : fatal error

[error]Function : CScriptEngine::lua_error

[error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp

[error]Line : 73

[error]Description : <no expression>

[error]Arguments : LUA error: ...s\s.t.a.l.k.e.r\gamedata\scripts\bind_stalker.script:63: attempt to index global 'anonym' (a nil value)

 

 

Думал что файла нет, но он есть и называется anonym.script. Перепроверил, запустил еще раз - то же самое.

Вот, что я хотел от файла bind_stalker.script:

 

function actor_binder:net_spawn(data)
        ...
        anonym.spawn_af()

    return true
end

Добавил в самый конец функции.

 

 

И сам файл anonym.script:

-- Функция для спавна набора объектов (автор Erlik)
-- Для вызова необходимо указать нужные данные
-- Ех.
--function uny_spawn_1()
--local tab_items ={{[amount]="section_name"},{[amount]="saction_name"}, ...}
--local tab_where = {x=-249.495,y=-18.495,z=-107.105, lv=10784,gv=8} /// "actor"    - если актору
--this.uni_spawn_new(tab_items,tab_where)
--end
local count = 0 
function spawn_set_objects(tab_items,tab_where)
    for k, v in pairs(tab_items) do
        if type(tab_where)=='table' then
            for k, v in pairs (tab_items[k]) do 
                count = k
                for i=1, count do
                    alife():create(v,vector():set(tab_where['x'],
                    tab_where['y'],tab_where['z']),
                    tab_where['lv'],tab_where['gv'])
                end
            end
        elseif type(tab_where)=='string' then 
            for k, v in pairs (tab_items[k]) do 
                count = k
                for i=1, count do
                    alife():create(v, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
                end
            end
        elseif type(tab_where)=='number' then 
            local obj = level_object_by_sid(tab_where)
            for k, v in pairs (tab_items[k]) do 
                count = k
                for i=1, count do
                    alife():create(v, obj:position(), obj:level_vertex_id(), obj:game_vertex_id(), obj:id())
                end
            end
        end
    end
end

function spawn_af()
    local tab_items ={{[1]="af_medusa"},
                      {[1]="af_cristal_flower"},
                      {[1]="af_night_star"},
                      {[1]="af_vyvert"},
                      {[1]="af_gravi"},
                      {[1]="af_gold_fish"},
                      {[1]="af_drops"},
                      {[1]="af_fireball"},
                      {[1]="af_cristall"},
                      {[1]="af_blood"},
                      {[1]="af_mincer_meat"},
                      {[1]="af_soul"},
                      {[1]="af_electra_sparkler"},
                      {[1]="af_electra_flash"},
                      {[1]="af_electra_moonlight"},
                      {[1]="af_ameba_slime"},
                      {[1]="af_ameba_slug"},
                      {[1]="af_ameba_mica"},
                      {[1]="af_dummy_spring"},
                      {[1]="af_dummy_dummy"},
                      {[1]="af_dummy_battery"},
                      {[1]="af_dummy_pellicle"},
                      {[1]="af_dummy_glassbeads"},
                      {[1]="af_rusty_thorn"},
                      {[1]="af_rusty_kristall"},
                      {[1]="af_rusty_sea_urchin"},
                      {[1]="af_fuzz_kolobok"}}
    local tab_where = "actor"
    spawn_set_objects(tab_items,tab_where)
end

 

 

Подумал и решил проверить существование файла, вот так:

 

function actor_binder:net_spawn(data)
        ...
        if (anonym)
            anonym.spawn_af()
        end

    return true
end

 

 

Запустилось! Но вот только эффекта - ноль! Не видит файл что ли?

 

Помогите пожалуйста!

Народ, а есть метод ли стрельбы из оружия? Может это используется как юзание предмета? В луа хелпе не нашел ничего.

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...