![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#101
|
|||
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
RoHaN привет. Статья моя, вот и все совпадения. =)
Что значит перестали? Скажи что ты сделал, что так произошло? |
||
![]()
Сообщение
#102
|
|
Level 1 Класс: Варвар Характер: True Neutral Раса: Полуорк ![]() |
Помогите PLZ . У меня перестали работать Кутсцены !!!!!!!!!! Я в недоумении, подскажите, что делать ???????
Добавлено в [mergetime]1135773618[/mergetime] Как сдеать чтобы трупы не убирались сами по себе с поля боя ???????? Добавлено в [mergetime]1135774008[/mergetime] {Обясняю}В своём модуле я сделал несколько не сложных сценок (порядка 4-5). А потом делаю очередной триггер со сценкой, а он отказывается работать !!!!!!!!!!!!! |
![]()
Сообщение
#103
|
|||||
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
Свойства NPC - улучшенный - время разложения. (там настрой нужное время, вообще подобные вопросы, лучше постить в других темах, например в: "Одиночный вопрос".)
Повторяю приведи код, скажи куда ставишь скрипт, обьясни ситуацию. Телепатией вроде не владеем, а причин чтоб не работало может быть оч. много... ;) |
||||
![]()
Сообщение
#104
|
|||
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
ТЕМА: ПОСТРОЕНИЕ СКРИПТОВЫХ СЦЕН, Основы написания Cutscene
Объяснишь связь между темой и вопросом? Топай в "Вопросы Новичков". (по проблемам незапуска сценок тоже туда). \\ пока преды не поставил. |
||
![]()
Сообщение
#105
|
|
Level 1 Класс: Варвар Характер: True Neutral Раса: Полуорк ![]() |
Привет народ !
Это снова я :D . Долго не мог прочитать ваши ответы. т.к. деньги коньчились . Можно ещё раз про время разложения трупов PLZ . И ещё свой модуль, котором я уже упоминал, почти закончен . Большой вам РЕСПЕКТ за оказанную помощь .[COLOR=gray] |
![]()
Сообщение
#106
|
|
Level 7 ![]() ![]() Класс: Маг Характер: Lawful Neutral Раса: Эльф ![]() |
Как я знаю разложение трупов настраивается через свойства объекта...
|
![]()
Сообщение
#107
|
|
Level 8 ![]() ![]() ![]() Класс: Теневой Танцор Характер: True Neutral Раса: Эльф ![]() |
Здрасьте, вот делал сценку на основе Айванской и решил добавить спелл огненного шара, но ничего не вышло, вот пример, делал как было показано в тулсете...
NSS //::///////////////////////////////////////////////
//:: Copyright © 2004 WRG! //::////////////////////////////////////////////// //:: Created By: Aiwan //:: Created On: 7.08.2004 //::////////////////////////////////////////////// void main() { object oPC = GetPCSpeaker(); object oNPC = GetObjectByTag("NPC_UPIR"); object oDoor = GetNearestObjectByTag("DOOR1"); object oLuk = GetNearestObjectByTag("PORTAL"); object oSec = OBJECT_SELF; object oWPpc = GetWaypointByTag("WP_PC1"); object oWPpc2 = GetWaypointByTag("WP_PC2"); object oWP1 = GetWaypointByTag("UPIR1"); object oWP2 = GetWaypointByTag("UPIR2"); object oWP3 = GetWaypointByTag("UPIR3"); object oWP4 = GetWaypointByTag("UPIR4"); object oWP5 = GetWaypointByTag("UPIR5"); object oAnimal = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC); object oDominated = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC); object oFamiliar = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC); object oHenchman = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC); object oSummoned = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC); //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: effect eCutInv = EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY); effect eCutPar = EffectCutsceneParalyze(); { SetLocalInt(oPC, "CUT_SCEN_02", TRUE); SetLocalLocation(oPC,"START_POINT", GetLocation(oPC)); AssignCommand(oSec, ActionPauseConversation()); AssignCommand(oNPC, ClearAllActions()); AssignCommand(oNPC, ActionJumpToObject(oWP1)); AssignCommand(oNPC, ActionDoCommand(SetFacingPoint(GetPosition(oDoor)))); FadeToBlack(oPC, FADE_SPEED_FASTEST); AssignCommand(oPC, ClearAllActions()); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCutInv, oPC, 41.0); SetCutsceneMode(oPC); SetAILevel(oNPC, AI_LEVEL_HIGH); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCutPar, oAnimal, 40.5); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCutInv, oAnimal, 40.5); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCutPar, oHenchman, 40.5); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCutInv, oHenchman, 40.5); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCutPar, oDominated, 40.5); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCutInv, oDominated, 40.5); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCutPar, oFamiliar, 40.5); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCutInv, oFamiliar, 40.5); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCutPar, oSummoned, 40.5); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCutInv, oSummoned, 40.5); DelayCommand(1.0, AssignCommand(oPC, JumpToObject(oWPpc))); DelayCommand(1.5, AssignCommand(oPC, SetCameraFacing(10.0, 12.0, 40.0, CAMERA_TRANSITION_TYPE_SNAP))); DelayCommand(2.0, FadeFromBlack(oPC, FADE_SPEED_MEDIUM)); DelayCommand(2.5, AssignCommand(oPC, ClearAllActions())); DelayCommand(3.0, AssignCommand(oNPC, ActionPlayAnimation(ANIMATION_LOOPING_LOOK_FAR, 0.9, 5.0))); DelayCommand(3.5, AssignCommand(oPC, SetCameraFacing(10.0, 20.0, 40.0, CAMERA_TRANSITION_TYPE_SLOW))); // Повернем ракурс камеры DelayCommand(4.0, AssignCommand(oNPC, SpeakString("Должен есть мозги!"))); DelayCommand(5.0, AssignCommand(oNPC, ActionMoveToObject(oWP2))); DelayCommand(7.0, AssignCommand(oNPC, ActionPlayAnimation(ANIMATION_LOOPING_GET_MID, 0.9, 3.0))); DelayCommand(8.0, AssignCommand(oNPC, SpeakString("Должен найти!"))); DelayCommand(9.5, AssignCommand(oNPC, ActionForceMoveToObject(oWP3, TRUE, 1.0, 7.0))); DelayCommand(10.0, AssignCommand(oNPC, ActionDoCommand(SetFacingPoint(GetPosition(oWP3))))); DelayCommand(11.0, AssignCommand(oNPC, ActionPlayAnimation(ANIMATION_LOOPING_GET_MID, 0.9, 5.0))); DelayCommand(12.0, AssignCommand(oPC, ClearAllActions())); DelayCommand(12.5, FadeToBlack(oPC, FADE_SPEED_FASTEST)); DelayCommand(13.5, AssignCommand(oPC, JumpToObject(oWPpc2))); DelayCommand(13.6, AssignCommand(oPC, SetCameraFacing(130.0, 20.0, 40.0, CAMERA_TRANSITION_TYPE_SNAP))); DelayCommand(14.5, FadeFromBlack(oPC, FADE_SPEED_MEDIUM)); //============================================================================== DelayCommand(17.0, AssignCommand(oNPC, ActionDoCommand(SetFacingPoint(GetPosition(oDoor))))); DelayCommand(19.0, AssignCommand(oNPC, ActionPlayAnimation(ANIMATION_LOOPING_LOOK_FAR, 0.9, 3.0))); DelayCommand(20.0, AssignCommand(oNPC, SpeakString("Сожру его мозги позже! Надо сваливать!"))); DelayCommand(21.0, AssignCommand(oNPC, ActionCastSpellAtObject(int nFireball, object oNPC3, int nMetaMagic=METAMAGIC_FIRE, int bCheat=FALSE, int nDomainLevel=0, int nProjectilePathType_FIRE=PROJECTILE_PATH_TYPE_DEFAULT, int bInstantSpell=TRUE); // Именно здесь я делаю спелл огненного шара. Делал как написано в тулсете DelayCommand(24.0, AssignCommand(oNPC, ActionForceMoveToObject(oWP4, FALSE, 1.0, 15.0))); DelayCommand(27.0, AssignCommand(oNPC, ActionDoCommand(SetFacingPoint(GetPosition(oWP5))))); DelayCommand(28.0, AssignCommand(oPC, ClearAllActions())); DelayCommand(28.6, AssignCommand(oPC, SetCameraFacing(130.0, 10.0, 40.0, CAMERA_TRANSITION_TYPE_SLOW))); DelayCommand(28.0, AssignCommand(oNPC, ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW, 0.9, 3.0))); DelayCommand(33.0, AssignCommand(oLuk, ActionPlayAnimation(ANIMATION_PLACEABLE_OPEN, 1.0))); DelayCommand(36.5, AssignCommand(oNPC, ClearAllActions())); DelayCommand(33.0, AssignCommand(oNPC, ActionMoveToObject(oWP5))); DelayCommand(39.5, AssignCommand(oNPC, ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW, 3.0, 1.0))); DelayCommand(40.5, AssignCommand(oNPC, ClearAllActions())); DelayCommand(40.8, AssignCommand(oNPC, ActionDoCommand(DestroyObject(oNPC)))); DelayCommand(41.5, AssignCommand(oLuk, ActionPlayAnimation(ANIMATION_PLACEABLE_CLOSE, 2.0))); DelayCommand(42.0, AssignCommand(oPC, ClearAllActions())); DelayCommand(42.5, FadeToBlack(oPC, FADE_SPEED_FASTEST)); DelayCommand(43.5, AssignCommand(oPC, ActionJumpToLocation(GetLocalLocation(oPC,"START_POINT")))); DelayCommand(44.5, FadeFromBlack(oPC, FADE_SPEED_MEDIUM)); DelayCommand(45.5, AssignCommand(oSec, ActionResumeConversation())); DelayCommand(46.0, SetCutsceneMode(oPC, FALSE)); } } |
![]()
Сообщение
#108
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Elf-Drow, закрывай тег - [/NSS] !!!
По заклу. Тебе ведь редкатор показывает, что строчка не правильная! NSS void ActionCastSpellAtObject(int nSpell, object oTarget, int nMetaMagic=METAMAGIC_ANY, int bCheat=FALSE, int nDomainLevel=0, int nProjectilePathType=PROJECTILE_PATH_TYPE_DEFAULT, int bInstantSpell=FALSE) void - показывает, что функция не возвращает значений. ActionCastSpellAtObject - название функции int nSpell, object oTarget, int nMetaMagic=METAMAGIC_ANY, int bCheat=FALSE, int nDomainLevel=0, int nProjectilePathType=PROJECTILE_PATH_TYPE_DEFAULT, int bInstantSpell=FALSE - параметры функции В параметрах: int, object... тип данных, которые должны записываться в этот параметр. oTarget, nMetaMagic... - это название параметра, тебе это писать не надо, это самой функцией используется. Ты замест int nSpell, object oTarget... должен написать нужное тебе и подходящее по смыслу. Как-то путано, но ладно, покажу наглядно. Посмотри, как это должно записываться. NSS DelayCommand(21.0, AssignCommand(oNPC, ActionCastSpellAtObject(SPELL_FIREBALL, oNPC3, METAMAGIC_FIRE, FALSE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE); Понятно? |
![]()
Сообщение
#109
|
|
Level 6 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Нежить NWN: Скриптинг [PW] ![]() |
2RoHaN
http://nwcustom.jino-net.ru/upload/loot_courpse.gif если у тебя русская, посмотри по расположению вкладки Сообщение отредактировал [MoF]Darth_Nick - Mar 29 2006, 09:11 |
![]()
Сообщение
#110
|
|
Level 8 ![]() ![]() ![]() Класс: Теневой Танцор Характер: True Neutral Раса: Эльф ![]() |
Теперь более менее, а именно так нужно записывать или можно как-нибудь покороче? Я видел пару скриптов которые можно было записывать или мега длинно или коротко...
|
![]()
Сообщение
#111
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
QUOTE(Elf-Drow @ Mar 29 2006, 11:30) [snapback]75009[/snapback] Теперь более менее, а именно так нужно записывать или можно как-нибудь покороче? Я видел пару скриптов которые можно было записывать или мега длинно или коротко... Ты о чем? Если о кол-ве параметров в функции, там это смотря устраивают тебя дефолтные или нет. Стандартно функция выглядет так: NSS void ActionCastSpellAtObject(int nSpell, object oTarget, int nMetaMagic=METAMAGIC_ANY, int bCheat=FALSE, int nDomainLevel=0, int nProjectilePathType=PROJECTILE_PATH_TYPE_DEFAULT, int bInstantSpell=FALSE) int nSpell и object oTarget, всегда должны быть тобой указаны, так как по умолчанию задать этот параметр не льзя, вернее не имеет смысла. У всех остальных параметров есть дефолтная настройка, такие как: int nMetaMagic=METAMAGIC_ANY, int bCheat=FALSE... Тобишь, если тебя устраивает METAMAGIC_ANY, то ты можешь данный параметр вообще не писать, он по дефолту стоит равным METAMAGIC_ANY. Но есть одно НО, если тебя не устраивает дефолт кокого-нить параметра, то прейдется писать и все параметры до него. Вот и получается, что если тебя все устраивает ты запишешь NSS DelayCommand(21.0, AssignCommand(oNPC, ActionCastSpellAtObject(SPELL_FIREBALL, oNPC3))); А если не устраивает последний, то NSS DelayCommand(21.0, AssignCommand(oNPC, ActionCastSpellAtObject(SPELL_FIREBALL, oNPC3, METAMAGIC_FIRE, FALSE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE))); Ты об этом спрашивал? |
![]()
Сообщение
#112
|
|
Level 8 ![]() ![]() ![]() Класс: Теневой Танцор Характер: True Neutral Раса: Эльф ![]() |
Да об этом, все работает, но только не ActionCastSpellAtObject а ActionCastFakeSpellAtObject, то есть иллюзия. Почему НПС не может колдовать, а делает тока иллюзию?
|
![]()
Сообщение
#113
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
QUOTE(Elf-Drow @ Mar 30 2006, 15:46) [snapback]75274[/snapback] Да об этом, все работает, но только не ActionCastSpellAtObject а ActionCastFakeSpellAtObject, то есть иллюзия. Почему НПС не может колдовать, а делает тока иллюзию? Для колдовства нужно: 1) Чтобы НПС знал и мог пользоваться данным заклинанием. 2) Чтобы он мог достать этим заклинанием до жертвы. Тобишь расстояние подходящие. |
![]()
Сообщение
#114
|
|
Level 8 ![]() ![]() ![]() Класс: Теневой Танцор Характер: True Neutral Раса: Эльф ![]() |
При создании сценки я руководствовался тем же. Поставил НПС 30 уровень волшебника, 20 колдуна, на всякий. (IMG:style_emoticons/kolobok_light/biggrin.gif) Потом поставил галочку на то, чтобы файрбол был как бы готов у НПС и он мог его использовать. Но НПС в то, время, когда должен колдовать тупо стоит, а затем продолжает выполнять последующие действия, плевав на колдовство...
|
![]()
Сообщение
#115
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
QUOTE(Elf-Drow @ Mar 31 2006, 06:31) [snapback]75425[/snapback] Но НПС в то, время, когда должен колдовать тупо стоит, а затем продолжает выполнять последующие действия, плевав на колдовство... QUOTE(-fenix- @ Mar 30 2006, 17:36) [snapback]75301[/snapback] 2) Чтобы он мог достать этим заклинанием до жертвы. Тобишь расстояние подходящие. Может дело в этом? Покажи эту строчку с кастом. |
![]()
Сообщение
#116
|
|
Level 8 ![]() ![]() ![]() Класс: Теневой Танцор Характер: True Neutral Раса: Эльф ![]() |
Вот
NSS DelayCommand(5.0, AssignCommand(oNPC, ActionCastFakeSpellAtObject(SPELL_FIREBALL, oNPC1)));
|
![]()
Сообщение
#117
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Elf-Drow, ну эта ведь у тебя работает.
У тебя с ActionCastSpellAtObject не работает, так вот, покажи как ты пишешь с ActionCastSpellAtObject. Ты уверен, что непись может скаставать этот закл на нужный объект, ему ни чего не мешает, например расстояние? Возможно, что ты не правильно настраиваешь закл у мага. Чтобы этого избежать на 100% в функции NSS void ActionCastSpellAtObject( int nSpell,object oTarget, int nMetaMagic = METAMAGIC_ANY, int bCheat = FALSE, int nDomainLevel = 0, int nProjectilePathType = PROJECTILE_PATH_TYPE_DEFAULT, int bInstantSpell = FALSE) параметр bCheat поставь TRUE. Если так напишешь, то для чтение закла маг не будет обязан его знать. Еще, проверь объект, на который твой НПС кастует, возможно, ты в скрипте указал не его ТЕГ или написал его с ошибкой. Сообщение отредактировал -fenix- - Mar 31 2006, 12:50 |
![]()
Сообщение
#118
|
|
Level 8 ![]() ![]() ![]() Класс: Теневой Танцор Характер: True Neutral Раса: Эльф ![]() |
NSS DelayCommand(5.0, AssignCommand(oNPC, ActionCastSpellAtObject(SPELL_FIREBALL, oNPC1))); Точно так же. Но я проверю с TRUE... С TRUE работает!!! Но не наносится дамаг НПС Все хорошо, продолжаю делать модуль... Сообщение отредактировал Elf-Drow - Apr 8 2006, 16:25 |
![]()
Сообщение
#119
|
|
Пушкин ![]() Класс: Обыватель Характер: Chaotic Neutral Раса: Гигант NWN: Тексты ![]() |
Может быть, этот вопрос уже задавался, но тем не менее: как сделать так, чтобы диалог нельзя было прервать (тот "бокс" в Свойствах не делает ничего) и при этом скрывался интерфейс? Например, с такого разговора начинается модуль Kingmaker. Очень впечатляюще.
|
![]()
Сообщение
#120
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
Нужно просто установить режим кутсцены.
NSS void SetCutsceneMode( object oCreature, int nInCutscene = TRUE ); QUOTE с такого разговора начинается модуль Kingmaker Не знаю, не играл. (IMG:style_emoticons/kolobok_light/smile.gif) Сообщение отредактировал Dik Morris - May 4 2006, 17:55 |
![]()
Сообщение
#121
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
QUOTE(Chimeric @ May 4 2006, 18:21) [snapback]80750[/snapback] тот "бокс" в Свойствах не делает ничего) он для другого. зы: не забыть после разговора катсцену снять. |
![]()
Сообщение
#122
|
|
Пушкин ![]() Класс: Обыватель Характер: Chaotic Neutral Раса: Гигант NWN: Тексты ![]() |
Сейчас у меня стоит вот что в ActionTaken первых строк разговора, принадлежащих NPC.
NSS void main() { SetCutsceneMode(GetPCSpeaker(), TRUE); } Результат: разговор не происходит, начинается фильм, из которого не выбраться не Эскейпом и никак иначе. |
![]()
Сообщение
#123
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
Попробуй установить режим кутсцены до начала диалога.
(Например при наступании на триггер, вход в локу и т.п...) Сообщение отредактировал Dik Morris - May 5 2006, 12:10 |
![]()
Сообщение
#124
|
|
Пушкин ![]() Класс: Обыватель Характер: Chaotic Neutral Раса: Гигант NWN: Тексты ![]() |
Что же мне, каждый раз так изворачиваться? У меня диалогов тьма. Пробовал, между прочим, вписать OWNER_SELF через oTarget вместо игрока, тогда вообще ничего не происходит.
|
![]()
Сообщение
#125
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
не, зачем же так?
стандартный скрипт на начало разговора nw_c2_default4 берем и впихиваем туда сценку: NSS //:://////////////////////////////////////////////////
//:: nw_c2_default4 /* Default OnConversation event handler for NPCs. */ //::////////////////////////////////////////////////// //:: Copyright © 2002 Floodgate Entertainment //:: Created By: Naomi Novik //:: Created On: 12/22/2002 //::////////////////////////////////////////////////// #include "nw_i0_generic" void main() { // See if what we just 'heard' matches any of our // predefined patterns int nMatch = GetListenPatternNumber(); object oShouter = GetLastSpeaker(); object oSelf = OBJECT_SELF; if (nMatch == -1) { // Not a match -- start an ordinary conversation if (GetCommandable(OBJECT_SELF)) { if (GetIsPC(oShouter)) SetCutsceneMode(oShouter, TRUE); // наша катсцена ClearAllActions(); BeginConversation(); } } // Respond to shouts from friendly non-PCs only else if (GetIsObjectValid(oShouter) && !GetIsPC(oShouter) && GetIsFriend(oShouter)) { object oIntruder = OBJECT_INVALID; // Determine the intruder if any if(nMatch == 4) { oIntruder = GetLocalObject(oShouter, "NW_BLOCKER_INTRUDER"); } else if (nMatch == 5) { oIntruder = GetLastHostileActor(oShouter); if(!GetIsObjectValid(oIntruder)) { oIntruder = GetAttemptedAttackTarget(); if(!GetIsObjectValid(oIntruder)) { oIntruder = GetAttemptedSpellTarget(); if(!GetIsObjectValid(oIntruder)) { oIntruder = OBJECT_INVALID; } } } } // Actually respond to the shout RespondToShout(oShouter, nMatch, oIntruder); } // Send the user-defined event if appropriate if(GetSpawnInCondition(NW_FLAG_ON_DIALOGUE_EVENT)) { SignalEvent(OBJECT_SELF, EventUserDefined(EVENT_DIALOGUE)); } } |
![]() ![]() |
Текстовая версия | Сейчас: 29th April 2025 - 17:03 |