Санкаку
offline
Опыт:
432Активность: |
Система сообщений
системы, написанные для оптимального отображения текста и от игроков.
Система доступна в vJASS и в cJASS. Я пытался представить его на thehelper.net, но они не кричат ​​кровавое убийство на мой код из-код, который не 180 строк vJASS. Вместо этого 26 линий cJASS. Инструкция на английском языке. Я буду запускать их с помощью перевода матрицы. (cJASS доступны в нижней части кода.)
((код jass
/ / VJASS отображения текста - разработан с использованием cJASS
/ / Нижней части триггер cjass библиотек / / Вперед / / Если ваш комментарий Теш-цветов следующих (как cjass делает (единственное \ / / Я не люблю о cjass является то, что я не могу настроить Теш цвет, что я не могу читать курсивом так легко!)) \ / / Затем удалить / * и * / и положить в отключены триггера имени MSGS README для большей визуальной \ / / Ясность, если хотите. / / Инструкции:
/ * -* Название системы: MessageSystem по SanKakU (полное наименование) Сбщ или сообщения (сокращенное название также приемлемо) -* Кредиты:
закодированного SanKakU дать цвет текста фрагмент концепции Tyrulan инкапсулированные идея функций Jesus4Lyf -* Требования:
Вы должны импортировать триггера конечно ... получить vJASS и jasshelper через JNGP от wc3c.net И что еще более важно, изменить функции в библиотеке называется GetPlayerTeamMSGS, если вы хотите использовать msgally, msgallyo, и msgallyno функций. -* Список функций:
GetPlayerTeamMSGS (целое PlayerID) возвращает целое число
/ / В основном это занимает номер игрока и возвращает номер команды / / Настроить, как вам необходимо. это только функции, необходимые для подгонять, если Вы / / Почему-то тот же игрок команды настройки карты вы взяли из системы. ^ ^ GTC (строка colorcode, текстовая строка) возвращает строку
/ / В основном вы кормите этого 6-значный код цвета и возвращает текст цветные / / Настроить как вы хотите msggetcolor (целое PlayerID, текстовая строка) возвращает строку
/ / Эта функция вызывает функцию GTC и вы даете ему номер игрока вместо colorcode / / А затем на основе целого, то она вызывает GTC при выборе цвета, что вам нужно. / / Очевидно, что это может применяться к чему-то, кроме номер игрока, и функция может даже / / Быть переименованы. Эта функция может обнаружить любое количество команд для безопасного использования с msgally, в отличие от / / С предыдущих версий этой системы. msgally (реальный срок, игрок, строки текста, логическое союзника)
/ / Кормить его продолжительность текст, игрок текст из, и текст и булево / / Верно направить союзников, и ложные, чтобы отправить врагов / / Больше не будет нужно настроить этот, если ваши команды разные, но вам необходимо отредактировать getplayerteamMSGS msgall (реальный срок, текстовая строка)
/ / Очень просты. придать ему желаемую продолжительность и текст, который будет отображаться для всех игроков. / / Мы можем добавить GTC или msggetcolor (нужно добавить параметр целое, хотя, если у вас есть LOL петлю \ / / Функция, или что-то подобное) внутри здесь, если необходимо. msgone (реальный срок, игрок о, строки текста, логическое один)
/ / Кормить его продолжительность, плеер, текст, и булевых которые он направлен, что, будучи / / TRUE отправляется игрок текст о, или ложные отправляется на других игроков, а. просила функции:
msgallyo (реальный срок, игрок из, строка текста)
/ / В том, что последний параметр (булево союзника) слишком много хлопот? использовать это, чтобы только отправить союзников msgallyno (реальный срок, игрок из, строка текста)
/ / В том, что последний параметр (булево союзника) слишком много хлопот? использовать это, чтобы только отправить врагов Дальнейших обновлений будет включать в себя интуитивно-понятное управление НАД Раскрашивание ТЕКСТОВ для отображения.
Я временно отстранен автоматического раскрашивания, но это очень прост в использовании вручную с GTC FUNCTION.
vJASS text display - developed using cJASS
bottom of trigger is cjass libraries FORWARD if your tesh comment-colors the following,(like cjass does(the only thing \ i dislike about cjass is that i can't customize the tesh color for that, i can't read italics so easily!))\ then remove the /* and */ and put in a disabled trigger named MSGS readme for greater visual \ clarity if you wish. INSTRUCTIONS:
/* -*Name of system: MessageSystem by SanKakU(full name) MSGS or MessageS(abbreviated name is also acceptable) -*Credits:
coded by SanKakU give text color snippet concept by Tyrulan encapsulated functions idea by Jesus4Lyf -*Requirements:
You need to import the trigger of course...get vJASS and jasshelper via JNGP from wc3c.net And more importantly, edit the function in the library called GetPlayerTeamMSGS if you wish to use the msgally, msgallyo, and msgallyno functions. -*Function List:
GetPlayerTeamMSGS(integer playerid) returns integer
basically it takes the player number and returns a team number customize as you need to. this is the only function needed to be customized, unless you somehow had same player teams settings as the map you took the system from. ^^ gtc(string colorcode, string text) returns string
basically you feed this one the 6 digit color code and it returns the text colored customize as you wish msggetcolor(integer playerid, string text) returns string
this function calls gtc function and you give it a player number instead of colorcode then based on the integer provided, it summons gtc while choosing the color that you need. obviously this could apply to something besides player number, and the function could even be renamed. this function can detect any number of teams for safe use with msgally, unlike with previous versions of this system. msgally(real duration, player from, string text, boolean ally)
feed it the duration of the text, the player the text is from, and the text and the boolean is true to send to allies, and false to send to enemies will no longer need to customize this one if your teams are different, but you need to edit getplayerteamMSGS msgall(real duration, string text)
really basic. give it the duration desired and the text to be displayed to all players. we can add gtc or msggetcolor(have to add an integer parameter though, unless you have a lol loop\ function or something like that) inside here if desired. msgone(real duration, player about, string text, boolean one)
feed it the duration, the player, the text, and the boolean who it's sent to, that being true is sent to the player the text is about, or false is sent to the other players instead. requested functions:
msgallyo(real duration, player from, string text)
is that last parameter(boolean ally) too much hassle? use this to only send to allies msgallyno(real duration, player from, string text)
is that last parameter(boolean ally) too much hassle? use this to only send to enemies FURTHER UPDATES WILL INCLUDE USER-FRIENDLY CONTROL OVER THE COLORIZING OF TEXTS TO BE DISPLAYED.
I TEMPORARILY REMOVED THE AUTOMATIC COLORIZING BUT IT'S PRETTY EASY TO USE MANUALLY WITH GTC FUNCTION. */
library MSGS globals you might want/need to edit the low and high numbers if your map's needs are different private constant integer low=-1//loop starts at -1 because player id starts at 0(red player) private constant integer high=11//any higher and we send messages to neutrals, right? start of the colorcodescustomize as you see fit you will be using these when calling gtc so make them easy to remember names. private constant string c_goldbrown="daa520" private constant string c_gold="ffd700"//great for highlighting text private constant string c_palegreen="7aff7c" private constant string c_pink="db7093"//think this is player pink's color private constant string c_pretty="ee82ee"//substitute for pink private constant string c_grassgreen="7fff00" private constant string c_brightgreen="00ff00"//think this is green player color private constant string c_brightblue="0000ff"//blue player color private constant string c_aqua="00ffff"//think this is teal player color private constant string c_white="f0ffff" private constant string c_black="000000" private constant string c_seagreen="7fffd4" private constant string c_twilightblur="20b2aa" private constant string c_twilightgreen="009966"//good for dark green player private constant string c_coralgreen="00fa9a" private constant string c_coralpink="f08080" private constant string c_coralblue="33aaff" private constant string c_plum="ba55d3" private constant string c_indigo="4169e1" private constant string c_flowerpurple="aaaaff" private constant string c_green="32cd32" private constant string c_blue="4169e1" private constant string c_yellowgreen="adff2f"//great for highlighting text private constant string c_brightpurple="ff00ff" private constant string c_paledenim="c3dbff"//good for light blue player private constant string c_orange="ffa500"//player orange private constant string c_purple="da70d6"//player purple private constant string c_royalpurple="aa00ff" private constant string c_flowerred="ee2222" private constant string c_grey="c0c0c0"//player grey color private constant string c_gray="c0c0c0"//player gray color private constant string c_redorange="ff4500" private constant string c_red="ff0000"//player red color private constant string c_spanishgreen="9acd32" private constant string c_darkspanishgreen="6b8e23" private constant string c_brown ="995500"//player brown color private constant string c_yellow="ffff00"//player yellow color private constant string c_sand="ffffcc" i put some comments for some color names but if you don't think the comments are, right... i'm sorry, please let me know so i can update them. i just wrote them just now based on memory. end of the colorcodescustomize as you see fit endglobals TDHT style GetPlayerTeamMSGS function GetPlayerTeamMSGS takes integer playerid returns integer//player number for team number. if playerid==0 then//my map has player red return 1// on team 1. elseif playerid==1 then//my map has player blue return 1// on team 1. elseif playerid==10 then//my map has player dark green return 1// on team 1. elseif playerid>11 then//neutrals would be on return 3// team 3. endif//the players 11, and 2-9 are all on return 2// team 2. customize returns as needed, and add/remove elseifs and/or edit elseifs as needed. endfunction function gtc takes string colorcode, string text returns string//colors text shorthand for gettextcolor. this is widely used throughout the map, so i recommend if you rename the function then keep the function name as short as possible to save you time and energy. return "|cff"+colorcode+text+"|r" endfunction let's skip fixing up this msggetcolor function for now, need to finish vjass the code, then i'll implement my new ideas for colors function msggetcolor takes integer playerid, string text returns string colors text based on player color if playerid==0 then return gtc(c_red,text) elseif playerid==1 then return gtc(c_brightblue,text) elseif playerid==2 then return gtc(c_aqua,text) elseif playerid==3 then return gtc(c_purple,text) elseif playerid==4 then return gtc(c_yellow,text) elseif playerid==5 then return gtc(c_orange,text) else return gtc(c_white,text) endif//of course customize as you wish, you can add return text endfunction the brand new msgally function, will get some coloring update very soon. function msgally takes real duration, player from, string text, boolean ally returns nothing local integer x=GetPlayerId(from) local integer y=GetPlayerTeamMSGS(x) if ally then//sends text to allies set x=-1 loop set x=x+1 exitwhen x>11 if GetPlayerTeamMSGS(x)==y then call DisplayTimedTextToPlayer(Player(x),0,0,duration,text) endif endloop else//then send it to enemies set x=-1 loop set x=x+1 exitwhen x>11 if GetPlayerTeamMSGS(x)!=y then call DisplayTimedTextToPlayer(Player(x),0,0,duration,text) endif endloop endif endfunction//shouldn't need to customize this function whatsoever. if you get errors, check the function GetPlayerTeamMSGS to see if you customized it correctly you can also check msgall and msgone. they use the same loop. if you suspect your loop is broken, check the private constant integers low and high at the top of the library. if you prefer not to use the function msgally because of the boolean, feel free to use these function msgallyo takes real duration, player from, string text returns nothing local integer x=GetPlayerId(from) local integer y=GetPlayerTeamMSGS(x) sends text to allies only set x=low loop set x=x+1 exitwhen x>high if GetPlayerTeamMSGS(x)==y then call DisplayTimedTextToPlayer(Player(x),0,0,duration,text) endif endloop endfunction if you prefer not to use the function msgally because of the boolean, feel free to use these function msgallyno takes real duration, player from, string text, boolean ally returns nothing local integer x=GetPlayerId(from) local integer y=GetPlayerTeamMSGS(x) sends text to enemies only(ally no!) set x=low loop set x=x+1 exitwhen x>high if GetPlayerTeamMSGS(x)!=y then call DisplayTimedTextToPlayer(Player(x),0,0,duration,text) endif endloop endfunction function msgall takes real duration, string text returns nothing//benefits?
local integer x=low//ignore the extra parameters in DTTTP loop//manipulate duration easily, as opposed to BJDM set x=x+1 exitwhen x>high call DisplayTimedTextToPlayer(Player(x),0,0,duration,text) endloop endfunction function msgone takes real duration, player about, string text, boolean one returns nothing local integer x=low local integer y=GetPlayerId(about) if one then//send to the player the message is about call DisplayTimedTextToPlayer(about,0,0,duration,text) else//if boolean is false, sends it to everyone else but not to that player loop set x=x+1 exitwhen x>high if x!=y then call DisplayTimedTextToPlayer(Player(x),0,0,duration,text) endif endloop endif endfunction endlibrary cJASS versions
miniature versionit is cute//
/*MSGS - MessageS MessageSystem by SanKakU*//* library MSGS{define timedmsg=DisplayTextToPlayer//delete define if you're using already nothing msgall(real dur, string s){integer i=-1;whilenot (i++>11){timedmsg(Player(i),0,0,dur,s)}}//standard text nothing msgone(real dur, player p, string s, boolean one){integer i=-1,ip=GetPlayerId(p);if one then timedmsg(p,0,0,dur,(s));else;whilenot(i++>11){if i!=ip then;timedmsg(p,0,0,dur,s);endif}endif}} */// /* library MSGS{define{c_goldbrown="daa520";c_gold="ffd700";c_palegreen="7aff7c";c_pink="db7093";c_pretty="ee82ee" c_grassgreen="7fff00";c_brightgreen="00ff00";c_brightblue="0000ff";c_aqua="00ffff";c_white="f0ffff" c_black="000000";c_seagreen="7fffd4";c_twilightblur="20b2aa";c_twilightgreen="009966" c_coralgreen="00fa9a";c_coralpink="f08080";c_coralblue="33aaff";c_plum="ba55d3";c_indigo="4169e1" c_flowerpurple="aaaaff";c_green="32cd32";c_blue="4169e1";c_yellowgreen="adff2f";c_brightpurple="ff00ff" c_paledenim="c3dbff";c_orange="ffa500";c_purple="da70d6";c_royalpurple="aa00ff";c_flowerred="ee2222" c_grey="c0c0c0";c_gray="c0c0c0";c_redorange="ff4500";c_red="ff0000";c_spanishgreen="9acd32" c_darkspanishgreen="6b8e23";c_brown ="995500";c_yellow="ffff00";c_sand="ffffcc"}// string gtc(string x, string y){return "|cff"+x+y+"|r"}//colors text
string msggetcolor(integer x, string y){if x==0 then;return gtc(c_red,y);elseif x==1 then return gtc(c_brightblue,y);elseif x==2 then;return gtc(c_aqua,y);elseif x==3 then return gtc(c_purple,y);elseif x==4 then;return gtc(c_yellow,y);elseif x==5 then return gtc(c_orange,y);else;return gtc(c_white,y);endif;return y}//colors text based on player color integer GetPlayerTeamMSGS(integer playerid){if playerid==0 then;return 1;elseif playerid==1 then return 1;elseif playerid==10 then;return 1;elseif playerid>11 then;return 3;endif;return 2}//player number for team number//customize as needed nothing msgally(real x, player y, string z, boolean ally){integer a=GetPlayerId(y),b=GetPlayerTeamMSGS(a) if ally then;a=-1;whilenot(a++>11){if GetPlayerTeamMSGS(a)==b then;timedmsg(Player(a),0,0,x,z);endif} else;a=-1;whilenot(a++>11){if GetPlayerTeamMSGS(a)!=b then;timedmsg(Player(a),0,0,x,z);endif}endif} nothing msgallyo(real x, player y, string z){integer a=GetPlayerId(y),b=GetPlayerTeamMSGS(a) a=-1;whilenot(a++>11){if GetPlayerTeamMSGS(a)==b then;timedmsg(Player(a),0,0,x,z);endif}} nothing msgenemyno(real x, player y, string z){integer a=GetPlayerId(y),b=GetPlayerTeamMSGS(a) a=-1;whilenot(a++>11){if GetPlayerTeamMSGS(a)!=b then;timedmsg(Player(a),0,0,x,z);endif}} nothing msgall(real dur, string s){integer i=-1;whilenot (i++>11){timedmsg(Player(i),0,0,dur,s)}}//standard text nothing msgone(real dur, player p, string s, boolean one){integer i=-1,ip=GetPlayerId(p);if one then timedmsg(p,0,0,dur,(s));else;whilenot(i++>11){if i!=ip then;timedmsg(p,0,0,dur,s);endif}endif}} */ )) будет обновляться в ближайшее время с дополнительными опциями.
что будет добавлена ​​будет больше вариантов окраски. Например, текст с или около вражеского игрока? мы можем цвет текста красный для вас. Как только об использовании своего игрока цвет? мы можем сделать и это.
Вы, как золото подсветка текста или желто-зеленый? что основной цвет? коричневый или голубой, что ли? или просто белый, это хорошо.
по запросу здесь pJASS версии.
он не цветовых характеристик. но скоро я могу добавить несколько вариантов окраски. Это не трудно. Я просто не знаю, как легко использовать переменные, но мы можем попытаться использовать метель функции, чтобы получить игрока цвета, по крайней мере.
((код jass
TDHT style GetPlayerTeamMSGS function GetPlayerTeamMSGS takes integer playerid returns integer//player number for team number. if playerid==0 then//my map has player red return 1// on team 1. elseif playerid==1 then//my map has player blue return 1// on team 1. elseif playerid==10 then//my map has player dark green return 1// on team 1. elseif playerid>11 then//neutrals would be on return 3// team 3. endif//the players 11, and 2-9 are all on return 2// team 2. customize returns as needed, and add/remove elseifs and/or edit elseifs as needed. endfunction function msgally takes real duration, player from, string text, boolean ally returns nothing local integer x=GetPlayerId(from) local integer y=GetPlayerTeamMSGS(x) if ally then//sends text to allies set x=-1 loop set x=x+1 exitwhen x>11 if GetPlayerTeamMSGS(x)==y then call DisplayTimedTextToPlayer(Player(x),0,0,duration,text) endif endloop else//then send it to enemies set x=-1 loop set x=x+1 exitwhen x>11 if GetPlayerTeamMSGS(x)!=y then call DisplayTimedTextToPlayer(Player(x),0,0,duration,text) endif endloop endif endfunction//shouldn't need to customize this function whatsoever. if you get errors, check the function GetPlayerTeamMSGS to see if you customized it correctly you can also check msgall and msgone. they use the same loop. if you suspect your loop is broken, check the integers low and high at the top of the library. if you prefer not to use the function msgally because of the boolean, feel free to use these function msgallyo takes real duration, player from, string text returns nothing local integer x=GetPlayerId(from) local integer y=GetPlayerTeamMSGS(x) sends text to allies only set x=-1 loop set x=x+1 exitwhen x>11 if GetPlayerTeamMSGS(x)==y then call DisplayTimedTextToPlayer(Player(x),0,0,duration,text) endif endloop endfunction if you prefer not to use the function msgally because of the boolean, feel free to use these function msgallyno takes real duration, player from, string text, boolean ally returns nothing local integer x=GetPlayerId(from) local integer y=GetPlayerTeamMSGS(x) sends text to enemies only(ally no!) set x=-1 loop set x=x+1 exitwhen x>11 if GetPlayerTeamMSGS(x)!=y then call DisplayTimedTextToPlayer(Player(x),0,0,duration,text) endif endloop endfunction function msgall takes real duration, string text returns nothing//benefits? local integer x=-1//ignore the extra parameters in DTTTP loop//manipulate duration easily, as opposed to BJDM set x=x+1 exitwhen x>11 call DisplayTimedTextToPlayer(Player(x),0,0,duration,text) endloop endfunction function msgone takes real duration, player about, string text, boolean one returns nothing local integer x=-1 local integer y=GetPlayerId(about) if one then//send to the player the message is about call DisplayTimedTextToPlayer(about,0,0,duration,text) else//if boolean is false, sends it to everyone else but not to that player loop set x=x+1 exitwhen x>11 if x!=y then call DisplayTimedTextToPlayer(Player(x),0,0,duration,text) endif endloop endif endfunction )) Отредактировано Санкаку, 18.05.2011 в 21:18. |
18.05.2011, 11:00 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
naxim
offline
Опыт:
10,186Активность: |
Тут можно отправлять сообщения в чат от имени игроков? Если правильно понял, приведи в простом jass такую функцию. |
18.05.2011, 11:51 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Санкаку
offline
Опыт:
432Активность: |
Как сделать глобальные переменные в pJASS? я не помню. мы должны использовать список переменных GUI? ^ ^ |
18.05.2011, 12:10 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alexprey
познающий Unity
offline
Опыт:
68,501Активность: |
naxim, нет. Это подобие этого. Если сообщения уже будут в чате не от этой системы то получится шлак
|
18.05.2011, 12:27 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
naxim
offline
Опыт:
10,186Активность: |
alexprey, какой шлак? Сделай на обычном jass.
naxim добавил: Приведи примеры функций. |
18.05.2011, 20:37 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Санкаку
offline
Опыт:
432Активность: |
Хорошо, я просто приложите примеры на главную должность. преобразования в pJASS примеры не будет сделано. вместо примеры как это так, что больше примеров могут быть размещены в разумные сроки. |
18.05.2011, 20:56 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Msey
????
offline
Опыт:
67,346Активность: |
Санкаку, Сделай карту-пример чтоли. ^_- |
18.05.2011, 20:59 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Санкаку
offline
Опыт:
432Активность: |
Система уже используется в карте шахты. нет необходимости еще одно испытание карте. уведомления, как я отображения сообщений на игроков, когда бегун спасает, например.сообщения для игрока, который спас отправлено. , а затем отдельное сообщение для каждого игрока будет отправлено.
У вас также есть возможность отправить сообщение для игрока, и другое сообщение для всех остальных.
Он может быть использован во многих отношениях, слишком, если у вас есть воображение. Я могу дать больше примеров, но я думаю, что вы можете сделать свой ​​собственный. |
18.05.2011, 21:28 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
naxim
offline
Опыт:
10,186Активность: |
Как отправлять сообщения в чат от имени игрока? |
18.05.2011, 21:38 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
Никак, нужно делать чат на игровых сообщениях, полностью. |
18.05.2011, 21:46 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alexprey
познающий Unity
offline
Опыт:
68,501Активность: |
Цитата:
наложение сообщений друг на друга. Столкнулся с этой проблемой при создании чата для своей ммошки. Но полностью программный вывод решает. А убрать стандартный чат довольно таки легко |
|
18.05.2011, 21:58 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Suite
┌_____┐
offline
Опыт:
11,222Активность: |
даже статья есть |
18.05.2011, 22:08 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Санкаку
offline
Опыт:
432Активность: |
to clarify, this system has nothing to do w ith chat messages by players in game. this is use with events and conditions of your own design. you have special messages for players to display in a very specific manner? you may want this system, since it will make coding in those messages easier.
уточнить, эта система не имеет ничего общего со-й чат сообщений от игроков в игре. это использовать с событиями и условия вашей собственной конструкции. у вас есть специальные сообщения для игроков, для отображения в очень конкретной форме? Вы можете эту систему, поскольку это сделает кодирования в те сообщения, легче.
how to explain? you take for example a runner is rescued. it is an important game event. but how do you announce it? to everyone, right? but the player that his runner is rescued, for him it is a larger issue. this is exciting! so we extend the duration of the message we display to him, and give him an entirely different message, encouraging him to play on, and stop staring at the other player who are playing.
Как объяснить? Вы берете например бегун спасена. это важное событие игры. но как вы объявить об этом? для всех, не так ли? но игрок, что его бегун спасен, для него это больше вопрос. Это интересно! поэтому мы продлить срок сообщение мы показываем ему, и дать ему полностью другое сообщение, ему было рекомендовано играть, и остановить смотрела на других игроков, которые играют. |
18.05.2011, 22:25 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|