Перейти к контенту

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

научите как сделать анимацию использование еды, плиз. как в a.r.e.a юзаешь еду, игрок не двигается с мышкой и проподает худ, при этом проигрывается анимация похожая на смерть при выбросе. вот пример https://www.youtube.com/watch?v=Ac692ECmBY4 (на 5:20). зарание спасибо!

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

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Joko SS, из use callback-а проверяем, что это нужный предмет, отключаем управление level.disable_input(), отключаем худ level.hide_indicators(), запускаем соотв. анимацию камеры, по желанию запускаем какой-нибудь звук, запускаем таймер на нужное время, когда таймер сработает, включаем обратно худ и возвращаем управление. Это грубо, в двух словах.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

@dsh, напишешь для меня?) я не селен в скриптах, ток умею добавлять новые предметы

Добавлено Dennis_Chikin,

Вот мне почему-то показалось, что к этому идет, еще с прошлого поста.

Хоть селен, хоть арсенид галлия - однако явный оффтопик.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день, подскажите пожалуйста как произвести проверку на предмет нахождения ГГ в укрытии от выброса. Заранее спасибо.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Den “Angry Wolf” Koslov, нашёл где-то. Но это для ЗП.

function название_функции()
if surge_manager.actor_in_cover() then
--действие
end
end 

 

westwood.gif

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Здраствуйте. Попытался подключить для себя динамические новости к последней версии OGSM на Тени Чернобыля и добавить в них некрологи из АМК. В файле bind.stalker я, как и положено, прописал функцию для запуска этих самых новостей в игре через секцию actor_binder:update. , в файле news_main эти некрологи прописал, но игра обиделась за мои действия со скриптами и вместо запуска выплюнула следующий лог:

 

Скрытый текст

FATAL ERROR
 
[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
[error]Line          : 73
[error]Description   : <no expression>
[error]Arguments     : LUA error: ...ow of chernobyl\gamedata\scripts\bind_stalker.script:465: attempt to call field 'show_news_main' (a nil value)

 Как я понял, она не видит функцию(хотя она есть в файле) show_news_main. В чем проблема? Огромная просьба помочь, т.к. в скриптах я абсолютно не шарю, попытался разобраться в файлах и подключить по примеру. Архив с файлами для новостей и сам файл из OGSM прилагаются, смотрите ссылку ниже. 

 

 

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

 

1zd9qhh.jpg

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
33 минуты назад, MegaStalker сказал:

Как я понял, она не видит функцию(хотя она есть в файле) show_news_main.

Ну так покажи движку, где ф-цию искать, попробуй прописать так:  название_файла_в_котором_ф-ция.show_news_main

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

@AndreySol, попробую, потом напишу результат.

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

 

1zd9qhh.jpg

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

А можно по-человечески объяснить, что значит "вешаем на правую мышь" и как собственно проверять? Я же сказал, что в скриптах ничего не шарю, потому и прошу помощи.

Изменено пользователем MegaStalker
Добавлено Dennis_Chikin,

100500 раз говорили:

Сначала идем сюда: https://www.amk-team.ru/forum/topic/11584-yazyk-lua-obschie-voprosy-programmirovaniya/?page=1

Потом идем на lua.org и качаем там luac5.1.exe с причиндалами. luac5.1.cmd с содержимым вида

c:\куда_положили\luac5.1.exe %1
pause

вешаем на правую мышь, и им проверяем то, что понаделали.

Добавлено Dennis_Chikin,

ПКМ, "открыть с помощью", далее выбрать созданный cmd. Дальше все будет написано фонтом по бэкграунду:

в частности, если написано, что после строки 668 в news_main.script не хватает end - идем в тему по ссылке, внимательно читаем, и разбираемся, почему не хватает.

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

 

1zd9qhh.jpg

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

И, да, ни кто кроме Вас не знает, что у Вас там было и что должно быть после строк

    local reason=dead_reason[math.random(table.getn(dead_reason))]
    local dead=where_dead[math.random(table.getn(where_dead))]

 

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, Dennis_Chikin сказал:

И, да, ни кто кроме Вас не знает, что у Вас там было и что должно быть после строк

    local reason=dead_reason[math.random(table.getn(dead_reason))]
    local dead=where_dead[math.random(table.getn(where_dead))]

 

АМК знают, я же из их файла выдрал этот код. Просто в скачанном мною моде все было не разбито на кучу файлов, как у АМК, а соединено в один.

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

 

1zd9qhh.jpg

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

А напомните мне кто-нибудь, как вызвать my_subdir\my_script.my_function() ?

Где-то такое видел, но не помню, как правильно делается.

 

То есть, файлы лежат не в gamedata\scripts, а в gamedata\scripts\my_subdir

Можно, конечно, и все в sripts, но там возможна куча файлов  на одну тему, и получается как-то "неаккуратненько" (tm).

 

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Dennis_Chikin, ты про это? Проверял не в сталкаче.

C:\Programs\lua\test\src\test_folder\test_dofile.lua:


function test_func()
	print("print from test_dofile.lua")
end

C:\Programs\lua\test\src\test_prog.lua:

dofile("C:/Programs/lua/test/src/test_folder/test_dofile.lua")

test_func()

 

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Например, путь я пытался узнать. Все перебранные варианты - либо nil, либо "ушла и не вернулась".

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Dennis_Chikin, в целом @buffy дал правильный совет, емнип.

my_script.script:

_G['my_script'] = {
	my_function = function() end
	my_function_2 = function() end
}

В любом нужном месте, например в _g.script:

local my_scripts_loaded = false
if not my_scripts_loaded then
	dofile(getFS():update_path("$game_scripts$","my_subdir\\my_script.script"))
	my_scripts_loaded = true
end

Повторить для каждого скрипта в подпапке(ах), организовать циклы, оптимизации и прочие улучшения. Ну да не мне тебе рассказывать.

Как потом вызывать, думаю, понятно.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

getFS():update_path("$game_scripts$","my_subdir\\my_script.script")

 

Вот это надо было. Спасибо.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
local esc_b2_give_random_table = {}
esc_b2_give_random_table[1] = {		[1] = {item = {"af_medusa"}},
									[2] = {item = {"af_blood"}},
									[3] = {item = {"af_vyvert"}}
	}
	
	
function esc_b2_give_random(first_speaker, second_speaker)
	for i = 1,1 do
		if has_alife_info("test_function") then
			for j = 1,#esc_b2_give_random_table[i] do
				if has_alife_info("test_function") then
					for k,v in pairs(esc_b2_give_random_table[i][j].item) do
						dialogs.relocate_item_section_to_actor(first_speaker, second_speaker,v)
					end			
					give_info("esc_b2_done_item_"..tostring(i).."_"..tostring(j))
					break
				end
			end	
	    end
	end
end

 

Пытаюсь создать функцию на выдачу рандомных предметов

НПС, которому в экшене диалога прописана эта функция(esc_b2_give_random), всегда выдает только первый предмет из esc_b2_give_random_table, т.е. af_medusa

А нужно, чтобы он выдавал случайно 1 из 3, прописанных в esc_b2_give_random_table, предметов

"Люди — животные, не имеющие ни страха, ни уважения, ни сочувствия. Лишь только блеск выгоды в глазах" © Алексей Шевцов

Скрытый текст

OC: Windows 10 Home, Видеокарта: NVIDIA GeForce GTX 1050 TI 4ГБ, Процессор: Intel Core i3 7100 3900 МГц 2 ядра, RAM(ОЗУ): 8ГБ DDR4, ROM(ПЗУ): 1ТБ

 

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Metro_Rus сказал:

всегда выдает только первый предмет

Break прерывает цикл j.

 

1 час назад, Metro_Rus сказал:

нужно, чтобы он выдавал случайно

local rnd = math.random(1, #esc_b2_give_random_table[i])
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, esc_b2_give_random_table[i][rnd].item[1])
Изменено пользователем WinCap

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

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

AMK-Team.ru

×
×
  • Создать...