Свой вариант этого скрипта? Нет. Я же говорю, этот скрипт связан с другими скриптами на той же карте. И не могу его переписать, не видя то, за что отвечают другие скрипты. Можно не учесть всего один какой-то параметр, и всё... карта не функциональна.
В этом и есть идея подобных скриптов - связать события (а потом попробуйте развязать, чтобы понять что к чему (особенно в чужом коде)). Могу привести достаточно простой пример, чтобы в нём можно было разобраться.
Например, у нас есть карта с дверью и двумя кнопками. Чтобы открыть дверь, надо нажать на две кнопки в любом порядке.
Для этого пишем три скрипта. Два из них будут подвешены на кнопки, третий на дверь.
Вот, например:
Code
#include "zcommon.acs"
int Sequence == 0;
Script 1 (void) {
Sequence++;
Print(s:"ONE MORE TO GO...");
}
Script 2 (void) {
Sequence++;
Print(s:"SEQUENCE COMPLETE!");
}
Script 3 (void) {
if(Sequence == 2)
Door_Open(1, 10);
else
Print(s:"BAD SEQUENCE...");
}
Теперь, разберём подробно:
int Sequence == 0;
// Задаём переменную Sequence (Последовательность), равную нулю. К этой переменной будут обращаться все наши скрипты.
Script 1 (void) { // Пишем первый скрипт и привязываем его к одной из кнопок
Sequence++; // Увеличиваем нашу переменную на единицу, т.е. она уже будет равнятся единице а не нулю
Print(s:"ONE MORE TO GO..."); // И выводим сообщение, что осталось нажать ещё одну кнопку
}
Script 2 (void) { // Пишем второй скрипт и привязываем его к одной из кнопок
Sequence++; // Снова увеличиваем нашу переменную на единицу, т.е. она уже будет равнятся двойке
Print(s:"SEQUENCE COMPLETE!"); // И выводим сообщение, что последовательность завершена
}
Script 3 (void) { // Пишем третий скрипт и привязываем его к нашей дверке
if(Sequence == 2) // Тут задаём условие, что если наша переменная равна двойке, то:
Door_Open(1, 10); // ...дверь откроется!
else // Но если она не равна двойке, но любому другому числу, то:
Print(s:"BAD SEQUENCE..."); // Выдаём любое сообщение, говорящее о том, что дверь пока нельзя открыть
}