Jump to content

Оповещение о подключении игрока для L4D2 и CSS


Recommended Posts

  • Administrator

20200504203306_1.jpg

Начнем с того, что таких плагинов для Left 4 Dead 2 в сети лежит 1000 и 1 штука. Но этот скрипт я писал сам, для обучения. И поэтому можно разобрать здесь его. Ну а вы меня отругаете, или все переделаете на свой лад. 🖖 Итак, сам код (Кстати, на версии Sourcemod 1.10.6460 он компилируется без проблем):

#pragma semicolon 1
#include <sourcemod>
#include <sdktools>
#include <geoip>

#pragma tabsize 0

new Handle:h_connectmsg = INVALID_HANDLE;

public Plugin:myinfo = 
{
	name = "Анонс о подключении",
	author = "L4D2Noob.ru Dr.Lex",
	description = "Сообщает в чате о присоединении игрока",
	version = "1.6",
	url = "https://l4d2noob.ru/"
};

public OnPluginStart()
{	
	h_connectmsg = CreateConVar("sm_connectmsg", "1", "Показывает сообщение о подключении в чате, когда игрок присоединяется.", FCVAR_NOTIFY | FCVAR_DONTRECORD);
}

public OnClientPutInServer(client)
{
 if (!IsFakeClient(client))
 {
	 new Connect = GetConVarInt(h_connectmsg);
	 if(Connect == 1)
	 {
		 new String:name[99], String:authid[99], String:IP[99], String:Country[99];
		
		 GetClientName(client, name, sizeof(name));
		
		 GetClientAuthId(client, AuthId_Steam2, authid, sizeof(authid));
		
		 GetClientIP(client, IP, sizeof(IP), true);
		
     if(!GeoipCountry(IP, Country, sizeof Country))
     {
         Country = "Неизвестный Регион";
     }
     if (CheckCommandAccess(client, "sm_admin", ADMFLAG_GENERIC, true))
    	 return;
    
         PrintToChatAll ("\x04[L4D2Noob]: \x05 Игрок \x04%s \x05 вошел на сервер", name);
         PrintToChatAll ("\x04[L4D2Noob] \x05 SteamID: \x04[%s]",authid);
         PrintToChatAll ("\x04[L4D2Noob] \x05 Локация: \x04%s", Country);
        
     } else {
  
    CloseHandle(h_connectmsg);
    }
 }
}

Давайте разберемся с проблемами, которые возникли у меня при создании. Но опять таки, благодаря @dr.lex их удалось решить.

PrintToChatAll ("\x04[L4D2Noob]: \x05 Игрок \x04%s \x05 вошел на сервер", name);
PrintToChatAll ("\x04[L4D2Noob] \x05 SteamID: \x04[%s]",authid);
PrintToChatAll ("\x04[L4D2Noob] \x05 Локация: \x04%s", Country);

Почему то не хотели отображаться цветные сообщения в игре. Оказалось, что виноват символ "»". Что очень странно, ведь в предыдущем моем творении, он исправно работал.

Но как только я убрал этот символ, цвета в чате стали отображаться. Кстати, благодаря этому я понял почему @dr.lex ругал меня за #include <colors> в той теме. Оказывается что это подключение отвечает за отображение дополнительных, подключаемых цветов, которые выводятся как {green} или {lightgreen}, и что если ты используешь стандартные цвета типа \x04, то это подключение не нужно.

Кстати, надо запомнить, что CPrintToChatAll = {green}, а PrintToChatAll = \x04.

Дальше я столкнулся со следующей бедой, это отображение спавна ботов в этом оповещении. То есть плагин считал каждого появившегося бота, как подключившегося игрока. Из за этого в чате игры возникал бесконечный спам. Что бы этого не было, и плагин говорил только о настоящих игроках, нам следующие строки:

new Connect = GetConVarInt(h_connectmsg);
	 if(Connect == 1)
	 {
		 new String:name[99], String:authid[99], String:IP[99], String:Country[99];
		
		 GetClientName(client, name, sizeof(name));
		
		 GetClientAuthId(client, AuthId_Steam2, authid, sizeof(authid));
		
		 GetClientIP(client, IP, sizeof(IP), true);
		
     if(!GeoipCountry(IP, Country, sizeof Country))
     {
         Country = "Неизвестный Регион";
     }
     if (CheckCommandAccess(client, "sm_admin", ADMFLAG_GENERIC, true))
    	 return;
    
         PrintToChatAll ("\x04[L4D2Noob]: \x05 Игрок \x04%s \x05 вошел на сервер", name);
         PrintToChatAll ("\x04[L4D2Noob] \x05 SteamID: \x04[%s]",authid);
         PrintToChatAll ("\x04[L4D2Noob] \x05 Локация: \x04%s", Country);
        
     } else {
  
    CloseHandle(h_connectmsg);
    }

Надо просто было поместить в следующий оператор (Не знаю правильно ли я это назвал, но проект не просто так называется l4d2NOOB😞

if (!IsFakeClient(client))
 {
  Поместить сюда
 }

По итогу все. Как может показаться, что это мелочь, но на эту мелочь у меня ушло часа 2,5.

ПРОДАМ L4D2NOOB.RU СРОЧНО!


Я всего лишь чувак, который следит что бы все работало. А сайт создаете вы!

С 17.08.20 все тесты будут проводится на сервере 46.174.52.8:27207.

Link to post
Share on other sites
  • 2 weeks later...
  • Replies 10
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Упростил. OnClientPostAdminCheck здесь не нужен, чтобы узнать админ права. Connect_Announce.sp

Connect_Announce.zip

Т.к. эта версия имеет поддержку использования кастомных звуков, то звук должен находиться на сервере. В случае, со звуком из архива, путь до звука: left4dead2\sound\ambient\tones . Данный звук стандар

Posted Images

  • Administrator

Так же работает и в Counter-Strike: Source.

ПРОДАМ L4D2NOOB.RU СРОЧНО!


Я всего лишь чувак, который следит что бы все работало. А сайт создаете вы!

С 17.08.20 все тесты будут проводится на сервере 46.174.52.8:27207.

Link to post
Share on other sites
  • 1 month later...
  • 1 month later...
  • Administrator
07.07.2020 в 01:34, BLOODY BLADE сказал:

Я попробовал, не хочет воспроизводится звук. Не в какую... Что я уже не делал со своими знаниями. Сам код довел уже до такого состояния:

#pragma semicolon 1
#pragma newdecls required
#include <sourcemod>
#include <sdktools>
#include <geoip>

#define Join "ambient\tones\elev1.wav"

ConVar h_connectmsg, h_connectsound;

public Plugin myinfo = 
{
	name = "Анонс о подключении",
	author = "L4D2Noob.ru, Dr.Lex; Модификация - Blode Blade",
	description = "Сообщает в чате о присоединении игрока",
	version = "1.8",
	url = "https://l4d2noob.ru/"
};

public void OnPluginStart()
{
	h_connectmsg = CreateConVar("sm_connectmsg", "1", "Показывать сообщение в чате, при подключении игрока?", FCVAR_NOTIFY);
	h_connectsound = CreateConVar("sm_connectsound", "1", "Воспроизводить звук, при подключении игрока?", FCVAR_NOTIFY);
}

public void OnMapStart()
{
	PrecacheSound(Join, true);
}

public void OnClientPutInServer(int client)
{
    if (!IsFakeClient(client) && h_connectmsg.IntValue == 1)
    {
        char name[99], authid[99], IP[99], Country[99];
        GetClientName(client, name, sizeof(name));
        GetClientAuthId(client, AuthId_Steam2, authid, sizeof(authid));
        GetClientIP(client, IP, sizeof(IP), true);

        if(!GeoipCountry(IP, Country, sizeof Country))
            Country = "Неизвестный Регион";

        if (CheckCommandAccess(client, "sm_admin", ADMFLAG_GENERIC, true))
            return;

        if (h_connectsound.IntValue == 1)
            EmitSoundToClient(client, Join);

        PrintToChatAll ("\x03********************************************************");
        PrintToChatAll ("\x03* \x04[L4D2Noob]\x01: \x05Игрок \x04%s \x05вошел на сервер     \x03*", name);
        PrintToChatAll ("\x03* \x04[L4D2Noob]\x01: \x05SteamID\x01: \x04[%s]                \x03*", authid);
        PrintToChatAll ("\x03* \x04[L4D2Noob]\x01: \x05Локация\x01: \x04%s                  \x03*", Country);
        PrintToChatAll ("\x03********************************************************");
    }
}

Звук не хочет играть и все тут.

ПРОДАМ L4D2NOOB.RU СРОЧНО!


Я всего лишь чувак, который следит что бы все работало. А сайт создаете вы!

С 17.08.20 все тесты будут проводится на сервере 46.174.52.8:27207.

Link to post
Share on other sites
  • SP Scripter
10 часов назад, Ryancoolround сказал:

Я попробовал, не хочет воспроизводится звук. Не в какую... Что я уже не делал со своими знаниями. Сам код довел уже до такого состояния:


#pragma semicolon 1
#pragma newdecls required
#include <sourcemod>
#include <sdktools>
#include <geoip>

#define Join "ambient\tones\elev1.wav"

ConVar h_connectmsg, h_connectsound;

public Plugin myinfo = 
{
	name = "Анонс о подключении",
	author = "L4D2Noob.ru, Dr.Lex; Модификация - Blode Blade",
	description = "Сообщает в чате о присоединении игрока",
	version = "1.8",
	url = "https://l4d2noob.ru/"
};

public void OnPluginStart()
{
	h_connectmsg = CreateConVar("sm_connectmsg", "1", "Показывать сообщение в чате, при подключении игрока?", FCVAR_NOTIFY);
	h_connectsound = CreateConVar("sm_connectsound", "1", "Воспроизводить звук, при подключении игрока?", FCVAR_NOTIFY);
}

public void OnMapStart()
{
	PrecacheSound(Join, true);
}

public void OnClientPutInServer(int client)
{
    if (!IsFakeClient(client) && h_connectmsg.IntValue == 1)
    {
        char name[99], authid[99], IP[99], Country[99];
        GetClientName(client, name, sizeof(name));
        GetClientAuthId(client, AuthId_Steam2, authid, sizeof(authid));
        GetClientIP(client, IP, sizeof(IP), true);

        if(!GeoipCountry(IP, Country, sizeof Country))
            Country = "Неизвестный Регион";

        if (CheckCommandAccess(client, "sm_admin", ADMFLAG_GENERIC, true))
            return;

        if (h_connectsound.IntValue == 1)
            EmitSoundToClient(client, Join);

        PrintToChatAll ("\x03********************************************************");
        PrintToChatAll ("\x03* \x04[L4D2Noob]\x01: \x05Игрок \x04%s \x05вошел на сервер     \x03*", name);
        PrintToChatAll ("\x03* \x04[L4D2Noob]\x01: \x05SteamID\x01: \x04[%s]                \x03*", authid);
        PrintToChatAll ("\x03* \x04[L4D2Noob]\x01: \x05Локация\x01: \x04%s                  \x03*", Country);
        PrintToChatAll ("\x03********************************************************");
    }
}

Звук не хочет играть и все тут.

Т.к. эта версия имеет поддержку использования кастомных звуков, то звук должен находиться на сервере. В случае, со звуком из архива, путь до звука: left4dead2\sound\ambient\tones . Данный звук стандартный для l4d2, потому, уже присутствует у игроков по данному же пути.

Link to post
Share on other sites
  • SP Scripter
10 часов назад, Ryancoolround сказал:

Я попробовал, не хочет воспроизводится звук. Не в какую... Что я уже не делал со своими знаниями. Сам код довел уже до такого состояния:


#pragma semicolon 1
#pragma newdecls required
#include <sourcemod>
#include <sdktools>
#include <geoip>

#define Join "ambient\tones\elev1.wav"

ConVar h_connectmsg, h_connectsound;

public Plugin myinfo = 
{
	name = "Анонс о подключении",
	author = "L4D2Noob.ru, Dr.Lex; Модификация - Blode Blade",
	description = "Сообщает в чате о присоединении игрока",
	version = "1.8",
	url = "https://l4d2noob.ru/"
};

public void OnPluginStart()
{
	h_connectmsg = CreateConVar("sm_connectmsg", "1", "Показывать сообщение в чате, при подключении игрока?", FCVAR_NOTIFY);
	h_connectsound = CreateConVar("sm_connectsound", "1", "Воспроизводить звук, при подключении игрока?", FCVAR_NOTIFY);
}

public void OnMapStart()
{
	PrecacheSound(Join, true);
}

public void OnClientPutInServer(int client)
{
    if (!IsFakeClient(client) && h_connectmsg.IntValue == 1)
    {
        char name[99], authid[99], IP[99], Country[99];
        GetClientName(client, name, sizeof(name));
        GetClientAuthId(client, AuthId_Steam2, authid, sizeof(authid));
        GetClientIP(client, IP, sizeof(IP), true);

        if(!GeoipCountry(IP, Country, sizeof Country))
            Country = "Неизвестный Регион";

        if (CheckCommandAccess(client, "sm_admin", ADMFLAG_GENERIC, true))
            return;

        if (h_connectsound.IntValue == 1)
            EmitSoundToClient(client, Join);

        PrintToChatAll ("\x03********************************************************");
        PrintToChatAll ("\x03* \x04[L4D2Noob]\x01: \x05Игрок \x04%s \x05вошел на сервер     \x03*", name);
        PrintToChatAll ("\x03* \x04[L4D2Noob]\x01: \x05SteamID\x01: \x04[%s]                \x03*", authid);
        PrintToChatAll ("\x03* \x04[L4D2Noob]\x01: \x05Локация\x01: \x04%s                  \x03*", Country);
        PrintToChatAll ("\x03********************************************************");
    }
}

Звук не хочет играть и все тут.

Замени EmitSoundToClient(client, Join); на ClientCommand(client, "play Join");

Прекеш звука в таком случае, не используется. Будет работать со стандартными звуками(без наличия самого звука на сервере), что уже имеются у клиентов по умолчанию.

Link to post
Share on other sites
  • Administrator
10 часов назад, Ryancoolround сказал:

#define Join "ambient\tones\elev1.wav"

Все проще оказалось. Во всем виноват символ "\". Поменял на "/", все заработало. Спасибо!

ПРОДАМ L4D2NOOB.RU СРОЧНО!


Я всего лишь чувак, который следит что бы все работало. А сайт создаете вы!

С 17.08.20 все тесты будут проводится на сервере 46.174.52.8:27207.

Link to post
Share on other sites
  • Administrator
  • В скомпилированном файле тег [L4D2Noob] заменен на [СЕРВЕР]. Можно скачать, и сразу использовать. Лишней рекламы не будет.
  • Файл .smx компилировался на версии SM 1.10.0.6492
  • Файл .sp идеально компилируется на версии SM 1.10.0.6492
  • Если ищете где отредактировать тег [СЕРВЕР], то это 50, 51 и 52 строки


Стандартный звук для L4D2 можно на сервер не загружать, так как:

28 минут назад, BLOODY BLADE сказал:

Данный звук стандартный для l4d2, потому, уже присутствует у игроков по данному же пути.

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

Соответственно, если вы загружаете другой звук, то в скрипте, в 7 строке, надо указать, что звук изменен:

#define Join "ambient/tones/elev1.wav"

 

Connect_Announce.smx Connect_Announce.sp

ПРОДАМ L4D2NOOB.RU СРОЧНО!


Я всего лишь чувак, который следит что бы все работало. А сайт создаете вы!

С 17.08.20 все тесты будут проводится на сервере 46.174.52.8:27207.

Link to post
Share on other sites
  • 2 weeks later...
  • Administrator

Изменения 2.0:

  • Блок объявления сделал компактнее
  • Добавил проверку на ADMFLAG_ROOT (Проверка сообщит, если на сервер зашел Гл. Админ)
Скрытый текст

20200917152953_1.jpg

 

Connect_Announce.smx Connect_Announce.sp

ПРОДАМ L4D2NOOB.RU СРОЧНО!


Я всего лишь чувак, который следит что бы все работало. А сайт создаете вы!

С 17.08.20 все тесты будут проводится на сервере 46.174.52.8:27207.

Link to post
Share on other sites
  • 1 month later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • By Ryancoolround
      Обновление сообщества Left 4 Dead 2: The Last Stand выходит 24 сентября, и мы празднуем его бесплатными выходными!
      Хватайте своих друзей и сражайтесь с ордой зомби на более чем двадцати новых аренах выживания, четырех новых аренах сбора и кампании, основанной на карте выживания Маяк. Новые достижения, холодное оружие, анимация, диалоги, корректировка игрового баланса и другие сюрпризы завершают это официальное обновление Left 4 Dead 2, созданное сообществом для сообщества.
      Взгляните на новый трейлер ниже!
       
    • By Ryancoolround
      Что же друзья! Мы долго ждали! Я не делал обновления плагинов, в преддверии того, что сейчас не т смысла этого делать. Я представляю вам официальный трейлер обновления «Последний бой» которое выйдет на ПК 24 сентября.
      Это официально, это новый контент, который будет получать Left 4 Dead 2, но это еще не все!
      Также будет 30 новых достижений, 2 совершенно новые мутации Rocket Dude и Tank Run и множество исправлений ошибок и эксплойтов! Это обновление - результат совместных усилий 30+ членов сообщества, которые работали вместе с Valve в течение 11 месяцев над созданием нового контента для этой любимой игры, которая будет доступна всем игрокам на ПК в виде бесплатного DLC уже 24 сентября!
       

       
       
       
      Помимо этого мы еще получим:
      4 новых карты для сбора 2 новых оружия ближнего боя (Лопата и Вилы) Новые и ранее не использованные диалоги Новые анимации персонажей Изменение баланса в PvP Новые лестницы для зараженных Улучшение пользовательского интерфейса А помимо этого у Left 4 Dead 2 появятся наконец таки бесплатные выходные, которых не было уже с 2013 года. Счастья вам друзья! Мы ждали этого вечность!
       
       
    • By Ryancoolround
      Ну, как и предпологалось, новое обновление Left 4 Dead 2 принесет нам новые достижения. На всякий случай вот ссылка на источник скриншота.
      Упоминание "Collect Gold Crowbar", намекает нам на то, что возможно в обновлении мы на карте теперь будем собирать золотые монтировки для некой коллекции.
      Я сплю и вижу как я фармлю эти награды, ведь L4D2 для меня в Steam идеальная игра. У меня выполнены все ачивки, и как я понял, возможно мне в будущем придется повозится.
       
    • By Ryancoolround
      Запустив игру, сначала войдите в меню "параметры", где найдите опцию "Клавиатура-Мышь". Там нужно включить функцию "Oтoбpaжaть кoнcoль", после чего можно будет вызвать ее из игры клавишей [~] (тильдa). В консоль вводите сначала sv_cheats 1 для активации режима читов, а затем такие коды Left 4 Deаd 2:
      god 1 - код на неуязвимость, причем, для всей команды. god 0 - отключение неуязвимости для всей команды. give health - восстановление здоровья на максимум. give defibrilator - чит на Дeфибpиллятop. give adrenaline - код Left 4 Deаd 2 на Aдpeнaлин. give first_aid_kit - введите для получения полного снаряжения. sv_infinite_ammo 1 - активация бесконечного боезапаса. sv_infinite_ammo 0 - отключение бесконечных патронов. kill - суицид. quit - быстрый выход из игры. noclip - активация возможности проходить через стены. upgrade_add incendiary_ammo - апгрейд, получение зажигательных боеприпасов. upgrade_add explosive_ammo - апгрейд, получение взрывательных боеприпасов upgrade_add laser_sight - апгрейд, получение приборов ночного видения. give weapon_grenade_launcher - код на гранатомет. give melee - режим ручной схватки. give rifle_desert - код на desert. give rifle_ak47 - код на AK-47. give sniper_military - код на cнaйпepcкyю винтoвкy. give pistol_magnum - код на пиcтoлeт Maгнyм. give smg_silenced - код на SMG c глyшитeлeм. give shotgun_chrome - код на xpoмиpoвaнный дpoбoвик. give shotgun_spas - код на штypмoвoй дpoбoвик. give tonfa - код на дyбинкy. give electric_guitar - код на элeктpoгитapy. give frying_pan - код на cкoвopoдкy. give machete - код на мaчeтe. give pistol - код на двa пиcтoлeтa. give pumpshotgun - код на пoмпoвый дpoбoвик. give autoshotgun - код на caмoпepeзapяднoй дpoбoвик. give smg - код на SMG. give rifle - код на винтовку M16. give hunting_rifle - код на oxoтничью винтoвку. give molotov - код на кoктeйль Moлoтoвa. give pipe_bomb - код на нeйтpaлизyющyю бoмбy. give propanetank - код на бoчкy c пpoпaнoм. give gascan - код на нейтрализирующий газ. give oxygentank - код на пpoтивoгaз. give ammo - код на боеприпасы для вcex видoв винтoвoк. z_spawn spitter - чит Left 4 Deаd 2 на создание Spitter. z_spawn jockey - чит на создание Жoкeя. z_spawn charger - чит на создание Charger. z_spawn zombie - чит на создание oбычнoгo зoмби. z_spawn mob - чит на создание тoлпы зoмби. z_spawn boomer - чит на создание Бyмepa. z_spawn hunter - чит на создание Oxoтникa. z_spawn witch - чит Left 4 Deаd 2 на создание Beдьмы. z_spawn smoker - чит на создание Kypильщикa. z_spawn tank - чит на создание Taнкa. Сразу отвечу на вопрос, "А что если английская версия игры?". А ничего, все точно так же.
    • By Ryancoolround
      Просто полезный инструмент для перемещения игрока из команды в команду. Проверено на нашем сервере Left 4 Dead 2. В панель администратора добавляется 4 новых раздела.
      Команды:
      sm_swap <игрок> - поменять местами команду игрока (ов). sm_swap @all - поменять местами сразу всех игроков sm_swapround <игрок> - поменять местами команду игрока (ов) в конце раунда / при смерти игрока. sm_exch <игрок 1> <игрок 2> - меняет местами двух игроков в противоположных командах. sm_exchround <игрок 1> <игрок 2> - меняет местами двух игроков в противоположных командах в конце раунда / при смерти игрока. Перемещение игрока происходит мгновенно. Без таймеров и кулдаунов.
      swapper.zip
  • Recently Browsing   0 members

    No registered users viewing this page.


  • Our picks

    • Способы и тактика игры за заражённых в Left 4 Dead 2

      1. Не нужно идти в одиночку на толпу выживших, это никчему вас не приведёт, и с большой вероятностью вас могут убить и ваша команда не получит никаких очков.
      Договоритесь со своими товарищами и совместно атакуйте, тогда появится шанс что команда противника получит значительный урон от ваших совместных атак и может привести вас к победе.

      2. Если один из выживших достаточно значительно отделился от своей команды, то не стесняйтесь его атаковать, лишние очки вашей команде не помешают.

      3. Если на карте есть какие-либо участки где есть пропасть, то лучше используйте Громилу или Жокея. Вход в бесконечность моментально убивает как выживших так и заражённых. Если играете за Жокея/Громилу, то постарайтесь сбросить/повесить выжившего.

      4. Если у вас что-то не получается не стоит выражать свою злость на товарищах, ведите себя спокойно, конец одного раунда это не конец жизни. Не ругайтесь на своих товарищей, этим вы положение не исправите а сделаете только хуже, наоборот если что-то не получается вы должны подбадривать своих товарищей что бы у них появилась мотивация выиграть. 

      5. Если видите что у одного из противников очень мало хп, то сделайте его приоритетом для себя и старайтесь максимально атаковать что бы вывести его из строя.
      Если один из противников выведен из строя, то его начнут поднимать, и это ваш шанс атаковать пока вражеская команда беззащитна.

      6. Старайтесь разделить выживших, особенно если играете за Жокея.

      7. Если вы не смогли успешно провести атаку по выжившим, то не нужно бежать к ним и пытаться нанести какой-то урон, вы лишь выставляете себя на показ и вас не составит труда убить. Спрячтесь и дождитесь перезарядки вашей способности, а после вновь атакуйте.
      • 4

        Reputation Points

      • 16 replies
  • Recent Status Updates

  • Popular Contributors

  • Upcoming Events

  • Member Statistics

    • Total Members
      136
    • Most Online
      55

    Newest Member
    Jeremiahhok
    Joined
  • Positions

×
×
  • Create New...
UP