Raised This Month: $32 Target: $400
 8% 

A Author needs to help me. excuse me?


Post New Thread Reply   
 
Thread Tools Display Modes
Darkwob
BANNED
Join Date: Oct 2018
Old 06-07-2021 , 14:45   Re: A Author needs to help me. excuse me?
Reply With Quote #11

Fix: Plugin is Working, but player can use idle command once. if you can't use the idle command again after rejoining with join. constantly outputs a message to the chat.

Quote:
[AFK Manager] Be patient, you have already used the !idle command.
Darkwob is offline
Grey83
Veteran Member
Join Date: Dec 2014
Location: Ukraine
Old 06-07-2021 , 15:02   Re: A Author needs to help me. excuse me?
Reply With Quote #12

Try this
PHP Code:
#pragma semicolon 1
#pragma newdecls required

#include <sdktools_functions>

#define PL_VER "1.4 (rewritten by Grey83)"

static const float
    CHECK            
10.0;
static const 
char
    PREFIX_HINT
[]    = "[RegionZ]",
    
PREFIX_CHAT[]    = "\x04[\x05AFK Manager\x04] \x01",
    
PREFIX_CON[]    = "[AFK Manager] ";

Handle
    hTimer
[MAXPLAYERS+1];
int
    iMsg
,
    
iTime[MAXPLAYERS+1];
float
    fAdvCD
,
    
fJoinTip,
    
fWarning,
    
fSpec[MAXPLAYERS+1],
    
fAfk[MAXPLAYERS+1];

public 
Plugin myinfo =
{
    
name "[L4D] AFK Manager",
    
version PL_VER,
    
author "DarkWob",
    
url "http://www.regionz.ml"
}

public 
void OnPluginStart()
{
    
CreateConVar("l4d_afkmanager_version"PL_VER"[L4D(2)] AFK Manager"FCVAR_SPONLY|FCVAR_NOTIFY|FCVAR_DONTRECORD);

    
ConVar cvar;
    
cvar CreateConVar("afk_adinterval""300.0""Interval in which the plugin will advertise the 'idle' command (x < 10.0 - disable)."_true);
    
cvar.AddChangeHook(CVarChange_Adv);
    
CVarChange_Adv(cvarNULL_STRINGNULL_STRING);

    
cvar CreateConVar("afk_spectime""40.0""AFK time after which you will be moved to the Spectator team."_true30.0);
    
cvar.AddChangeHook(CVarChange_SpecTime);
    
fAfk[0] = cvar.FloatValue;

    
cvar CreateConVar("afk_kicktime""480.0""AFK time after which you will be kicked."_true60.0);
    
cvar.AddChangeHook(CVarChange_KickTime);
    
fSpec[0] = cvar.FloatValue;

    
cvar CreateConVar("afk_messages""3""Control spec/kick messages. (0 = disable, 1 = spec, 2 = kick, 3 = spec + kick"_true_true3.0);
    
cvar.AddChangeHook(CVarChange_Msg);
    
iMsg cvar.IntValue;

    
cvar CreateConVar("afk_joinmsg_time""60.0"__true);
    
cvar.AddChangeHook(CVarChange_JoinTip);
    
fJoinTip cvar.FloatValue;

    
cvar CreateConVar("afk_warning_time""5.0"__true);
    
cvar.AddChangeHook(CVarChange_Warning);
    
fWarning cvar.FloatValue;

    
HookEvent("player_team"Event_PlayerTeam);
    
HookEvent("round_end"Event_RoundEndEventHookMode_PostNoCopy);

    
CreateTimer(CHECKTimer_Check_TIMER_REPEAT);

//    AutoExecConfig(true, "l4d_afkmanager");

    
RegConsoleCmd("sm_idle"Cmd_Idle"Switches yourself to spectate mode if you are alive");
    
RegConsoleCmd("sm_afk"Cmd_Idle"Switches yourself to spectate mode if you are alive");
}

public 
void CVarChange_Adv(ConVar cvar, const char[] oldValue, const char[] newValue)
{
    
fAdvCD cvar.FloatValue;
    
ResetAdv();
}

public 
void CVarChange_SpecTime(ConVar cvar, const char[] oldValue, const char[] newValue)
{
    
fAfk[0] = cvar.FloatValue;
}

public 
void CVarChange_KickTime(ConVar cvar, const char[] oldValue, const char[] newValue)
{
    
fSpec[0] = cvar.FloatValue;
}

public 
void CVarChange_Msg(ConVar cvar, const char[] oldValue, const char[] newValue)
{
    
iMsg cvar.IntValue;
}

public 
void CVarChange_JoinTip(ConVar cvar, const char[] oldValue, const char[] newValue)
{
    
fJoinTip cvar.FloatValue;
}

public 
void CVarChange_Warning(ConVar cvar, const char[] oldValue, const char[] newValue)
{
    
fWarning cvar.FloatValue;
}

public 
void OnMapStart()
{
    
iTime[0] = GetTime();
    
ResetAdv();
}

stock void ResetAdv()
{
    if(
hTimer[0]) delete hTimer[0];
    if(
fAdvCD >= 10.0hTimer[0] = CreateTimer(fAdvCDTimer_Adv_TIMER_REPEAT);
}

public 
void OnMapEnd()
{
    for(
int i<= MaxClientsi++) OnClientDisconnect(i);
}

public 
void OnClientDisconnect(int client)
{
    if(
hTimer[client]) delete hTimer[client];
}

public 
Action Cmd_Idle(int clientint args)
{
    if(!
client || !IsClientValid(client))
        return 
Plugin_Handled;

    if(!
IsPlayerAlive(client))
    {
        
PrintToChat(client"%sYou cannot use the \x04!idle \x01command while dead."PREFIX_CHATclient);
        return 
Plugin_Handled;
    }

    if(!
hTimer[client])
    {
        
iTime[client] = GetTime() + 15;
        
hTimer[client] = CreateTimer(1.0Timer_IdleGetClientUserId(client), TIMER_REPEAT);
        
PrintHintText(client"%s\n After 15 seconds you will be afk."PREFIX_HINT);
    }
    else 
PrintToChat(client"%sBe patient, you have already used the \x04!idle \x01command."PREFIX_CHATclient);

    return 
Plugin_Handled;
}

public 
Action Timer_Idle(Handle timerint uid)
{
    
int client GetClientUserId(uid);
    if(!
client)
        return 
Plugin_Stop;

    if(
GetClientTeam(client) < 2)
    {
        
hTimer[client] = null;
        return 
Plugin_Stop;
    }

    
int time iTime[client] - GetTime();
    if(
time 0)
    {
        
PrintHintText(client"%s\nAfter %i seconds you will be afk."PREFIX_CHATtime);
        return 
Plugin_Continue;
    }

    
Move2Spec(client);
    
hTimer[client] = null;
    return 
Plugin_Stop;
}

public 
Action Timer_Adv(Handle timer)
{
    
PrintToChatAll("\x04[\x05AFK Manager\x04]\x01 Use \x05!idle \x01if you plan to go AFK for a while.");
    return 
Plugin_Continue;
}

public 
Action Timer_Check(Handle timer)
{
    
bool isAFK;
    for(
int i 1jteam<= MaxClientsi++) if(IsClientInGame(i) && (team IsClientValid(i)))
    {
        static 
float vec[3];
        if(
team == 1)
        {
            
fSpec[i] += CHECK;
            if(
fSpec[i] >= fSpec[0])
            {
                if(
GetRealClientCount() > 25 && !IsVip(i) || GetClientCount(false) > 29 && !IsRoot(i))
                {
                    
KickClient(i"You were AFK for too long.");
                    if(
iMsg 1PrintToChatAll("\x04[\x05AFK Manager\x04]\x01 Player \x04'%N'\x01 was kicked."i);
                }
                else 
fSpec[i] -= CHECK 1;
            }
            else if(!
IsRoot(i))
            {
                static 
float msg[MAXPLAYERS+1];
                
vec[0] = GetClientTime(i);
                if(
vec[0] - msg[i] >= fWarning)
                {
                    
PrintToChat(i"%sYou can spectate for \x04%d\x01 more seconds before you will be kicked."PREFIX_CHATRoundToFloor(fSpec[0] - fSpec[i]));
                    
msg[i] = vec[0];
                }

                if(
vec[0] - msg[i] >= fJoinTip)
                {
                    
PrintToChat(i"%sSay \x05!join\x01 to join game."PREFIX_CHAT);
                    
msg[i] = vec[0];
                }
            }
        }
        else if(
IsPlayerAlive(i))
        {
            static 
float pos[MAXPLAYERS+1][3], ang[MAXPLAYERS+1][3];
            
isAFK true;
            
GetClientAbsOrigin(ivec);
            for(
03j++) if(vec[j] != pos[i][j])
            {
                
isAFK false;
                
pos[i] = vec;
                break;
            }

            
GetClientAbsAngles(ivec);
            if(
isAFK) for(03j++) if(vec[j] != ang[i][j])
            {
                
isAFK false;
                
ang[i] = vec;
                break;
            }

            if(
isAFK && (fAfk[i] += CHECK) >= fAfk[0])
            {
                if(
GetClientCount(false) > 29)
                {
                    
KickClient(i"Sorry, no open slots for spectators.");
                    if(
iMsg 1PrintToChatAll("%sPlayer \x04%N\x01 was kicked. No open slots for spectators."PREFIX_CHATi);
                }
                else 
ClientAFK(i);
            }
            else 
fAfk[i] = 0.0;
        }
    }
    return 
Plugin_Continue;
}

stock void ClientAFK(int client)
{
    if(
IsClientInGame(client) && IsClientValid(client))
        
CreateTimer(GetRandomFloat(0.15.1), Timer_AfkGetClientUserId(client));
}

public 
Action Timer_Afk(Handle timerint uid)
{
    
int client GetClientOfUserId(uid);
    if(!
client || GetClientTeam(client) > 1)
        return 
Plugin_Stop;

    
int afktime GetTime() - iTime[0];
    if(
afktime 50)
        
fAfk[client] -= CHECK 1;
    else
    {
        if(
GetClientCount(false) >= 30)
        {
            
KickClient(client"Sorry, no open slots for spectators.");
            if(
iMsg 1)
                
PrintToChatAll("\x04[\x05AFK Manager\x04]\x01 Player \x04'%N'\x01 was kicked. No open slots for spectators."client);
            return 
Plugin_Stop;
        }

        
Move2Spec(client);
        
iTime[0] = GetTime();
    }

    return 
Plugin_Stop;
}

stock int GetRealClientCount()
{
    
int clients 0;
    for(
int i 1<= MaxClientsi++) if(IsClientInGame(i) && !IsFakeClient(i)) clients++;
    return 
clients;
}

public 
Action Event_PlayerTeam(Event event, const char[] namebool dontBroadcast)
{
    
int client GetClientOfUserId(event.GetInt("userid"));
    
int team GetEventInt(event"team");
    switch(
team)
    {
        case 
1:        fSpec[client] = 0.0;
        case 
23:    fAfk[client] = 0.0;
    }
}

public 
Action Event_RoundEnd(Event event, const char[] namebool dontBroadcast)
{
    
int i 1;
    while (
<= MaxClients)
    {
        if(
IsClientInGame(i)) fAfk[i] = 0.0;
        
i++;
    }
}

stock int IsClientValid(int client)
{
    if(
IsFakeClient(client))
        return 
0;

    
int i;
    return (
GetClientTeam(client)) > 0;
}

stock bool IsVip(int client)
{
    
AdminId admin GetUserAdmin(client);
    return 
admin != INVALID_ADMIN_ID && GetAdminFlag(adminAdmin_Reservation);
}

stock bool IsRoot(int client)
{
    
AdminId admin GetUserAdmin(client);
    return 
admin != INVALID_ADMIN_ID && (GetAdminFlag(adminAdmin_Root) || GetAdminFlag(adminAdmin_Password));
}

stock void Move2Spec(int client)
{
    if(
iMsg 1PrintToChatAll("Player \x04'%N'\x01 was moved to Spectator team."PREFIX_CHATclient);
    
PrintToServer("%sPlayer '%N' was moved to Spectator team."PREFIX_CONclient);
    
ChangeClientTeam(client1);
    
ForcePlayerSuicide(client);

Attached Files
File Type: sp Get Plugin or Get Source (l4d_afkmanager.sp - 56 views - 8.6 KB)
__________________
Grey83 is offline
Darkwob
BANNED
Join Date: Oct 2018
Old 06-08-2021 , 07:03   Re: A Author needs to help me. excuse me?
Reply With Quote #13

Quote:
Originally Posted by Grey83 View Post
Try this
PHP Code:
#pragma semicolon 1
#pragma newdecls required

#include <sdktools_functions>

#define PL_VER "1.4 (rewritten by Grey83)"

static const float
    CHECK            
10.0;
static const 
char
    PREFIX_HINT
[]    = "[RegionZ]",
    
PREFIX_CHAT[]    = "\x04[\x05AFK Manager\x04] \x01",
    
PREFIX_CON[]    = "[AFK Manager] ";

Handle
    hTimer
[MAXPLAYERS+1];
int
    iMsg
,
    
iTime[MAXPLAYERS+1];
float
    fAdvCD
,
    
fJoinTip,
    
fWarning,
    
fSpec[MAXPLAYERS+1],
    
fAfk[MAXPLAYERS+1];

public 
Plugin myinfo =
{
    
name "[L4D] AFK Manager",
    
version PL_VER,
    
author "DarkWob",
    
url "http://www.regionz.ml"
}

public 
void OnPluginStart()
{
    
CreateConVar("l4d_afkmanager_version"PL_VER"[L4D(2)] AFK Manager"FCVAR_SPONLY|FCVAR_NOTIFY|FCVAR_DONTRECORD);

    
ConVar cvar;
    
cvar CreateConVar("afk_adinterval""300.0""Interval in which the plugin will advertise the 'idle' command (x < 10.0 - disable)."_true);
    
cvar.AddChangeHook(CVarChange_Adv);
    
CVarChange_Adv(cvarNULL_STRINGNULL_STRING);

    
cvar CreateConVar("afk_spectime""40.0""AFK time after which you will be moved to the Spectator team."_true30.0);
    
cvar.AddChangeHook(CVarChange_SpecTime);
    
fAfk[0] = cvar.FloatValue;

    
cvar CreateConVar("afk_kicktime""480.0""AFK time after which you will be kicked."_true60.0);
    
cvar.AddChangeHook(CVarChange_KickTime);
    
fSpec[0] = cvar.FloatValue;

    
cvar CreateConVar("afk_messages""3""Control spec/kick messages. (0 = disable, 1 = spec, 2 = kick, 3 = spec + kick"_true_true3.0);
    
cvar.AddChangeHook(CVarChange_Msg);
    
iMsg cvar.IntValue;

    
cvar CreateConVar("afk_joinmsg_time""60.0"__true);
    
cvar.AddChangeHook(CVarChange_JoinTip);
    
fJoinTip cvar.FloatValue;

    
cvar CreateConVar("afk_warning_time""5.0"__true);
    
cvar.AddChangeHook(CVarChange_Warning);
    
fWarning cvar.FloatValue;

    
HookEvent("player_team"Event_PlayerTeam);
    
HookEvent("round_end"Event_RoundEndEventHookMode_PostNoCopy);

    
CreateTimer(CHECKTimer_Check_TIMER_REPEAT);

//    AutoExecConfig(true, "l4d_afkmanager");

    
RegConsoleCmd("sm_idle"Cmd_Idle"Switches yourself to spectate mode if you are alive");
    
RegConsoleCmd("sm_afk"Cmd_Idle"Switches yourself to spectate mode if you are alive");
}

public 
void CVarChange_Adv(ConVar cvar, const char[] oldValue, const char[] newValue)
{
    
fAdvCD cvar.FloatValue;
    
ResetAdv();
}

public 
void CVarChange_SpecTime(ConVar cvar, const char[] oldValue, const char[] newValue)
{
    
fAfk[0] = cvar.FloatValue;
}

public 
void CVarChange_KickTime(ConVar cvar, const char[] oldValue, const char[] newValue)
{
    
fSpec[0] = cvar.FloatValue;
}

public 
void CVarChange_Msg(ConVar cvar, const char[] oldValue, const char[] newValue)
{
    
iMsg cvar.IntValue;
}

public 
void CVarChange_JoinTip(ConVar cvar, const char[] oldValue, const char[] newValue)
{
    
fJoinTip cvar.FloatValue;
}

public 
void CVarChange_Warning(ConVar cvar, const char[] oldValue, const char[] newValue)
{
    
fWarning cvar.FloatValue;
}

public 
void OnMapStart()
{
    
iTime[0] = GetTime();
    
ResetAdv();
}

stock void ResetAdv()
{
    if(
hTimer[0]) delete hTimer[0];
    if(
fAdvCD >= 10.0hTimer[0] = CreateTimer(fAdvCDTimer_Adv_TIMER_REPEAT);
}

public 
void OnMapEnd()
{
    for(
int i<= MaxClientsi++) OnClientDisconnect(i);
}

public 
void OnClientDisconnect(int client)
{
    if(
hTimer[client]) delete hTimer[client];
}

public 
Action Cmd_Idle(int clientint args)
{
    if(!
client || !IsClientValid(client))
        return 
Plugin_Handled;

    if(!
IsPlayerAlive(client))
    {
        
PrintToChat(client"%sYou cannot use the \x04!idle \x01command while dead."PREFIX_CHATclient);
        return 
Plugin_Handled;
    }

    if(!
hTimer[client])
    {
        
iTime[client] = GetTime() + 15;
        
hTimer[client] = CreateTimer(1.0Timer_IdleGetClientUserId(client), TIMER_REPEAT);
        
PrintHintText(client"%s\n After 15 seconds you will be afk."PREFIX_HINT);
    }
    else 
PrintToChat(client"%sBe patient, you have already used the \x04!idle \x01command."PREFIX_CHATclient);

    return 
Plugin_Handled;
}

public 
Action Timer_Idle(Handle timerint uid)
{
    
int client GetClientUserId(uid);
    if(!
client)
        return 
Plugin_Stop;

    if(
GetClientTeam(client) < 2)
    {
        
hTimer[client] = null;
        return 
Plugin_Stop;
    }

    
int time iTime[client] - GetTime();
    if(
time 0)
    {
        
PrintHintText(client"%s\nAfter %i seconds you will be afk."PREFIX_CHATtime);
        return 
Plugin_Continue;
    }

    
Move2Spec(client);
    
hTimer[client] = null;
    return 
Plugin_Stop;
}

public 
Action Timer_Adv(Handle timer)
{
    
PrintToChatAll("\x04[\x05AFK Manager\x04]\x01 Use \x05!idle \x01if you plan to go AFK for a while.");
    return 
Plugin_Continue;
}

public 
Action Timer_Check(Handle timer)
{
    
bool isAFK;
    for(
int i 1jteam<= MaxClientsi++) if(IsClientInGame(i) && (team IsClientValid(i)))
    {
        static 
float vec[3];
        if(
team == 1)
        {
            
fSpec[i] += CHECK;
            if(
fSpec[i] >= fSpec[0])
            {
                if(
GetRealClientCount() > 25 && !IsVip(i) || GetClientCount(false) > 29 && !IsRoot(i))
                {
                    
KickClient(i"You were AFK for too long.");
                    if(
iMsg 1PrintToChatAll("\x04[\x05AFK Manager\x04]\x01 Player \x04'%N'\x01 was kicked."i);
                }
                else 
fSpec[i] -= CHECK 1;
            }
            else if(!
IsRoot(i))
            {
                static 
float msg[MAXPLAYERS+1];
                
vec[0] = GetClientTime(i);
                if(
vec[0] - msg[i] >= fWarning)
                {
                    
PrintToChat(i"%sYou can spectate for \x04%d\x01 more seconds before you will be kicked."PREFIX_CHATRoundToFloor(fSpec[0] - fSpec[i]));
                    
msg[i] = vec[0];
                }

                if(
vec[0] - msg[i] >= fJoinTip)
                {
                    
PrintToChat(i"%sSay \x05!join\x01 to join game."PREFIX_CHAT);
                    
msg[i] = vec[0];
                }
            }
        }
        else if(
IsPlayerAlive(i))
        {
            static 
float pos[MAXPLAYERS+1][3], ang[MAXPLAYERS+1][3];
            
isAFK true;
            
GetClientAbsOrigin(ivec);
            for(
03j++) if(vec[j] != pos[i][j])
            {
                
isAFK false;
                
pos[i] = vec;
                break;
            }

            
GetClientAbsAngles(ivec);
            if(
isAFK) for(03j++) if(vec[j] != ang[i][j])
            {
                
isAFK false;
                
ang[i] = vec;
                break;
            }

            if(
isAFK && (fAfk[i] += CHECK) >= fAfk[0])
            {
                if(
GetClientCount(false) > 29)
                {
                    
KickClient(i"Sorry, no open slots for spectators.");
                    if(
iMsg 1PrintToChatAll("%sPlayer \x04%N\x01 was kicked. No open slots for spectators."PREFIX_CHATi);
                }
                else 
ClientAFK(i);
            }
            else 
fAfk[i] = 0.0;
        }
    }
    return 
Plugin_Continue;
}

stock void ClientAFK(int client)
{
    if(
IsClientInGame(client) && IsClientValid(client))
        
CreateTimer(GetRandomFloat(0.15.1), Timer_AfkGetClientUserId(client));
}

public 
Action Timer_Afk(Handle timerint uid)
{
    
int client GetClientOfUserId(uid);
    if(!
client || GetClientTeam(client) > 1)
        return 
Plugin_Stop;

    
int afktime GetTime() - iTime[0];
    if(
afktime 50)
        
fAfk[client] -= CHECK 1;
    else
    {
        if(
GetClientCount(false) >= 30)
        {
            
KickClient(client"Sorry, no open slots for spectators.");
            if(
iMsg 1)
                
PrintToChatAll("\x04[\x05AFK Manager\x04]\x01 Player \x04'%N'\x01 was kicked. No open slots for spectators."client);
            return 
Plugin_Stop;
        }

        
Move2Spec(client);
        
iTime[0] = GetTime();
    }

    return 
Plugin_Stop;
}

stock int GetRealClientCount()
{
    
int clients 0;
    for(
int i 1<= MaxClientsi++) if(IsClientInGame(i) && !IsFakeClient(i)) clients++;
    return 
clients;
}

public 
Action Event_PlayerTeam(Event event, const char[] namebool dontBroadcast)
{
    
int client GetClientOfUserId(event.GetInt("userid"));
    
int team GetEventInt(event"team");
    switch(
team)
    {
        case 
1:        fSpec[client] = 0.0;
        case 
23:    fAfk[client] = 0.0;
    }
}

public 
Action Event_RoundEnd(Event event, const char[] namebool dontBroadcast)
{
    
int i 1;
    while (
<= MaxClients)
    {
        if(
IsClientInGame(i)) fAfk[i] = 0.0;
        
i++;
    }
}

stock int IsClientValid(int client)
{
    if(
IsFakeClient(client))
        return 
0;

    
int i;
    return (
GetClientTeam(client)) > 0;
}

stock bool IsVip(int client)
{
    
AdminId admin GetUserAdmin(client);
    return 
admin != INVALID_ADMIN_ID && GetAdminFlag(adminAdmin_Reservation);
}

stock bool IsRoot(int client)
{
    
AdminId admin GetUserAdmin(client);
    return 
admin != INVALID_ADMIN_ID && (GetAdminFlag(adminAdmin_Root) || GetAdminFlag(adminAdmin_Password));
}

stock void Move2Spec(int client)
{
    if(
iMsg 1PrintToChatAll("Player \x04'%N'\x01 was moved to Spectator team."PREFIX_CHATclient);
    
PrintToServer("%sPlayer '%N' was moved to Spectator team."PREFIX_CONclient);
    
ChangeClientTeam(client1);
    
ForcePlayerSuicide(client);

Thanks for your help and answer, I'll let you know the result after testing it.
Darkwob is offline
Darkwob
BANNED
Join Date: Oct 2018
Old 06-08-2021 , 07:38   Re: A Author needs to help me. excuse me?
Reply With Quote #14

Fix: Count Timer not triggering idle command I didn't switch to spectator team after waiting more than 15 seconds (These are when I am in Action in Game). Can you get us to switch to the spectator team after 15 seconds of each event of the idle command dude if it's okay.
Darkwob is offline
Darkwob
BANNED
Join Date: Oct 2018
Old 06-08-2021 , 08:01   Re: A Author needs to help me. excuse me?
Reply With Quote #15

PHP Code:
[AFK ManagerBe patientyou have already used the !idle command
[AFK ManagerBe patientyou have already used the !idle command.
[
AFK ManagerPlayer 'DarkWob TR' was moved to Spectator team

Double message to chat becomes spam. And this message is also written on the players who remained afk even though they did not write the idle command.

Quote:
[AFK Manager] Be patient, you have already used the !idle command.
Darkwob is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 03:46.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode