Скрипты |
Здравствуйте, гость ( Авторизация | Регистрация )
Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов
Скрипты |
13.07.2009, 11:34
Сообщение
#101
|
|
Навий черны у ношьти Репутация: 377 Группа: Забанен Сообщений: 2210 Регистрация: 11.03.2009 |
FAQ Lua в X-Ray Список всех функций, переменных, классов и т.п. что используются в Сталкере находится по адресу: Код gamedata/scripts/lua_help.script Для получения файла надо распаковать игру. Можно скачать, в принципе Тут =>> Уроки Сообщение отредактировал RayTwitty - 09.06.2018, 20:23 -------------------- нарушение правил п. 7.2
|
 
|
|
|
|
02.12.2009, 00:08
Сообщение
#102
|
|
Ветеран Репутация: 13 Группа: Участник Сообщений: 94 Регистрация: 22.06.2009 |
Никто незнает
|
 
|
|
02.12.2009, 00:14
Сообщение
#103
|
|
Loading... Репутация: 1644 Группа: Участник Сообщений: 5049 Награды: 5 Регистрация: 20.02.2009 |
|
 
|
|
02.12.2009, 00:35
Сообщение
#104
|
|
Навий черны у ношьти Репутация: 377 Группа: Забанен Сообщений: 2210 Регистрация: 11.03.2009 |
Shadow., Даже не пробовал... попробуй) Проблема в том, что не все далеко переменные глобальные инициализируются в мп-режиме. Следовательно, не все методы будут работать. Спавн через alife():create() вряд ли будет работать по понятным причинам
-------------------- нарушение правил п. 7.2
|
 
|
|
02.12.2009, 01:17
Сообщение
#105
|
|
Ветеран Репутация: 13 Группа: Участник Сообщений: 94 Регистрация: 22.06.2009 |
|
 
|
|
02.12.2009, 15:03
Сообщение
#106
|
|
Loading... Репутация: 1644 Группа: Участник Сообщений: 5049 Награды: 5 Регистрация: 20.02.2009 |
Shadow., Даже не пробовал... попробуй) Проблема в том, что не все далеко переменные глобальные инициализируются в мп-режиме. Следовательно, не все методы будут работать. Спавн через alife():create() вряд ли будет работать по понятным причинам Верно,не работает. Скрипт спавна в принципе делал давно,как раз через alife():create(), в сингле работает исправно,а вот в мультиплеере вылет с уж не помню каким логом. А сделать как-то иначе возможно? |
 
|
|
02.12.2009, 15:14
Сообщение
#107
|
|
Навий черны у ношьти Репутация: 377 Группа: Забанен Сообщений: 2210 Регистрация: 11.03.2009 |
Shadow., Угу. Дизассемблер и учебник по языку асмы в руки. Поделишься результатами
-------------------- нарушение правил п. 7.2
|
 
|
|
05.12.2009, 17:14
Сообщение
#108
|
|
Игроман Репутация: 386 Группа: Участник Сообщений: 847 Награды: 7 Регистрация: 22.07.2009 |
Всем привет. Подскажите пожалуйста, как создать спейс рестриктор через скрипт, и чтобы он использовал логику из .лтх файла. Заранее спасибо
|
 
|
|
05.12.2009, 18:06
Сообщение
#109
|
|
Игровой Эксперт Репутация: 505 Группа: Участник Сообщений: 2412 Награды: 2 Регистрация: 03.08.2009 |
Scarabay, вот статья со сталкер-портала:
Тыц Первое обновление. Теперь можно выбирать, какой формы будет рестриктор, Шар или Куб. Для Куба устанавливаются размеры по x,y,z. Второе обновление. Теперь, в качестве кастом даты, можно указывать ltx файлы, из папки config. Путь указывается таким образом: local ltx = "scripts\имя_файла.ltx" Итак. Создаём файл _new_create.script, если такового ещё нет, и добавляем в него нашу функцию: function create_restr(storid, pos_restr, lvid_restr, gvid_restr, custom_restr, radius_restr, ax_x, ax_y, ax_z) local obj = alife():create("space_restrictor", pos_restr, lvid_restr, gvid_restr) local packet = net_packet() obj:STATE_Write(packet) ----------------------- load ------------------------------ local game_vertex_id = packet:r_u16() local cse_alife_object__unk1_f32 = packet:r_float() local cse_alife_object__unk2_u32 = packet:r_u32() local level_vertex_id = packet:r_u32() local object_flags = packet:r_u32() local custom_data = packet:r_stringZ() local story_id = packet:r_u32() local spawn_story_id = packet:r_u32() local shape_count = packet:r_u8() for i=1,shape_count do local shape_type = packet:r_u8() if shape_type == 0 then local center = packet:r_vec3() local radius = packet:r_float() else local axis_x = packet:r_vec3() local axis_y = packet:r_vec3() local axis_z = packet:r_vec3() local offset = packet:r_vec3() end end local restrictor_type = packet:r_u8() -------------------------- save ----------------------------- packet:w_begin(game_vertex_id) packet:w_float(cse_alife_object__unk1_f32) packet:w_u32(cse_alife_object__unk2_u32) packet:w_u32(level_vertex_id) packet:w_u32( bit_not(193) ) if custom_restr ~= nil then if string.find (custom_restr, '.ltx') ~= nil then custom_restr = '[logic]\n cfg = '..custom_restr..'\n' end packet:w_stringZ(custom_restr) else packet:w_stringZ(custom_data) end if storid ~= nil then packet:w_u32(storid) else packet:w_u32(story_id) end packet:w_u32(spawn_story_id) packet:w_u8(1) if radius_restr ~= nil then packet:w_u8(0) packet:w_vec3(vector():set(0, 0, 0)) packet:w_float(radius_restr) elseif radius_restr == nil and ax_x == nil then packet:w_u8(0) packet:w_vec3(vector():set(0, 0, 0)) packet:w_float(2.5) else packet:w_u8(1) packet:w_vec3(vector():set(ax_x, 0, 0)) packet:w_vec3(vector():set(0, ax_y, 0)) packet:w_vec3(vector():set(0, 0, ax_z)) packet:w_vec3(vector():set(0, 0, 0)) end packet:w_u8(restrictor_type) ----------------------------------------------------- packet:r_seek(0) obj:STATE_Read(packet, packet:w_tell()) end Вызов спавна будет производиться из других функций, других файлов, таким образом: для формы Шар: _new_create.create_restr(sid, pos, lv, gv, ltx, radius) для Формы Куб: _new_create.create_restr(sid, pos, lv, gv, ltx, nil, x, y, z) Где: sid --стори айди рестриктора (или nil, если не используется) pos --позиция спавна рестриктора vector():set(x,y,z) lv --левел вертекс позиции спавна gv --гейм вертекс позиции спавна ltx --кастом дата рестриктора radius --радиус зоны рестриктора (в метрах) (или nil, если используется форма куба) x,y,z --размеры куба, по x,y,z соответственно. Теперь разберём такие настройки как, ltx и sid. --------------------------------- ltx Кастом дата рестриктора. Тобишь, логика по которой будет работать данный рестриктор. Чтобы указать логику из статитеского файла ltx, находящегося в папке config, нужно прописать так: local ltx = "scripts\\имя_файла.ltx" или local ltx = "misc\\имя_файла.ltx" или local ltx = "имя_файла.ltx" В зависимости от того, где лежит требуемый файл, относительно папки config. Если нас статический ltx не устраивает. То можно прописать логику динамически. Тобишь, в той же функции, от куда и будет вызываться спавн рестриктора. Итак, пред вызовом спавна создаём локальную переменную ltx, и в значении данной переменной прописываем всю логику нашего рестриктора. Например, установим эффект активации слота "ножь", при входе ГГ в рестриктор: local ltx = "[logic]\n".. "active = sr_idle@in\n".. "[sr_idle@in]\n".. "on_actor_inside = %=activate_knife% sr_idle@out\n".. "[sr_idle@out]\n".. "on_actor_outside = sr_idle@in\n" Разберём особенности динамического ltx: \n -прописать в новой строке, динамического файла ltx. .. -привязать следующую строку к общей схеме динамического ltx. Каждая строка, обязательно заключается в кавычки, кроме двоеточия. В последней строке, двоеточие запрещается ставить категорически. Если логика рестриктора, не предусмотрена, то вместо неё ставить nil. ------------------------------------------------------- sid Стори айди рестриктора. Используется при отслеживании попадания неписей под рестриктор. Если не используется, то ставить значение nil. ------------------------------------------------------- Есть возможность использовать значения по умолчанию: _new_create.create_restr(sid, pos, lv, gv, ltx) или _new_create.create_restr(sid, pos, lv, gv) если custom_data не предусматривается. По умолчанию рестриктор имеет форму Шара, с радиусом 2.5 метра. Всё. Пробуйте. У меня работает отлично. -------------------- Да?
|
 
|
|
16.12.2009, 20:36
Сообщение
#110
|
|
Игровой Бог Репутация: 1690 Группа: Участник Сообщений: 7021 Награды: 11 Регистрация: 22.02.2006 |
Скрипт спавна в принципе делал давно,как раз через alife():create(), в сингле работает исправно,а вот в мультиплеере вылет с уж не помню каким логом. А сделать как-то иначе возможно? Shadow., скрипты в мультиплеере - штука не простая. Вещи типа "alife():create()" там не должны работать в принципе. У меня точно срабатывали совсем примитивные скрипты на выполнение консольной команды (причем только на невыделенном сервере). Сам скрипт запускался через level.ltx конкретного уровня, туда добавлял: [level_scripts] script=ыыыы где ыыыы - этоо файл gamedata\scripts\ыыыы.script. Вроде еще можно грузить через gamedata\config\script.ltx - там есть отдельные секции для каждого mp-режима. ЗЫ: возник ряд вопросов по скриптам: 1. Можно ли скриптом разрешить трупу/с трупа жрать аптечку или еду? Чтобы на 6 патче не вылетало. 2. В 7 mp-патче значительно ускорен курсор в менюшках - очень резво реагирует на движение мышки, удобней вобщем. В его xrgame.dll добавлена такая фишка: CUICursor::UpdateCursorPosition. В 4 и 6 патче такого нет. Можно ли скриптом добавить "акселерацию" мышки в менюшках? 3. Нужен скрипт для переключения оружия из одного слота без захода в инвентарь: то есть, допустим, у нас в руках автомат и в рюкзаке автомат. Нажимаем на 3, и оружие меняется. |
 
|
|
16.12.2009, 21:01
Сообщение
#111
|
|
Loading... Репутация: 1644 Группа: Участник Сообщений: 5049 Награды: 5 Регистрация: 20.02.2009 |
Цитата Сам скрипт запускался через level.ltx конкретного уровня, туда добавлял: [level_scripts] script=ыыыы Я всё делал через скрипт главного меню,мне так проще,на основе вызова Spawnmenu,что по кнопке S(закомменчено в финалке).Фактически,только добавить нужные функции и всё,ну на крайняк тупо вызов функции из другого скрипта,чтобы поопрятнее выглядело. |
 
|
|
20.12.2009, 12:14
Сообщение
#112
|
|
Опытный Геймер Репутация: 53 Группа: Забанен Сообщений: 180 Регистрация: 15.11.2009 |
...продолжаю работу одного человека по воссоздания крысы, как полноценно играбельного монстра, с модельками и анимацией всё в порядке, но:
вылеты 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: ...lker_soc\datas\gamedata\scripts\smart_terrain.script:1137: attempt to call method 'smart_terrain_id' (a nil value) if нпс залезет в аномалию\его прибъёт другой монстр 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: ...alker_soc\datas\gamedata\scripts\xr_statistic.script:105: attempt to concatenate local 'community' (a nil value) if гг убъёт нпс Сообщение отредактировал whoami - 20.12.2009, 12:17 -------------------- who_am_i
>10% >44% >76% >99% >error |
 
|
|
25.12.2009, 19:08
Сообщение
#113
|
|
Репутация: 2 Группа: Только зарегистрировался Сообщений: 1 Регистрация: 25.12.2009 |
...продолжаю работу одного человека по воссоздания крысы, как полноценно играбельного монстра, с модельками и анимацией всё в порядке, но: вылеты 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: ...lker_soc\datas\gamedata\scripts\smart_terrain.script:1137: attempt to call method 'smart_terrain_id' (a nil value) if нпс залезет в аномалию\его прибъёт другой монстр 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: ...alker_soc\datas\gamedata\scripts\xr_statistic.script:105: attempt to concatenate local 'community' (a nil value) if гг убъёт нпс Я в этом не очень разбрираюсь, но ответить попробую: 1)Либо ты используешь метод класса, который не поддерживает этот метод, либо сам метод не существует. 2)Возможно, ты не правильно используешь concat. Помимо чисел и строк что-нибудь пытаешься соединить? Сейчас буду проверять из-за чего выскакивает. Кидай сюда обе ф-ии, разберёмся. Сообщение отредактировал Darien - 25.12.2009, 19:21 |
 
|
|
03.01.2010, 11:53
Сообщение
#114
|
|
Опытный Геймер Репутация: 53 Группа: Забанен Сообщений: 180 Регистрация: 15.11.2009 |
спасибо за ответ...
Цитата 1)Либо ты используешь метод класса, который не поддерживает этот метод, либо сам метод не существует. вообщето да, секция конфига крысы базирована на конфиге тушкана ([m_rat_e]:m_tushkano_e), но класс крысячий Цитата 2)Возможно, ты не правильно используешь concat. эээм... скрипты вообщето я не трогал -------------------- who_am_i
>10% >44% >76% >99% >error |
 
|
|
03.01.2010, 11:55
Сообщение
#115
|
|
Игрок Репутация: 7 Группа: Забанен Сообщений: 44 Регистрация: 05.11.2009 |
люди тут вопрос у меня возник
|
 
|
|
14.01.2010, 21:58
Сообщение
#116
|
|
Опытный Геймер Репутация: 53 Группа: Забанен Сообщений: 180 Регистрация: 15.11.2009 |
Код [i]У объекта сталкера можно вызвать скриптовые функции flags32 get_actor_relation_flags() set_actor_relation_flags(flags32) Значение для флагов в namespace game_object: relation_attack relation_fight_help_monster relation_fight_help_human relation_kill Т.е. предполагается работь следующим образом: Смотрим, когда есть такая возможность и актер рядом, что флажки не пустые. В соответствии с поднятым флагом выполняем какое-то действие (устанавливаем диалог, играем звук/анимацию), а потом сбрасываем флаг.[/i] честно сказать не очень шарю в скриптинге... это работает? -------------------- who_am_i
>10% >44% >76% >99% >error |
 
|
|
10.02.2010, 23:27
Сообщение
#117
|
|
Ветеран Репутация: 7 Группа: Участник Сообщений: 78 Награды: 2 Регистрация: 19.09.2008 |
ЗЫ: возник ряд вопросов по скриптам: Я в любом случае не отвечу, н омне просто интересно, что значит эта фраза .1. Можно ли скриптом разрешить трупу/с трупа жрать аптечку или еду? Чтобы на 6 патче не вылетало. Цитата 3. Нужен скрипт для переключения оружия из одного слота без захода в инвентарь: то есть, допустим, у нас в руках автомат и в рюкзаке автомат. Нажимаем на 3, и оружие меняется. +1 - тоже интересует этот вопрос. Макрон, ты случаем не над мп-модом трудишься? Напоследок, вопрос ко всем: можноли в мп скриптом лечить актора при наличии у него в инвентаре аптечки? Я давным-давно пробовал переделать сингловый скрипт, но ничего не вышло.... -------------------- |
 
|
|
10.04.2010, 21:23
Сообщение
#118
|
|
Почти Игрок Репутация: 4 Группа: Участник Сообщений: 22 Регистрация: 16.07.2009 |
Люди, а что такое нетпакет? И зачем он нужен?
|
 
|
|
16.04.2010, 14:59
Сообщение
#119
|
|
Игрок Репутация: 12 Группа: Участник Сообщений: 37 Награды: 2 Регистрация: 01.10.2009 |
Как спавнить через Net Packet?
-------------------- Плюсани за помощь и я помогу тебе ещё раз - плюсом с моей стороны.
Rekongstor = Rek0 Меня в поисковике найти легко по полному нику (Rekongstor)! Я там был, есть и буду! |
 
|
|
24.07.2010, 22:19
Сообщение
#120
|
|
Игроман Репутация: 386 Группа: Участник Сообщений: 847 Награды: 7 Регистрация: 22.07.2009 |
Всем привет. Может кто поделится функцией определения визуала нпс? Или хотя бы расскажите как считать необходимые данные из нет-пакета? Заранее спасибо.
|
 
|
|
29.09.2010, 07:25
Сообщение
#121
|
|
Опытный Игрок Репутация: 12 Группа: Участник Сообщений: 53 Награды: 1 Регистрация: 19.05.2010 |
Подскажите пожалуста функцию спавна вертольота через скрипт. Желательно подробно что и куда нада писать
|
 
|
|
Текстовая версия | Сейчас: 26.04.2024, 01:09 |