Город Мастеров
IPB

Здравствуйте, гость ( Вход | Регистрация )

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 31 32 33 34 35 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Friedrich
сообщение Feb 28 2005, 21:41
Сообщение #791


Level 5
**

Класс: Рейнджер
Характер: Neutral Good
Раса: Человек



А какя разница, когда накладывается пеналти, когда игрок умер, или когда его воскресили? Резултат ведь одинаковый - игрок воскресает получив штраф.

Иначе, нужно переписывать скрипты спелов райз дед (и чего там еще).
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение Feb 28 2005, 21:50
Сообщение #792


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



QUOTE
Иначе, нужно переписывать скрипты спелов райз дед

Вот мне ето как раз и нужно!
Кстати вот ты говоришь про то что лучше снять экспу при смерти игрока, но дело упирается в том что у меня нет этого куска скрипта! не просто -300 хр а 300 за 10 левелов = 3к.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Friedrich
сообщение Feb 28 2005, 22:11
Сообщение #793


Level 5
**

Класс: Рейнджер
Характер: Neutral Good
Раса: Человек



Скрипты спеллов, если кто не знает (сам долго не знал) называются nw_s0_* или x*_s0_*. По их названию, в общем, понятно, что за спел.

Кроме-того, биоварами во втором аддоне реализована некая Spell Hook System, позволяющая изменть действия спелов, не переписывая исходные скрипты. Об этом есть инфа в последих релизах "Лексикона":
Home > Lyceum > Tutorial > Advanced Scripting > Lilac Soul - Spell-Hooking
(Как этим пользоваться не знаю - не копался).

QUOTE
Кстати вот ты говоришь про то что лучше снять экспу при смерти игрока, но дело упирается в том что у меня нет этого куска скрипта! не просто -300 хр а 300 за 10 левелов = 3к.

Ага, говорю.
Не понял про какой кусок какого скрипта идет речь. Ичто значит "300 за 10 левелов = 3к", т.е. 300 ХП за каждый левел.
Neverwinter Script Source
//...
int nPenalty = GetHitDice(oPC)*300;
SetXP(GetXP(oPC)-nPenalty);
//...

Еще посмотри, как это дефолтном в onRespawn сделано (там еще добавлена проверка, чтобы игрок не мог потерять уровень).
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
BIK-M@K
сообщение Mar 1 2005, 06:43
Сообщение #794


Level 1


Класс: Обыватель
Характер: Lawful Good
Раса: Человек



дайте скрипт на уничтожение пк
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nokoll
сообщение Mar 1 2005, 06:47
Сообщение #795


Level 10
Иконки Групп

Класс: Волшебник
Характер: Neutral Evil
Раса: Человек



BIK-M@K
Привет :D
У новичок какойто вопрос непонятный уничтожение 8( 8( ПК как так ну как Хочеш
набери DestoriObject!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
BIK-M@K
сообщение Mar 1 2005, 06:47
Сообщение #796


Level 1


Класс: Обыватель
Характер: Lawful Good
Раса: Человек



спасибо
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nokoll
сообщение Mar 1 2005, 06:49
Сообщение #797


Level 10
Иконки Групп

Класс: Волшебник
Характер: Neutral Evil
Раса: Человек



У да ты сдесь прям ну сразу знай болтать сдесь нельзя! :nono:
Добавлено в [mergetime]1109649177[/mergetime]
QUOTE
Ноколл,
если скрипт на триггере, то он будет срабатывать многократно, как только на него наступит какой-нибудь НПС.

Добавь
object oPC = GetEnteringObject();
if (!GetIsPC(oPC)) return;

И вешай локалку (или стирай триггер), чтобы скрипт запускался только один раз.
Глубже копать твои скрипты вряд ли кто-нибудь отважится.


Скрипт Мой Ставится на онЭнтер Локацыи!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение Mar 2 2005, 11:54
Сообщение #798


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



Требуется сделать проверку, есть ли предмет oHoly в левой руке игрока. Если предмета в руке нет, то скрипт не выполняется.

Neverwinter Script Source
object oPC = GetLastSpellCaster();
    object oHoly = GetObjectByTag("cleric_symbol");
    if (!GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC))
    {

     return;

    }

Я конечно понимаю, что вот то, что вверху, все неправильно, но хотелось представить все хоть какие то результаты моей деятельности...
Помогите довести проверку до ума :shout:

Сообщение отредактировал Лито - Mar 2 2005, 11:55
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lexey aka Hawk
сообщение Mar 2 2005, 12:42
Сообщение #799


Level 6
Иконки Групп

Класс: Фея
Характер: Chaotic Good
Раса: Элементаль
NWN: Маппинг
Gem of the North



QUOTE (Лито @ Mar 2 2005, 11:54)
Требуется сделать проверку, есть ли предмет oHoly в левой руке игрока. Если предмета в руке нет, то скрипт не выполняется.

Neverwinter Script Source
object oPC = GetLastSpellCaster();
    object oHoly = GetObjectByTag("cleric_symbol");
    if (!GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC))
    {

     return;

    }

Я конечно понимаю, что вот то, что вверху, все неправильно, но хотелось представить все хоть какие то результаты моей деятельности...
Помогите довести проверку до ума :shout:

Ну попробуем.

Neverwinter Script Source
void main()
{
    object oPC = GetLastSpellCaster();
    object oHoly = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC);

    if (GetTag(oHoly) != "cleric_symbol") return;

}

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение Mar 2 2005, 12:52
Сообщение #800


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



Lexey aka Hawk Большое спасибо. Делаю это под вдохновлением системы на Геме. Насколько я помню там для того чтобы кастовать клирикам нужен как раз такой символ.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lexey aka Hawk
сообщение Mar 2 2005, 13:14
Сообщение #801


Level 6
Иконки Групп

Класс: Фея
Характер: Chaotic Good
Раса: Элементаль
NWN: Маппинг
Gem of the North



Сейчас посмотрю как у нас на Геме это было написано.

Neverwinter Script Source
int TestDivineFocus( object oTarget, int nClass )
{
    int bResult = TRUE; // Bard also affected, and some classes too
    if (nClass == CLASS_TYPE_CLERIC )
  {
        // Используем стандартный символ до установки полной поддержки системы Diety
        object oSymbol = GetItemInSlot( INVENTORY_SLOT_LEFTHAND, oTarget );
        bResult = GetTag(oSymbol) == "cleric_symbol";
    }
    else if( nClass == CLASS_TYPE_DRUID )
    {
        // Символ друида может просто лежать в рюкзаке чара
        object oSymbol = GetItemPossessedBy( oTarget, "druid_symbol" );
        bResult = GetIsObjectValid( oSymbol );
    }
    else if( nClass == CLASS_TYPE_PALADIN )
    {
        // Используем стандартный символ до установки полной поддержки системы Diety
        object oSymbol = GetItemInSlot( INVENTORY_SLOT_LEFTHAND, oTarget );
        bResult = GetTag(oSymbol) == "cleric_symbol";
    }
    else if( nClass == CLASS_TYPE_RANGER )
  {
        object oSymbol = GetItemPossessedBy( oTarget, "druid_symbol" );
        bResult = GetIsObjectValid( oSymbol );
    }

    return bResult;
}


Сообщение отредактировал Lexey aka Hawk - Mar 2 2005, 13:14
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение Mar 2 2005, 13:22
Сообщение #802


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



Жутко ступил :D спасибо Lexey

Сообщение отредактировал Лито - Mar 2 2005, 13:40
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
bloodwheel
сообщение Mar 2 2005, 13:38
Сообщение #803


Level 2
*

Класс: Ниндзя
Характер: Neutral Evil
Раса: Человек



Народ, хелпните, проблема такая:
Ставлю скрип, чтоб нпс после квеста выдал кастомную шмотку - неработает. (CreateItemOnObject)
ставлю в тот же скрипт стандартную шмотку - работает.
ставлю кастомную шмотку, взятую из другого модуля -работает.
ставлю свой кастом - опять не работает.
В чем может быть дело?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение Mar 2 2005, 13:41
Сообщение #804


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



Напиши скрипт. Напомню что в CreateItemOnObject указывается не тэг предмета, а ResRef
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Mar 2 2005, 15:43
Сообщение #805


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



QUOTE (bloodwheel @ Mar 2 2005, 16:38)
Ставлю скрип, чтоб нпс после квеста выдал кастомную шмотку - неработает. (CreateItemOnObject)

Во первых, CreateItemOnObject СОЗДАТЬ итем в инвентаре объекта. Ясно? Ты его создаешь. Он должен быть в твоей палитре. Следовательно ...
QUOTE (bloodwheel @ Mar 2 2005, 16:38)
ставлю свой кастом - опять не работает.

Твой кастом в синьку вбит? Или он валяется в чулане? К тому же, покапайся, скриптов на создание шмотки тут тонна уже приводилась.
Neverwinter Script Source
void main()
{   
  object oPC = GetEnteringObject();
            CreateItemOnObject("ResRef", oPC, 1);
            // Создаем предметы. ResRef, у кого,
            // количкство в стеке (например стрел 30)
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение Mar 2 2005, 17:58
Сообщение #806


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



Решил я сделать компонентную магию, подредактировал скриптик файрболла. Все работает отлично, за одним исключением...Когда файрболл кастует ДМ, от него тоже требуют наличие компонента! :D Как сделать так, чтобы от ДМ не требовали этого самого компонента.
Вот собственно скрипт:
Neverwinter Script Source
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"

void main()
{

/*
  Spellcast Hook Code
  Added 2003-06-20 by Georg
  If you want to make changes to all spells,
  check x2_inc_spellhook.nss to find out more

*/


    if (!X2PreSpellCastCode())
    {
    // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
        return;
    }
    object oCaster = OBJECT_SELF;
    if (HasItem(oCaster,"bottle_fire")==FALSE)
    {
    ActionSpeakString("У вас нет необходимых компонентов!", TALKVOLUME_SHOUT);
    return;
    }


// End of Spell Cast Hook


    //Declare major variables

    int nCasterLvl = GetCasterLevel(oCaster);
    int nMetaMagic = GetMetaMagicFeat();
    int nDamage;
    float fDelay;
    effect eExplode = EffectVisualEffect(VFX_FNF_FIREBALL);
    effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
    effect eDam;
    //Get the spell target location as opposed to the spell target.
    location lTarget = GetSpellTargetLocation();
    //Limit Caster level for the purposes of damage
    if (nCasterLvl > 10)
    {
        nCasterLvl = 10;
    }
    //Apply the fireball explosion at the location captured above.
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget);
    //Declare the spell shape, size and the location.  Capture the first target object in the shape.
    object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
    //Cycle through the targets within the spell shape until an invalid object is captured.
    while (GetIsObjectValid(oTarget))
    {
        if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
        {
            if((GetSpellId() == 341) || GetSpellId() == 58)
            {
                //Fire cast spell at event for the specified target
                SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_FIREBALL));
                //Get the distance between the explosion and the target to calculate delay
                fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20;
                if (!MyResistSpell(OBJECT_SELF, oTarget, fDelay))
                {
                    //Roll damage for each target
                    nDamage = d6(nCasterLvl);
                    //Resolve metamagic
                    if (nMetaMagic == METAMAGIC_MAXIMIZE)
                    {
                        nDamage = 6 * nCasterLvl;
                    }
                    else if (nMetaMagic == METAMAGIC_EMPOWER)
                    {
                      nDamage = nDamage + nDamage / 2;
                    }
                    //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
                    nDamage = GetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_FIRE);
                    //Set the damage effect
                    eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
                    if(nDamage > 0)
                    {
                        // Apply effects to the currently selected target.
                        DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
                        //This visual effect is applied to the target object not the location as above.  This visual effect
                        //represents the flame that erupts on the target not on the ground.
                        DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
                    }
                }
            }
        }
      //Select the next target within the spell shape.
      oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
    }
}

Наверное весь скрипт целиком не нужен, однако выложил весь на всякий случай.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lexey aka Hawk
сообщение Mar 2 2005, 18:06
Сообщение #807


Level 6
Иконки Групп

Класс: Фея
Характер: Chaotic Good
Раса: Элементаль
NWN: Маппинг
Gem of the North



Neverwinter Script Source
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"

void main()
{

/*
  Spellcast Hook Code
  Added 2003-06-20 by Georg
  If you want to make changes to all spells,
  check x2_inc_spellhook.nss to find out more

*/


    if (!X2PreSpellCastCode())
    {
    // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
        return;
    }
    object oCaster = OBJECT_SELF;
    if ((HasItem(oCaster,"bottle_fire") == FALSE) && (GetIsDM(oCaster) == FALSE))
    {
        ActionSpeakString("У вас нет необходимых компонентов!", TALKVOLUME_SHOUT);
        return;
    }


// End of Spell Cast Hook

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение Mar 2 2005, 18:15
Сообщение #808


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



Еще раз спасибо ;)

Я щас заплачу :cray:
Решил сделать такой же компонент для огненного шара замедленного действия. Просто скопировал всю проверку в другой скрипт

Neverwinter Script Source
#include "x2_inc_spellhook"

void main()
{

/*
  Spellcast Hook Code
  Added 2003-06-20 by Georg
  If you want to make changes to all spells,
  check x2_inc_spellhook.nss to find out more

*/


    if (!X2PreSpellCastCode())
    {
    // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
        return;
    }
    object oCaster = OBJECT_SELF;
     if((HasItem(oCaster,"bottle_fire") == FALSE) && (GetIsDM(oCaster) == FALSE)) //вот тут выдает ошибку"непонятное условие компилятора"
    {
    ActionSpeakString("У вас нет необходимых компонентов!", TALKVOLUME_SHOUT);
    return;
    }
// End of Spell Cast Hook

    //Declare major variables including Area of Effect Object
    effect eAOE = EffectAreaOfEffect(AOE_PER_DELAY_BLAST_FIREBALL);
    location lTarget = GetSpellTargetLocation();
    int nDuration = GetCasterLevel(OBJECT_SELF) / 2;
    //Make sure the duration is at least one round
    if (nDuration == 0)
    {
        nDuration = 1;
    }
    int nMetaMagic = GetMetaMagicFeat();
    //Check Extend metamagic feat.
    if (nMetaMagic == METAMAGIC_EXTEND)
    {
       nDuration = nDuration *2;//Duration is +100%
    }
    //Create an instance of the AOE Object using the Apply Effect function

    ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eAOE, lTarget, RoundsToSeconds(nDuration));
}


Lexey aka Hawk, хотелось бы узнать, если это не секрет, на Геме исправлен каждый спелл? или создана какая то другая система?
На предыдущей странице ты привел кусок скрипта, с использованием системы святых символов для дивайновых кастеров. Можно было бы получить полную систему?

Сообщение отредактировал Лито - Mar 2 2005, 18:58
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lexey aka Hawk
сообщение Mar 2 2005, 20:51
Сообщение #809


Level 6
Иконки Групп

Класс: Фея
Характер: Chaotic Good
Раса: Элементаль
NWN: Маппинг
Gem of the North



Да главное не в скрипте, а чтобы ты сам понимал как это работает. Если предположить даже, что я дам тебе всю систему Гемовской компонетной магии, то даже с моими подробными интсрукциями на форуме, ты вряд ли сможешь ее установить так, чтобы она корректно работала. У нас переписан ряд стандартных скриптов, использован хак-пак, а в данный момент мы фактически заново все переписываем.
Добавлено в [mergetime]1109786155[/mergetime]
По поводу скрипта. Вставь наверху строчку:
Neverwinter Script Source
#include "nw_i0_plot"


А то у тебя функция HasItem не отрабатывает.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
bloodwheel
сообщение Mar 3 2005, 14:30
Сообщение #810


Level 2
*

Класс: Ниндзя
Характер: Neutral Evil
Раса: Человек



Да, так и есть, я туда тэг вписывал вместо RasRef. Нюб ептить :D

Сообщение отредактировал bloodwheel - Mar 3 2005, 14:33
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение Mar 3 2005, 17:02
Сообщение #811


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



Уже на пару с Айваном кому то помог :pilot:


Сообщение отредактировал Лито - Mar 4 2005, 18:32
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение Mar 4 2005, 18:32
Сообщение #812


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



Лекс привел пример скрипта респавна вещей в сундуках
Neverwinter Script Source
void main()
{
object oChest = GetObjectByTag("licorice_Chest");
object oItem = GetFirstItemInInventory(oChest);
while GetIsObjectValid(oItem)
  {
  DestroyObject(oItem);
  oItem = GetNextItemInInventory(oChest);
  }
CreateItemOnObject("licorice",oChest,1);
ExecuteScript(600.0,"spw_chestmaster");
}


но на 5 строчке
Neverwinter Script Source
while GetIsObjectValid(oItem)
компилятор выдает ошибку, мол нет левой скобки в выражении :xz:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lexey aka Hawk
сообщение Mar 4 2005, 19:12
Сообщение #813


Level 6
Иконки Групп

Класс: Фея
Характер: Chaotic Good
Раса: Элементаль
NWN: Маппинг
Gem of the North



Попробуй так

Neverwinter Script Source
{
while (GetIsObjectValid(oItem) == TRUE)
  {
  DestroyObject(oItem);
  oItem = GetNextItemInInventory(oChest);
  }
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Mar 4 2005, 20:57
Сообщение #814


Level 9
Иконки Групп

Класс: Фея
Характер: Chaotic Evil
Раса: Тварь
NWN: Скриптинг [PW]



QUOTE (Лито @ Mar 4 2005, 18:32)
но на 5 строчке
Neverwinter Script Source
while GetIsObjectValid(oItem)
компилятор выдает ошибку, мол нет левой скобки в выражении :xz:

ну ребяты! ну вы че?! :swoon:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение Mar 5 2005, 15:05
Сообщение #815


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



Вопрос такой. Как спавнить вещи в сундук, через некоторое время после того, как из него все забрали. То есть у меня есть в локации ягодный куст, его оборвали и через 10 минут на этот куст создаются предмет "ягоды"... кустов много :)

P.S. скрипт(тот что приведен в теме вопросы и ответы) Лекса не пашет.

ААА :shout: помогайте, сделал через спелл хук, компоненты на заклы(сила быка, кошачья грация...). Так он компоненты даже с бутылок просит! что делать? :xz:

Сообщение отредактировал Лито - Mar 6 2005, 11:05
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 31 32 33 34 35 > » 
Ответить в эту темуОткрыть новую тему
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 15th May 2025 - 16:34