кто-нибудь смог создать свою специализацию героя скриптами? ну например сделать спеца по скелетам...:confused:
Сообщения от Скрипты
кто-нибудь смог создать свою специализацию героя скриптами? ну например сделать спеца по скелетам...:confused:
Если интересно, можете изучать и копипастить скрипты мода, главной целю которого являются новые специализации:
/topic/9337/
Добавлено через 14 часов 41 минуту
Есть функция, которая определяет, в какую сторону повернут объект?
Добавлено через 14 часов 41 минуту
Есть функция, которая определяет, в какую сторону повернут объект?
Я думаю, это не понадобится. У порталов всего 4 угла поворота и их можно будет определить по относительному положению моба.
Помогите,пожалуйста! Не могу понять в чём дело,не фурычит скрипт,хоть головой об стену бейся.
Вроде всё верно,имя героя совпадает со скриптовым,так что тут ошибок быть не может. Консоль пишет: "Can`t find terrain info file for map... и директория карты" Причём все остальные скрипты работают,а этот при входе в регион просто никак не реагирует :smile32:
function biaraF ()
Trigger(REGION_ENTER_AND_STOP_TRIGGER, "biara", nil );
MessageBox(GetMapDataPath()..'text9.txt');
SetObjectPosition ('Raelag' , 8, 129, 0)
end;
Trigger(REGION_ENTER_AND_STOP_TRIGGER, "biara", "biaraF" );Вроде всё верно,имя героя совпадает со скриптовым,так что тут ошибок быть не может. Консоль пишет: "Can`t find terrain info file for map... и директория карты" Причём все остальные скрипты работают,а этот при входе в регион просто никак не реагирует :smile32:
Помогите,пожалуйста! Не могу понять в чём дело,не фурычит скрипт,хоть головой об стену бейся.function biaraF ()
Trigger(REGION_ENTER_AND_STOP_TRIGGER, "biara", nil );
MessageBox(GetMapDataPath()..'text9.txt');
SetObjectPosition ('Raelag' , 8, 129, 0)
end;
Trigger(REGION_ENTER_AND_STOP_TRIGGER, "biara", "biaraF" );
Вроде всё верно,имя героя совпадает со скриптовым,так что тут ошибок быть не может. Консоль пишет: "Can`t find terrain info file for map... и директория карты" Причём все остальные скрипты работают,а этот при входе в регион просто никак не реагирует :smile32:
O_o мда... пропал куда-то файлик земного покрытия. В игре при выходе на поверхность игра вылетает,в редакторе просто нету покрытия,объекты висят в воздухе... попробую скопировать этот файл с другой карты и отредактировать там всё :(
Добавлено через 16 минут
Ошибку с поверхность исправил,но скрипт по прежнему не работает. Обнаружил странную вещь: телепорт героя происходит,но совершенно в другой функции (другой триггер). Регионы не пересекаются... не пойму в чём дело :(
Добавлено через 16 минут
Ошибку с поверхность исправил,но скрипт по прежнему не работает. Обнаружил странную вещь: телепорт героя происходит,но совершенно в другой функции (другой триггер). Регионы не пересекаются... не пойму в чём дело :(
O_o мда... пропал куда-то файлик земного покрытия. В игре при выходе на поверхность игра вылетает,в редакторе просто нету покрытия,объекты висят в воздухе... попробую скопировать этот файл с другой карты и отредактировать там всё :(
Добавлено через 16 минут
Ошибку с поверхность исправил,но скрипт по прежнему не работает. Обнаружил странную вещь: телепорт героя происходит,но совершенно в другой функции (другой триггер). Регионы не пересекаются... не пойму в чём дело :(
Возникла проблема :(
Никак не получается оперировать функцией GetDate.
Мне нужно,чтобы в момент получения задания N начался отсчёт дней до числа M (в моём случае 10) и когда настанет 10й день с момента получения задания выполнилось бы определённое действие. Но также необходимо что-бы если герой таки прошёл задание за эти 10 дней то триггер обнулился бы,и дальнейшая функция потеряла бы смысл. Написал мудрёную функцию с тучей if,но фурычить отказывается. Консоль ничего не пишет :( .
Никак не получается оперировать функцией GetDate.
Мне нужно,чтобы в момент получения задания N начался отсчёт дней до числа M (в моём случае 10) и когда настанет 10й день с момента получения задания выполнилось бы определённое действие. Но также необходимо что-бы если герой таки прошёл задание за эти 10 дней то триггер обнулился бы,и дальнейшая функция потеряла бы смысл. Написал мудрёную функцию с тучей if,но фурычить отказывается. Консоль ничего не пишет :( .
как контролировать порядок выполнения операторов. а то у меня герой ии долже подойти к точке а затем оттуда телепортироваться. а он сразу телепортируется и все=(
и еще можно ли заставить его видеть порталы? например если путь к замку черех портал он не реагирует на movehero(... коорд замка)
и еще можно ли заставить его видеть порталы? например если путь к замку черех портал он не реагирует на movehero(... коорд замка)
Попробуйте использовать SetObjectPosition вместо телепорта и повесьте триггер на регион,где ТОЧНО пройдёт ИИ
Возникла проблема :(
Никак не получается оперировать функцией GetDate.
Мне нужно,чтобы в момент получения задания N начался отсчёт дней до числа M (в моём случае 10) и когда настанет 10й день с момента получения задания выполнилось бы определённое действие. Но также необходимо что-бы если герой таки прошёл задание за эти 10 дней то триггер обнулился бы,и дальнейшая функция потеряла бы смысл. Написал мудрёную функцию с тучей if,но фурычить отказывается. Консоль ничего не пишет :( .
Я думаю, тут ничего сложного. Значит, так. Получение задания у Вас висит на функции, так?
Тогда:
n = 0 (пишем это вне всех ф-ий)
--Ваша функция--
....
Получение задания (требуемого)
n = 1 -- теперь мы сделали n равным одному
--конец функции--
Теперь, через триггер нового дня (Trigger(NEW_DAY_TRIGGER , 'day')) (пример), вызываем выполнение ф-ии.
--функция нового дня--
если n > 0, тогда
n = n + 1 -- если n > 0, что в нашем случае означает, что задание уже стало активным, мы увеличиваем n на 1.
--конец функции нового дня--
Таким образом, мы каждый день прибавляем + 1 к n, начиная со следующего после получения задания дня.
Теперь, осталось лишь дописать проверочную ф-ию (её можно дописать прямо внутри ф-ии нового дня)
--функция нового дня--
--то, что написано выше--
если n == 11 и задание уже выполнено, тогда
Ваши действия
Иначе, если n == 11, тогда (это уже означает, что по истечение этого срока задание не выполнено)
Ваши прочие действия
"Для красивости, если не нужно, чтобы счетчик крутился дальше, делаем n = 0"
--конец ф-ии нового дня--
Если "Ваши действия" уже записаны в другой ф-ии, не беда. Вместо это пишем startThread (название_функции_с_действиями). Вот, вроде, и все.
[/code]Теперь, немного справочного материала:
Trigger(NEW_DAY_TRIGGER , 'day') -- триггер нового дня
SetObjectiveState ('objname' , OBJECTIVE_ACTIVE) -- активировать задание, вместо первого параметра - имя Вашего задания
SetObjectiveState ('objname' , OBJECTIVE_COMPLETED/FAILED) -- выполнить задание, или провалить его.
n = 0 -- и тп (переменная)
Trigger(TRIGGER_NAME, nil) -- обнуление триггера.
Таким образом, вот полный скрипт: (вместо красного Вы подставляете Ваши значения):
n = 0
function xxx
...
SetObjectiveState ('obj1' , OBJECTIVE_ACTIVE)
n = 1
end
Trigger(NEW_DAY_TRIGGER , 'day')
function day
if n > 0 then
n = n + 1
end
if n == 11 and GetObjectiveState ('obj1') == OBJECTIVE_COMPLETED then
...
elseif n == 11 then
...
end
endВроде, больше ничего сложного я не написал. ;)
Я думаю, тут ничего сложного. Значит, так. Получение задания у Вас висит на функции, так?
Тогда:[/code]n = 0 (пишем это вне всех ф-ий)
--Ваша функция--
....
Получение задания (требуемого)
n = 1 -- теперь мы сделали n равным одному
--конец функции--
Теперь, через триггер нового дня (Trigger(NEW_DAY_TRIGGER , 'day')) (пример), вызываем выполнение ф-ии.
--функция нового дня--
если n > 0, тогда
n = n + 1 -- если n > 0, что в нашем случае означает, что задание уже стало активным, мы увеличиваем n на 1.
--конец функции нового дня--
Таким образом, мы каждый день прибавляем + 1 к n, начиная со следующего после получения задания дня.
Теперь, осталось лишь дописать проверочную ф-ию (её можно дописать прямо внутри ф-ии нового дня)
--функция нового дня--
--то, что написано выше--
если n == 11 и задание уже выполнено, тогда
Ваши действия
Иначе, если n == 11, тогда (это уже означает, что по истечение этого срока задание не выполнено)
Ваши прочие действия
"Для красивости, если не нужно, чтобы счетчик крутился дальше, делаем n = 0"
--конец ф-ии нового дня--
Если "Ваши действия" уже записаны в другой ф-ии, не беда. Вместо это пишем startThread (название_функции_с_действиями). Вот, вроде, и все.
Теперь, немного справочного материала:
Trigger(NEW_DAY_TRIGGER , 'day') -- триггер нового дня
SetObjectiveState ('objname' , OBJECTIVE_ACTIVE) -- активировать задание, вместо первого параметра - имя Вашего задания
SetObjectiveState ('objname' , OBJECTIVE_COMPLETED/FAILED) -- выполнить задание, или провалить его.
n = 0 -- и тп (переменная)
Trigger(TRIGGER_NAME, nil) -- обнуление триггера.
Таким образом, вот полный скрипт: (вместо красного Вы подставляете Ваши значения):n = 0
function xxx
...
SetObjectiveState ('obj1' , OBJECTIVE_ACTIVE)
n = 1
end
Trigger(NEW_DAY_TRIGGER , 'day')
function day
if n > 0 then
n = n + 1
end
if n == 11 and GetObjectiveState ('obj1') == OBJECTIVE_COMPLETED then
...
elseif n == 11 then
...
end
end
Вроде, больше ничего сложного я не написал. ;)
Спасибо вам огромное :) Внятно и доходчиво объяснили. Буду теперь знать :)
Да, нзчто) На самом деле, ф-ии с переменными довольны просты и не требуют особых знаний скрипта, однако, при частом их использовании позволяют легко запутаться и нагружают игру. Я не настолько профи в этом деле, потому делаю так. Однако, совсем не собираюсь отрицать тот факт, что существуют способы проще, чем мой ;)
Возможно уже был такой вопрос: как забанить определённый навык для героев на карте?
Статистика
Приветствуем новейшего участника:
recijeb