Помощь - Поиск - Пользователи - Календарь
Полная версия: Вопросы новичков
Город Мастеров > РЕДАКТОРЫ > Neverwinter Nights Aurora Toolset
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103
fali
Пока читала форум, немного запуталась и отпостила вопрос несколько не туда. =)
Так что, копирую его сюда -- здесь он уместнее. :)

QUOTE ("fali")
QUOTE ("Аваддон")
У меня тут вопрос возник. Сделал в горде плазу в парке. А на ней скамейки тайловые. Так вот, я хочу чтобы игрок на них садился. Пишу скриптик [...] И ставлю его на OnUsed невидимого плейса. Кликаю - игрок садится. Но, как этот плейс не крути он всегда будет садится лицом на восток. Чудеса да и только. Что можно предпринять?

Между прочим, вот и у меня та же проблема... :) Уж как я не вертела это несчасное невидимое сидение, всё одно садятся лицом на восток. =) Решила оставить до лучших времён и потом выспросить, да забыла. :) Сейчас вот прочитала -- вспомнила. :)

Так что, присоединяюсь к вопросу. :) Как сделать эти самые сидения, чтобы их можно было располагать на различных предметах по нескольку штук в ряд? =) Сделано же это как-то в Экзистауне... Там и на бревне можно рядком устроиться, и на тюк сена сесть...
Lex
по поводу палочек: Я лечил переустановкой, хотя знаю, что можно в реестре что-то сделать, чтобы этот глюк вылечить... Глюк довольно распространенный.

ЗЫ: Какое тут оживление в мое отсутствие..

ЗЫЫ: fali чем то напоминает меня в марте 2003 года на рельсах..хорошее было время...


По поводу сидений: я так и не придумал, как эту проблему решать..
Некромес
QUOTE (elf-demon @ Nov 1 2004, 21:50)
Вот вот! Нафиг надо!! Лучше без тулсета посижу или потом ангийскую версию установлю и там на инглише посоздаю, чем буду качать 30 метров!!!!! Я ж на модеме а не на выделенке!!!

Я вообще тоже на модеме пока, но скора на выделенке biggrin.gif . Но ради тулчка я скачаю и 50 метров (заметьте какой патриотизм drinks.gif).Между прочим я 98 метров хака равенлофта качал yes.gif.
Goblin
Народ, у меня самый наверное простой вопрос : Я хочу русифицировать допустим модуль. Если я переведу только диалоги, названия и описание предметов, названия лок (не таги и не ресрефы), добавлю несколько заколок на карте --- то это никак не повлияет на скрипты или прочую работу шарда ?
mamuc
не повлияет..но наверняка, что нить останеться по английски biggrin.gif
elf-demon
Lex
Мне на Реалмсе(бывшем, ща rpgplanet) сказал один про реестр. вот:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Nls\CodePage
надо значением параметра 1252 поставить c_1251.nls, возможно тоже самое сделать для 1250.

Не это случайно? Я так не делал! Опосаюсь чтоб не испортить что-нибудь!
elf-demon
Народ!!!!!!!! Кто подскажет нет ли где списка создавания вещей в НВН с помощью реагентов (тока это не способность перса а так у колдуньи одной можно в сундуке специальном сделать( соединить там например брюхо жука+ череп гаргульи+малахит ну что-то по типу этого!))

Извините что не в тему просто не знаю где ещё такой вопрос можно задать!

Aiwan
Это тебе на RPGPlanet... biggrin.gif
Некромес
QUOTE (elf-demon @ Nov 2 2004, 19:43)
Народ!!!!!!!! Кто подскажет нет ли где списка создавания вещей в НВН с помощью реагентов (тока это не способность перса а так у колдуньи одной можно в сундуке специальном сделать( соединить там например брюхо жука+ череп гаргульи+малахит ну что-то по типу этого!))
Извините что не в тему просто не знаю где ещё такой вопрос можно задать!

Типа в игре есть такой момент? В ориг-компании? Во второй главе?
elf-demon
Aiwan Aiwan
Нету там такого!!!=(
Некромес
Да!! У колдуньи! В прохождении сказно что в шкафу свиток лежит и в нём написано, но я не магом играю а войном!! И свитка нету!! ( хотя может и не из-за того что я воин но всё равно нету!)
Некромес
Ну, мля, это у Элтуры,да? Вообще-то там свиток появляется тока када ты принесешь какую либо книгу Иммаскарана yes.gif. И в любом случае там надо накладывать какое-либо заклинание, типа кислотной стрены Мельфа. buba.gif
Поэтому там тебе ниче не светит. Я тож за воина\Черного Стража играл.
elf-demon
Но как же мне сказал другой чел( он давно проходил) что воин тоже может создать... shout.gif
Некромес
QUOTE (elf-demon @ Nov 2 2004, 21:27)
Но как же мне сказал другой чел( он давно проходил) что воин тоже может создать...

Неправда. Сам подумай, как может воин создать магический предмет в лаборатории колдуньи абсолютно без магии? yes.gif
elf-demon
Так там не надо колдовать по моему! Тока ложишь реагенты в этот сундук а он всё сам делает! Кстати книги все 5 ей отдал а внизу вместо свитка во всех шкафах - книги по истории невервинтера.!
Некромес
QUOTE (elf-demon @ Nov 2 2004, 21:42)
книги все 5 ей отдал а внизу вместо свитка во всех шкафах - книги по истории невервинтера.!

Даже там, рядом с ящиком в центре комнаты? Колдовать надо, я ж пробовал, например, сустав скелета, язык слаада и кислотная стрела. Только так. yes.gif
elf-demon
Некромес
Блин жалко! Ну ладно.. Спасибо!! Прояснил ситуацию!! biggrin.gif
Некромес
elf-demonпжалста. biggrin.gif Наконц-то кому-то помог.
Серхио
Добрый вечер!
У меня тут несколько вопросов накопилось:
Ситуация номер раз. Необходимо чтобы персонаж (PC, хенчман или NPC), убивший определеного злодея "выполнял" определенную последовательность действий (к примеру):
1. Сразу после решающего удара (закла) падал бы на землю (EffectKnockdown());
2. Пролежав так секунд 5, бросал бы фразу типа: "Какого хера?" (стрингом над головой PC или NPC);
3. Подвергался бы действию какого нибудь закла (например Harm).
Наиболее логично было бы поставить эту последовательность действий на событие OnDeath того самого злодея. Вся соль состоит в том что сакраментальное: "Какого хера?" при этом выводится только при помощи функции FloatingTextStringOnCreature() (такая строчка воспринимается скорее как служебное сообщение типа "Критический удар", хотя я конечно придираюсь biggrin.gif). Конечно можно поставить всплытие этой строчки с задержкой на событие OnCombatRoundEnd для убийцы, однако получается мне придется модифицировать соответствующие скрипты всех возможных убийц (благо в моем случае их немного), а это не совсем красивое решение. К тому же не понятно как в этом случае будет определяться конец раунда, ведь перс будет подвергнут действию эффекта Knockdown. Скрипт уже существует и пашет, только вот ента строчка мне не совсем нравится, вернее ее шрифт.

Ситуация номер два. Есть довольно приличная композиция, которая вполне годится в качестве амбиента. Вся неприятность в том что это песня. Если бы в сети был инструментальный вариант песни такого бы вопроса естественно не возникло. Но увы dntknw.gif. Посему у меня вопрос, который вполне может показаться смешным (lol.gif) тем кто хотя бы немного знаком с теорией вопроса.
ВОПРОС: Можно ли стандартный MP3-файл разложить на дорожки и впоследствии лишить композицию текстовой составляющей. Вопрос принципиальный, по сути идея квеста строится на этой самой композиции. this.gif

Ситуация номер три. Снимется ли со временем эффект наложенный на PC или его хенча при помощи функции ExtraordinaryEffect(). Отдыхом и диспеллами не снимается, проверено buba.gif.
Аваддон
1. Чтобы крич сказал фразу - пользуйся коммандой SpeakString. Если событие стоит на OnDeath злодея - заставь убившего его игрока сказать фразу. Получится что то типа AssignCommand(oPC,SpeakString("Какого такого...")); .
Где oPC = GetLastKiller();

2. Скорее всего нельзя :/ Можешь попробовать скачать плагин для WinAmp - Voice Remover, чтобы убрать вокал, а дальше там с записью похимичить.

P.S. А зачем эффект KnockDown если можно ограничится командой PlayAnimation?
Серхио
QUOTE (Аваддон @ Nov 3 2004, 18:00)
P.S. А зачем эффект KnockDown если можно ограничится командой PlayAnimation?

Чтоб жизнь убивцу медом не казалась diablo.gif (а в чем разница? dntknw.gif Эффект получается тот же)
А вообще спасибо!
Аваддон
А может у него иммун на нокдауны?;-)
Aiwan
Серхио эээ... Тебе это куда? Если сурьезно то можно глянуть и настроить то что росишь...
Серхио
QUOTE (Аваддон @ Nov 3 2004, 18:00)
Можешь попробовать скачать плагин для WinAmp - Voice Remover, чтобы убрать вокал, а дальше там с записью похимичить.

Скачал, глушит голос (но его все-таки слышно к тому же заодно глушит и часть музыки, что ессно buba.gif ), для караоке конечно подойдет, а так... Я-то думал что все просто, а оно вона как. Х с ним, на худой конец вставлю песню как есть.
QUOTE (Аваддон @ Nov 3 2004, 20:51)
А может у него иммун на нокдауны?;-)

Резонно, как-то упустил из виду..
QUOTE (Aiwan @ Nov 3 2004, 23:42)
Серхио эээ... Тебе это куда? Если сурьезно то можно глянуть и настроить то что росишь...

Для моего мини-модуля (на большее у меня просто фантазии не хватит). Хотя зная самого себя скажу честно: вероятность 90%, что я его не сделаю, потому как лентяй я жуткий lazy.gif. Так шо звиняй за беспокойство drag.gif
Velteron
Привет всем!
Вроде стал понимать скрипты на логическом уровне , до этого програмировал лишь в Delphi smile.gif
У меня вопрос такой :
Как поправит такой баг . Игрок умер , перезаходит и , о чудо! , живой . Я пробовал править своим допотопотным скриптом , который дает вещь при смерти , и если в ooClientEnter скрипт находит такую вещь у игрока , то перемещает его в фугу . Но , во-первых с этим связана уча других багов , например если его реснут , то камень не исчезает . Игрок забывает его вытащить и при следующем заходе оказывается в фуге . Вторая часть бага , если 10<HPs<=0 , то при перезаходе у него восстанавливаются все жизни и спеллы. Как сделать , чтобы такого бага не было, помогите плз!!! unsure.gif
Аваддон
Ага, незабудь еще и спеллы воостанавливаются:)
Старенький скрипт. Написал его _kaa_. Только я боюсь в NwN: HotU спеллов намного больше чем здесь так что число менять придется. Но это уже сам тестируй.


Скрипт для сохранения здоровья и спеллов при перезаходе.
Автор: _kaa_


событие OnClientEnter модуля:

Neverwinter Script Source
//by _Kaa_ 20.05.30
#include "nw_o0_itemmaker"
void main()
{
object oPC = GetEnteringObject();
object oStore = GetModule(); 
string sStoreName = GetName(oPC)+GetPCPlayerName(oPC); // =[PC name] + [login name]
SetLocalString(oPC,"HP_MyIdString",sStoreName);
int iSavedHP = GetLocalInt(oStore,sStoreName);
if (iSavedHP != 0)
{
effect efDamage = EffectDamage(GetMaxHitPoints(oPC)-iSavedHP,DAMAGE_TYPE_MAGICAL,DAMAGE_POWER_ENERGY);
ApplyEffectToObject(DURATION_TYPE_INSTANT,efDamage,oPC);
}

int k,j,nSpells;
for (k=1; k < 400; k++)
{
nSpells = GetLocalArrayInt(oStore,sStoreName+"_spells",k);
if (nSpells)
  for (j=0; j <= GetHasSpell(k,oPC)-nSpells; j++) DecrementRemainingSpellUses(oPC, k);
}
}



OnClientLeave
Neverwinter Script Source
//by _Kaa_ 20.05.30
#include "nw_o0_itemmaker"
void main()
{
object oPC = GetExitingObject();
object oStore = GetModule();
string sStoreName = GetLocalString(oPC,"HP_MyIdString");
SetLocalInt(oStore, sStoreName, GetCurrentHitPoints(oPC));
int k,nSpells;
for (k=1;k<400;k++)
{
nSpells = GetHasSpell(k,oPC);
if (nSpells)
  SetLocalArrayInt(oStore,sStoreName+"_spells",k,nSpells);
}
}


Velteron
Огромное спасибо ! yahoo.gif
<small>Добавлено в 23:27</small>
Еще один вопросик , кто-инбудь знает скрипт авто-удаления лута . А то после пяти часов работы шарда накапоивается куча лута и сервер начинает тормозить . Пробовал такой скрипт :
Neverwinter Script Source
void TrashObject(object obj)
{
       // Check for Plot Flag
       if (GetPlotFlag(obj)) SetPlotFlag(obj,FALSE);
       // if this is not a container, just destroy it and we're done
       if (GetHasInventory(obj) == FALSE) {
               DestroyObject(obj);
       } else {
               object oItem = GetFirstItemInInventory(obj);
               // destroy everything in the inventory first
               while (oItem != OBJECT_INVALID)
               {
                       TrashObject(oItem);
                       oItem = GetNextItemInInventory(obj);
               }
               // destroy the container itself
               DestroyObject(obj);
       }
}

void main()
{
       object oArea = OBJECT_SELF;
       string AreaTag = GetTag(oArea);
       object oModule = GetModule();
       int iItemDropLifeSpan = 20;
       // iCounterMax must always be greater than iItemDropLifeSpan
       int iCounterMax = 1000;
       int iTrashMark = 0;
       int threads = GetLocalInt(oModule,"GLOBAL_SCHEDULLER_THREADS");
       int HEARTBEAT_TIME = GetLocalInt(oModule,"AREAS_COUNT") / threads * FloatToInt(RoundsToSeconds(1)) * GetLocalInt(oModule,"GLOBAL_SCHEDULLER_TIME_ROUNDS");

       string sTrashMark = "iTrashMark";
       int iCounter = GetLocalInt(oArea, "ItemTrashCounter");
       iCounter++;
       iCounter = iCounter % iCounterMax;
       if (iCounter == 0) { iCounter++; } // 0 is reserved
       if (iCounter > iCounterMax) iCounter = 1; // in case when counter reaches limit
       SetLocalInt(oArea, "ItemTrashCounter", iCounter);
       object obj = GetFirstObjectInArea(oArea);
       while (obj != OBJECT_INVALID)
       {
        // match based on type first, because comparing int
        // is faster than string; wrong types don't reach
        // string comparison
        string sTag = GetTag(obj);
        string sName = GetName(obj);
        // this assumes that every item drop from a monster
        // comes in a placeable container with a tag name
        // of "BodyBag"; it seems to be true, but if this
        // assumption is false, this code needs to be fixed
        if ((GetObjectType(obj) == OBJECT_TYPE_PLACEABLE) && (sTag == "BodyBag" || sName == "Remains") ||
             (GetObjectType(obj) == OBJECT_TYPE_CREATURE && GetIsDead(obj) && !GetIsPC(obj)))
           {
             iTrashMark = GetLocalInt(obj, sTrashMark);
             if (iTrashMark == 0)
             {
                   SetLocalInt(obj, sTrashMark, iCounter);
             } else
             {
                   int iTimeAlive = 0;
                   if (iCounter >= iTrashMark) {
                       iTimeAlive = iCounter - iTrashMark;
                   } else
                   {
                       iTimeAlive = iCounterMax - iTrashMark + iCounter - 1;
                   }
                   if (iTimeAlive > iItemDropLifeSpan)
                   {
                        if (GetObjectType(obj) == OBJECT_TYPE_CREATURE)
                           SetIsDestroyable(TRUE,FALSE,FALSE);
                       TrashObject(obj);
                   }
            }
           }
               obj = GetNextObjectInArea(oArea);
       }
//    SetLocalInt(oModule,AreaTag+"LOOT_INIT_TIMER_DONE",0);
}


Запихивал в HeartBeat , но в логе постоянно вылазили ошибки скрипта . По 30 штук в секунду ! Это явно бы мешало игрокам и пришлось отказаться от этого sad.gif
Помогите ,плз ! sad.gif
Wereman
Народ - дайте пжалста скрипт лечения у храмовика...Мне в диалоге его выствить надо =)
Чтобы как в сингле Арибет, например, лечила, если ее попросишь.

Очень нужно! У нас из-за этого гильдхол на шарде поставить не можем!
Считайте что вас человек 10 сразу просит!
Kalian
Народ, как написать скрипт на движение камеры?
Ну, например, чтоб она крутилась вокруг PC?
Aiwan
http://www.wrg.ru/forums/index.php?showtopic=388
Скачивай и читай.
Аваддон
QUOTE (Wereman @ Nov 9 2004, 07:32)
Народ - дайте пжалста скрипт лечения у храмовика...Мне в диалоге его выствить надо =)
Чтобы как в сингле Арибет, например, лечила, если ее попросишь.

Чтобы полностью лечила или по скольку то там процентов? За деньги или бесплатно?!
Wereman
Полностью и бесплатно yes.gif
SeDAl
buba.gif Вобщем нужен скрипт, чтоб в разговоре при фразе например: "Я слаб, вылечи меня" с перса снимались все вредные эффекты, полностью востанавливалисб хитпоинты и было это бесплатно...
Очень прошу, необходимо...
SeDAl
Все уже, не нало... yahoo.gif
fali
Надо! =)
На всякий пожарный... :)
Маэв Лютина
Господа и дамы! Ситуация: НПС, который ко мне присоединился имеет все скрипты хенчмена, однако, пока не нажмешь на кнопку "Следовать" в окне персонажа - стоит не месте и смотрит на меня влюбленным взором.
Вопрос: Какой скрипт нужен и нужен ли, чтобы он следовал за мной без напоминаний. Заранее благодарю за ответы. dntknw.gif

Айван: Лютина, давай в одной теме один вопрос. Не стоит дублировать. Я все читаю. И не только я wink.gif
п.с. В теме про хеньчмана я ответил.
Аваддон
QUOTE
Полностью и бесплатно smile.gif

QUOTE
Надо! =)
На всякий пожарный... smile.gif


Вешаешь как действие на ветке диалога. Лечит все ХП и снимает эффекты.
Neverwinter Script Source
#include "nw_i0_plot"
void main()
{
object oPC = GetPCSpeaker();
int iHP =GetMaxHitPoints();
effect eHeal = EffectHeal (iHP);
effect eHealVis = EffectVisualEffect (VFX_IMP_HEALING_X);
ActionCastFakeSpellAtLocation(SPELL_HEALING_CIRCLE,GetLocation(oPC));
DelayCommand (2.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,eHeal,oPC));
DelayCommand (2.0,ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eHealVis,oPC,10.0));
DelayCommand (2.0, RemoveEffects(oPC));
}
Zik
Прошу прощения, если такой вопрос уже был, кто- нибудь может мне помочь со скриптом, чтобы нпс узнавал игрока при разговоре с ним второй раз? (Будет говорить что- нибудь типа "а, это вы. Мне больше нечего вам сказать":) )
Аваддон
Zik , ты в скриптах чуть чуточку понимаешь? Надеюсь да. Тогда скажу так. Создай две ветки диалога - одну для первого разговора, другую для повторного. При первом разговори в конце диалога скриптом задай игроку локальную переменную (там в диалоге есть такая закладка Actions). А на вторую ветку диалога поставь в закладку "текс появляется:" и поставь проверку на эту переменную. Если она уже задана то активизируется вторая ветка диалога... Эмм... Понятно надеюсь? Если что - спроси объясню на пальцах:)
Aiwan
Zik Почитай мою статью на сайте в PDF. Там это есть.
Zik
Все понятно, благодарствую smile.gif
Лито
Здравствуйте все,помогите разобратся dntknw.gif как сделать так чтобы при вхождении игрока модуль ему выдавался заданый инвентарь(подстилка еда золото и тд), при этом чтобы не каждый раз, вошел-вышел получил вещи, а только один раз на каждого чара

Спасибо yes.gif
Aiwan
Лито Привет! wink.gif

Посмотри в базе скриптов пожалуйста. Я сам не могу инет тормозной bad.gif Там должен быть скрипт на удаление инвентаря. Немного подкорректируешь и все. А что бы не было многоразового использования, это надо вешать локалку на чара. А это чуть выше написано что и как yes.gif
Аваддон
QUOTE (Aiwan @ Nov 11 2004, 22:46)
А что бы не было многоразового использования, это надо вешать локалку на чара.

А вот это не врите this.gif в мультиплеере локалка на чаре не сохраняется - я проверял. Только на шмотках. Так что придется с БД.
fali
Аваддон, спасибо за скрипт лечения, что выше был. :)

Между прочим, у меня ещё вопрос появился. :)
Вопрос: Как делаются на шардах сундуки, в которых можно хранить вещи не опасаясь рестарта? Если кто-нибудь подскажет скрипт, буду очень благодарна. :) Но в большей мере меня интересует "технология" подобных сундуков... Если я правильно понимаю, нужно где-то хранить информацию о положенных в сундук вещах? Я слышала что-то про базы данных и про привязку вещей к игроку... Но не очень поняла, что к чему. Плюс, мне хочтся узнать, какие проблемы возникают при использовании таких сундуков? Например, не разрастётся ли от этого база данных или не отяжелеет ли чар? :) Какие ограничения тут есть или какие ограничения чаще всего делают на шардах? :)
Лито
Не нашел в базе ничего unsure.gif , думал хоть с переменными разбирусь, так Аваддон говорит что они в онлайне не работают,а без начального инвентаря на шарде никуда,сижу теперь побитый black eye.gif
Goblin
2fali : Для справки -- в любом сундуке максимально 25 закладок (страниц) может быть. Проверял сам. Так что слишком отяжелеть чар не сможет wink.gif

У меня, дополнение к вопросу fali : как в таком сундуке хранить сумку с каким-то содержимым. Не опустеет ли сумка после рестарта ?
Baal
2 Лито А если при первом заходе чара выдать ему какойнить невыкидываемый предмет, например книгу правил или еще чтото в том же духе? А при следующем заходе проверять именно наличие этого предмета.
Лито
Baal как не смешно все упрается в реализацию, я конечно могу сделать так чтобы книжку, хелпер там и тд,выдавали при заходе игрока, но как сделать проверку и чтобы это выдавалось один раз не представляю...
Распишите все пожалуйста если не трудно unsure.gif

На всякий случай напишу предметы которые хочу выдать игроку: подстилка еда н-количества золота н-количества, хелпер
Baal
хм... так тебе нужен скрипт?
Вот могу посоветыввать так:
Neverwinter Script Source
void main()
{
object oPC; // PC сам определишь как тебе надо
object oBook=GetItemPossessedBy(oPC, "ТЭГ_КНИГИ");
if(!GetIsObjectValid(oBook))// выполнить только если книги еще нет
  {
  object oItem = GetFirstItemInInventory (oPC);
  while(GetIsObjectValid(oItem))
    {
    DestroyObject(oItem); // удаление вещей из инвентарЯ
    oItem = GetNextItemInInventory (oPC);
    }
  int i=0;
  while(i<14)
    {
    DestroyObject(GetItemInSlot(i, oPC)); // удаление вещей из слотов
    i++;
    }

  CreateItemOnObject("РЕСРЕФ_КНИГИ", oPC);
  CreateItemOnObject("РЕСРЕФ_ПЕРВОГО_ПРЕДМЕТА", oPC);
  CreateItemOnObject("РЕСРЕФ_ВТОРОГО_ПРЕДМЕТА", oPC);
  //  и т.д. создавай что тебе нужно
  }
}
Лито
спасибо большое yes.gif , и еще уточнение, это надо в ClientEnter вставлять, правильно? this.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2024 Invision Power Services, Inc.