Перейти в начало страницы

Здравствуйте, гость ( Авторизация | Регистрация )

Gameru.net останавливает работу в связи с вторжением армии РФ в Украину. Следите за дальнейшими анонсами.
Support Gameru!

> Помощь по разделу

Сайт 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

Для получения файла надо распаковать игру. Можно скачать, в принципе smile.gif Тут =>>Ссылко<<=
Уроки

Пример создания непися скриптами ЛУА. Автор: меченый(стрелок)
Скриптинг на инсайде



Сообщение отредактировал RayTwitty - 09.06.2018, 20:23


--------------------
нарушение правил п. 7.2
Перейти в начало страницы
 
15 страниц V  « < 4 5 6 7 8 > »   
Начать новую тему
Ответов
123456
сообщение 02.12.2009, 00:08
Сообщение #102


Ветеран
*****

Репутация:   13  
Группа: Участник
Сообщений: 94
Регистрация: 22.06.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Никто незнает unsure.gif
Перейти в начало страницы
 
shad0w
сообщение 02.12.2009, 00:14
Сообщение #103


Loading...
**********************

Репутация:   1644  
Группа: Участник
Сообщений: 5049
Награды: 5
Регистрация: 20.02.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(jocker_27 @ 06.10.2009, 13:56) *
Комрады, а можно (чисто теоретически) привязать alife к мультиплееру?

Цитата
jocker_27, Нет, невозможно.

Орион,соответственно,сделать в мультиплеере спавн предметов в инвентарь по нажатию кнопки в меню тоже никак?
Перейти в начало страницы
 
Орион
сообщение 02.12.2009, 00:35
Сообщение #104


Навий черны у ношьти
***************

Репутация:   377  
Группа: Забанен
Сообщений: 2210
Регистрация: 11.03.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Shadow., Даже не пробовал... попробуй) Проблема в том, что не все далеко переменные глобальные инициализируются в мп-режиме. Следовательно, не все методы будут работать. Спавн через alife():create() вряд ли будет работать по понятным причинам smile.gif


--------------------
нарушение правил п. 7.2
Перейти в начало страницы
 
123456
сообщение 02.12.2009, 01:17
Сообщение #105


Ветеран
*****

Репутация:   13  
Группа: Участник
Сообщений: 94
Регистрация: 22.06.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


z_cry.gif
Перейти в начало страницы
 
shad0w
сообщение 02.12.2009, 15:03
Сообщение #106


Loading...
**********************

Репутация:   1644  
Группа: Участник
Сообщений: 5049
Награды: 5
Регистрация: 20.02.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Орион @ 02.12.2009, 00:35) *
Shadow., Даже не пробовал... попробуй) Проблема в том, что не все далеко переменные глобальные инициализируются в мп-режиме. Следовательно, не все методы будут работать. Спавн через alife():create() вряд ли будет работать по понятным причинам smile.gif

Верно,не работает. smile.gif
Скрипт спавна в принципе делал давно,как раз через alife():create(), в сингле работает исправно,а вот в мультиплеере вылет с уж не помню каким логом.
А сделать как-то иначе возможно?
Перейти в начало страницы
 
Орион
сообщение 02.12.2009, 15:14
Сообщение #107


Навий черны у ношьти
***************

Репутация:   377  
Группа: Забанен
Сообщений: 2210
Регистрация: 11.03.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Shadow., Угу. Дизассемблер и учебник по языку асмы в руки. Поделишься результатами smile.gif


--------------------
нарушение правил п. 7.2
Перейти в начало страницы
 
Ронин
сообщение 05.12.2009, 17:14
Сообщение #108


Игроман
**********

Репутация:   386  
Группа: Участник
Сообщений: 847
Награды: 7
Регистрация: 22.07.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Всем привет. Подскажите пожалуйста, как создать спейс рестриктор через скрипт, и чтобы он использовал логику из .лтх файла. Заранее спасибо
Перейти в начало страницы
 
SaleR
сообщение 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 метра.

Всё. Пробуйте. У меня работает отлично.


--------------------
Да?
Перейти в начало страницы
 
macron
сообщение 16.12.2009, 20:36
Сообщение #110


Игровой Бог
**********************

Репутация:   1690  
Группа: Участник
Сообщений: 7021
Награды: 11
Регистрация: 22.02.2006




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Shadow. @ 02.12.2009, 15:03) *
Скрипт спавна в принципе делал давно,как раз через 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, и оружие меняется.
Перейти в начало страницы
 
shad0w
сообщение 16.12.2009, 21:01
Сообщение #111


Loading...
**********************

Репутация:   1644  
Группа: Участник
Сообщений: 5049
Награды: 5
Регистрация: 20.02.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата
Сам скрипт запускался через level.ltx конкретного уровня, туда добавлял:

[level_scripts]
script=ыыыы

Я всё делал через скрипт главного меню,мне так проще,на основе вызова Spawnmenu,что по кнопке S(закомменчено в финалке).Фактически,только добавить нужные функции и всё,ну на крайняк тупо вызов функции из другого скрипта,чтобы поопрятнее выглядело.
Перейти в начало страницы
 
eNdimion
сообщение 20.12.2009, 12:14
Сообщение #112


Опытный Геймер
*******

Репутация:   53  
Группа: Забанен
Сообщений: 180
Регистрация: 15.11.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


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

вылеты
exp​ression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line : 73
Description : <no exp​ression>
Arguments : LUA error: ...lker_soc\datas\gamedata\scripts\smart_terrain.script:1137: attempt to call method 'smart_terrain_id' (a nil value)

if нпс залезет в аномалию\его прибъёт другой монстр


exp​ression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line : 73
Description : <no exp​ression>
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
Перейти в начало страницы
 
Darien
сообщение 25.12.2009, 19:08
Сообщение #113




Репутация:   2  
Группа: Только зарегистрировался
Сообщений: 1
Регистрация: 25.12.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(whoami @ 20.12.2009, 12:14) *
...продолжаю работу одного человека по воссоздания крысы, как полноценно играбельного монстра, с модельками и анимацией всё в порядке, но:

вылеты
exp​ression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line : 73
Description : <no exp​ression>
Arguments : LUA error: ...lker_soc\datas\gamedata\scripts\smart_terrain.script:1137: attempt to call method 'smart_terrain_id' (a nil value)

if нпс залезет в аномалию\его прибъёт другой монстр


exp​ression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line : 73
Description : <no exp​ression>
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
Перейти в начало страницы
 
eNdimion
сообщение 03.01.2010, 11:53
Сообщение #114


Опытный Геймер
*******

Репутация:   53  
Группа: Забанен
Сообщений: 180
Регистрация: 15.11.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


спасибо за ответ...

Цитата
1)Либо ты используешь метод класса, который не поддерживает этот метод, либо сам метод не существует.

вообщето да, секция конфига крысы базирована на конфиге тушкана ([m_rat_e]:m_tushkano_e), но класс крысячий laugh.gif

Цитата
2)Возможно, ты не правильно используешь concat.

эээм... скрипты вообщето я не трогал smile.gif


--------------------
who_am_i
>10%
>44%
>76%
>99%
>error
Перейти в начало страницы
 
dnepar
сообщение 03.01.2010, 11:55
Сообщение #115


Игрок
***

Репутация:   7  
Группа: Забанен
Сообщений: 44
Регистрация: 05.11.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


люди тут вопрос у меня возник
Перейти в начало страницы
 
eNdimion
сообщение 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
Перейти в начало страницы
 
-=Kurt=-
сообщение 10.02.2010, 23:27
Сообщение #117


Ветеран
*****

Репутация:   7  
Группа: Участник
Сообщений: 78
Награды: 2
Регистрация: 19.09.2008




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(macron @ 16.12.2009, 21:36) *
ЗЫ: возник ряд вопросов по скриптам:
1. Можно ли скриптом разрешить трупу/с трупа жрать аптечку или еду? Чтобы на 6 патче не вылетало.
Я в любом случае не отвечу, н омне просто интересно, что значит эта фраза wink_old.gif .
Цитата
3. Нужен скрипт для переключения оружия из одного слота без захода в инвентарь: то есть, допустим, у нас в руках автомат и в рюкзаке автомат. Нажимаем на 3, и оружие меняется.
+1 - тоже интересует этот вопрос. Макрон, ты случаем не над мп-модом трудишься? wink_old.gif
Напоследок, вопрос ко всем: можноли в мп скриптом лечить актора при наличии у него в инвентаре аптечки?
Я давным-давно пробовал переделать сингловый скрипт, но ничего не вышло....


--------------------
Перейти в начало страницы
 
bill_gates
сообщение 10.04.2010, 21:23
Сообщение #118


Почти Игрок
**

Репутация:   4  
Группа: Участник
Сообщений: 22
Регистрация: 16.07.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Люди, а что такое нетпакет? И зачем он нужен?
Перейти в начало страницы
 
rekongstor
сообщение 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




Вставить ник Цитировать выделенное в форуму быстрого ответа


Всем привет. Может кто поделится функцией определения визуала нпс? Или хотя бы расскажите как считать необходимые данные из нет-пакета? Заранее спасибо.
Перейти в начало страницы
 
djslavikoz
сообщение 29.09.2010, 07:25
Сообщение #121


Опытный Игрок
****

Репутация:   12  
Группа: Участник
Сообщений: 53
Награды: 1
Регистрация: 19.05.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Подскажите пожалуста функцию спавна вертольота через скрипт. Желательно подробно что и куда нада писать
Перейти в начало страницы
 

15 страниц V  « < 4 5 6 7 8 > » 
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 28.03.2024, 17:01