×
Меню
Индекс

MSFD Взаимодействие между модами

(от Ragnar_GD)
Некоторые люди хотят узнать из скрипта, загружен ли другой, особый плагин. Это возможно при некоторых обстоятельствах.
 
Это возможно если плагин, который вы хотите найти
a)имеет совершенно уникальные глобальные переменные
b)меняет эти переменные из скрипта
 
Если вы знаете такую переменную, вставьте ее в также в свой скрипт.
Потом проверьте во время выполнения, принимает ли эта переменная другое значение, так, предполагая, что в другом моде есть переменная "ForeignGlobal", создайте ее и вы:
 
If (ForeignGlobal != 0)
MessageBox "Я обнаружил чужой плагин!"
endif
 
 Этот метод не сработает, если упомянутая глобальная переменная имеет заранее установленное значение, так как по этому методу она будет переписана, или другой плагин еще не поменял значение этой переменной на что-нибудь, кроме нуля, ко времени выполнения этой проверки.
 
Настоятельный совет: никогда не давайте глобальным переменным в вашем плагине значение заранее, вместо этого пусть они стартуют по умолчанию (с нулем), а заполняйте их в скрипте позже, так как иначе если кто-то введет в своем плагине глобальную переменную с таким же именем, то ваш плагин может вылететь.
 
Я считаю, что возможность переписать Глобальные переменные другого плагина без предупреждения, это серьезная ошибка!
(Примечание от GBG: – еще одна причина тому, что люди должны использовать уникальные имена в собственных модах, если это возможно. Не называйте свою глобальную переменную "check", хотя бы назовите ее (ваши инициалы)_check, напр.: "YI_check" – это снимет множество проблем с совместимостью)