Raised This Month: $ Target: $400
 0% 

old amx_tripmines plugin


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
MattOG
Senior Member
Join Date: May 2005
Old 04-05-2006 , 15:54   old amx_tripmines plugin
Reply With Quote #1

::EDIT::
not sure if this should be here or the suggestions/requests forum, pls move if needed. Ta.

Is there anyone who can/would be willing to iron out the bugs in this plugin. It was trashed because the owner/author was banned from the forum. It's almost perfect just these error messages in console once a mine is destroyed, and sometimes the mines aren't shootable. (no, i'm not planting admin mines!!)

They occur most of the time someone shoots after a mine is destroyed (not just near the mine, but anywhere in the server).

Thanks.

Code:
L 04/04/2006 - 17:50:09: [ENGINE] Invalid player 0 (not in-game)
L 04/04/2006 - 17:50:09: [AMXX] Displaying debug trace (plugin "amx_tripmine.amxx")
L 04/04/2006 - 17:50:09: [AMXX] Run time error 10: native error (native "entity_get_vector")
L 04/04/2006 - 17:50:09: [AMXX]    [0] amx_tripmine.sma::detonate_mine (line 133)
L 04/04/2006 - 17:50:09: [AMXX]    [1] amx_tripmine.sma::Event_ShotFired (line 474)

L 04/04/2006 - 17:50:34: [ENGINE] Invalid entity 70
L 04/04/2006 - 17:50:34: [AMXX] Displaying debug trace (plugin "amx_tripmine.amxx")
L 04/04/2006 - 17:50:34: [AMXX] Run time error 10: native error (native "entity_get_vector")
L 04/04/2006 - 17:50:34: [AMXX]    [0] amx_tripmine.sma::FindMine (line 508)
L 04/04/2006 - 17:50:34: [AMXX]    [1] amx_tripmine.sma::Event_ShotFired (line 460)
Code:
#include <amxmodx> #include <amxmisc> #include <engine> #define MAX_MINES 10 #define MAX_PLAYERS   32 #define TASK_MOVE     15200 new g_nMineEnts[MAX_PLAYERS][MAX_MINES] new Float:g_fMdlSize[2][3] = { {-2.15, -4.3, -2.15}, {2.15, 4.3, 2.15} } new bool:planting_mine[33] new bool:waiting_time[33]=false new g_nMineAmmo[MAX_PLAYERS][2] new g_nCurWeapon[MAX_PLAYERS][2] new WAITTIME[32] new beam, boom public new_round(id){    g_nMineAmmo[id-1][0] = (get_cvar_num("sv_tmine_ammo")) } public client_connect(id) {    g_nMineAmmo[id-1][0] = (get_cvar_num("sv_tmine_ammo")) } detonate_mine(iCurrent) { new Float:vOrigin[3] entity_get_vector(iCurrent, EV_VEC_origin, vOrigin) message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(99) //99 = KillBeam write_short(iCurrent) message_end() message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(3) write_coord(floatround(vOrigin[0])) write_coord(floatround(vOrigin[1])) write_coord(floatround(vOrigin[2])) write_short(boom) write_byte(50) write_byte(15) write_byte(0) message_end() RadiusDamage(vOrigin, 10,50) remove_entity(iCurrent) } public CreateMine(id){      if (planting_mine[id]==false)     return PLUGIN_HANDLED        if( !is_user_alive( id ) )    {        client_print( id, print_chat, "You are Dead! You Have No Mines to Plant!" )        return PLUGIN_HANDLED    }    new Float:vOrigin[3]    new Float:vAngles[3]    entity_get_vector(id, EV_VEC_origin, vOrigin)    entity_get_vector(id, EV_VEC_v_angle, vAngles)    g_nMineAmmo[id-1][0] -= 1    g_nMineEnts[id-1][g_nMineAmmo[id-1][1]] = create_entity( "info_target" )    if( g_nMineEnts[id-1][g_nMineAmmo[id-1][1]] == 0 )    {        client_print( id, print_chat, "You Planted A Dud!    :(" )        return PLUGIN_HANDLED    }    entity_set_string(g_nMineEnts[id-1][g_nMineAmmo[id-1][1]], EV_SZ_classname, "tripmine")    entity_set_model(g_nMineEnts[id-1][g_nMineAmmo[id-1][1]], "models/v_tripmine.mdl")    entity_set_int(g_nMineEnts[id-1][g_nMineAmmo[id-1][1]], EV_INT_body, 3)    entity_set_int(g_nMineEnts[id-1][g_nMineAmmo[id-1][1]], EV_INT_sequence, 7)   // 7 = TRIPMINE_WORLD    entity_set_int(g_nMineEnts[id-1][g_nMineAmmo[id-1][1]], EV_INT_solid, 2) //*************************ADDED BY ME*************************    set_size( g_nMineEnts[id-1][g_nMineAmmo[id-1][1]], g_fMdlSize[0], g_fMdlSize[1] )    new Float:MinBox[3]    new Float:MaxBox[3]    MinBox[0] = -8.0    MinBox[1] = -8.0    MinBox[2] = -8.0    MaxBox[0] = 8.0    MaxBox[1] = 8.0    MaxBox[2] = 8.0    entity_set_vector(g_nMineEnts[id-1][g_nMineAmmo[id-1][1]], EV_VEC_mins, MinBox)    entity_set_vector(g_nMineEnts[id-1][g_nMineAmmo[id-1][1]], EV_VEC_maxs, MaxBox)    new Float:vNewOrigin[3]    new Float:vNormal[3]    new Float:vTraceDirection[3]    new Float:vTraceEnd[3]    new Float:vTraceResult[3]    new Float:vEntAngles[3]    VelocityByAim(id, 64, vTraceDirection)          vTraceEnd[0] = vTraceDirection[0] + vOrigin[0]    vTraceEnd[1] = vTraceDirection[1] + vOrigin[1]    vTraceEnd[2] = vTraceDirection[2] + vOrigin[2]    trace_line(id, vOrigin, vTraceEnd, vTraceResult)    if(trace_normal(id, vOrigin, vTraceEnd, vNormal) == 0) {       remove_entity(g_nMineEnts[id-1][g_nMineAmmo[id-1][1]])       client_print( id, print_chat, "[TRIPMINES] You must plant the tripmine on a wall!")       return PLUGIN_HANDLED_MAIN    }    vNewOrigin[0] = vTraceResult[0] + (vNormal[0] * 8.0)    vNewOrigin[1] = vTraceResult[1] + (vNormal[1] * 8.0)    vNewOrigin[2] = vTraceResult[2] + (vNormal[2] * 8.0)    entity_set_origin(g_nMineEnts[id-1][g_nMineAmmo[id-1][1]], vNewOrigin)    vector_to_angle(vNormal, vEntAngles)    entity_set_vector(g_nMineEnts[id-1][g_nMineAmmo[id-1][1]], EV_VEC_angles, vEntAngles)    new Float:vBeamEnd[3]    new Float:vTracedBeamEnd[3]    vBeamEnd[0] = vNewOrigin[0] + (vNormal[0] * 8192)    vBeamEnd[1] = vNewOrigin[1] + (vNormal[1] * 8192)    vBeamEnd[2] = vNewOrigin[2] + (vNormal[2] * 8192)    trace_line(-1, vNewOrigin, vBeamEnd, vTracedBeamEnd)    entity_set_vector(g_nMineEnts[id-1][g_nMineAmmo[id-1][1]], EV_VEC_vuser1, vTracedBeamEnd)    entity_set_int(g_nMineEnts[id-1][g_nMineAmmo[id-1][1]], EV_INT_movetype, 5) //5 = movetype_fly, No grav, but collides.    emit_sound(g_nMineEnts[id-1][g_nMineAmmo[id-1][1]], CHAN_WEAPON, "weapons/mine_deploy.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)    emit_sound(g_nMineEnts[id-1][g_nMineAmmo[id-1][1]], CHAN_VOICE, "weapons/mine_charge.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)    waiting_time[id] = true    set_task( get_cvar_float("sv_tmine_wait"), "reset_wait", 1 )      new args[4]    num_to_str(g_nMineEnts[id-1][g_nMineAmmo[id-1][1]], args, 4)    set_task( get_cvar_float("sv_tmine_activate"), "TripMineActivate", 0, args, 4)    return PLUGIN_HANDLED_MAIN } public reset_wait(id){    waiting_time[id] = false } public TripMineActivate(MineID[]) { new EntID = str_to_num(MineID) new Float:vOrigin[3] entity_get_vector(EntID, EV_VEC_origin, vOrigin) new Float:vEnd[3] entity_get_vector(EntID, EV_VEC_vuser1, vEnd) message_begin(MSG_BROADCAST,SVC_TEMPENTITY) write_byte(0) write_coord(floatround(vOrigin[0])) write_coord(floatround(vOrigin[1])) write_coord(floatround(vOrigin[2])) write_coord(floatround(vEnd[0]))   write_coord(floatround(vEnd[1]))   write_coord(floatround(vEnd[2]))   write_short(beam) write_byte(0) write_byte(0) write_byte(10) //Life write_byte(5) //Width write_byte(0) write_byte(255) // r write_byte(0) // g write_byte(0) // b write_byte(get_cvar_num("sv_tmine_laseractive")) write_byte(0) message_end() entity_set_int(EntID, EV_INT_iuser2, 1) emit_sound(EntID, CHAN_VOICE, "weapons/mine_activate.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) } public TripMineThink() {     new iCurrent     iCurrent = find_ent_by_class(-1, "tripmine")     while(iCurrent != 0) {     if(entity_get_int(iCurrent, EV_INT_iuser2) == 1) {         new Float:vOrigin[3]         entity_get_vector(iCurrent, EV_VEC_origin, vOrigin)         new Float:vEnd[3]         entity_get_vector(iCurrent, EV_VEC_vuser1, vEnd)         new Float:vTrace[3]         new iHit         iHit = trace_line(iCurrent, vOrigin, vEnd, vTrace)         if(iHit > 0) {             new szClassName[32]             entity_get_string(iHit, EV_SZ_classname, szClassName, 32);                     if(equal(szClassName, "player")) {         new id         new szNetName[32]         entity_get_string(iHit, EV_SZ_netname, szNetName, 32)         client_print(id, print_chat, "[TRIPMINES] %s detonated your mine.",szNetName)         detonate_mine(iCurrent)               }             }     }         iCurrent =  find_ent_by_class(iCurrent, "tripmine")    } } public LaserThink() { new iCurrent iCurrent = find_ent_by_class(-1, "tripmine") while(iCurrent != 0) { if(entity_get_int(iCurrent, EV_INT_iuser2) == 1) { new Float:vOrigin[3] entity_get_vector(iCurrent, EV_VEC_origin, vOrigin) new Float:vEnd[3] entity_get_vector(iCurrent, EV_VEC_vuser1, vEnd) message_begin(MSG_BROADCAST,SVC_TEMPENTITY) write_byte(0) write_coord(floatround(vOrigin[0])) write_coord(floatround(vOrigin[1])) write_coord(floatround(vOrigin[2])) write_coord(floatround(vEnd[0])) write_coord(floatround(vEnd[1])) write_coord(floatround(vEnd[2])) write_short(beam) write_byte(0) write_byte(0) write_byte(10) //Life write_byte(5) //Width write_byte(0) write_byte(255) // r write_byte(0) // g write_byte(0) // b write_byte(get_cvar_num("sv_tmine_laserstrength")) write_byte(0) message_end() } iCurrent =  find_ent_by_class(iCurrent, "tripmine") } } public Admin_CreateMine(id,level,cid){     if (!cmd_access(id,level,cid,1)) {        return PLUGIN_HANDLED     }     g_nMineAmmo[id-1][0] = g_nMineAmmo[id-1][0] + 1     planting_mine[id]=true     CreateMine(id)     return PLUGIN_HANDLED } public ClCmd_tMineHold( id ){     if( !is_user_alive( id ) )     {         client_print( id, print_chat, "You are Dead! You Have No Mines to Plant!" )         return PLUGIN_HANDLED     }     if( g_nMineAmmo[id-1][0] <= 0 )     {         client_print( id, print_chat, "You have NO Trip Mines to Plant!" )         return PLUGIN_HANDLED     }     if( CheckMovement( id ) )     {         client_print( id, print_chat, "Stand Still To Plant a Trip Mine!" )         return PLUGIN_HANDLED     }     if( waiting_time[id]==true )     {         num_to_str(get_cvar_num("sv_tmine_wait"), WAITTIME, 31)         client_print( id, print_chat, "Must wait %s seconds after planting a mine to plant another.",WAITTIME)         return PLUGIN_HANDLED     }     new Float:vOrigin[3]     new Float:vAngles[3]     new Float:vNormal[3]     new Float:vTraceDirection[3]     new Float:vTraceEnd[3]     new Float:vTraceResult[3]     entity_get_vector(id, EV_VEC_origin, vOrigin)     entity_get_vector(id, EV_VEC_v_angle, vAngles)     VelocityByAim(id, 64, vTraceDirection)           vTraceEnd[0] = vTraceDirection[0] + vOrigin[0]     vTraceEnd[1] = vTraceDirection[1] + vOrigin[1]     vTraceEnd[2] = vTraceDirection[2] + vOrigin[2]     trace_line(id, vOrigin, vTraceEnd, vTraceResult)     if(trace_normal(id, vOrigin, vTraceEnd, vNormal) == 0) {        remove_entity(g_nMineEnts[id-1][g_nMineAmmo[id-1][1]])        client_print( id, print_chat, "[TRIPMINES] You must plant the tripmine on a wall!")        return PLUGIN_HANDLED_MAIN     }     new nMinePlant_Time = get_cvar_num( "sv_tmine_plant_time" )     message_begin( MSG_ONE, 108, {0,0,0}, id )     write_byte( nMinePlant_Time )       write_byte( 0 )                     message_end()     new pID[2]     pID[0] = id     set_task( 0.1, "CheckMove", (TASK_MOVE+id), pID, 1 )     set_task( float(nMinePlant_Time), "CreateMine", 1 )     planting_mine[id]=true     return PLUGIN_HANDLED } public ClCmd_tMineRelease( id ){     planting_mine[id]=false     if( task_exists( (TASK_MOVE+id) ) ){         remove_task( (TASK_MOVE+id) )     }     message_begin( MSG_ONE, 108, {0,0,0}, id )     write_byte( 0 )     write_byte( 0 )     message_end()     return PLUGIN_HANDLED } public CheckMove( p_aCmdArgs[] ){     new id = p_aCmdArgs[0]     if( CheckMovement( id ) )         ClCmd_tMineRelease( id )     else         set_task( 0.1, "CheckMove", (TASK_MOVE+id), p_aCmdArgs, 1 )     return PLUGIN_HANDLED } public Event_ShotFired( id ){     new wID = read_data( 2 )     new wAmmo = read_data( 3 )     if( g_nCurWeapon[id-1][0] != wID ) {         g_nCurWeapon[id-1][0] = wID         g_nCurWeapon[id-1][1] = wAmmo         return PLUGIN_CONTINUE     }     if( g_nCurWeapon[id-1][1] < wAmmo ){         g_nCurWeapon[id-1][1] = wAmmo         return PLUGIN_CONTINUE     }     if( g_nCurWeapon[id-1][1] == wAmmo )         return PLUGIN_CONTINUE     g_nCurWeapon[id-1][1] = wAmmo     g_nCurWeapon[id-1][0] = wID     new nPoint[3], nSize = get_cvar_num( "sv_tmine_size" )     get_user_origin( id, nPoint, 3 )     new nEntity = FindMine( nPoint, nSize )     if( nEntity > 0 ){         new pCmdArgs[2]         GetMine_Owner_Index( nEntity, pCmdArgs )         if( pCmdArgs[0] == id ){             client_print( id, print_chat, "You Shot One Of Your Own Mines!" )         }else{             new szMineOwner[32]             get_user_name( pCmdArgs[0], szMineOwner, 31 )             client_print( id, print_chat, "You Shot One Of %s's Proximity Mines!!", szMineOwner )         }     new iCurrent     iCurrent = find_ent_by_class(-1, "tripmine")         detonate_mine(iCurrent)     }     return PLUGIN_CONTINUE } GetMine_Owner_Index( nMineEntity, nOutput[] ) {     new nPlayers[MAX_PLAYERS], nNum, i, j     get_players( nPlayers, nNum, "c" )     nOutput[0] = nOutput[1] = 0     for( i = 0; i < nNum; i++ ) {         for( j = 0; j < MAX_MINES; j++ ) {             if( g_nMineEnts[nPlayers[i]-1][j] > 0 ) {                 if( nMineEntity == g_nMineEnts[nPlayers[i]-1][j] ) {                     nOutput[0] = nPlayers[i]    // Owner ID                     nOutput[1] = j              // Mine Index                     return                 }             }         }     }     return } FindMine( p_nUserOrigin[3], p_nRadius ) {     new nPlayers[MAX_PLAYERS], nNum, i, j     new nEOrigin[3], Float:fEOrigin[3]     new nProximity = 0     get_players( nPlayers, nNum, "c" )     for( i = 0; i < nNum; i++ ){         for( j = 0; j < MAX_MINES; j++ ){             if( g_nMineEnts[nPlayers[i]-1][j] != 0 ){                 entity_get_vector( g_nMineEnts[nPlayers[i]-1][j], EV_VEC_origin, fEOrigin )                 FVecIVec( fEOrigin, nEOrigin )                 nProximity = get_distance( p_nUserOrigin, nEOrigin )                 if( nProximity <= p_nRadius ){                     return g_nMineEnts[nPlayers[i]-1][j]                 }             }         }     }     return 0 } RemovePlantedMines( id ) {     for( new i = 0; i < MAX_MINES; i++ ) {         if( g_nMineEnts[id-1][i] > 0 ) {             remove_entity( g_nMineEnts[id-1][i] )             g_nMineEnts[id-1][i] = 0         }     }     g_nMineAmmo[id-1][1] = 0     return } public client_authorized( id ) {     g_nMineAmmo[id-1][0] = 0     RemovePlantedMines( id )     return PLUGIN_CONTINUE } public client_disconnect( id ) {     g_nMineAmmo[id-1][0] = 0     RemovePlantedMines( id )     return PLUGIN_CONTINUE } bool:CheckMovement( id ){     if( get_user_button( id ) & (IN_JUMP|IN_FORWARD|IN_BACK|IN_MOVELEFT|IN_MOVERIGHT) )         return true     return false } public plugin_precache() {    precache_sound("weapons/mine_deploy.wav")    precache_sound("weapons/mine_charge.wav")    precache_sound("weapons/mine_activate.wav")    precache_model("models/v_tripmine.mdl")    beam = precache_model("sprites/laserbeam.spr")    boom = precache_model("sprites/zerogxplode.spr")    return PLUGIN_CONTINUE } public plugin_init(){     register_plugin("Trip Mines","2.6","Blunted1 & Burnzy")     register_cvar("amx_tripmines","1",FCVAR_SERVER)     register_clcmd("+tmine","ClCmd_tMineHold",-1,"- Bind z +tmine   Then hold Z!")     register_clcmd("-tmine","ClCmd_tMineRelease",-1,"")     register_concmd("admin_tripmine","Admin_CreateMine", ADMIN_LEVEL_H)     register_event("ResetHUD","new_round","b")     register_event("CurWeapon","Event_ShotFired","b")     register_cvar("sv_tmine_plant_time","3")       register_cvar("sv_tmine_ammo","5")     register_cvar("sv_tmine_laserstrength","25")     register_cvar("sv_tmine_laseractive","100")         register_cvar("sv_tmine_activate","3")     register_cvar("sv_tmine_size","9")       register_cvar("sv_tmine_wait","10")     set_task(0.01,"TripMineThink",0,"",0,"b")     set_task(1.0,"LaserThink",0,"",0,"b")     set_task(2.0,"check_cvars",0,"",0,"b")     return PLUGIN_CONTINUE } public check_cvars() {     if (get_cvar_num("sv_tmine_ammo") > 10) {         server_print("[TRIPMINES] sv_tmine_ammo can not be greater than 10, setting cvar to 10 now.")         set_cvar_num("sv_tmine_ammo", 10)     }     if (get_cvar_num("sv_tmine_ammo") < 1) {         server_print("[TRIPMINES] sv_tmine_ammo can not be less than 1, setting cvar to 1 now.")         set_cvar_num("sv_tmine_ammo", 1)     }     if (get_cvar_num("sv_tmine_plant_time") > 15) {         server_print("[TRIPMINES] sv_tmine_plant_time can not be greater than 15, setting cvar to 15 now.")         set_cvar_num("sv_tmine_plant_time", 15)     }     if (get_cvar_num("sv_tmine_plant_time") < 2) {         server_print("[TRIPMINES] sv_tmine_plant_time can not be less than 2, setting cvar to 2 now.")         set_cvar_num("sv_tmine_plant_time", 2)     }     if (get_cvar_num("sv_tmine_wait") < 5 ) {         server_print("[TRIPMINES] sv_tmine_wait can not be less than 5, setting cvar to 5 now.")         set_cvar_num("sv_tmine_wait",5)     }     if (get_cvar_num("sv_tmine_wait") > 50 ) {         server_print("[TRIPMINES] sv_tmine_wait can not be greater than 50, setting cvar to 50 now.")         set_cvar_num("sv_tmine_wait",50)     }     if (get_cvar_num("sv_tmine_activate") < 1 ) {         server_print("[TRIPMINES] sv_tmine_activate can not be less than 1, setting cvar to 1 now.")         set_cvar_num("sv_tmine_activate",1)     }     if (get_cvar_num("sv_tmine_activate") > 10 ) {         server_print("[TRIPMINES] sv_tmine_activate can not be greater than 10, setting cvar to 10 now.")         set_cvar_num("sv_tmine_activate",10)     }     if (get_cvar_num("sv_tmine_size") < 8 ) {         server_print("[TRIPMINES] sv_tmine_size can not be less than 8, setting cvar to 8 now.")         set_cvar_num("sv_tmine_size",8)     }     if (get_cvar_num("sv_tmine_size") > 10 ) {         server_print("[TRIPMINES] sv_tmine_size can not be greater than 10, setting cvar to 10 now.")         set_cvar_num("sv_tmine_size",10)     }     if (get_cvar_num("sv_tmine_laseractive") < 100 ) {         server_print("[TRIPMINES] sv_tmine_laseractive can not be greater than 100, setting cvar to 100 now.")         set_cvar_num("sv_tmine_size",100)     }     if (get_cvar_num("sv_tmine_laseractive") > 200 ) {         server_print("[TRIPMINES] sv_tmine_laseractive can not be greater than 200, setting cvar to 200 now.")         set_cvar_num("sv_tmine_size",200)     }     if (get_cvar_num("sv_tmine_laserstrength") < 15 ) {         server_print("[TRIPMINES] sv_tmine_laserstrength can not be greater than 15, setting cvar to 15 now.")         set_cvar_num("sv_tmine_size",15)     }     if (get_cvar_num("sv_tmine_laserstrength") > 80 ) {         server_print("[TRIPMINES] sv_tmine_laserstrength can not be greater than 80, setting cvar to 80 now.")         set_cvar_num("sv_tmine_size",80)     } }
__________________

+Karma If I helped
MattOG is offline
MattOG
Senior Member
Join Date: May 2005
Old 04-13-2006 , 15:08  
Reply With Quote #2

ba-dump, anyone?
__________________

+Karma If I helped
MattOG is offline
SweatyBanana
BANNED
Join Date: Sep 2005
Location: LOL
Old 04-13-2006 , 15:47  
Reply With Quote #3

isnt the player not in server one because you are trying to execute the damage on the server, not only the players...I got that a while back with 1 of my plugins.
SweatyBanana is offline
Send a message via AIM to SweatyBanana Send a message via Yahoo to SweatyBanana
MattOG
Senior Member
Join Date: May 2005
Old 04-14-2006 , 01:46  
Reply With Quote #4

Quote:
Originally Posted by SweatyBanana
isnt the player not in server one because you are trying to execute the damage on the server, not only the players...I got that a while back with 1 of my plugins.
yeah, it tends to be a missing "is_user_connected || is_user_alive" bit, but i get lost when it comes to entities, so I'm not sure if the error is with that or something else, and rather than mess it up, I was hoping someone could give me a pointer in the right direction.
__________________

+Karma If I helped
MattOG 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 16:40.


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