![]() Скрипты |
Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов
![]() Скрипты |
![]()
Сообщение
#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 |
|
|
There is 15 page(s) Предыдущая страница Page : 1 2 Page : 3 Page : 4 Следующая страница На последнюю страницу |
![]()
Сообщение
#22
|
|
Почти Игрок ** Группа: Участник Сообщений: 27 Регистрация: 05.07.2009 Пользователь №: 11244 ![]() |
В сталкере невидел var,
мне нужно знать функцыии для создания NPC, как заставить их ийти на заданые координаты, как выдать им пушки, как заставить их стрелять в кого либо... ***** в Delphi и C++ программить и то лутче. кто знает эти функцыии? 1. маты запрещены правилами форума 2. безграмотные сообщения тоже Сообщение отредактировал fen1x - 12.07.2009, 14:44 |
|
|
![]()
Сообщение
#23
|
|
СССР ******************** Группа: Участник Сообщений: 4400 Регистрация: 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 |
|
|
![]()
Сообщение
#24
|
|
Почти Игрок ** Группа: Участник Сообщений: 27 Регистрация: 05.07.2009 Пользователь №: 11244 ![]() |
DmitrjT
Не плохо,интересно есть справочник всех функцый в сталкере, есл есть тогда можно садитса делать моды на сталкер. |
|
|
![]()
Сообщение
#25
|
|
СССР ******************** Группа: Участник Сообщений: 4400 Регистрация: 28.12.2008 Из: РСФСР Пользователь №: 9611 ![]() |
Всех я не встречал, но если надо могу выложить туторы что были в билде 1935.
посмотри на АМК там в школе модинга более менее подробно эти вопросы рассмотрены. |
|
|
![]()
Сообщение
#26
|
|
Почти Игрок ** Группа: Участник Сообщений: 27 Регистрация: 05.07.2009 Пользователь №: 11244 ![]() |
DmitrjT
Будь добр выложи пожалйста, просто по сриптить охота классные моды, если че потом сделаю мод выложу тоже, или я че найду тоже выложу полезное. |
|
|
![]()
Сообщение
#27
|
|
СССР ******************** Группа: Участник Сообщений: 4400 Регистрация: 28.12.2008 Из: РСФСР Пользователь №: 9611 ![]() |
Пожалуйста >>
|
|
|
![]()
Сообщение
#28
|
|
СССР ******************** Группа: Участник Сообщений: 4400 Регистрация: 28.12.2008 Из: РСФСР Пользователь №: 9611 ![]() |
|
|
|
![]()
Сообщение
#29
|
|
Почти Игрок ** Группа: Участник Сообщений: 20 Регистрация: 16.07.2009 Из: Мертвый город Пользователь №: 11317 ![]() |
Можно ли как-то взорвать бочку не причиняя ей вред?) То есть не стрелять, не взрывать её, вообще с ней ничего не делать. Просто заспавнить через скрипт и потом так же через скрипт взорвать. Типа дистанционная бомба(IMG:http://www.gameru.net/forum/style_emoticons/default/smile.gif)
Сообщение отредактировал jboo7 - 18.07.2009, 20:27 |
|
|
![]()
Сообщение
#30
|
|
Навий черны у ношьти *************** Группа: Забанен Сообщений: 2210 Регистрация: 11.03.2009 Из: Лиманск Пользователь №: 10251 ![]() |
Это как? О_о
|
|
|
![]()
Сообщение
#31
|
|
Почти Игрок ** Группа: Участник Сообщений: 20 Регистрация: 16.07.2009 Из: Мертвый город Пользователь №: 11317 ![]() |
Что "как?"?
Заспавнил бочку где-то рядом с собой, и нажал на заветную кнопку в главном меню, возвратился в игру и ты уже труп, потому что бочка взорвалась от нажатия на ту заветную кнопку. Как это можно было бы реализовать? |
|
|
![]()
Сообщение
#32
|
|
Навий черны у ношьти *************** Группа: Забанен Сообщений: 2210 Регистрация: 11.03.2009 Из: Лиманск Пользователь №: 10251 ![]() |
Кнопкой не знаю, если честно.. спейс рестриктором можно. Все помним сцены с туннелями в Рыжем Лесу, куда убегал Стрелок?) Можно по аналогии попробовать.
Сообщение отредактировал Орион - 18.07.2009, 21:04 |
|
|
![]()
Сообщение
#33
|
|
Почти Игрок ** Группа: Участник Сообщений: 20 Регистрация: 16.07.2009 Из: Мертвый город Пользователь №: 11317 ![]() |
Можно немного поподробнее?)
|
|
|
![]()
Сообщение
#34
|
|
Продвинутый геймер ******** Группа: Участник Сообщений: 283 Регистрация: 25.01.2009 Из: село Яренск Пользователь №: 9755 ![]() |
Может попробовать нанести обьекту hit при помощи скрипта? Отследить его id, и дать хитом?
|
|
|
![]()
Сообщение
#35
|
|
Почти Игрок ** Группа: Участник Сообщений: 20 Регистрация: 16.07.2009 Из: Мертвый город Пользователь №: 11317 ![]() |
А как тогда отследить его id после создания через alife():create?
|
|
|
![]()
Сообщение
#36
|
|
Опытный Игрок **** Группа: Участник Сообщений: 60 Регистрация: 24.06.2009 Пользователь №: 11166 ![]() |
А как тогда отследить его 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 |
|
|
![]()
Сообщение
#37
|
|
Продвинутый геймер ******** Группа: Участник Сообщений: 283 Регистрация: 25.01.2009 Из: село Яренск Пользователь №: 9755 ![]() |
Stalbar, ну спасибо, давно искал это!
|
|
|
![]()
Сообщение
#38
|
|
Почти Игрок ** Группа: Участник Сообщений: 20 Регистрация: 16.07.2009 Из: Мертвый город Пользователь №: 11317 ![]() |
Спасибо, Stalbar, проверю счас(IMG:http://www.gameru.net/forum/style_emoticons/default/smile.gif)
|
|
|
![]()
Сообщение
#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 |
|
|
![]()
Сообщение
#40
|
|
Опытный Игрок **** Группа: Участник Сообщений: 60 Регистрация: 24.06.2009 Пользователь №: 11166 ![]() |
Попробовал то, что посоветовал Stalbar с канистрой из АМК. Ничего с канистрой не произошло, проверил вот эту строчку local boom_obj = level.object_by_id(obj_id) просто обратившись к объекту boom_obj:name(). Выкинуло, подозреваю, что level.object_by_id попросту ничего не вернуло и в boom_obj ничего нет. Распиши подробно, что делаешь, как обращаешься, откуда и т.п. Пишешь, что выкинуло - лог имеется? Попробуй получить имя, как boom_obj:section_name() |
|
|
There is 15 page(s) Предыдущая страница Page : 1 2 Page : 3 Page : 4 Следующая страница На последнюю страницу |
Текстовая версия | Сейчас: 28.01.2021, 12:48 |