Скриптование - Страница 21 - Скрипты / конфиги / движок - AMK Team
Перейти к контенту

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

Тема для обсуждения скриптов всего и всех в серии игр STALKER.


Задавая вопрос (!):
1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего;
2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме);
3. Изучите информацию которая может вам помочь:

 
 

Stalkerin. Там есть много хороших статей касательно данной темы.
Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения.

 

Справочное руководство по языку Lua 5.1
https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ru
Справочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены.

4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос;
5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе;
6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода;
7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины.
8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ.
9. И помните: «Правильно заданный вопрос – половина ответа».

 

Какие вопросы следует задавать, а какие нет...

 

Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу.

 

Вопросы которые будут удалятся, следовательно их задавать не нужно:
-- Где находится та или иная функция?
Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;
-- Как сделать что-то/то-то?
С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;
-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.
-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.
Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов?
В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос.

И последнее: очень рекомендовано к прочтению Правила форума
 


  • Спасибо 1
  • Полезно 2
Ссылка на комментарий
https://www.amk-team.ru/forum/topic/6185-skriptovanie/

Заспавнил сидора из чн в зп вроде всё паренес да проблема вышла:

Loading models...

* [prefetch] time: 7042 ms

* [prefetch] memory: 77944Kb

! Unable to find Software\GSC Game World\STALKER-COP\ in registry

! Player name registry key (InstallUserName) not found !

* phase time: 7366 ms

* phase cmem: 185073 K

* phase time: 12 ms

* phase cmem: 185073 K

* Creating new game...

* Loading spawn registry...

stack trace:

 

001B:7814514C MSVCR80.dll, memcpy()

001B:00584D3C xrCore.dll, NET_Packet::r()

001B:027B2C12 xrGame.dll, CDialogHolder::CDialogHolder()

вот такой вылет

Че не так? :russian_ru:

 

И ваще как через all.spawn в зове припяти спавнить персонажей уникальных? А то я чет не догнал немного... :russian_ru:

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

Вообщем, возможно ли, что бы скриптом высадить ГГ из машины?

Вот есть:

    function _construct(); - это что?
    function GetfHealth() const; - текущее значение здороья машины
    function CurrentVel(); - это что?
    function getVisible() const; - это что?
    function net_Spawn(cse_abstract*); - это что?
    function SetParam(number, vector); - это что?
    function net_Export(net_packet&); - это что?
    function Visual(); - это что?
    function IsObjectVisible(game_object*); - это что?
    function SetExplodeTime(number); - это что?
    function net_Import(net_packet&); - это что?
    function HasWeapon(); - это что?
    function SetfHealth(number); - установит значение здоровья машины
    function engaged(); - это что?
    function ExplodeTime(); - это что?(как применить)
    function FireDirDiff(); - это что?
    function CarExplode(); - это что?
    function CanHit(); - это что?
    function getEnabled() const; - это что?
    function Action(number, number); - это что?
    function use(CGameObject*); - это что?

Что же это всё?

 

И как применять?

Так?:

local car = level_object_by_sid(21005)
car.SetfHealth(1)

Или можно сделать, что бы машина не ехала? Скриптом. А так же скриптом, что бы потом ехала?

Кароче блокиратор движения.

Сколько не искал, всё не то.

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

TREWKO, по методу engaged() - используется ли машина кем-либо (true/false). Проверял исключительно на акторе, как сажать в машину непись - я не знаю. Как выгнать - соответственно тоже.

ольшинство других методов использованы в ph_car.script - единственной схеме поведения машины. Кое-что становится оттуда понятным, но пока слишком мало ясности, как все это использовать само по себе, без схемы.

По примеру со здоровьем машины - используется чуть сложнее. Все приведенные тобой методы - методы класса CCar. Ты же в качестве переменной car получаешь game_object. Чтобы получить из него CCar, у game_object усть метод get_car(). Т.е. в результате получим:

local car = level_object_by_sid(21005)
car:get_car():SetfHealth(1)

С блокиратором... Сложно. Проще всего такую штуку делать в логике, НО почему-то у меня проблемы вплоть до вылета при попытке второй раз включить какую-либо секцию (любую и после любой, все секции, с которыми проверял, заведомо рабочие). Может, это только у меня? Можно попробовать в строке usable поставить не true, а условие, может помочь. Хотя не знаю, что будет, если условие перестанет выполняться в то время, когда актор в машине. От вылета актора из машины до вылета игры на рабочий стол. На самый крайний случай - залезть в схему и предусмотреть блокировку там, но решение этой задачи пока что совсем не представляю.

 

Gektor, возмущается на кость bip01_spine2. Может, она в скелете есть, а в конфиге повреждений не прописана (что врядли, там много чего не прописано), либо эта кость как раз таки прописана, а в скелете ее нет, вот игру и клинит.

 

Привет!!!

Вряд ли мне кто ни будь поможет но так как за спрос не бьют...

Вчера взялся совместить два мода AI additions (Rulix aka Bak) и AI Modification by Monnoroch.

Совмещал одинаковые файлы xr_logic.script, modules.script, xr_motivator.script. Делал все аккуратно и правильно с помощью программы Araxis Merge. То есть добавлял недостающие строчки... Вылет.

При загрузке лог ошибки

Expression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line : 73
Description : <no expression>
Arguments : LUA error: ...\s.t.a.l.k.e.r\gamedata\scripts\smart_terrain.script:344: attempt to index 
global 'xr_logic' (a nil value)

smart_terrain.script

343. if gp.cond then
344. gp.cond = xr_logic.parse_condlist( nil, sect, "cond", gp.cond)
345. end

 

Кто знает в чем причина пишите, точнее как исправить вылет, заранее спасибо.

and_modern, вылет говорит что ошибка в синтаксисе в файле xr_logic.script, что бы совмещать скрипты нужно как минимум знать синтаксис lua...

пипл, как заспавнить вертушку, чтоб можно потом было логику ей прописать (как в моде ai вертолетов)

DeVaSTaTOR from R.Z.T., посмотри в вертолетном моде spawn.script, функцию heli - это и есть функция спавна. Будет работать даже без мода, она сделана на "базовых" компонентах. Комменты, какой параметр зачем, тоже имеются.

Наконец то смог заспавнить зомбаря! В зп. Но столкнулся с проблемой, тк я спавнил сквады(zat_zombie_squad и тп)то они появляються токо в определенных точках б28,а12 и тд. Кто знает где взять инфу по точкам например б28 это скадовск или соснодуб, а может внз круг? кто знает их полное описание??

Люди, помогите разобратся :russian_ru: - заспавнил непися на кордоне из перепакованного зп с локами чн методом спавна которым заспавнены все неписи в зп (через смарт сквадом из одного чела).

Но он сидит в одной точке и реагирует только на разговор. Как сделать так чтобы эта личность заспавнилась и ходил по локе куда проц его поведёт (на затоне же сквады бродят по локе)?

В смысле, ведь если прописать ему логику walker то он будет ходить по пути заданому в логике, так же? а мне надо чтобы он заспавнился и не привязывался к смарту в котором спавнился. И ишо одын вопрос - никто не пробовал сквад заспавнить через алл.спавн? Или так не получится? :russian_ru:

Товарищи!

Каким методом возможно привязать партикл-эффект к объекту?

Вот это:

function uberzetz()
    for a=10,65635,1 do
    local obj=alife():object(a)
        if obj and string.find(obj:name(),"marsh_clear_sky_1") then
particles_object("explosions\\campfire_05"):play_at_pos(obj:bone_position("bip01_head"))
        end
    end
end

Не работает, орёт на: uidivarexsoltions.script:53: attempt to call method 'bone_position' (a nil value)

 

И ещё, возможно ли заспавнить скриптом источник света и шейп?

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

TREWKO,

у тебя объект серверный, а пытаешься для него вызывать метод клиентского

Вобщем, делаю кнопку выключения света:

turn_lamp_off("level_prefix_lights_hanging_lamp")

function turn_lamp_off(id)
    local obj = level.object_by_id(id)
    if obj ~= nil then
        local hl = obj:get_hanging_lamp()
        if hl ~= nil then
            hl:turn_off()
        end
    end
end

Кнопка работает(из лаборатории x16), сделал поршень:

function FallowBinder()
if db.actor:has_info("marsh_way_lights_push") then 
turn_lamp_off("level_prefix_lights_hanging_lamp")
end
end

Подключил к биндеру актора(bind_stalker.script)

Захожу в игру, жму на кнопку, ноль эмоций)))

Я так понимаю он не может отследить лампочку на уровне?

Как правильно отследить его?

TREWKO

А что такое "level_prefix_lights_hanging_lamp", что ты передаешь в функцию в качестве id? Насколько я понимаю, в level.object_by_id(id) агрументом должно быть число, а не строка... Посмотри, как можно из этой строки выжать

нужный(нужные) id.

"level_prefix_lights_hanging_lamp", это name лампочки на уровне.

Тобишь ищу лампочку по name. А может по другому надо искать?

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

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

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

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

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

Войти

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

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

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