IPB

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

Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов

>

Скрипты

 
 Орион
сообщение 13.07.2009, 11:34
Сообщение #21


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

Группа: Забанен
Сообщений: 2210
Регистрация: 11.03.2009
Из: Лиманск
Пользователь №: 10251




FAQ

Lua в X-Ray

Список всех функций, переменных, классов и т.п. что используются в Сталкере находится по адресу:
Код
gamedata/scripts/lua_help.script

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

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



Сообщение отредактировал RayTwitty - 09.06.2018, 20:23
Перейти в начало страницы
 
 
 
Ответов
 vintprog
сообщение 12.07.2009, 12:05
Сообщение #22


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

Группа: Участник
Сообщений: 27
Регистрация: 05.07.2009
Пользователь №: 11244



В сталкере невидел var,
мне нужно знать функцыии для
создания NPC, как заставить их ийти на заданые координаты,
как выдать им пушки, как заставить их стрелять в кого либо...
***** в Delphi и C++ программить и то лутче.

кто знает эти функцыии?


1. маты запрещены правилами форума
2. безграмотные сообщения тоже


Сообщение отредактировал fen1x - 12.07.2009, 14:44
Перейти в начало страницы
 
 
 ДмитрийТ
сообщение 12.07.2009, 12:12
Сообщение #23


СССР
********************

Группа: Участник
Сообщений: 4363
Регистрация: 28.12.2008
Из: РСФСР
Пользователь №: 9611



Вот тебе простой пример
Создание NPC "привязанного к точке" автор Меченый(Стрелок) (amk-team)
Снайпер

*1
Для начала создадим профиль!
Откроем фаил character_****.xml
и создаем там новый профиль
Пример:
<specific_character id="название_секции" team_default = "1">
<name>GENERATE_NAME_stalker</name>
<icon>иконка</icon>
<map_icon x="1" y="0"></map_icon>
<bio>Опытный сталкер. Детальная информация отсутствует.</bio>

<class>класс</class>
<community>группировка</community> <terrain_sect>stalker_terrain</terrain_sect>
<snd_config>characters_voice\human_01\папка с названием группировки\</snd_config>

<rank>цифры от 0 до 900</rank>
<reputation>цифры от 0 до 1000</reputation>

<visual>путь до модели"визуала"</visual>
<supplies>
[spawn] \n
оружие \n
патроны к этому оружию = 5 \n
</supplies>
#include "gameplay\character_criticals_4.xml"
#include "gameplay\character_dialogs.xml"
</specific_character>

*2
Теперь нужно прописать класс нашего НПС в npc_profile.xml
Пример:
<character id="название_секции из character_****.xml">
<class>класс прописанный вами ранее</class>
<specific_character>название_секции из character_****.xml</specific_character>
</character>

*3
Теперь зарегистрируем Нашего НПС в spawn_section.ltx
Пример:
[секция спавна(название пишите сами)]:stalker
$spawn = "respawn\секция спавна"
character_profile = название_секции из character_****.xml
spec_rank = regular ;это ранг непеся оставляйте как есть ,особой роли не играет
community = группировка которую вы приписали этому (название_секции из character_****.xml)
custom_data = scripts\sniper_addon\sniper_addon_***_logic.ltx;*** - если группировка НПС нейтральна к вам или дружелюбна ,то friend , в противном случае enemy

*4
Потом открываем xr_conditions.script
и добавляем вот такую функцию
function is_sniper_enemy(enemy, object)
return enemy:id() ~= db.actor:id()
end
PS:Если нет такого фаила ,то возьмите из оригинальной Игры!

*5
Теперь осталось Заспавнить Нашего НПСа
PS:Тем кто делает это впервые ,прочитайте дальше (IMG:http://www.gameru.net/forum/style_emoticons/default/smile.gif) ,а если сталкивались ,всё равно читайте (IMG:http://www.gameru.net/forum/style_emoticons/default/smile.gif)

*5.1
Для Начала нам нужно снять координаты того места Где появится наш Снайпер.
Для этого открываем ui_main_menu.script
находим вот примерно такое
if dik == DIK_keys.DIK_Q then
self:OnMessageQuitWin()
end
и делаем так :
if dik == DIK_keys.DIK_Q then
self:OnMessageQuitWin()
elseif dik==DIK_keys.DIK_W then
self:position_info()
end
И в конец фаила.В Самый Конец!!!
function main_menu:position_info()
local a = db.actor:position()
local vid = db.actor:level_vertex_id()
local gvid = db.actor:game_vertex_id()
local text = "GPS:\\nX= "..a.x.."\\nY= "..a.y.."\\nZ= "..a.z.."\\nlevel_vertex= "..vid.."\\ngame_vertex_id= "..gvid
news_manager.send_tip(db.actor, text, nil, nil, 30000)
end
Сохраняем!!!
*5.2
Заходим в игру ,добегаем до места где бы хотели чтобы сидел снайпер,выходим в Меню и в меню жмём на W , потом возвращаемся в игру
И Делаем скриншот (F12)
*5.3
Далее создаём скрипт спавна
(создаётся с помощью блокнота или Notepad++)
Например sniper_add.script
В нём будем писать функции!
function start_add_spawn()--\\*Это "список".Сюда будем вписывать вызов всех функции спавна
--\\*Сюда вписываем название ваших функций
--пример:
spawn_sniper_one()
end

function название_латиницей()--\\spawn_sniper_one()
local x= смотрим скриншот и переписываем сюда x
local y= смотрим скриншот и переписываем сюда y
local z= смотрим скриншот и переписываем сюда z
local level_vertex= смотрим скриншот и переписываем сюда level_vertex
local game_vertex_id= смотрим скриншот и переписываем сюда game_vertex_id
alife():create("тут название вашей из spawn_section.ltx",vector():set(x,y,z),level_vertex,game_vertex_id)
end

function save_variable(variable_name, value)
xr_logic.pstor_store(db.actor, variable_name, value)
end
function load_variable(variable_name, value_if_not_found)
return xr_logic.pstor_retrieve(db.actor, variable_name, value_if_not_found)
end

*5.4
Когда вписали всех наших Снайперов и все функции спавна и внесли их в "список",то добавляем вызов нашей функции в bind_stalker.script

в функцию actor_binder:update(delta)
перед последнем end'ом этой функции
добавляем
if sniper_add.load_variable("spawn_sniper",false)==false then
sniper_add.start_add_spawn()
sniper_add.save_variable("spawn_sniper",true)
end

Сохраняем!

*6
Теперь работаем с логикой.
в папке configs/scripts создаём папку с sniper_addon , открываем её
*6.1
Создаём два фаила
sniper_addon_friend_logic.ltx и sniper_addon_enemy_logic.ltx
*6.2
открываем sniper_addon_friend_logic.ltx
и вписываем туда:
;SNIPER ADDON
;Меченый(Стрелок)
[logic]
active = remark@search

[remark@fire]
combat_ignore_cond = {!is_sniper_enemy}
radius = 0
anim = hide
on_info = {=health_le(0.5)} remark@search
wounded = wounded@work
sniper = true

[remark@search]
combat_ignore_cond = true
combat_ignore_keep_when_attacked = false
anim = hide
target = actor
on_info = {=see_enemy} remark@fire
wounded = wounded@work
[smart_terrains]
none = true
[wounded@work]
hp_state = 0|wounded_heavy@help_heavy
hp_state_see = 0|wounded_heavy@help_heavy
hp_victim = 0|nil
hp_fight = 0|false
hp_cover = 0|false

Сохраняем этот фаил и открываем второй
и вставляем туда
;SNIPER ADDON
;Меченый(Стрелок)
[logic]
active = remark@search

[remark@fire]
combat_ignore_cond = {!is_enemy_actor}
radius = 0
anim = hide
on_info = {=health_le(0.5)} remark@search
wounded = wounded@work
sniper = true
[smart_terrains]
none = true
[remark@search]
combat_ignore_cond = true
combat_ignore_keep_when_attacked = false
anim = hide
target = actor
on_info = {=see_actor} remark@fire
wounded = wounded@work

[wounded@work]
hp_state = 0|wounded_heavy@help_heavy
hp_state_see = 0|wounded_heavy@help_heavy
hp_victim = 0|nil
hp_fight = 0|false
hp_cover = 0|false
Перейти в начало страницы
 
 
 vintprog
сообщение 12.07.2009, 12:18
Сообщение #24


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

Группа: Участник
Сообщений: 27
Регистрация: 05.07.2009
Пользователь №: 11244



DmitrjT
Не плохо,интересно есть справочник всех функцый в сталкере,
есл есть тогда можно садитса делать моды на сталкер.
Перейти в начало страницы
 
 
 ДмитрийТ
сообщение 12.07.2009, 12:21
Сообщение #25


СССР
********************

Группа: Участник
Сообщений: 4363
Регистрация: 28.12.2008
Из: РСФСР
Пользователь №: 9611



Всех я не встречал, но если надо могу выложить туторы что были в билде 1935.
посмотри на АМК там в школе модинга более менее подробно эти вопросы рассмотрены.
Перейти в начало страницы
 
 
 vintprog
сообщение 12.07.2009, 12:24
Сообщение #26


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

Группа: Участник
Сообщений: 27
Регистрация: 05.07.2009
Пользователь №: 11244



DmitrjT
Будь добр выложи пожалйста,
просто по сриптить охота классные моды,
если че потом сделаю мод выложу тоже,
или я че найду тоже выложу полезное.
Перейти в начало страницы
 
 
 ДмитрийТ
сообщение 12.07.2009, 13:06
Сообщение #27


СССР
********************

Группа: Участник
Сообщений: 4363
Регистрация: 28.12.2008
Из: РСФСР
Пользователь №: 9611



Пожалуйста >> тыц
Перейти в начало страницы
 
 
 ДмитрийТ
сообщение 13.07.2009, 14:26
Сообщение #28


СССР
********************

Группа: Участник
Сообщений: 4363
Регистрация: 28.12.2008
Из: РСФСР
Пользователь №: 9611



Для тех кого интересует скриптинг в Сталкере выкладываю статью тов. KamikaZze (ogse team) к сожалению полностью доделать ее нет времени полный текст материалов можно найти сдесь.
Скачать
Перейти в начало страницы
 
 
 jboo7
сообщение 18.07.2009, 20:19
Сообщение #29


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

Группа: Участник
Сообщений: 20
Регистрация: 16.07.2009
Из: Мертвый город
Пользователь №: 11317



Можно ли как-то взорвать бочку не причиняя ей вред?) То есть не стрелять, не взрывать её, вообще с ней ничего не делать. Просто заспавнить через скрипт и потом так же через скрипт взорвать. Типа дистанционная бомба(IMG:http://www.gameru.net/forum/style_emoticons/default/smile.gif)

Сообщение отредактировал jboo7 - 18.07.2009, 20:27
Перейти в начало страницы
 
 
 Орион
сообщение 18.07.2009, 20:34
Сообщение #30


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

Группа: Забанен
Сообщений: 2210
Регистрация: 11.03.2009
Из: Лиманск
Пользователь №: 10251



Это как? О_о
Перейти в начало страницы
 
 
 jboo7
сообщение 18.07.2009, 20:53
Сообщение #31


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

Группа: Участник
Сообщений: 20
Регистрация: 16.07.2009
Из: Мертвый город
Пользователь №: 11317



Что "как?"?
Заспавнил бочку где-то рядом с собой, и нажал на заветную кнопку в главном меню, возвратился в игру и ты уже труп, потому что бочка взорвалась от нажатия на ту заветную кнопку. Как это можно было бы реализовать?
Перейти в начало страницы
 
 
 Орион
сообщение 18.07.2009, 21:04
Сообщение #32


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

Группа: Забанен
Сообщений: 2210
Регистрация: 11.03.2009
Из: Лиманск
Пользователь №: 10251



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

Сообщение отредактировал Орион - 18.07.2009, 21:04
Перейти в начало страницы
 
 
 jboo7
сообщение 18.07.2009, 21:26
Сообщение #33


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

Группа: Участник
Сообщений: 20
Регистрация: 16.07.2009
Из: Мертвый город
Пользователь №: 11317



Можно немного поподробнее?)
Перейти в начало страницы
 
 
 PATRON
сообщение 18.07.2009, 23:43
Сообщение #34


Продвинутый геймер
********

Группа: Участник
Сообщений: 283
Регистрация: 25.01.2009
Из: село Яренск
Пользователь №: 9755



Может попробовать нанести обьекту hit при помощи скрипта? Отследить его id, и дать хитом?
Перейти в начало страницы
 
 
 jboo7
сообщение 18.07.2009, 23:51
Сообщение #35


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

Группа: Участник
Сообщений: 20
Регистрация: 16.07.2009
Из: Мертвый город
Пользователь №: 11317



А как тогда отследить его id после создания через alife():create?
Перейти в начало страницы
 
 
 Stalbar
сообщение 19.07.2009, 08:53
Сообщение #36


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

Группа: Участник
Сообщений: 60
Регистрация: 24.06.2009
Пользователь №: 11166



Цитата(jboo7 @ 19.07.2009, 03:51) *
А как тогда отследить его id после создания через alife():create?

Ну етить... Вот ведь вопросы (IMG:http://www.gameru.net/forum/style_emoticons/default/smile.gif) В мануалах всё расписано как, и не только это, кстати... Читайте мануалы, и будет вам счастье. (IMG:http://www.gameru.net/forum/style_emoticons/default/laugh.gif)
Код
-- Создаём объект
local obj_name -- имя объекта
local pos, lvid, gvid -- позиция, левел-вертекс, гейм-вертекс
spawn_obj = alife():create(obj_name, pos, lvid, gvid) -- спавним объект
local obj_id = spawn_obj.id -- комментарии нужны? Если да, то это и есть "его id после создания"

Потом, когда нужно, наносим объекту хит, в данном случае взрывом
Код
-- получаем игровой объект по его номеру и взрываем
local boom_obj = level.object_by_id(obj_id)
local boom = hit()
boom.direction = vector():set(0,0,0) -- направление хита
boom.impulse = 10 -- импульс
boom.draftsman = boom_obj
boom.power = 10 -- сила хита
boom.type = hit.explosion -- тип хита, в данном случае, взрыв
if boom_obj then -- проверка, а собственно есть то, что нужно взорвать?
   boom_obj:hit(boom) -- большой бада-бум
end

Не сложно ведь?

Сообщение отредактировал Stalbar - 19.07.2009, 08:56
Перейти в начало страницы
 
 
 PATRON
сообщение 19.07.2009, 11:40
Сообщение #37


Продвинутый геймер
********

Группа: Участник
Сообщений: 283
Регистрация: 25.01.2009
Из: село Яренск
Пользователь №: 9755



Stalbar, ну спасибо, давно искал это!
Перейти в начало страницы
 
 
 jboo7
сообщение 19.07.2009, 13:50
Сообщение #38


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

Группа: Участник
Сообщений: 20
Регистрация: 16.07.2009
Из: Мертвый город
Пользователь №: 11317



Спасибо, Stalbar, проверю счас(IMG:http://www.gameru.net/forum/style_emoticons/default/smile.gif)
Перейти в начало страницы
 
 
 jboo7
сообщение 19.07.2009, 16:57
Сообщение #39


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

Группа: Участник
Сообщений: 20
Регистрация: 16.07.2009
Из: Мертвый город
Пользователь №: 11317



Попробовал то, что посоветовал Stalbar с канистрой из АМК. Ничего с канистрой не произошло, проверил вот эту строчку local boom_obj = level.object_by_id(obj_id) просто обратившись к объекту boom_obj:name(). Выкинуло, подозреваю, что level.object_by_id попросту ничего не вернуло и в boom_obj ничего нет.

Сообщение отредактировал jboo7 - 19.07.2009, 16:59
Перейти в начало страницы
 
 
 Stalbar
сообщение 19.07.2009, 23:34
Сообщение #40


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

Группа: Участник
Сообщений: 60
Регистрация: 24.06.2009
Пользователь №: 11166



Цитата(jboo7 @ 19.07.2009, 20:57) *
Попробовал то, что посоветовал Stalbar с канистрой из АМК. Ничего с канистрой не произошло, проверил вот эту строчку local boom_obj = level.object_by_id(obj_id) просто обратившись к объекту boom_obj:name(). Выкинуло, подозреваю, что level.object_by_id попросту ничего не вернуло и в boom_obj ничего нет.

Распиши подробно, что делаешь, как обращаешься, откуда и т.п. Пишешь, что выкинуло - лог имеется? Попробуй получить имя, как boom_obj:section_name()
Перейти в начало страницы
 
 
 
 

 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

Текстовая версия Сейчас: 20.08.2018, 03:54