Воскресенье, 12.05.2024, 04:01


Главная
Регистрация
Вход
Сайт Великого Легиона ПЗ Приветствую Вас Незнакомец | RSS  
Меню

Категории раздела
Статьи про ПЗ [10]

Мини-чат
200

Наш опрос
Оцените мой сайт
Всего ответов: 173

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа

Главная » Статьи » Статьи про ПЗ

Введение в скрипты
Скрипты. Введение. 


Для начала немного о том, что такое консоль. Консоль - это окно в мир игры, которое предусмотрительно оставлено разработчиками. В процессе создания и отладки игры она предоставляет возможность отслеживать происходящее и воздействовать на игру. Похоже, что впервые в том виде, в котором она известна сейчас, консоль появилась в незабвенном Quake: открывающееся и закрывающееся окно, в котором можно вводить специальные команды и видеть результаты их выполнения. Это оказалось действительно удобным, и с тех пор консоль встраивается в очень многие игры, причем в финальной версии игры консоль либо не отключают вовсе, либо оставляют возможность включить ее - параметром командной строки, определенным значением в файлах данных игры, или иным способом. 

В "Проклятых Землях" консоль доступна сразу, открываясь и закрываясь при нажатии на клавишу тильда (~). Однако же по умолчанию работает лишь незначительная часть консольных команд - для разрешения остальных нужно ввести мастер-код thingamabob. Но и это еще не все: начиная с версии игры 1.02 команды, разрешаемые thingamabob, отключены в режиме мультиплеера. К счастью, для их разрешения достаточно установить мой патч для имеющейся у вас версии игры. 

Здесь я привожу описания различных консольных команд. Одни из них вы, возможно, уже знаете, а другие, как я надеюсь, - еще нет. Если вас интересуют команды, с которыми я и сам не разобрался, то вам сюда. Таким шрифтом в описаниях выделены обязательные части ключевых слов; вот так обозначаются параметры команд, вместо которых следует подставить требуемое значение. В [квадратных] скобках записаны необязательные параметры. Вертикальной | чертой разделены параметры, из которых нужно выбрать точно один. 


#script_function_call 
Выводит в консоли вещественное значение, получаемое в результате вызова указанной функции. См. также скриптовые функции, $, ConsoleFloat() и ConsoleString(). 
Примеры: 
#GetX(GetLeader()) - вывести координату X для главного персонажа 
#GetDiplomacy(0,6) - вывести дипломатию от игрока 0 к игроку 6 

$string_value 
Выводит в консоли указанную строку. См. также #, ConsoleFloat() и ConsoleString(). 
Пример: 
$"Hello" - вывести строку "Hello" 

@script_procedure_call 
Производит вызов указанной скрипт-процедуры. См. также скриптовые процедуры. 
Примеры: 
@SetCP(GetObject(4517),40,135,0) - переместить юнит с идентификатором 4517 в точку (40,135) 
@KillUnit(GetObjectByName("NSheriff")) - убить Ривара 
@FixWorldTime(0) - установить на карте вечную ночь 

ban [player_name] 
Отключает игрока с данным именем от сервера и запрещает ему вход на сервер до конца сеанса игры (проверка выполняется по IP-адресу). При задании имени разрешается указать лишь начальные буквы. Имя игрока можно заключать в кавычки, чтобы пробелы в нем корректно обрабатывались. Так можно исключать игроков с именами, начинающимися с пробела. Начиная с версии игры 1.05 можно не указывать имя игрока. В этом случае после ввода команды нужно подвести курсор к портрету игрока и нажать левую кнопку мыши. Отменить команду можно по клавише Esc. Применяется только на сервере. См. также kick. 
Примеры: 
ban war - отключить всех игроков с именами, начинающимися на war 
ban " noble" - отключить всех игроков с именами, начинающимися на noble (первый символ - пробел) 
ban - отключить игрока по портрету 

console position 
Изменяет позицию консоли на экране. Возможные значения position: 
left - слева 
right - справа 
top - наверху (начальное положение консоли) 
bottom - внизу 
center - в центре экрана 
fullscreen - на весь экран 

days ddmmyyyy DDMMYYYY 
Подсчитывает число дней, прошедшее от первой даты до второй. (Любопытно, с какой целью Нивал ввел эту команду.) 
Пример: 
days 26102000 08032001 - вывести число дней между 26.10.2000 и 08.03.2001 

disconnect 
Отключает подсистему клиента на данном компьютере от сервера, т.е. возможно и отключение клиента на компьютере сервера. 

execute input_file 
Выполняет последовательность консольных команд из текстового файла input_file. Имя файла может содержать путь. 
Примеры: 
exec init - выполнить файл init из каталога с игрой 
exec congiveallweapons.con - выполнить файл giveallweapons.con из подкаталога con 

exit 
Немедленно завершает игру. Синоним quit. 

fadeout n_milliseconds 
Если n_milliseconds положительно, то постепенно гасит изображение на экране, если отрицательно, то доводит его до нормальной яркости. 
Примеры: 
fadeout 1000 - погасить экран за одну секунду 
fadeout -1500 - довести экран до нормальной яркости за полторы секунды 

filter [type] [off|0|on|1] 
Включает (on,1) или выключает (off,0) вывод системных сообщений указанного типа. Если второй параметр опущен, то он считается равным on. Параметр type может принимать следующие значения: 
none: отключается вывод всех сообщений 
ai: вероятно, самая полезная группа сообщений - выводятся идентификаторы юнитов, их текущие состояния, наносимые повреждения 
graphics: выводит 3D-координаты точки назначения персонажа 
all: обозначает "все виды сообщений" 
Примеры: 
filter none - отключить вывод всех системных сообщений 
filter all off - то же самое 
filter ai 1 - разрешить вывод сообщений группы ai 
filter - показать текущее состояние фильтров сообщений 

fps [off|0|on|1] 
Включает (on,1) или выключает (off,0) режим отображения текущего значения FPS - оно выводится в правом верхнем углу экрана. См. также lastfps. 
Примеры: 
fps 1 - включить отображение FPS 
fps 0 - отключить отображение FPS 

give 0 money|exp amount 
give 0 assortment 
С модификатором money дает игроку указанное количество денег. При использовании exp дает указанное количество опыта, причем опыт делится между членами партии, и к нему применяются бонусы за разум. Команду следует вводить, находясь в магазине, причем если в случае денег указанная сумма прибавляется немедленно, то в случае опыта необходимо повысить какой-либо навык или умение, чтобы изменения стали заметны. Кроме того, после ввода данной команды состояние обоза, персонажа и магазина сбрасывается в то, которое было при входе в магазин. По этой причине для получения денег я рекомендую использовать процедуру GiveMoney(). В форме с assortment помещает в набор товаров магазина все неквестовые предметы игры. Учтите, что они будут помещены именно в магазин, то есть вам придется их покупать. 
Примеры: 
give 0 money 5000000 - получить пять миллионов наличными 
give 0 exp 1000000 - передать партии один миллион опыта на распределение 
give 0 assortment - полки магазина ломятся от товаров 

help 
Выводит в консоли список некоторых команд с их краткими описаниями. 

history lines_count 
Устанавливает число запоминаемых строк консольного вывода, который можно проскроллировать клавишами PageUp и PageDown. 

kick [player_name] 
Исключает игрока с данным именем с сервера. При задании имени разрешается указать лишь начальные буквы. Имя игрока можно заключать в кавычки, чтобы пробелы в нем корректно обрабатывались. Так можно исключать игроков с именами, начинающимися с пробела. Начиная с версии игры 1.05 можно не указывать имя игрока. В этом случае после ввода команды нужно подвести курсор к портрету игрока и нажать левую кнопку мыши. Отменить команду можно по клавише Esc. Применяется только на сервере. См. также ban. 
Примеры: 
kick war - исключить всех игроков с именами, начинающимися на war 
kick " noble" - исключить всех игроков с именами, начинающимися на noble (первый символ - пробел) 
kick - исключить игрока по портрету 

lastfps 
Выводит в консоли последнее значение FPS. См. также fps. 

listvar n_player [output_file] 
Выводит в консоли список переменных и их значений для игрока n_player. Если указан output_file, то вывод будет продублирован и в него. Позднее этот файл можно использовать в команде loadvar. 
Пример: 
listvar 0 plr0 - вывести список переменных для игрока №0 и продублировать его в файл plr0 

loadvar n_player input_file 
Загружает список переменных и их значений для игрока n_player из файла output_file, созданного предшествовавшей командой listvar. 
Пример: 
loadvar 0 plr0 - загрузить список переменных для игрока №0 из файла plr0 

lootall 
Перемещает весь свободно лежащий лут на игровой зоне в обоз игрока (сервера). Применяется только на сервере. 

quit 
Немедленно завершает игру. Синоним exit. 

rate bytes_per_second 
Устанавливает максимальную полосу пропускания на одного клиента в байтах в секунду. Диапазон значений - 500..10000. По умолчанию в игре используется rate 2500, что соответствует одному подключенному клиенту при скорости соединения 28,8 Кбит/с. Применяется только на сервере. 

thingamabob 
Мастер-код, позволяющий использовать расширенный набор консольных команд. После его ввода расширенные команды остаются разрешенными вплоть до перезапуска игры. См. также разрешение кодов в мультиплеере. 

Здесь описаны скриптовые функции "Проклятых Земель". Перед продолжением чтения полезно ознакомиться с введением в скрипты. С некоторыми функциями мне разобраться так и не удалось - их список вы можете увидеть здесь. Обычно функции применяются в качестве фактических параметров при вызове процедур. Если же вы просто хотите увидеть значение, возвращаемое функцией, то для этого можно воспользоваться консольной командой #. 
Основные функции для работы с объектами и игроками 
Функции для работы с группами 
Координатные функции 
Арифметические и логические функции 
Функции AI 
Функции работы с параметрами юнитов и игроков 
Прочие функции 


Основные функции для работы с объектами и игроками 

object GetLeader () 
Возвращает объект юнита - лидера команды. В сингле это будет Зак, а в мультиплеере - действующий персонаж игрока. Для управления лидером это самый быстрый и удобный способ. 

float GetMercsNumber ( nPlayer ) 
Возвращает число наемников у игрока номер nPlayer (не включает лидера). 

object GetObject ( idObject ) 
Возвращает экземпляр object для объекта с идентификатором idObject. См. также filter и GetObjectID(). 

object GetObjectByName ( strName ) 
Возвращает экземпляр object для объекта с именем strName. 

float GetObjectID ( objUnit ) 
Возвращает идентификатор объекта objUnit. См. также GetObject() 

float GetPlayer ( objUnit ) 
Возвращает номер игрока для юнита objUnit. См. также SetPlayer() 

object GetUnitOfPlayer ( nPlayer , nUnit ) 
Возвращает экземпляр object для юнита номер nUnit игрока с номером nPlayer. 


Функции для работы с группами 

group GetPlayerUnits ( nPlayer ) 
Возврашает группу юнитов игрока номер nPlayer. 

group GroupAdd ( grpA , grpB ) 
Теоретико-множественная операция объединения - возвращает группу из тех юнитов, которые есть хотя бы в одной из групп grpA и grpB. 

group GroupCross ( grpA , grpB ) 
Теоретико-множественная операция пересечения - возвращает группу юнитов, которые есть как в grpA, так и в grpB. 

bool GroupHas ( grp , objUnit ) 
Возвращает истину, если в группе grp содержится юнит objUnit. 

group GroupSee ( grp ) 
Группа юнитов, которых видят юниты из группы grp. Эта операция рефлексивна - юниты видят и самих себя. 

float GroupSize ( grp ) 
Возвращает число юнитов в группе grp. 

group GroupSub ( grpA , grpB ) 
Теоретико-множественная операция разности - возвращает группу, состоящую из тех юнитов группы grpA, которых нет в grpB. 

group PlayerSee ( nPlayer ) 
Группа юнитов, которых видит игрок номер nPlayer, - т.е., все те юниты, которые видны юнитам данного игрока. Эта операция рефлексивна - юниты видят и самих себя. Эквивалентно вызову GroupSee ( GetPlayerUnits ( nPlayer ) ) . 

group UnitSee ( objUnit ) 
Группа юнитов, которых видит юнит objUnit. Эта операция рефлексивна - юнит видят и самого себя. 


Координатные функции 

float DistanceUnitPoint ( objUnit , x , y ) 
Возвращает расстояние между юнитом objUnit и точкой (x,y). 

float DistanceUnitUnit ( objUnitA , objUnitB ) 
Возвращает расстояние между юнитами objUnitA и objUnitB. 

float GetFutureX ( objUnit , flTime ) 
Экстраполирует координату x юнита objUnit через время flTime, основываясь на его текущем направлении движения и скорости. Именно эту функцию используют ловушки на сингл-карте "Портал". 

float GetFutureY ( objUnit , flTime ) 
Экстраполирует координату y юнита objUnit через время flTime, основываясь на его текущем направлении движения и скорости. Именно эту функцию используют ловушки на сингл-карте "Портал". 

float GetX ( objUnit ) 
Возвращает текущую координату x юнита objUnit. 

float GetY ( objUnit ) 
Возвращает текущую координату y юнита objUnit. 

float GetZ ( objUnit ) 
Возвращает текущую координату z юнита objUnit. 

bool IsInArea ( idArea x , y ) 
Возвращает истину, если точка (x,y) находится в области с идентификатором idArea. См. процедуры управления областями. 

bool IsInSquare ( x , y , x1 , y1 , x2 , y2 ) 
Возвращает истину, если точка (x,y) находится в прямоугольнике (x1,y1)-(x2, y2). 

bool UnitInSquare ( objUnit , x1 , y1 , x2 , y2 ) 
Возвращает истину, если юнит objUnit находится в прямоугольнике (x1,y1)-(x2, y2). 


Арифметические и логические функции 

float Add ( flA , flB ) 
Возвращает сумму чисел flA и flB. 

float Div ( flA , flB ) 
Возвращает частное чисел flA и flB. 

bool IsEqual ( flA , flB ) 
Возвращает истину, если числа flA и flB равны, и ложь в противном случае. 

bool IsEqualString ( strA , strB ) 
Возвращает истину, если строки strA и strB равны с учетом регистра, и ложь в противном случае. 

bool IsGreater ( flA , flB ) 
Возвращает истину, если число flA больше чем flB, и ложь в противном случае. 

bool IsLess ( flA , flB ) 
Возвращает истину, если число flA меньше чем flB, и ложь в противном случае. 

float Mul ( flA , flB ) 
Возвращает произведение чисел flA и flB. 

bool Not ( bf ) 
Возвращает отрицание логического значения bf: истину, если bf равно нулю, и ложь в противном случае. 

float Random ( flMax ) 
Возвращает псевдослучайное число из промежутка [ 0 , flMax ). 

float Sub ( flA , flB ) 
Возвращает разность чисел flA и flB. 

Функции AI 

float GetDiplomacy ( nPlayerA , nPlayerB ) 
Возвращает тип дипломатии - кем является игрок номер nPlayerA для игрока номер nPlayerB. Возможные значения: 
1 - союзник 
0 - нейтрал 
-1 - враг 
См. также IsEnemy(), GetPlayer(), SetDiplomacy() и SetPlayer() 

bool IsAlive ( objUnit ) 
Возвращает истину, если юнит objUnit жив, и ложь в противном случае. 

bool IsDead ( objUnit ) 
Возвращает истину, если юнит objUnit мертв, и ложь в противном случае. 

bool IsEnemy ( objUnit , nPlayer ) 
Возвращает истину, если юнит objUnit является врагом для игрока номер nPlayer. См. также GetDiplomacy(), GetPlayer(), SetDiplomacy() и SetPlayer() 

bool IsUnitBlocked ( objUnit ) 
Возвращает истину, если юнит objUnit заблокирован. См. также BlockUnit(). 

bool IsUnitInWater ( objUnit ) 
Возвращает истину, если юнит objUnit находится в воде. 


Функции работы с параметрами юнитов и игроков 

float GetMoney ( nPlayer ) 
Возвращает количество денег у игрока номер nPlayer. 

float GetLootItemsCount ( nPlayer ) 
Возвращает число предметов в обозе у игрока номер nPlayer. 

float HP ( objUnit ) 
Возвращает текущее значение HP (жизни) у юнита objUnit. Это число учитывает эффекты спеллов ослабления и усиления, наложенных на юнит. 

float Mana ( objUnit ) 
Возвращает текущее значение маны у юнита objUnit. 

float MaxHP ( objUnit ) 
Возвращает максимально возможное значение HP (жизни) у юнита objUnit. Это число учитывает эффекты спеллов ослабления и усиления, наложенных на юнит. 

float MaxMana ( objUnit ) 
Возвращает максимально возможное значение маны у юнита objUnit. 

bool WasLooted ( objUnit ) 
Возвращает истину, если труп юнита objUnit уже взят, и ложь в противном случае (в частности, если юнит еще жив). 


Прочие функции 

bool GetLeverState ( objLever ) 
Возвращает истину, если "рычаг" objLever "включен", и ложь в противном случае. См. также SetLeverState(). 

float GetWorldTime () 
Возвращает текущее время внутриигроых суток (в часах). См. также IsNight(), FixWorldTime() и RunWorldTime() 

float GSGetVar ( nPlayer , strVar ) 
Возвращает значение переменной с именем strVar у игрока номер nPlayer. См. также GSSetVar(). 

float IsNight () 
См. также GetWorldTime(), FixWorldTime() и RunWorldTime() 

Процедуры AI 

SetDiplomacy ( nPlayerA , nPlayerB , flDiplomacy ) 
Изменяет дипломатию - кем является игрок nPlayerB для игрока nPlayerA. Возможные значения flDiplomacy: 
1 - союзник 
0 - нейтрал 
-1 - враг 
См. также SetPlayer(), GetDiplomacy() и GetPlayer(). 
Примеры: 
SetDiplomacy(0, 

SetPlayer ( objUnit , nPlayer ) 
Объявляет юнит objUnit принадлежащим игроку nPlayer. См. также SetDiplomacy(), GetDiplomacy() и GetPlayer(). 



Процедуры управления областями 

AddRectToArea ( idArea , x1 , y1 , x2 , y2 ) 
Добавляет к области idArea прямоугольник (x1,y1)-(x2. 

AddRoundToArea ( idArea , x , y , rad ) 
Добавляет к области idArea круг радиуса rad с центром в точке (x,y). 

DeleteArea ( idArea ) 
Удаляет область idArea. 



Процедуры динамического задания целей квеста 

QFinish () 
Завершает текущее перечисление целей. См. также QStart 

QuestComplete ( nPlayer , strQuestName ) 
Заявляет квест strQuestName выполненным (это не отражается в окнах квестов), см. *.mq . 

QObjGetItem ( idItem ) 
Добавляет цель: получение предмета idItem. 

QObjUse ( strObject , bfState ) 
Добавляет цель: перевести "рычаг" strObject в состояние bfState. 
Пример: 
QObjUse("GetObject(44456)",1) - включить "рычаг" с идентификатором 44456. 

QObjKillGroup ( strGroupName ) 
Добавляет цель: уничтожить группу с именем strGroupName. 

QObjKillUnit ( strUnitName ) 
Добавляет цель: уничтожить юнит с именем strUnitName. 
Пример: 
QObjKillUnit("GetObject(1001936)") - убить юнит с идентификатором 1001936. 

QObjSeeUnit ( strUnitName ) 
Добавляет цель: увидеть юнит с именем strUnitName. 
Пример: 
QObjSeeUnit("GetObject(4517)") - увидеть юнит с идентификатором 4517. 

QObjArea ( idArea ) 
Добавляет цель: попасть в область с идентификатором idArea. 

QStart ( strQuestName ) 
Начинает перечисление целей для квеста strQuestName. См. также QFinish 



Различные процедуры воспроизведения 

PlayAnimation ( objUnit , strAnimation ) 
Воспроизводит анимационно-звуковую последовательность модели для юнита objUnit. Названия последовательностей и их содержание различны для разных видов юнитов - см. resdatabase.res*.adb . 
Пример: 
PlayAnimation(GetLeader(),"uattack01") 

PlayCamera ( strName ) 
Воспроизводит последовательность перемещений камеры файла с именем strName из подкаталога CAMERA. Имя файла указывается с расширением. 

PlayCamera ( strName ) 
Воспроизводит видеоролик с именем strName из подкаталога MOVIES. Имя файла указывается с расширением. 

PlayMusic ( 0 , strName ) 
Начинает воспроизведение мелодии с именем strName из подкаталога MOVIES. Имя файла указывается без расширения. 



Генерация предметов и заклинаний 

EraseQuestItem ( 0 , idQItem ) 
Убирает из обоза игрока квестовый предмет с кодом idQItem. Список квестовых предметов и их кодов вы можете увидеть здесь. См. также GiveQuestItem(). 

FixItems () 
Чинит все предметы в обозе и на юнитах команды игрока-человека. 

GiveItem ( 0 , strItem ) 
Помещает в обоз предмет, описываемый строкой strItem. См. также задание предметов. 

GiveMoney ( 0 , flAmount ) 
Дает игроку flAmount денег. См. также give. 

GiveQuestItem ( 0 , strQItem ) 
Дает игроку квестовый предмет с именем strQItem. Список квестовых предметов вы можете увидеть здесь. См. также EraseQuestItem(). 

GiveUnitSpell ( objUnit , strSpell ) 
Дает юниту objUnit спелл, описываемый строкой strSpell. Спелл помещается не в обоз, а в набор активных спеллов - если он полон, то ничего не происходит. В магазине эта процедура не действует, а в игровой зоне, хотя фактически спелл дается игроку, не обновляет набор спеллов. См. также задание спеллов. 



Аудиовизуальные эффекты: источники частиц, освещение, молнии 

CreateLightning ( id , x1 , y1 , z1 , x2 , y2 , z2 , flIntensity ) 
создает молнию с идентификатором id, бьющую из точки (x1,y1,z1) в точку (x2,y2,z2). При параметре flIntensity отличном от нуля молния имеет вид спелла "молния" и бьет с интенсивностью flIntensity. Если же flIntensity равно нулю, то молния имеет вид спелла "стена молний" и интенсивность по умолчанию. 

CreateParticleSource ( id , x , y , z , rad , strType ) 
Создает источник частиц типа strType с радиусом rad и идентификатором id в точке (x,y,z). Возможны следующие типы источника частиц: 
transform 
portalstar 
portal 
mushroom 
nuke 
geyser 
poisonfog 
smoke 
fire 
lightningblast 
fireblast 
campfire 
fireball 
firearrow 

CreatePointLight ( id , x , y , z , rad , flR , flG , flB ) 
Создает источник света с идентификатором id, радиусом rad и цветом (flR,flG,flB) в точке (x,y,z). 

DeleteLightning ( id ) 
Удаляет молнию с идентификатором id. 

DeleteParticleSource ( id ) 
Удаляет источник частиц с идентификатором id. 

DeletePointLight ( id ) 
Удаляет источник света с идентификатором id. 

MoveParticleSource ( id , x , y , z , flTime , bfRemove ) 
Перемещает источник частиц с идентификатором id в точку (x,y,z) за время flTime (измеряется в 1/15 секунды). Если bfRemove - истина, то после перемещения удаляет источник. 

MovePointLight ( id , x , y , z , flTime , bfRemove ) 
Перемещает источник света с идентификатором id в точку (x,y,z) за время flTime (измеряется в 1/15 секунды). Если bfRemove - истина, то после перемещения удаляет источник. 

SetParticleSourceSize ( id , rad ) 
Изменяет радиус источника частиц с идентификатором id на rad. 



Прочие процедуры 

ConsoleString ( str ) 
Выводит в консоли строку str. См. также $, # и ConsoleFloat(). 

ConsoleFloat ( fl ) 
Выводит в консоли число fl. В качестве fl может выступать вызов скриптовой функции. См. также скриптовые функции, $, # и ConsoleString(). 

FixWorldTime ( flTime ) 
Устанавливает текущее время внутриигровых суток в flTime (измеряется в часах), запрещая его ход. См. также GetWorldTime(), IsNight(), RunWorldTime(). 

LeaveToZone ( 0 , strZone , 0 ) 
Перемещает партию в локацию с именем strZone. Следует, однако, учитывать, что эта команда не взаимодействует с логикой квестов, поэтому ее использование может привести к непредвиденным последствиям. См. также список локаций. 

RunWorldTime ( flTime ) 
Устанавливает текущее время внутриигровых суток в flTime (измеряется в часах), разрешая его ход. См. также GetWorldTime(), IsNight(), FixWorldTime(). 

SetBackgroudColor ( flR , flG , flB ) 
Устанавливает фоновый цвет на карте в (flR,flG,flB) (фон перекрывается текстурами неба, поэтому результат будет заметен лишь в пещерных картах). 

Категория: Статьи про ПЗ | Добавил: Демон (31.10.2007)
Просмотров: 3447 | Комментарии: 1 | Рейтинг: 0.0/0
Всего комментариев: 1
1 Тиран  
0

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Copyright MyCorp © 2024Используются технологии uCoz