Пользователей: 0
Гостей: 1004
Всего: 1004

» Подробно
» Сегодня

Привет, гость!









Автор Сообщение
djslavikoz
    
Посты: 123
Откуда:
Возраст: 41
08-05-2010 16:52 GMT3 час. #1243517   
Artos . Я хочу что бы при переходе с локеции в локацию происходил спавн . ЧТо для етого нужно сделать. Как приписать спавн к речи я понял. А вот на локацию незнаю


1. Вы сейчас в интернете
2. Вы на сайте stalker-portal
3. Вы читаете
5. Вы не заметили, что отсутствует пункт 4
6. Вы это проверили
7. Вы улыбаетесь
8. Поставь себе в подпись и нас будет больше
Artos
    
Посты: 4176
Откуда:
Возраст: 65
08-05-2010 16:59 GMT3 час. #1243521   
karavan
Не люблю и не занимаюсь ответами на обобщенные вопросы.
Метод удаления объекта из игры один: release()
Однако под 'удалением объекта' можно очень многое подразумевать.
Отправил объект в оффлайн - подобно удалению.
Перенес из одной позицию в другую, недоступную/невидимую игроку - тоже 'как удалил'.
'Съел' ту же аптечку/консерву - за тебя сам движек удалит объект из игры.
...

Насчет 'подрыва':
Подрываться должно в пределах всей локации, т.к.
"local boom_obj = level.object_by_id(v)" - дает объект (бомбу) в пределах локации.
Ну а то, что ты говоришь:"... только в пределах определенного радиуса ..." - вероятно относится к подрывам неписей.
Ну так сам подумай и вспомни о таком параметре он-лайна, как "switch_distance" - все неписи (как правило), что за пределами этого радиуса относительно ГГ 'уходят' в офф-лайн и не обрабатываются онлайновыми методами. Вот и не 'чувствуют' они и/или бомба, что 'кто-то рядом' ...


djslavikoz
Повторяю, задавай вопрос так, чтобы его можно было бы однозначно трактовать!
Уже ответил, что спавн НЕВОЗМОЖЕН в процессе перехода! Игра в это время 'уже сохранила' прежнее состояние и готовит новое, на новой локации.
Если же ты спрашиваешь о спавне объектов в момент старта игры на локации сразу после перехода - то иное дело. Да и собственно в чем загвоздка? Определил, что стартовавшая локация - 'новая' - спавни ...

P.S. Есть такая удобная функция utils.level_changing(), к которой есть и комментарий. Взгляни, может это то, что тебе потребно ... Это собственно момент, когда начинается процесс сохранения игры, а ГГ вроде как уже 'на другой' локации. Вот только спавнить чего-либо в это время я оч. не советовал бы.

Дублирование своих постов/вопросов по разным топикам - нарушение правил портала!

отредактировал(а) Artos: 08-05-2010 17:33 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
08-05-2010 17:13 GMT3 час. #1243529   
djslavikoz
вот пример - активация функций происходит только при загрузке указанной локации - "кордон".
function activate()
if (level.name() == "l01_escape" and
not has_alife_info("activate")) then --проверка на поршень - для чего читай ниже
далее указываешь имя нужной функции которую нужно вызвать
--this.uny_spawn_1()
--script_spawn.uny_spawn_2()
--script_spawn.uny_spawn_3()
--this.flag_on()
--xr_effects.npc_suicide()
test_zones.spawn_restrictor()
test_zones.spawn_obj_1()
--this.activate_anom()
--this.spawn_trup()
--this.all_secrets()
--this.name_secret()
выдача поршня необходима чтобы активация сработала только один раз - если же предполагается бесконечный вызов функции тогда поршень не нужен.
db.actor:give_info_portion("activate")
end
end

саму функцию activate() на апдейт в bind_stalker


Artos
Не спорю. Но что под рукой оказалось - то и дал. Прочее сложнее объяснять.
да и от вызова десятка другого функций из биндера - вряд ли много вреда.

отредактировал(а) erlik: 08-05-2010 18:16 GMT3 час.

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Artos
    
Посты: 4176
Откуда:
Возраст: 65
08-05-2010 17:18 GMT3 час. #1243532   
erlik
Обвешивать биндер различными подобными (да и иными) мелочевками - ИМХО дурной тон. Именно из-за этого 'солянки' через какое-то время начинают лагать.
Достаточно где-то запоминать текущую локацию (имя иль индекс) и при старте игры сравнивать запомненное значение со 'стартовавшим'. При их несоответствии - факт 'перехода/смены локации'!
Подобное реализовано в том же АМК моде, например.


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
TYOPA
    
Посты: 129
Откуда:
Возраст: 27
08-05-2010 19:00 GMT3 час. #1243607   
Как убрать из x18 и x16 всех мутантов и аномалии.


S.T.A.L.K.E.R. Secret of the Zone: Gunslinger's Story. Prologue - разработка.
Artos
    
Посты: 4176
Откуда:
Возраст: 65
08-05-2010 19:03 GMT3 час. #1243608   
erlik
Не согласен насчен "невредности".
Вред хотя бы в том, что новичек начинает пичкать биндер всем что придет ему в голову, даже не задумываясь об уместности применять/вызывать именно в этом месте. А "научившись" делать это 'без вылетов' - передает такой "опыт" дальше ...
Обрабатывать однократное событие в месте, которое предназначено для постоянного апдейта - как уже выразился, дурной тон (ИМХО).
Может и не приносят 'вреда' многочисленные мелкие вызовы сторонних функций, но(!) функция функции рознь и даже одна, к примеру, if i=0,65535 do local obj = alife():object(i) ... end - может такие лаги внести в игру, что мало вреда не покажется.

Не всегда 'первое попавшее под руку' стОит тиражировать ...



TYOPA
Довольно просто (в первом приближении): пишешь функцию, которая сканирует объекты в игре и определив, что это мутант иль аномалия, находящиеся на x18 или x16 - удаляет объект.
(только не нужно задавать далее прописные вопросы типа:"Как сканировать?" и т.п. - читай топик, изучай скрипты в игре).

отредактировал(а) Artos: 08-05-2010 19:16 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
Germess
    
Посты: 145
Откуда: Temirtau
Возраст: 30
08-05-2010 19:33 GMT3 час. #1243632   
Люди, подкиньте пожалуйста функцию,
чтобы при наличие оружия ( определеннго ) в слоте, выдавалось сообщение на экран.


МАГАЗИНЧИК Гермеса в моем журнале - оружие на выбор!
Artos
    
Посты: 4176
Откуда:
Возраст: 65
08-05-2010 19:46 GMT3 час. #1243643   

Germess : подкиньте пожалуйста функцию,
чтобы при наличие оружия ( определеннго ) в слоте, выдавалось сообщение на экран

В просьбе недостаточно данных.
- оружием могут обладать ГГ и неписи. Ты о ком?
- оружейных слотов НЕодин. Ты о каком?
- под '**50016ea8aab1bb10eeba**tem_in_slot(2)
if item then --/ в 'автоматном' слоте есть предмет
if isWeapon(item) then --/ предмет является оружием
if item:section() == sWeaponName then --/ секция/имя совпадает с заданной
news_manager.send_tip( db.actor, "У ГГ есть оружие", 0, nil, 10000 )
end
end
end
end
[/code]

отредактировал(а) Artos: 08-05-2010 20:03 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
Gun12
    
Посты: 773
Откуда: СССР
Возраст: 52
08-05-2010 20:22 GMT3 час. #1243669   

# karavan :
Artos Спасибо. :-) А какие еще методы существуют для удаления обьектов? Я только встречал alife():release

Коварный метод. Я на него попался один раз. Вроде удалил объект, но после перезагрузки объект снова появился. Не хочу пока выяснять как, хоть уже вроде понял (изолировал и без этого). Так что нужно 100 раз подумать и 101 раз проверить. Не всё так правильно работает как хочется.
Artos
Ту часть иронии, которую Вы вложили в вышеизложенный ответ, вряд ли поймут. Тем не менее я поддерживаю Вас в стремлении "наставить на путь истинный" грешных обывателей :-)

отредактировал(а) Gun12: 08-05-2010 20:33 GMT3 час.

Не стань номинантом премии Дарвина.
FLIKER
    
Посты: 1047
Откуда: Краснодар
Возраст: 30
08-05-2010 20:36 GMT3 час. #1243679   
Кто нибудь извините нубский вопрос..
Подскажите через какой скрипт активировать динамисекие аномалии?..


Artos
    
Посты: 4176
Откуда:
Возраст: 65
08-05-2010 20:39 GMT3 час. #1243682   
Gun12
Именно поэтому на предыдущей странице в ответе karavan'у дал приписку:

Однако не всегда процесс удаления прост, порой приходится учитывать различные условия, снимать коллбэки и пр. ...
Удаляя серверный объект, нужно отдавать себе отчет в том, что его удаление НЕ влечет за собою автоматическое и мгновенное удаление клиентского объекта. Различные побочные эффекты (звуки, партиклы и т.п.) также пытаются 'отрабатываться' на удаленном объекте.
Удаление аномалии вообще оч.непростой вопрос и некорректное удаление может приводить и к фатальным ошибкам в игре и к битым сэйвам.
release() - работает правильно, но правильно ли его применять?

"Семь раз отмерь - один отрежь!" - вот правильное правило для удаления объекта.

P.S. R сожалению понимаю, что заморачиваться над вроде как простой операцией удаления, да еще тогда, когда она работает почти всегда на 100% без каких либо заморочек, многие новички не хотят. Но(!) когда именно это 'почти' коснется их конкретно и будет не давать покоя, тогда ... придется многое из уже наработанного переписывать.
Жаль, что такое понимание как правило приходит 'после', а не 'до'. Учиться на чужих ошибках, если эти 'чужие' еще и читать/понимать нужно - не все хотят ...


FLIKER
Ты уже неоднократно задаешь этот вопрос, но так и не можешь сформулировать его так, чтобы на него можно было бы и захотелось(!) ответить.
Что значит активировать дин. иль другие аномалии? Чтобы заработал скрипт, который отвечает за их (ре)спавн?
Уже давал тебе ответ, скрипт называется так, как в соответствующем моде его назвал автор мода.
Например, amk_anoms.script - в АМК моде.

отредактировал(а) Artos: 08-05-2010 20:51 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
snajper1010
    
Посты: 3
Откуда: Riga
Возраст:
08-05-2010 21:11 GMT3 час. #1243694   
Expression : res!=-1
Function : get_rank
File : E:\stalker\patch_1_0004\xr_3da\xrGame\ui\Restrictions.cpp
Line : 34
Description : cannot find rank for
Arguments : wpn_tt33_sk1

Данный лог возникает при добавлении нового ствола, после раздачи его ботам.Вроде везде прописал,где я ошибся?


Gun12
    
Посты: 773
Откуда: СССР
Возраст: 52
08-05-2010 21:18 GMT3 час. #1243699   

# Artos :

FLIKER
...но так и не можешь сформулировать его так, чтобы на него можно было бы и захотелось(!) ответить.


Вот краеугольный камень всех новичков.
Можно задать "простой" (по мнению ГУРУ) вопрос, но так, что на него ХОЧЕТСЯ (читать, - "ИНТЕРЕСНО") ответить.
А можно задать заслуживающий интереса всех вопрос так, что на него получишь только "по морде".
Так что читайте литературу. И учитесь у классиков "захватывать умы" слушателей.


Не стань номинантом премии Дарвина.
karavan
    
Посты: 940
Откуда:
Возраст:
08-05-2010 21:54 GMT3 час. #1243714   
Подскажите пожалуйста есть ли возможность заспавнить обьект на месте удаленного?
Что я имею ввиду. Вот скажем есть такой код:


local ids = {}

function spawn_test()
local pos = db.actor:position()
local dir = db.actor:direction()
pos = pos:add(dir:mul(5))
local objbomb = alife():create("af_fireball1", pos, db.actor:level_vertex_id(), db.actor:game_vertex_id())
table.insert(ids, objbomb.id)
end

--Затем удаляем обьект

function delete_test()
for k,v in pairs(ids) do
local obj = alife():object(v)
if obj then
alife():release(obj , true)
end
end
end



А вот после этого спавнить второй обьект на месте первого.
Вот мне интерестно стало возможно ли произвести так сказать подмену одного обьекта другим?
Сохраняется ли координата первого обьекта в таблицу или это вовсе и ненужно т.к. сохраняется его айди и этого достаточно.
Я только пока не пойму как это будет выглядить ввиде функции...


Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
Artos
    
Посты: 4176
Откуда:
Возраст: 65
08-05-2010 22:20 GMT3 час. #1243728   
karavan
Способ программирования 'методом тыка' порочен. Можно конечно сэкономить какое-то время пытаясь 'знакомые' куски применять там-сям, но в конечном итоге создать чего-то стОящего вряд ли удастся, а времени угробишь немеряно.
Вначале советую разобрат**50056ea8aab1bb10eeba**

отредактировал(а) Artos: 08-05-2010 22:53 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
Gun12
    
Посты: 773
Откуда: СССР
Возраст: 52
08-05-2010 22:26 GMT3 час. #1243731   
karavan , ну сам подумай. Как может сохраниться координата, если ты как минимум не писал её в таблицу, а как максимум не записывал через пакет.
Ты сохраняещь в локальной(!) таблице (без сохранения) некий ID, который при методе release на данный момент сработает, а при следующем апдейте (я не считаю сохранения и загрузки) выдаст NIL.
(Хотя не уверен уводится ли объект в оффлайн, тогда при соответсвующих методах будет доступен, либо удаляется совсем на следующем апдейте???Знающие люди, поясните пожалуйста.

Ой, опоздал.Artos ответил. Ну ладно. Пусть будет.


Не стань номинантом премии Дарвина.
karavan
    
Посты: 940
Откуда:
Возраст:
08-05-2010 23:15 GMT3 час. #1243746   
Artos И всетаки я непойму как потом извлекать из таблицы данные по координатам обьекта. И как их прописать в функции.
И еще мне непонятно в твоем примере имеется ввиду координата обьекта недвижемого, а если необходимо подменить обьект, который двигается (тот же артефакт), то таблица сохранит его текущую координату для того что бы заспавнить обьект-2 практически мгновенно.

Вот скажем такой пример: Был на земле артефакт, а я хочу его заменить на бомбу но с вижуалом арта. Артефакт прыгает и меняет координату, а бомба нет. Как это сделать?


Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
Artos
    
Посты: 4176
Откуда:
Возраст: 65
09-05-2010 00:01 GMT3 час. #1243764   
karavan
Старайся избегать в вопросах многовариантности, если нет на то особых причин требований. Все же обработка/описание для 'нескольких' вариантов отлична от 'единственного'.
Даже простое твое "Был на земле артефакт" - можно трактовать как угодно. Мне следует сканировать всю иг

отредактировал(а) Artos: 09-05-2010 00:24 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
karavan
    
Посты: 940
Откуда:
Возраст:
09-05-2010 00:26 GMT3 час. #1243768   
Artos Спасибо. :)

У меня по ходу разбора пример**50126ea8aab1bb10eeba**de]pos = pos:add(dir:mul(5))[/code]
Есть ли какой-то метод позволяющий спавнить от земли на высоте например 3-х метров?

И еще давно хотел спросить: есть метод vector_rotate_y, который как я понимаю спавнит в пределах заданого радиуса от вектора "y" - высоты, а как правельно задать вектор по оси "x" и "z"?

Вот пример где я использовал vector_rotate_y:
function actor_spawn_af_0()
local radius = 10 -- радиус спавна от ГГ
local ang = math.random(360)
local dir = vector_rotate_y(db.actor:direction(),ang)
local obj = alife():create(af[math.random(27)],db.actor:position():add( dir:mul(radius)),db.actor:level_vertex_id(),db.actor:game_vertex_id())
end

отредактировал(а) karavan: 09-05-2010 00:36 GMT3 час.

Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
Artos
    
Посты: 4176
Откуда:
Возраст: 65
09-05-2010 00:47 GMT3 час. #1243781   
karavan
Опять не очень внятный вопрос (тем более на ночь глядя) ...
Как я понял, тебе нужно не столь заспавнить над поверхностью, сколь 'подвесить' над ней?
Спавнить 'над' можно разными способами (все одно 'упадет вниз'), точнее он один, вариации только в применяемых уже готовых способов. Суть их одна, берется позиция объекта и изменяя координату по 'y' вычисляется новая позиция, куда и спавнится. В случае спавна предметов задавать им направления бессмысленно.
В твоем варианте мне так и непонятно твое желание спавнить бомбу в некоей позиции отличной от прежней (или взятой), варьируя координаты относительно направления камеры. Ну да не суть ...

Ну а подвесить объект, тут только влезать в нет-пакеты и варьировать параметром 'флаг объекта'.

Прим: Вектора по осям НЕ задаются, т.к. оси (координаты по осям) являются параметрами вектора. Поэтому корректнее: "Как задать координаты вектора по осям x, z?"

"Правильно заданный вопрос имеет в себе 50% ответа"


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
karavan
    
Посты: 940
Откуда:
Возраст:
09-05-2010 01:23 GMT3 час. #1243825   
Artos Есть фун**50016ea8aab1bb10eeba**me_vertex_id())
end[/code]

Нужно что бы обьекты спавнились в радиусе от ГГ, но не на земле, а на высоте (пусть будет высота 5 метров)? Как исправить функцию? :ye)


Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
Artos
    
Посты: 4176
Откуда:
Возраст: 65
09-05-2010 01:55 GMT3 час. #1243869   
karavan
Я бы сдел**50016ea8aab1bb10eeba**pos, db.actor:level_vertex_id(), db.actor:game_vertex_id() )
end[/code]т.о. у тебя будут спавниться артефакты вокруг ГГ (с заданным радиусом) и все на высоте 5м.
Заметь, твои условия полностью выполнены: спавнятся в радиусе и не на земле.
Однако, как уже писал выше, толку, что ты их спавнишь на высоте?! Все одно, они 'попадают' вниз, если их не 'подвесить'.
А чтобы 'подвесить, нужно после спавна считать нет-пакет объекта и изменить там:
Table_Net_Packet.object_flags = bit_not(193)'
после чего записать обновленный пакет.

(исчезаю, возможно до завтра)


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
karavan
    
Посты: 940
Откуда:
Возраст:
09-05-2010 02:08 GMT3 час. #1243878   
Artos Благодарю. :-)


Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
Germess
    
Посты: 145
Откуда: Temirtau
Возраст: 30
09-05-2010 07:14 GMT3 час. #1243939   
Artos Мда, фразировка вопроса действительно непонятная.Но эта функция мне вполне подходит:

function I_have_weapon(sWeaponName)
local item = db.actor and db.actor:item_in_slot(2)
if item then --/ в 'автоматном' слоте есть предмет
if isWeapon(item) then --/ предмет является оружием
if item:section() == sWeaponName then --/ секция/имя совпадает с заданной
news_manager.send_tip( db.actor, "У ГГ есть оружие", 0, nil, 10000 )
end
end
end
end


Большое спасибо, постораюсь в последствии более точно формулировать свой вопрос.&P


МАГАЗИНЧИК Гермеса в моем журнале - оружие на выбор!
Psychologist
    
Посты: 1806
Откуда: Челябинск
Возраст: 28
09-05-2010 08:25 GMT3 час. #1243970   
snajper1010
Лог сообщает, что не может найти ранг для оружия.
Похоже, что ты не прописал его в файле mp_rank.


И все мы ждем чего-то. Работа - дом - работа ©
Mehanik Yar
    
Посты: 469
Откуда: Уфа
Возраст:
09-05-2010 11:30 GMT3 час. #1244033   
Всем Привет!
Вобщем такой вопрос. Для ТЧ есть 10 новых лок, хотел на Госпиталь и Лиманск потсавить их родную фоновую музыку из ЧН. Нашел файл где прописаны темы, в каждой теме определенное количество треков, 2-3 штуки (хотя на локациях почему то играет только 1 трек). Но дело в том, что там не указывается сам звуковой файл. Наример
[l11_pripyat_musics]
music\amb07 = 6, 22, 0.2, 20, 40
music\amb17 = 22, 6, 0.2, 20, 40
В папке же есть два файла amb07_l.ogg и amb07_r.ogg
Подскажите где надо прописать новую музыку, чтобы я смог потом сделать что то вроде того..

[k03_limansk_musics]
music\limansk = 6, 22, 0.2, 20, 40
Если даже и есть тот файл limansk_l.ogg и limansk_r.ogg , то игра вылетает при практически уже полной загрузки. Если прописать до этого существующий, любой amb, то все норамльно.


ВЕРЕС14
    
Посты: 362
Откуда: Калуга
Возраст: 29
09-05-2010 12:17 GMT3 час. #1244062   
Expression : ai().level_graph().valid_vertex_id(vertex->data().level_vertex_id())
Function : CPatrolPathManager::select_point
File : E:\stalker\patch_1_0004\xr_3da\xrGame\patrol_path_manager.cpp
Line : 164
Description : patrol path[mil_freedom_camp_walk3], point on path [wp00],object [abc_fre_respawn_436950]

Люди из-за чего вылет??? У меня мод ABC+AMK+SRP++v3.0rc2


Не говори что мне делать, и я не скажу куда тебе идти! (с)
blackraven6
    
Посты: 624
Откуда: СПб
Возраст: 32
09-05-2010 13:10 GMT3 час. #1244094   
ВЕРЕС14 Проблема с путем патруля mil_freedom_camp_walk3 видмо какой-то конфликт функций. Что-то про спавн из АВС abc_fre_respawn_436950 на точке wp00.

добавлено спустя 3 минут

Mehanik Yar Ну.... :prankster: Просто... Люди вы когда что-то делать хотите прочитай те хоть что-то. один файл это левый канал, второй - левый.

отредактировал(а) blackraven6: 09-05-2010 13:14 GMT3 час.


Журнал
- модель M79
- модель HK SL-8
- модель Milkor m32 WIP
ВЕРЕС14
    
Посты: 362
Откуда: Калуга
Возраст: 29
09-05-2010 13:16 GMT3 час. #1244098   
blackraven6 Спасибо, я как раз разобрался с патрулём. И ещё, ты разбераешся в этом моде?


Не говори что мне делать, и я не скажу куда тебе идти! (с)
blackraven6
    
Посты: 624
Откуда: СПб
Возраст: 32
09-05-2010 13:19 GMT3 час. #1244100   
ВЕРЕС14 Я в него не играл.



Журнал
- модель M79
- модель HK SL-8
- модель Milkor m32 WIP


Форумы Архив » Свалка Вопросы и ответы (по 05.06.10)


Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для
просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.

Использование материалов сайта возможно с разрешения администрации. Все права защищены. © 2004–2025 «Stalker-Portal.ru»