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

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

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

@WinCap Заработало:

Скрытый текст

Вместо:

function random_partn_monsters_item(obj)
    local sect = partn[math.random(table.getn(partn))]
    local name = system_ini():r_string(sect, "inv_name_short")
    local text = "%c[ui_white]"..game.translate_string("st_body_knife_parts").."\\n"..name
    alife():create(sect, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
    db.actor:give_game_news(text, "ui\\ui_coal_air_iconstotal", Frect():set(166,517,83,47), 0, 5000)
end

 

Сделал так:

function random_partn_monsters_item(obj)
    local sect = partn[math.random(table.getn(partn))]
    local name = game.translate_string(system_ini():r_string(sect, "inv_name_short"))
    local text = "%c[ui_white]"..game.translate_string("st_body_knife_parts").."\\n"..name
    alife():create(sect, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
    db.actor:give_game_news(text, "ui\\ui_coal_air_iconstotal", Frect():set(166,517,83,47), 0, 5000)
end

 

Результат: https://yadi.sk/i/0agThJHHTEN5Wg

 

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

@yurv3, устойчивое ощущение, что так оно не взлетит. Тут либо с нетпакетами баловаться, наподобие такого или такого (там дальше есть про нюансы и подводные камни) + соответствующие модули обработки нетпакетов. Либо переползать на что-то модернизированное в плане бинарей (в X-Ray Extensions, например, добавлен метод прямой записи sid'а - assign_story_id()).

p.s: нужен всё-таки story_id или id? Несколько разные вещи.

Изменено пользователем Купер

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

@yurv3 

Во первых, StoryID(sid) - свойство объекта "только для чтения", изменить его просто так не получится.

Во вторых, в примере кода явная белиберда - зачем объявлять переменную, а потом присваивать ей значение ID созданного объекта? Каким боком это относится к sid?

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

@AndreySol Я в скриптах полный ноль, использовал найденный на форумах.   Мне нужно не изменить а присвоить StoryID(sid) созданному через скрипт тайнику на Затоне.  Есть скрипты с присвоением sid НПС, монстрам или трупу. А вот к тайникам я такого не нашел.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, yurv3 сказал(а):

в присвоение сида запутался. 

Если у вас не модифицированный движок, и нужно присвоить SID уже после НИ " на лету" - вам действительно в нетпакеты. 

След от кругов на воде - это тоже след (с)

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если у вас не модифицированный движок, то даже через нетпакеты ничего не выйдет - ваши манипуляции с параметром сид в нетпакете, НЕ вносят этот предмет в реестр объектов имеющих story_id, в чем и заключается смысл функции assign_story_id.

Проще говоря, на не-модифицированном движке, нормально присвоить сид - нельзя. Так чтобы объект обнаруживался по alife():story_object(ваш_сид)

Можно это сделать на X-Ray Ext, или на OGSR. Там функции для присвоения сида штатно есть в движке, и все делается легко и просто. На оригинале никак, и никакие костыли тут не помогут.

 

Мод, где не бывает одинаковых путей - Судьба Зоны.

...что хотел сказать, большинству мододелов. Послушайте.

Любите орехи? А вот первая ступенька. Пути. Там еще вторая, третья, их много... я давно всем показывал но никто не видит. Все любят, шорох орехов.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
5 часов назад, Zander_driver сказал(а):

то даже через нетпакеты ничего не выйдет - ваши манипуляции с параметром сид в нетпакете, НЕ вносят этот предмет в реестр объектов имеющих story_id, в чем и заключается смысл функции assign_story_id.

В смысле? Именно через нетпакет я и присваивала стори_айди, когда было надо.
Через присвоение data.story_id  для непися значения из заранее записанного в game_story_ids.ltx. В  game_story_ids.ltx же можно ручками записать все, что нужно. 

А потом неписю, не имевшему sid-а, присвоить. 
Движок НЛС-ный, и никаких дополнительных ф-ций вида assign_story_id там конечно же не было...

След от кругов на воде - это тоже след (с)

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Через нет пакеты работает, но применится только после сейв-лоада. Например, при переходе на другую локацию. 

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

@dsh 

И как это будет выглядеть в игре? После спавна объекта, с присвоением через н\п sid, будете игроку типа сообщение выводить на экран, что мол сделай сэйв\лоад, так надо.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Okichi сказал(а):

В  game_story_ids.ltx же можно ручками записать все, что нужно. 

А потом неписю, не имевшему sid-а, присвоить. 

Ну если только так... Я бы не называл это полноценным присвоением, когда сид сам по себе УЖЕ присутствует в файлах при запуске игры. Потому и сказал, что так не работает.

Присвоение - это типа такого:

function set_story_id(sobj)
local sid = 1
while alife():story_object(sid) do sid = sid + 1 end
alife():assign_story_id(sid, sobj.id)
return sid
end -- Т.е. выполняется поиск свободного сид и его занятие, прямо при запуске функции.
--И затем сразу, а не после сейв-лоада, мы можем получать наш объект через 
alife():story_object(sid)

 

Мод, где не бывает одинаковых путей - Судьба Зоны.

...что хотел сказать, большинству мододелов. Послушайте.

Любите орехи? А вот первая ступенька. Пути. Там еще вторая, третья, их много... я давно всем показывал но никто не видит. Все любят, шорох орехов.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
19 минут назад, AndreySol сказал(а):

как это будет выглядеть в игре

Нормально это выглядит, когда нет других вариантов. Игрок все равно рано или поздно перейдет на другую локу и все применится. Обычно СИД назначают на "поюзать на будущее", а не "вот прям сразу присвоили и начали использовать". Для "сразу использовать" есть же много других способов.
У человека, как я поняла, не модифицированный движок, а сделать нужно. 

 

 

17 минут назад, Zander_driver сказал(а):

Присвоение - это типа такого:

Согласна, но на безрыбье каждый выкручивается так, как ему позволяют его ресурсы. КОнечно, оптимальнее использовать движковое, тут и спору нет.

След от кругов на воде - это тоже след (с)

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Так-с, что-то приехал. Не хватает "сала в черепе"(c).

Вводная: трансфер инвентаря ГГ в inventory_box, находящийся на другой локации. Други, ткните куда-нибудь носом на предмет реализации.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
8 минут назад, Купер сказал(а):

трансфер инвентаря ГГ в inventory_box, находящийся на другой локации

А в чем проблема?

При трансфере, указывается id адресата-нового владельца. Затем передаваемые итемы приобретают game_vertex_id & level_vertex_id, идентичные таковым у нового владельца. Это если смотреть на операцию "трансфер", с точки зрения движка. При трансферах там нужны именно id - что передаем, от кого передаем, кому передаем.

А вот если со стороны скриптов плясать... наверное, проблема начинается там, где в качестве аргументов/операторов, доступных скрипту функций, выступают игровые объекты (game_object), а не их id.

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

 

Ну или дедовский костыльный способ - тут удаляем, там спавним, перетаскивая если надо, нетпакеты.

Мод, где не бывает одинаковых путей - Судьба Зоны.

...что хотел сказать, большинству мододелов. Послушайте.

Любите орехи? А вот первая ступенька. Пути. Там еще вторая, третья, их много... я давно всем показывал но никто не видит. Все любят, шорох орехов.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

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

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

AMK-Team.ru

×
×
  • Создать...