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

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

Тема для обсуждения скриптов всего и всех в серии игр STALKER.


Задавая вопрос (!):
1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего;
2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме);
3. Изучите информацию которая может вам помочь:

  Информация (Показать)

4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос;
5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе;
6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода;
7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины.
8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ.
9. И помните: «Правильно заданный вопрос – половина ответа».

 

Какие вопросы следует задавать, а какие нет...

  Читать рекомендуется. (Показать)

И последнее: очень рекомендовано к прочтению Правила форума
 


  • Спасибо 1
  • Полезно 2
Ссылка на комментарий

И такой еще вопрос, как можно сделать, что бы функция отрабатывалась в следующем апдейте, тоесть вызов происходит в апдейте 1, а отрабатываеться функция в апдейте 2

Ссылка на комментарий

@vampirnik77, самое первое решение, приходящее в голову: на первом апдейте поставить флажок и ничего не делать, а на втором апдейте проверить флажок, сделать что надо и сбросить его.

Ссылка на комментарий

local myfunc_call = 1

function myfunc()

if myfunc_call == 1 then myfunc_call = 2; return end

myfunc_call = 1

...

end

Ссылка на комментарий

 

  Показать

 

Изменено пользователем Shredder
  • Нравится 1
Ссылка на комментарий

 

 

  Shredder писал(а):
Конечно можно, берёшь исходники и вперёд. Иначе никак

Вообще-то есть другой вполне рабочий вариант. Он даже уже выложен, правда без инструкций.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий
  Shredder писал(а):

-- Вызывает вункцию func спустя n апдейтов

Хех, я практически тоже самое делал себе))

function _G.parked_call(action, ...)
	local args = {...}
	local x = 2
	level.add_call(
	function()
		x = x - 1
		return x == 0
	end,
	function()
		loadstring("return function(args) "..action.."(unpack(args)) end")()(args)
	end
	)
end
Ссылка на комментарий
  22.08.2015 в 17:54, Zander_driver сказал:

Вообще-то есть другой вполне рабочий вариант. Он даже уже выложен, правда без инструкций.

А может не будем голословны? Исходники передо мной и там не предусмотрено добавление пунктов из скриптов или конфигов.

Ссылка на комментарий

А может не будем слепы? Мои скрипты тоже передо мной и я при желании добавляю какие угодно пункты к списку команд.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Ах вот как, ну окей.

Показать видео - не считается за "показать".

Выложить код, пусть сырой - не считается за "показать"

Надо выложить код не сырой а готовый, со всеми пояснениями :) Ладно, это я пока не сделал. Значит голословен.

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Ну вот поэтому я вас и называю слепым :)

Код в прозекторской, видео... попробуйте сами догадаться где.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Так бы и написал, что полностью скриптовый инвентарь. Ссылки то сразу дать религия не позволяет?

Для меня этот вариант вообще не вариант. Не доверяю я программистам, которые пишут в один файл овер 30000 строк кода.

А возвращаясь к исходному вопросу: "... можно ли добавить в это меню свой пункт?", брать исходники и добавлять, иначе никак

Ссылка на комментарий

 

 

  Shredder писал(а):
Ссылки то сразу дать религия не позволяет?

Ссылка на тему разработки у меня в подписи. ссылку на сырой код? не вижу в нем большой ценности

Когда к файлу будут инструкции, число строк в нем перестанет смущать :) а пока да. Все остается так же.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий
Немогу понять почему не работает скрипт.По задумки при сбросе рюкзака он должен заполнятся инвентарем актора, делаю для теста что-бы понять как это все потом сделать в другом моде.
файл bind_stalker.script
function actor_binder:update(delta)
object_binder.update(self, delta)
 
-- DEBUG slowdown
-- slowdown.update()
 
local time = time_global()
 
game_stats.update (delta, self.object)
--***************************************************
-->>Treasure rucksack 1/2--- вот рабочий код сбрасываемого рюкзака, брал из википедии сталкера, этот код работает поэтому полностью его не привожу
if self.rr_id~=nil then--то что мы записали при дропе
-- пытаемся получить объект по id
local se_obj=alife():object(self.rr_id)
-- проверяем, что объекта нет
if se_obj==nil or se_obj:section_name()~="inv_ruck" then
local ruck=alife():create("active_ruck", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id())
level.map_add_object_spot_ser(ruck.id, "red_location", "%c[255,238,155,23]Моя нычка для хабара")
news_manager.send_tip(db.actor, "Тайник заложен.", nil, nil, 5000)
--obj_ruck = ruck--это типа  переменной для теста с таймером
--Start_Timer_5_minutes()--подумал что может не успевает отработать, но с таймером та-же байда
my_mod.push_all(ruck) --вот та функция которая ЗДЕСЬ не работает, но работает в другом месте, не пойму что не так
end
-- сбросим переменную
self.rr_id=nil
end
--Timer_N_minutes()--пробовал типа по таймеру вызывать, все так-же не работает
--<<
--***************************************************
 
-- апдейт погоды
дальше все стандартно
...
Если сделать так, то рюкзак сбрасывается но походу после my_mod.push_all(ruck) ничего не работает :-( игра не вылетает но повторно скрипт уже не срабатывает как нужно, с таймером пробовал но все так-же.Код таймера не привожу так как там по сути все то-же самое только вызывается с задержкой.
 
Из my_mod.script
Функция заимствована из скрипта арены там где телепортирует актера на арену а все вещи складываются в ящик.
 
local function transfer_object_item(item)
    db.actor:transfer_item(item, in_object)
end
 
function push_all(obj)
    in_object  = obj
db.actor:inventory_for_each(transfer_object_item) 
end
 

Эту функцию я тестировал с модовым рюкзаком вызывая ее из калбека когда перс забирает предмет(ы) из ящика и там она работает

function actor_binder:take_item_from_box(box, item)--

--my_mod.push_all(obj)--вот так она работает, при перемещении чего либо из ящика срабатывает калбак, инвентарь актора перемещается в ящик, то что мы оттуда забрали перемещается в инвентарь так как и должно по коду игры.
--my_mod.Message("take_item_from_box")--типа сообщение для информирования 
Изменено пользователем antihumanist
Ссылка на комментарий

@antihumanist, у тебя ruck это серверный объект, а в transfer_item нужно передавать клиентский.

  • Согласен 1
Ссылка на комментарий

 

 

  Charsi писал(а):
antihumanist, у тебя ruck это серверный объект, а в transfer_item нужно передавать клиентский.

Хм а получить его как ? в справочнике из очевидного не нашел

Ссылка на комментарий

Точнее - проверять, пока не появился. Закладываться на фиксированное время - плохо.

Дабы не тормозило - см. про управление апдейтами (тысячи их !)

Ссылка на комментарий
  Dennis_Chikin писал(а):

Точнее - проверять, пока не появился

 

Ура работает ! спасибо !

 

  Код (Показать)
Изменено пользователем Kirgudu
Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

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

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...