Fortress Forever

Go Back   Fortress Forever > Editing > Mapping > Lua

Reply
 
Thread Tools Display Modes
Old 04-03-2010, 10:00 PM   #61
VEXEMP
 
Join Date: Sep 2007
Posts Rated Helpful 2 Times
Thanks for reply.

I took the advice.And code.It dident work.

The problem was the first waypoint. Seems when theres 2 players touching the waypoint.The lua.file.reads next respawn.

Was ready to trash the map.Then looked at.

http://www.fortress-forever.com/wiki...tegory:Mapping.
So i removed the ff_scripts brush,From the holding sell.Where players spawnd.
And used it onthe turret.Meaning the turret triggerrs the way point.
And it worked.

And changing the if IsPlayer( touch_entity ).

To if IsTurret( touch_entity ).

Thanks again for the input!

If any one needs help with escapemaps let me know.

Last edited by VEXEMP; 04-03-2010 at 10:02 PM.
VEXEMP is offline   Reply With Quote


Old 10-24-2010, 07:55 PM   #62
Jay Mofo Mills
Jay|mOfO|Mills
Beta Tester
 
Join Date: Feb 2009
Location: Santa Fe, NM
Gametype: Snag the flag beotches
Posts Rated Helpful 8 Times
Bonus Point Triggers that disable after touch for 10 sec

Hello, I have a concmap I would like to release. I have some skill points that are trigger_ff_scripts. I would like it when any player passes through the trigger they get the points, then the trigger deactivates for say 10 seconds then reactivates....
Here is the code Bri was helping me with.


basescoretrigger = info_ff_script:new({
canscore = true,
score = 0,
})

function basescoretrigger:reallowscoring() self.canscore = true end

function basescoretriggerntouch(touch_entity)
if IsPlayer(touch_entity) then
local player = CastToPlayer(touch_entity)
if self.canscore then
player:AddFortPoints(self.score, "You have been awarded some points.")
BroadCastMessageToPlayer(player, "Nice Conc! You've been awarded some bonus points.")
self.canscore = false
AddSchedule("Reenable Scoring", 1, reallowscoring)
end
end
return true
end

beg_points = basescoretrigger:new({ score = 1 })
med_points = basescoretrigger:new({ score = 2 })
adv_points = basescoretrigger:new({ score = 3 })
crow_points = basescoretrigger:new({ score = 10 })



Any assistance would be awesome. Thanks,
m0f0
Jay Mofo Mills is offline   Reply With Quote


Old 10-24-2010, 10:21 PM   #63
squeek.
Stuff Do-er
Lua Team
Wiki Team
Fortress Forever Staff
 
squeek.'s Avatar
 
Join Date: Mar 2007
Location: Northern California
Class/Position: Rallygun Shooter
Gametype: Conc tag (you just wait)
Affiliations: Mustache Brigade
Posts Rated Helpful 352 Times
Send a message via AIM to squeek.
What's wrong with it?

This line determines how long the trigger is disabled for:
Code:
AddSchedule("Reenable Scoring", 1, reallowscoring)
I'd change it to:
Code:
AddSchedule("reenablescoring", self.disabletime, self.reallowscoring)
That will both allow you to set a different disable time per-trigger and call the right function, since reallowscoring is a member function of the basescoretrigger class.

And then change
Code:
basescoretrigger = info_ff_script:new({
canscore = true,
score = 0,
})
to

Code:
basescoretrigger = trigger_ff_script:new({
canscore = true,
score = 0,
disabletime = 10
})
Do you want it to only disable for the player that touched it or for all players everytime someone touches it?
__________________
#FF.Pickup ¤ Fortress-Forever pickups

My Non-official Maps
Released FF_DM_Squeek - FF_2Mesa3_Classic - FF_Siege_Classic
Beta FF_Myth - FF_Redlight_Greenlight

Sick of the people on the internet, always moanin'. They just moan.
- Karl Pilkington

Last edited by squeek.; 10-24-2010 at 10:22 PM.
squeek. is offline   Reply With Quote


Old 10-25-2010, 11:18 PM   #64
Jay Mofo Mills
Jay|mOfO|Mills
Beta Tester
 
Join Date: Feb 2009
Location: Santa Fe, NM
Gametype: Snag the flag beotches
Posts Rated Helpful 8 Times
Bonuse Point Triggers

Tried the new code and it still has the same problem.

In map, when you run through the trigger the first time it acts properly and adds points and disables the scoring. Problem is that it never re-enables.

There are no errors when the .lua runs at startup.
Jay Mofo Mills is offline   Reply With Quote


Old 10-27-2010, 02:28 PM   #65
Bridget
Banned
 
Bridget's Avatar
 
Join Date: Sep 2008
Class/Position: Soldier
Gametype: AVD
Affiliations: TALOS
Posts Rated Helpful 5 Times
You're using something similar to this?

Code:
base_score_trigger = info_ff_script:new({
	can_score = true,
	disable_time = 30,
	score = 0,
})

function base_score_trigger:reset_scoring() self.can_score = true end

function base_score_trigger:ontouch(touch_entity)
	if IsPlayer(touch_entity) then
		local player = CastToPlayer(touch_entity)
		if self.can_score then
			player:AddFortPoints(self.score, "Nice Conc!")
			BroadCastMessageToPlayer(player, "Blah blah")
			self.can_score = false
			AddSchedule("Re-Enable Scoring", self.disable_time, self.reset_scoring)
		end
	end
	return true
end

beg_points = base_score_trigger({ score = 1 })
med_points = base_score_trigger({ score = 2 })
adv_points = base_score_trigger({ score = 3 })
crow_points = base_score_trigger({ score = 10 })

Last edited by Bridget; 10-27-2010 at 02:31 PM.
Bridget is offline   Reply With Quote


Old 10-27-2010, 09:19 PM   #66
Jay Mofo Mills
Jay|mOfO|Mills
Beta Tester
 
Join Date: Feb 2009
Location: Santa Fe, NM
Gametype: Snag the flag beotches
Posts Rated Helpful 8 Times
This is the exact code I just tried out below. Still does not re-enable. I don't really know shit about .lua but could it be because disable_time is not called as some kind of function of the trigger? It gives me points the first time I run through the trigger, it displays the messages, just never reactivates the trigger.

I have tried using the base_score_trigger as both info_ff_script and trigger_ff_script with the same result.



base_score_trigger = trigger_ff_script:new({
can_score = true,
disable_time = 5,
score = 0,
})

function base_score_trigger:reset_scoring() self.can_score = true end

function base_score_triggerntouch(touch_entity)
if IsPlayer(touch_entity) then
local player = CastToPlayer(touch_entity)
if self.can_score then
player:AddFortPoints(self.score, "Nice Conc!")
BroadCastMessageToPlayer(player, "You've been awarded bonus points!")
self.can_score = false
AddSchedule("Re-Enable Scoring", self.disable_time, self.reset_scoring)
end
end
return true
end

beg_points = base_score_trigger:new({ score = 1 })
med_points = base_score_trigger:new({ score = 2 })
adv_points = base_score_trigger:new({ score = 3 })
crow_points = base_score_trigger:new({ score = 10 })
Jay Mofo Mills is offline   Reply With Quote


Old 10-28-2010, 01:37 AM   #67
Crazycarl
D&A Member
Wiki Team
Fortress Forever Staff
 
Crazycarl's Avatar
 
Join Date: Apr 2007
Posts Rated Helpful 31 Times
Use base_score_trigger: ontrigger. Take out all the enable/disable code. Go into hammer and look at your trigger. Set the "Delay Before Reset" key to ten seconds or whatever.
Crazycarl is offline   Reply With Quote


Old 10-28-2010, 02:12 AM   #68
squeek.
Stuff Do-er
Lua Team
Wiki Team
Fortress Forever Staff
 
squeek.'s Avatar
 
Join Date: Mar 2007
Location: Northern California
Class/Position: Rallygun Shooter
Gametype: Conc tag (you just wait)
Affiliations: Mustache Brigade
Posts Rated Helpful 352 Times
Send a message via AIM to squeek.
It might have to do with the space in the schedule name ("Re-Enable Scoring"). Never tried that, so I'm not sure if it works. Try taking it out and testing it again.

Personally, I'd stay away from Hammer input/output stuff when doing Lua-based things (or just in general). Strangely, the times don't match up (a 10 second Lua schedule will end differently than a 10 second trigger delay; see the dustbowl start gates for annoying proof).
__________________
#FF.Pickup ¤ Fortress-Forever pickups

My Non-official Maps
Released FF_DM_Squeek - FF_2Mesa3_Classic - FF_Siege_Classic
Beta FF_Myth - FF_Redlight_Greenlight

Sick of the people on the internet, always moanin'. They just moan.
- Karl Pilkington

Last edited by squeek.; 10-28-2010 at 02:16 AM.
squeek. is offline   Reply With Quote


Old 08-19-2012, 06:09 AM   #69
FDA_Approved
Beta Tester
 
FDA_Approved's Avatar
 
Join Date: Nov 2011
Gametype: Capture the Flag
Posts Rated Helpful 293 Times
I just finished texturing up a jump map. I have no clue how any of this lua stuff works, but what I want to achieve is a constant clip refill, and no damage from weapons, if that's at all possible.
FDA_Approved is offline   Reply With Quote


Old 08-19-2012, 06:56 AM   #70
squeek.
Stuff Do-er
Lua Team
Wiki Team
Fortress Forever Staff
 
squeek.'s Avatar
 
Join Date: Mar 2007
Location: Northern California
Class/Position: Rallygun Shooter
Gametype: Conc tag (you just wait)
Affiliations: Mustache Brigade
Posts Rated Helpful 352 Times
Send a message via AIM to squeek.
Everytime someone asks for a continuous resupply script I come up with a different way to do it. Here's what I came up with this time. It's completely untested:

Code:
resupply_settings = {
	resupply_interval = 1, -- in seconds
	reload_clips = true,
	health = 0,
	armor = 0,
	grenades = 0, -- blue/green pipes
	shells = 0,
	nails = 0,
	rockets = 0,
	cells = 0,
	detpacks = 0,
	mancannons = 0,
	gren1 = 0,
	gren2 = 0
}

-- utility function to return a list of all players in the server
function resupply_getallplayers()
	local players = {}
	for index=1,22 do
		local player = GetPlayerByID(index)
		if (player ~= nil) then
			table.insert( players, player );
		end
	end
	return players
end

-- so we don't overwrite startup
local resupply_savedfuncs = {}
resupply_savedfuncs.startup = startup

function startup()
	-- check to make sure the saved function is actually a function
	if type(resupply_savedfuncs.startup) == "function" then
		-- call the saved function
		resupply_savedfuncs.startup()
	end
	
	-- start resupply schedule
	AddScheduleRepeating( "resupply_schedule", resupply_settings.resupply_interval, resupply_scheduled );
end

function resupply_scheduled()
	local players = resupply_getallplayers();
	for i,player in pairs(players) do
		resupply( player )
	end
end

function resupply( player )
	if IsPlayer( player ) then
		-- reload clips
		if resupply_settings.reload_clips == true then player:ReloadClips() end
	
		-- give player health and armor
		if resupply_settings.health ~= nil then player:AddHealth( self.health ) end
		if resupply_settings.armor ~= nil then player:AddArmor( self.armor ) end
	
		-- give player ammo
		if resupply_settings.nails ~= nil then player:AddAmmo(Ammo.kNails, self.nails) end
		if resupply_settings.shells ~= nil then player:AddAmmo(Ammo.kShells, self.shells) end
		if resupply_settings.rockets ~= nil then player:AddAmmo(Ammo.kRockets, self.rockets) end
		if resupply_settings.cells ~= nil then player:AddAmmo(Ammo.kCells, self.cells) end
		if resupply_settings.detpacks ~= nil then player:AddAmmo(Ammo.kDetpack, self.detpacks) end
		if resupply_settings.mancannons ~= nil then player:AddAmmo(Ammo.kManCannon, self.mancannons) end
		if resupply_settings.gren1 ~= nil then player:AddAmmo(Ammo.kGren1, self.gren1) end
		if resupply_settings.gren2 ~= nil then player:AddAmmo(Ammo.kGren2, self.gren2) end
	end
end
For no damage, also untested:

Code:
-- so we don't overwrite the function
local nodamage_savedfuncs = {}
nodamage_savedfuncs.player_ondamage = player_ondamage

function player_ondamage( player, damageinfo )

	-- check to make sure the saved function is actually a function
	if type(nodamage_savedfuncs.player_ondamage) == "function" then
		-- call the saved function
		nodamage_savedfuncs.player_ondamage( player, damageinfo )
	end

	-- if no damageinfo do nothing
	if not damageinfo then return end
	
	-- set damage to zero
	damageinfo:SetDamage(0)
	
end
__________________
#FF.Pickup ¤ Fortress-Forever pickups

My Non-official Maps
Released FF_DM_Squeek - FF_2Mesa3_Classic - FF_Siege_Classic
Beta FF_Myth - FF_Redlight_Greenlight

Sick of the people on the internet, always moanin'. They just moan.
- Karl Pilkington

Last edited by squeek.; 08-19-2012 at 06:57 AM.
squeek. is offline   Reply With Quote


Old 08-19-2012, 09:00 PM   #71
FDA_Approved
Beta Tester
 
FDA_Approved's Avatar
 
Join Date: Nov 2011
Gametype: Capture the Flag
Posts Rated Helpful 293 Times
Thank you squeek. But I have no idea what else is supposed to go into the lua. I've tried picking apart other luas, but no go. Also I can't figure out how to save a file as lua. If I try renaming it as .lua it just turns into an .rtf.
FDA_Approved is offline   Reply With Quote


Old 08-19-2012, 09:49 PM   #72
KubeDawg
Nade Whore
Server Owner
Beta Tester
 
KubeDawg's Avatar
 
Join Date: Sep 2007
Location: Oklahoma
Class/Position: Scout/Soldier
Gametype: CTF/TDM
Affiliations: blunt. Moto
Posts Rated Helpful 128 Times
Use a text editor like notepad/wordpad or editpad to edit the lua file, and to save it as .lua instead of .txt, just choose All File Types and put .lua at the end of the file name.
__________________
Moto's Funhouse | Dallas, TX - 74.91.114.247:27015

ff_plunder - Complete

Last edited by KubeDawg; 08-19-2012 at 09:57 PM.
KubeDawg is offline   Reply With Quote


Old 08-19-2012, 10:02 PM   #73
moosh
WhenNailGrenWillOut?
Beta Tester
 
moosh's Avatar
 
Join Date: May 2009
Gametype: mp_prematch
Affiliations: [:)] - Frag Happy, babe|
Posts Rated Helpful 29 Times
Quote:
Originally Posted by FDA_Approved View Post
Thank you squeek. But I have no idea what else is supposed to go into the lua.
Team names, class limits, bags, LOCATIONS <----!!!. (Very important for ctf;avd;ivd maps, not as important but definitely useful (in djump maps especially, "WHAT STAGE ARE YOU ON?! I'M ON STAGE 23456 YOU?") in skill maps.
__________________
[[ ff_hotfudge - bhop_theonlyone ]]
"As the the new year approaches I await for it like an case of explosive fecalomania otherwise know as diareha or the massive shits. I am gripping the sides of the toilet as my stomach produces the first hollow thud out of the anus of the year to come." DarkeN_HellspawN

Last edited by moosh; 08-19-2012 at 10:03 PM.
moosh is offline   Reply With Quote


Old 08-19-2012, 10:49 PM   #74
squeek.
Stuff Do-er
Lua Team
Wiki Team
Fortress Forever Staff
 
squeek.'s Avatar
 
Join Date: Mar 2007
Location: Northern California
Class/Position: Rallygun Shooter
Gametype: Conc tag (you just wait)
Affiliations: Mustache Brigade
Posts Rated Helpful 352 Times
Send a message via AIM to squeek.
Quote:
Originally Posted by FDA_Approved View Post
Thank you squeek. But I have no idea what else is supposed to go into the lua. I've tried picking apart other luas, but no go. Also I can't figure out how to save a file as lua. If I try renaming it as .lua it just turns into an .rtf.
That depends on what else you want in the map. As moosh said, team/class settings, bags, and locations are the most common.

I'd suggest using http://notepad-plus-plus.org/. It has syntax highlighting for Lua and is just a good text editor in general.

Also, some stuff on the wiki might be worth looking at:
http://www.fortress-forever.com/wiki...etting_Started (more for CTF, but might still be useful)
http://www.fortress-forever.com/wiki...e:BaseTeamplay
http://www.fortress-forever.com/wiki...ocation_System
__________________
#FF.Pickup ¤ Fortress-Forever pickups

My Non-official Maps
Released FF_DM_Squeek - FF_2Mesa3_Classic - FF_Siege_Classic
Beta FF_Myth - FF_Redlight_Greenlight

Sick of the people on the internet, always moanin'. They just moan.
- Karl Pilkington
squeek. is offline   Reply With Quote


Old 08-19-2012, 11:50 PM   #75
FDA_Approved
Beta Tester
 
FDA_Approved's Avatar
 
Join Date: Nov 2011
Gametype: Capture the Flag
Posts Rated Helpful 293 Times
Really, other than what I requested I only need people to spawn. I have a entity player info start, do i need to change it to info ff team spawn? Also if I use a lua is it going to overide any of the maps trigger events? There are a ton of jump pads around, that already work without a lua.

But there are no bags, or specific "stages". Really all I need is for the player to spawn, any class, and get to jumping. I tried looking through other luas and the base and basectf, but I guess I don't really understand it.
FDA_Approved is offline   Reply With Quote


Old 08-20-2012, 12:13 AM   #76
Crazycarl
D&A Member
Wiki Team
Fortress Forever Staff
 
Crazycarl's Avatar
 
Join Date: Apr 2007
Posts Rated Helpful 31 Times
Just put
Code:
IncludeScript("base_teamplay");
at the top and that gives you all the basic stuff like spawns and bags.

Then you need to set team limits:
Code:
	SetPlayerLimit(Team.kBlue, 0)
	SetPlayerLimit(Team.kRed, 0)
	SetPlayerLimit(Team.kYellow, -1)
	SetPlayerLimit(Team.kGreen, -1)
0 means no limit, -1 means nobody can join the team.

This page: http://www.fortress-forever.com/wiki...e:BaseTeamplay tells you what entities to use and what to name them. You will want multiple info_ff_teamspawn entities to ensure that there is always a clear spawn point for a player to use.
__________________
Support FF:
Crazycarl is offline   Reply With Quote


Old 08-20-2012, 01:44 AM   #77
FDA_Approved
Beta Tester
 
FDA_Approved's Avatar
 
Join Date: Nov 2011
Gametype: Capture the Flag
Posts Rated Helpful 293 Times
Ok, thanks guys, I should be able to get it from here.
FDA_Approved is offline   Reply With Quote


Old 08-20-2012, 05:50 AM   #78
FDA_Approved
Beta Tester
 
FDA_Approved's Avatar
 
Join Date: Nov 2011
Gametype: Capture the Flag
Posts Rated Helpful 293 Times
Code:
	IncludeScript("base_teamplay");
	
	SetPlayerLimit(Team.kBlue, 0)
	SetPlayerLimit(Team.kRed, 0)
	SetPlayerLimit(Team.kYellow, -1)
	SetPlayerLimit(Team.kGreen, -1)
	resupply_settings = {
	resupply_interval = 1, -- in seconds
	reload_clips = true,
	health = 0,
	armor = 0,
	grenades = 0, -- blue/green pipes
	shells = 0,
	nails = 0,
	rockets = 0,
	cells = 0,
	detpacks = 0,
	mancannons = 0,
	gren1 = 0,
	gren2 = 0
}

-- utility function to return a list of all players in the server
function resupply_getallplayers()
	local players = {}
	for index=1,22 do
		local player = GetPlayerByID(index)
		if (player ~= nil) then
			table.insert( players, player );
		end
	end
	return players
end

-- so we don't overwrite startup
local resupply_savedfuncs = {}
resupply_savedfuncs.startup = startup

function startup()
	-- check to make sure the saved function is actually a function
	if type(resupply_savedfuncs.startup) == "function" then
		-- call the saved function
		resupply_savedfuncs.startup()
	end
	
	-- start resupply schedule
	AddScheduleRepeating( "resupply_schedule", resupply_settings.resupply_interval, resupply_scheduled );
end

function resupply_scheduled()
	local players = resupply_getallplayers();
	for i,player in pairs(players) do
		resupply( player )
	end
end

function resupply( player )
	if IsPlayer( player ) then
		-- reload clips
		if resupply_settings.reload_clips == true then player:ReloadClips() end
	
		-- give player health and armor
		if resupply_settings.health ~= nil then player:AddHealth( self.health ) end
		if resupply_settings.armor ~= nil then player:AddArmor( self.armor ) end
	
		-- give player ammo
		if resupply_settings.nails ~= nil then player:AddAmmo(Ammo.kNails, self.nails) end
		if resupply_settings.shells ~= nil then player:AddAmmo(Ammo.kShells, self.shells) end
		if resupply_settings.rockets ~= nil then player:AddAmmo(Ammo.kRockets, self.rockets) end
		if resupply_settings.cells ~= nil then player:AddAmmo(Ammo.kCells, self.cells) end
		if resupply_settings.detpacks ~= nil then player:AddAmmo(Ammo.kDetpack, self.detpacks) end
		if resupply_settings.mancannons ~= nil then player:AddAmmo(Ammo.kManCannon, self.mancannons) end
		if resupply_settings.gren1 ~= nil then player:AddAmmo(Ammo.kGren1, self.gren1) end
		if resupply_settings.gren2 ~= nil then player:AddAmmo(Ammo.kGren2, self.gren2) end
	end
end

-- so we don't overwrite the function
local nodamage_savedfuncs = {}
nodamage_savedfuncs.player_ondamage = player_ondamage

function player_ondamage( player, damageinfo )

	-- check to make sure the saved function is actually a function
	if type(nodamage_savedfuncs.player_ondamage) == "function" then
		-- call the saved function
		nodamage_savedfuncs.player_ondamage( player, damageinfo )
	end

	-- if no damageinfo do nothing
	if not damageinfo then return end
	
	-- set damage to zero
	damageinfo:SetDamage(0)
	
end
That's what I ended up with. I'm assuming it's wrong, it wont let me pick a class.
FDA_Approved is offline   Reply With Quote


Old 08-20-2012, 06:02 AM   #79
KubeDawg
Nade Whore
Server Owner
Beta Tester
 
KubeDawg's Avatar
 
Join Date: Sep 2007
Location: Oklahoma
Class/Position: Scout/Soldier
Gametype: CTF/TDM
Affiliations: blunt. Moto
Posts Rated Helpful 128 Times
-----------------------------------------------------------------------------
-- set class limits
-----------------------------------------------------------------------------
function startup()
SetGameDescription("Enter Description Here")

-- set up team limits on each team
SetPlayerLimit(Team.kBlue, 0)
SetPlayerLimit(Team.kRed, 0)
SetPlayerLimit(Team.kYellow, -1)
SetPlayerLimit(Team.kGreen, -1)

local team = GetTeam(Team.kBlue)
team:SetClassLimit(Player.kCivilian, -1)
team:SetClassLimit(Player.kSniper, SNIPER_LIMIT)

team = GetTeam(Team.kRed)
team:SetClassLimit(Player.kCivilian, -1)
team:SetClassLimit(Player.kSniper, SNIPER_LIMIT)
end
__________________
Moto's Funhouse | Dallas, TX - 74.91.114.247:27015

ff_plunder - Complete
KubeDawg is offline   Reply With Quote


Old 08-20-2012, 06:10 AM   #80
squeek.
Stuff Do-er
Lua Team
Wiki Team
Fortress Forever Staff
 
squeek.'s Avatar
 
Join Date: Mar 2007
Location: Northern California
Class/Position: Rallygun Shooter
Gametype: Conc tag (you just wait)
Affiliations: Mustache Brigade
Posts Rated Helpful 352 Times
Send a message via AIM to squeek.
When you run a local server, Lua errors show up in the console. They are usually extremely helpful.

EDIT: Also, those team limits are already set in base_teamplay, you don't actually need that part (the four SetPlayerLimit()'s). If you did want custom team limits (like enabling the green team), though, you'd put those in the function startup() like Kube posted.
__________________
#FF.Pickup ¤ Fortress-Forever pickups

My Non-official Maps
Released FF_DM_Squeek - FF_2Mesa3_Classic - FF_Siege_Classic
Beta FF_Myth - FF_Redlight_Greenlight

Sick of the people on the internet, always moanin'. They just moan.
- Karl Pilkington

Last edited by squeek.; 08-20-2012 at 06:13 AM.
squeek. is offline   Reply With Quote


Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 

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. The time now is 07:21 AM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.