Strix Posted January 21, 2015 Share Posted January 21, 2015 Здравствуйте, коллеги! Есть два ресурса: "resource1" и "resource2". "resource1" имеет экспортированную функцию "test", а "resource2" должен использовать эту функцию при своей остановке. Требуется, чтобы при остановке "resource1", сначала останавливался "resource2", а затем "resource1". Если указать "resource2" include'ом ресурса "resource1", то всё работает так, как нужно. Но у меня немного другая система, не предусматривающая стандартную систему include'ов. Возможно ли это сделать без использования include'ов? Link to comment
FranklinRoosevelt Posted January 21, 2015 Share Posted January 21, 2015 Можешь попробовать как то так: OnClientResourceStop triggerServerEvent GetResourceState StopResource Хотя не уверен что все будет как надо. Link to comment
The Creator Posted January 21, 2015 Share Posted January 21, 2015 https://wiki.multitheftauto.com/wiki/OnResourceStop https://wiki.multitheftauto.com/wiki/StopResource Тут все предельно просто ведь. Кстати, если resource2 будет запускаться из resource1, то все тоже будет работать как вам нужно. Link to comment
Strix Posted January 22, 2015 Author Share Posted January 22, 2015 У меня есть один ресурс - ядро, который запускает все остальные ресурсы - компоненты. У компонентов в meta.xml указываются другие компоненты, от которых они зависят. Перед запуском компонента, запускаются его зависимости. Если останавливать зависимые компоненты в событии onResourceStop, то они остановятся только после того, как ресурс уже остановился. Это мне не подходит. Link to comment
Memory Posted January 23, 2015 Share Posted January 23, 2015 Напиши функцию в ресурсе - ядре, которая будет останавливать все зависимые ресурсы, а в конце себя остановит. И поставь эту функцию на команду. Link to comment
Strix Posted January 23, 2015 Author Share Posted January 23, 2015 (edited) Хотелось бы, чтобы вся схема работала без дополнительных команд. Всё равно спасибо за ответы. Edited January 29, 2015 by Guest Link to comment
Arisu Posted January 27, 2015 Share Posted January 27, 2015 Если указать "resource2" include'ом ресурса "resource1", то всё работает так, как нужно. Но у меня немного другая система, не предусматривающая стандартную систему include'ов. Если своя система - тогда сами и придумывайте, как сделать в ней зависимости ресурсов. Link to comment
Strix Posted January 27, 2015 Author Share Posted January 27, 2015 Если указать "resource2" include'ом ресурса "resource1", то всё работает так, как нужно. Но у меня немного другая система, не предусматривающая стандартную систему include'ов. Если своя система - тогда сами и придумывайте, как сделать в ней зависимости ресурсов. Я всё давно уже придумал. Вопрос был в том, как остановить зависимые ресурсы до полной остановки основного ресурса. Я надеялся, что это можно сделать функцией stopResource в событии onResourceStop, но результат оказался другим: ресурс вставал в очередь и останавливался после основного ресурса. Добавление опции немедленной остановки ресурса должно решить эту задачу. Link to comment
Fabervox Posted January 29, 2015 Share Posted January 29, 2015 Я думаю, что если делать систему, которая управляет запуском/остановкой ресурсов, другим ресурсам не стоит разрешать это делать. Можно запретить всем в ACL остановку ресурса, кроме управляющего, но тогда системе не будет известно когда ресурс пытался выполнить эту функцию. Можно сделать функцию отсылающую запрос системе и отменяющей событие, выполняемую в onResourceStop. А так же переопределить stopResource и если нужно restartResource, что-бы при обычном выполнении отсылался запрос системе, а выполнял их только ресурс-система. PS:Grell просто верх доброжелательности. Link to comment
Strix Posted February 3, 2015 Author Share Posted February 3, 2015 Решил сделать просто: local dependence = getResourceFromName("dep") if dependence then dependenceRoot = getResourceRootElement(dependence) if dependenceRoot then addEventHandler("onResourceStop", dependenceRoot, function () -- some code end ) end end Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now