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



Страницы: (2) [1] 2   ( Перейти к первому непрочитанному сообщению ) Reply to this topicStart new topicStart Poll

> Alua, Новости Alua и обсуждение
Калевала
Отправлено: Sep 13 2012, 12:10
Quote Post


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

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



1. Исправлены баги функций aff_tochar,aff_toobj, aff_toroom,aff_toarea
2. Добавлена функция mobcast. Действие функции аналогично mob cast из OLC
Синтаксис: mobcast("строка заклинания и цель",ch)
ch - исполнитель
CODE

mobcast("благословение "..vic.im,ch)
order("ск благословляю",ch)


Результат:
CODE

ск тест
Ты произносишь: тест
Ты чувствуешь себя праведником.
Пан произносит: благословляю


Функция сделана именно для кастов, по функции order мобы не кастуют.


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


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

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



К нашему Алуа прикручен модуль Pluto. Модуль предназначен для сериализации данных в алуа и последующей загрузки данных из файлов.
Для работы с модулем не требуется его загружать в скриптах и прогсах. То есть конструкция require "pluto" не нужна (да и не работает). Вместо этого реализованы три функции для работы с Плуто.

1. pluto_save. Синтаксис: pluto_save(filename,object). Функция сохраняет полностью object в файл с именем filename

2. pluto_load. Синтаксис: object=pluto_load(filename). Функция загружает
из filename все в object.

3. pluto_delete. Синтаксис: pluto_delete(filename). Функция удаляет файл с указанным именем.

Файлы хранятся в специальной директории. Не сттоит задавать слишком большие имена файлов (максимум 255 символов хотя нафиг такие нужны.) Сервер будет ругаться и писать ошибки. Использовать слэши так же не получится.

В файлы сохраняются любые объекты Алуа: переменные, таблицы, функции, потоки, но соблюдается один принцип - один объект в один файл. Ну естественно никто немешает набить таблицу потоками и функциями и сохранить эту таблицу с последующим восстановлением.

Простой пример использования:
CODE

--Lua
test="Проверка 1"
echo(test,ch.room)
pluto_save("kalevala_data.dat",test)
test="Сохранили"
echo(test,ch.room)
test=pluto_load("kalevala_data.dat")
echo(test,ch.room)
pluto_delete("kalevala_data.dat")



Результат:
CODE

ск тест
Проверка1
Сохранили
Проверка1

В примере переменной присваивается значение "Проверка1" и выводим на экран. Затем сохраняем переменную в файл kalevala_data.dat После этого меняем значение на "Сохранили" выводим на экран. После чего загружаем данные из файла в переменную и опять выводим на экран.
После чего файл удаляем за ненадобностью.



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


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

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



Добавлен для работы новый объект КЛАНЫ.
Так же добавлены две функции для работы с кланами и объект кланов и фукнции доступны только в скриптах, но не в прогсах:
get_clanlist() - возвращает первый объект клана в списке кланов
get_clan(name или id клана) - возвращает первый объект клана в списке кланов

Поля доступные для объекта КЛАН:

id - (get) номер клана
title - (get set) титул клана
name - (get ) имя клана
master - (get) имя клан мастера
desc - (get set) описание клана
date_create - (get) дата создания
depot - (get) первый объект в списке на складе клана дальше получать через next_content

reput - (set get) репутация клана
rating - (set get) рейтинг клана
recall - (set get) если у клана есть своя комната рекола то она будет тут.
cnext - (get) следующий по списку объект клана


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


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

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



Добавлена функция can_see_obj(obj,ch) в Луа

видит ли ch предмет obj в случае если да возвращает true в противном false


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


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

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



Добавлены функции:

know_skill - Узнать знает ли умение персонаж и на сколько процентов. Два варианта использования.

Синтаксис:
know_skill(number,ch) - первым параметром номер умения, вторым объект игрока
know_skill(str,ch) - первым параметром имя умения, вторым объект игрока

get_variable - функция для связи Алуа скриптового и Алуа прогсов. Поскольку это две разные виртуальные машины Луа пространство имен в них не пересекается и функция призвана служить каналом передачи переменных, таблиц, строк если необходимо.
Синтаксис:
local varname=get_variable("имя переменной"). В varname

будет возвращена перменная с именем "имя переменной" из другой виртуальной машины Луа. Если вы вызвали это функцию из прогсов, то получите переменную из пространства скриптов и наоборот.
ВНИМАНИЕ! если вы передаете таблицу и таблица имеет подтаблицы то они не передаются. Реализовать это пока не удалось.


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


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

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



Отлажена наконец-то работа функций set_bit remove_bit is_set

Использование примеры:

Проверка битов:

if(tobj.item_type==CONST.ITEM_WEAPON and is_set(tobj.value4,CONST.WEAPON_TWO_HANDS)) then
echo("У "..vic.rod.." двуручное оружие - "..tobj.im,ch.room)
if(is_set(tobj.value4,CONST.WEAPON_FLAMING)) then
echo("Оружие с флагом флэйминг - "..tobj.im,ch.room)
end
end


Установка бита:

tobj.value4=set_bit(tobj.value4,CONST.WEAPON_TWO_HANDS)

Удаление бита:

tobj.value4=remove_bit(tobj.value4,CONST.WEAPON_TWO_HANDS)


Добавлены следующие константы для флагов оружия:

WEAPON_FLAMING
WEAPON_FROST
WEAPON_VAMPIRIC
WEAPON_SHARP
WEAPON_VORPAL
WEAPON_TWO_HANDS
WEAPON_SHOCKING
WEAPON_POISON
WEAPON_HOLY


--------------------
Кодерус Аладонус
PMEmail PosterUsers Website
Top
Калевала
Отправлено: Jan 29 2013, 14:53
Quote Post


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

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



Добавлена функция damage - наносит дамаг от ch на vic

Синтаксис функции:
damage(ch,vic,dam,dt,dam_type,show)

ch - объект игрока/моба кто наносит дамаг
vic - объкт игрока/моба кто получает дамаг
dam - величина дамага
dt - номер умения каким наносится дамаг (например как будто выпадом если поставить номер выпада) можно просто оставить 0
dam_type - тип наносимого дамага например укол или негатив. Можно оставить 0
show - или 0 не будет видно сообщения или 1 будет видно сообщение.

Функция вызывает системную функцию damage - отсюда вытекает что эта функция не снимает автоматически указанное количестьво в dam количество жизни. В функции идет куча проверок на резисты, иммуны и прочая и прочая, то есть то что проверяется когда вы просто начинаете бой или деретесь в бою.

-------------------------------------------------------------------------------------------------
Добавлены следующие флаги-константы для поля структуры эффектов where
TO_AFFECTS
TO_OBJECT
TO_IMMUNE
TO_RESIST
TO_VULN
TO_WEAPON
TO_DETECTS
TO_PLAYER


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


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

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



Непосредственно в Аладоне реализовано.

Функции

l_setrec(ch,var,varvalue) - устанавливает (или переустанавливает переменную на персонажа)
l_getrec(ch,var) - возвращает занчение переменной на персонаже по ее имени. Возвращает nil если персонажа нет в таблица переменных или если переменная с таким именем неопределена
l_delrec(ch,var) - удаляет указанную переменную с персонажа. Возвращает nil, если нет такого персонажа в таблице переменных или если переменная неопределена.

Где - ch объект игрока, var имя переменной (например: "test"), varvalue - значение переменной (например: "012345") И имя переменной и ее значение задаются в скриптах непосредственно как строки.


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


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

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



Добавлена функции : look
Синтаксис: look(ch,arg) - где ch объект игрока моба, arg аргумент - что смотрим
Примеры:
look(ch,"") - игрок осмотрит текущую комнату
look(ch,"раук") - игрок попытается посмотреть на моба Раук если он есть в комнате
look(ch,"в пояс") - игрок попытается посмотреть в пояс если он у него есть.


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


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

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



Добавлена луашная функция для повышения процентов умения луашных

функция l_check_improve(ch,vic,sn,res,multi,val,name)

Где:
ch - тот у кого пытаемся повысить умение
vic - если в бою или еще как то это цель. Если нет то просто ставим на место vic - ch
sn - номер луашного умения
res - откуда вызов, если при провале умения то ставим false, если при удачном применении то ставим true
multi - модификатор сложности изучения, чем выше тем выше шанс что сработает. Ставится обычно в пределах от 1 до 7,8
val - насколько будет повышено или понижено при удаче либо положительно, либо отрицательно
name - имя умения которое проверяем

отличие от increase_skill в проверках, рэндоме и прочем. Функция схоже с аналогичной в коде.

В случае удачного срабатывания возвращает 1
В случае неудачного срабатываания возвращает 0
В случае неожиданного прерывания возвращает 2


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


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

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



Функция: l_get_char_room(ch,arg)

Ищет в комнате где находится ch моба или персонажа указанного в arg. Поиск идет по количеству букв указанных в arg. То есть ищутся и сравниваются буквы в имени указанные в arg с 1 буквы имени итд.
Если поиск успешный возвращается объект персонажа/моба.
Так же можно задавать номер искомого объекта в комнате, то есть если у нас допустим в комнате 5 мобов то можно задавать arg равным 4.<name mob>

Пример:
Доупустим в комнате 4 командора и нам нужен второй из них
l_get_char_room(ch,"2.ком")


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


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

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



добавлена функция для получения таблиц данных

get_globaltables(const)

Параметр запрашиваемое имя таблицы. Берется из констант. Таблиц пока две - материалы и жидкости.
Константы соответственно: CONST.TABLES_MATERIALS, CONST.TABLES_LIQUIDS

Пример:


CODE

local tdat=get_globaltables(CONST.TABLE_MATERIALS)
for key,value in pairs(tdat) do
   for key2,value2 in pairs(value) do
        echo(key..":"..key2..":"..tostring(value2),ch.room)
end
end



Вывод:

CODE

1:Rusname:неизвестно
1:Name:unknown
1:CanSwim:false
2:Rusname:кислота
2:Name:acid
2:CanSwim:false
3:Rusname:адамантит
3:Name:adamantite
3:CanSwim:false
4:Rusname:воздух
4:Name:air
4:CanSwim:true
5:Rusname:зола, пепел
5:Name:ash
5:CanSwim:false
6:Rusname:бальзам
6:Name:balm
6:CanSwim:true
7:Rusname:бамбук
7:Name:bamboo
7:CanSwim:true


У каждой таблицы свое количество поле. Посмотреть как в примере можно по key2


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


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

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



Для работы с кастомными эффектами на объектах добавлены поля

c1_aff,c1_prog
...................
c5_aff,c5_prog

c1_aff - установка номера эффекта из кастомной таблицы внутри пространства имен олц (не скриптов)
c1_prog - установка номера обрабатывающего прогса.

Поля можно как устанавливать так и получать.


--------------------
Кодерус Аладонус
PMEmail PosterUsers Website
Top
Калевала
Отправлено: Feb 4 2015, 13:00
Quote Post


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

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



Добавлены следующие функции:

send_tochar(string,ch) - функция отправляет сообщение персонажу указанному в аргументе. Сообщение посылается даже спящему. Функция не отрабатывается триггерами и прочим. Просто сообщение.

string.lower2(string),string.upper2(string) - функции переводят аргумент в верхний или нижний регистр.
За функции спасибо Фазеусу.


--------------------
Кодерус Аладонус
PMEmail PosterUsers Website
Top
Калевала
Отправлено: Feb 19 2016, 09:38
Quote Post


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

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



Кхм, забыл вписать.

Поле morph объекта ch будет возвращать оригинальный объект игрока или моба, если он находится под морфизацией, если нет, то будет возвращен nil.

На уровне кода установлен запрет на перемещение игрока средствами lua или mobprogs из комнаты известной как "Хранилище душ". :blink: :D


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

Topic Options Страницы: (2) [1] 2  Reply to this topicStart new topicStart Poll

 



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