Многопользовательский мир АЛАДОН



  Reply to this topicStart new topicStart Poll

> Скриптинг, Все что его касается
Калевала
Отправлено: Oct 25 2012, 15:51
Quote Post


Хозяин Хелльстада
******

Группа: Администраторы
Сообщений: 1893
Пользователь №: 55
Регистрация: 15-April 04



Итак у нас появилась возможность использовать alua не только в прогсах, но так же писать скрипты сиречь дополнительные модули для Аладона.

Что для этого нужно:
1. Редактор mpredit версии 1.1.
Выложено на румуде и и тут на нашем сайте

2. Секьюрити не менее семи для возможности создания и редактирования скриптов.

Теперь как это работает:
Непосредственно в Аладоне через команды редактора sedit вы создает шаблон для работы скрипта. В шаблоне вы указываете тип скрипта, имя, место выполнения, имя файла скрипта. Затем через mpredit вы создаете файл скрипта, пишите его код и потом через sedit включаете ваш скрипт.


О редакторе sedit:

Интерфейс редактора полностью схож с редактором mpedit

Команды редактора:
create - создает новый пустой шаблон
list - выводит список шаблонов
name - задает имя текущему шаблону
save - сохраняет ВСЕ шаблоны
type - тип шаблона
site - точка выполнения скрипта шаблона
switchkey - включает выключает текущий шаблон.

Пример:
CODE

Number:                 [1]
Name:                    [тестовый]
Autor:                     [Фланкер]
Date create:            [25.10.2012]
Last access shablon:[25.10.2012]
Last access file:       [25.10.2012]
Last builder:            [Фланкер]
Filename:                [temp.lua]
Type:                      [common]
Site:                       [cycle]
Security:                 [7]
State:                     [Off]


Точки проверки на выполнения скриптов с типом common
cycle - наиболее общая выполняется при каждом пробеге главного цикла
tick - на каждом тике перед апдейтом погоды, чаров, объектов, наказаний, квестов балгоровских, комнат, лимитов, проверки ренегатов, проверки на левел ап или даун чаров
start - при старте Аладона сразу после загрузок рынка, шаблонов скриптов, наказания и прочая.


Ну как-то так.


--------------------
Кодерус Аладонус
PMEmail PosterUsers Website
Top
Калевала
Отправлено: Oct 29 2012, 23:08
Quote Post


Хозяин Хелльстада
******

Группа: Администраторы
Сообщений: 1893
Пользователь №: 55
Регистрация: 15-April 04



Добавлена точка - fdam
Точка проверки на выполнение скриптов находится в функции damage после всех подсчетов дамага наносимого персонажем или мобом в бою на каждый удар. Получить величину дамага можно через поле .damage (новое поле) у персонажа/моба. И так же ее можно установить обратно то есть:

CODE

local test=ch.damage
ch.damage=test+10


Кроме этого при запуске скрипта инициализируется два объекта (игрока.моба)

ch - тот кто наносит дамаг
vic - тот кто получает дамаг


--------------------
Кодерус Аладонус
PMEmail PosterUsers Website
Top
Калевала
Отправлено: Oct 31 2012, 14:51
Quote Post


Хозяин Хелльстада
******

Группа: Администраторы
Сообщений: 1893
Пользователь №: 55
Регистрация: 15-April 04



Добавлена точка gexp

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

Добавлены поля в объект игрока/моба
gexp - количество опыта получаемого игроком соответствнно:
CODE

local tt=ch.gexp --(получить опыт который игрок получит)
ch.gexp=tt+100 --(накинуть игроку еще 100 опыта сверху, но не более чем макс на левел игрока)


exp
Возвращает количество опыта игрока в текущий момент. А вот с присвоением не все так просто. При присвоении этого поля вызывается функция увеличения опыта для игрока (Аладоновская) в качестве аргумента подается число которое вы присваиваете этому полю ну то есть:
CODE
ch.exp=100

просто прибавит игроку 100 очков опыта, но не установит весь его опыт в 100.


--------------------
Кодерус Аладонус
PMEmail PosterUsers Website
Top
Калевала
Отправлено: Nov 1 2012, 13:18
Quote Post


Хозяин Хелльстада
******

Группа: Администраторы
Сообщений: 1893
Пользователь №: 55
Регистрация: 15-April 04



1. Для работы с простраством скриптов Alua добавлена команда slua она похожа на команду lua, но работает как уже говорилось не в пространстве мобпрогсов а в пространстве скриптов и доступна только для иммов. В скриптах ее использовать само собой нельзя.

2. В объект игрока/моба добавлено поле saves поле доступно только для скриптов (не мобпрогсов) и его можно как прочитать так и установить.

3. Добавлен новый тип шаблонов скриптов command
Этот тип не имеет точек запуска поскольку всегда запускается в одном месте при проверке ввода команды пользователем. Проверка происходит после проверки всех команд аладона, но до проверок на триггер COMMAND.
В шаблон дополнительно нужно ввести имя команды. Делается это через команду comname. Созданная таким образом команда отражается в общем списке команд (для просмотра всех команд - команды) серым цветом. Отображается только если шаблон этой команды включен.
При запуске скрипта инициализируется объект ch - тот кто запустил команды и переменная argument в которой содержатся введенные пользователем аргументы. В шаблоне скрипта не задается с какого уровня команда доступна за это отвечает программист скрипта ну если он вообще хочет ограничивать уровень команды. Это не умение или заклинание, а именно команды.


--------------------
Кодерус Аладонус
PMEmail PosterUsers Website
Top
Калевала
Отправлено: Nov 1 2012, 14:34
Quote Post


Хозяин Хелльстада
******

Группа: Администраторы
Сообщений: 1893
Пользователь №: 55
Регистрация: 15-April 04



Хотелось бы еще добавить, хотя уже и писал, что у нас Alua работает в двух местах. То есть запущены две машины lua - одна для мобпрогсов, вторая для скриптов. Некоторые возможности из машины для мобпрогсов недоступны.


--------------------
Кодерус Аладонус
PMEmail PosterUsers Website
Top
Калевала
Отправлено: Nov 8 2012, 15:28
Quote Post


Хозяин Хелльстада
******

Группа: Администраторы
Сообщений: 1893
Пользователь №: 55
Регистрация: 15-April 04



Добавлено два новых типа шаблонов скриптов skill и spell
Эти два типа предназначены для создания новых умений и заклинаний для игроков при помощи скриптов.

Добавлена новая команда access это аналог команды canwear но применяется к скриптовым скилам и умениям. Процесс создания нового умения или заклинания схож с созданием новой команды, но есть различия. На программиста таких скриптов ложится задача всех проверок и необходимых действий.
Код Аладона лишь проверяет может ли быть запущен скрипт (включен или выключен шаблон скрипта, ограничения поля access (раса/профа). Для удобства программиста при старте скрипта умения(заклинания) добавляется объект игрока/моба ch который запустил скрипт. И две переменные argument - строка аргумента команды.
percent - процент владения умением(заклинанием) данного игрока.
Дальше внутри своегос крипта вы уже сами должны определять сколько вы хотите снять маны/шагов с игрока за умение заклинание, доступность по уровню и.т.д. Определять сработало умение/закл или нет и.т.п. Скриптовые умения и заклинания будут видны игроку по командам "заклинания" или "умения" после строки - Дополнительно:.


--------------------
Кодерус Аладонус
PMEmail PosterUsers Website
Top
Калевала
Отправлено: Nov 9 2012, 15:22
Quote Post


Хозяин Хелльстада
******

Группа: Администраторы
Сообщений: 1893
Пользователь №: 55
Регистрация: 15-April 04



Добавлены функции:
askill_lookup("имя умения или заклинания") - возвращает идентификатор умения написанного на Алуа.

increase_skill(sn,percent,ch) - увеличивает умения или заклинания игрока ну или уменьшает если percent в минус.
Здесь:
sn - номер умения/заклинания Алуа или "старых" умений заклинаний
percent - с плюсом или минусом на сколько уменьшаем,увеличиваем умение.
ch - объект игрока кому увилчиваем или уменьшаем.

Так же при срабатывании скрипта с типами spell и skill кроме переменной percent в Алуа подается константа id - номер умения.
В самом алуа минуя функцию increase_skill можно менять переменную percent при применении умения. Она у того кто вызвал скрипт для вызванного умения по окончании работы скрипта переустановится.


P.S. Походу надо снова за написание документации садиться ((


--------------------
Кодерус Аладонус
PMEmail PosterUsers Website
Top
Калевала
Отправлено: Nov 13 2012, 16:29
Quote Post


Хозяин Хелльстада
******

Группа: Администраторы
Сообщений: 1893
Пользователь №: 55
Регистрация: 15-April 04



Добавлена точка mhit срабатывание в каждый батлтик до функций удара оружием правым и левым


--------------------
Кодерус Аладонус
PMEmail PosterUsers Website
Top
Калевала
Отправлено: Nov 15 2012, 09:39
Quote Post


Хозяин Хелльстада
******

Группа: Администраторы
Сообщений: 1893
Пользователь №: 55
Регистрация: 15-April 04



Изменены и добавлены команды редактора шаблонов sedit

Access заменена на пять команд - race,class,align,clan,level

race - доступ по расе
class - доступ по классу
align - доступ по натуре
level - по уровню
clan - доступно для кланов,неклановых, всех

Так же для описания скриптов добавлена команда desc работает как обычный текстовый редактор. Установка хелпа позволяет смотреть хелп к шаблону с помощью команды ? или help


--------------------
Кодерус Аладонус
PMEmail PosterUsers Website
Top
Калевала
Отправлено: Mar 30 2013, 23:42
Quote Post


Хозяин Хелльстада
******

Группа: Администраторы
Сообщений: 1893
Пользователь №: 55
Регистрация: 15-April 04



Добавлена возможность определить в какой точке сработал данный текущий скрипт с типом COMMON. В скрипт подается глобальный переменная script_site в которой содержится значение точки скрипта. Значение проверять через IS_SET.
В таблицу констант добавлены константы точек соответственно.
CONST.TYPE_SITE_CYCLE
CONST.TYPE_SITE_TICK
CONST.TYPE_SITE_START
CONST.TYPE_SITE_FDAM
CONST.TYPE_SITE_GEXP
CONST.TYPE_SITE_MHIT
CONST.TYPE_SITE_BSKILL
CONST.TYPE_SITE_ASKILL
CONST.TYPE_SITE_KILL
CONST.TYPE_SITE_DEATH


Пример:
if is_set(script_site,CONST.TYPE_SITE_CYCLE) then
echo("Скрипт сработал в точке глобального цикла.",ch.room)
end


--------------------
Кодерус Аладонус
PMEmail PosterUsers Website
Top
Калевала
Отправлено: May 17 2013, 15:57
Quote Post


Хозяин Хелльстада
******

Группа: Администраторы
Сообщений: 1893
Пользователь №: 55
Регистрация: 15-April 04



Добавлены команды в шаблоны скриптов для типов шаблонов -умения,заклинания

youdam - Строка которая выдает игроку когда он выполняет скрипт в бою
somedam - Тоже самое но окружающим
skilltype - тип умения - 0 пассивное 1 активное

примеры:
youdam Твой могучий удар #0 поражает
somedam Могучий удар $n2 #0 поражает разнося череп на куски.

удар дворник

Твой могучий удар *СОКРУШИТЕЛЬНО* поражает дворника

Тем кто в комнате:

Могучий удар Калевалы *СОКРУШИТЕЛЬНО* поражает разнося на куски череп дворника.


--------------------
Кодерус Аладонус
PMEmail PosterUsers Website
Top
Калевала
Отправлено: May 21 2013, 15:15
Quote Post


Хозяин Хелльстада
******

Группа: Администраторы
Сообщений: 1893
Пользователь №: 55
Регистрация: 15-April 04



В редактор шаблонов sedit добавлено поле price. Поле может иметь значение от 0 и выше. Если в шаблоне (действует только для шаблонов заклинаний или умений) установлено это поле в значение больше нуля, то это значит что умение/заклинание докупное за тренировки. Пользователь сможет докупить это умение/заклинание при создании персонажа или по команде приобрести. Если поле установлено в ноль, то умение/заклинание получается персонажем по умолчанию.

Синтаксис:
price <значение>


--------------------
Кодерус Аладонус
PMEmail PosterUsers Website
Top
Калевала
Отправлено: Nov 16 2014, 23:47
Quote Post


Хозяин Хелльстада
******

Группа: Администраторы
Сообщений: 1893
Пользователь №: 55
Регистрация: 15-April 04



Добавлены две новые точки срабатывания скриптов
delaff,addaff

константы для проверок в скриптах
CONST.TYPE_SITE_ADDAFF
CONST.TYPE_SITE_DELAFF

При инициализации и запуске скрипта доступны следующие объекта

aff - собственно объект самого накладываемого или снимаемого эффекта
ch - объект игрока/моба если эффект ставится/снимается на игрока/моба
obj - объект предмета если эффект ставится/снимается на предмет.
room - объект комнаты если эффект ставится/снимается на комнату.
area - объект зоны если эффект ставится/снимается на зону.

Объект aff можно модифицировать изменяя его поля.
Если объекту присвоить значение nil, то эффект не будет наложен.



--------------------
Кодерус Аладонус
PMEmail PosterUsers Website
Top
Калевала
Отправлено: Mar 2 2017, 11:13
Quote Post


Хозяин Хелльстада
******

Группа: Администраторы
Сообщений: 1893
Пользователь №: 55
Регистрация: 15-April 04



Добавлена новая точка срабатывания скриптов.

input - скрипт будет срабатывать при входе персонажа в мир. Срабатывание после всех проверок, загрузок и прочее и прочее.

Константа для проверки внутри скриптов:

CONST.TYPE_SITE_INPUT

Инициализируемые объекты:

ch - объект персонажа.


--------------------
Кодерус Аладонус
PMEmail PosterUsers Website
Top
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Topic Options Reply to this topicStart new topicStart Poll

 



[ Script Execution time: 0.0403 ]   [ 13 queries used ]   [ GZIP включён ]