• Problems That Don't Need Their Own Thread v3.0
    5,003 replies, posted
Oh you're using Pointshop2. Well if it's anything like Pointshop, ITEM:OnEquip is ran everytime the player respawns, meaning it'll do it every time. If not just call a HasItem check on a PlayerSpawn hook
I've got a question. I want to change the vehicle system in Garry's Mod to be able to boost the vehicle in ways similar to how it's done in Rocket League (hopping, rolling, rocketing forward, boosting toward the ball, etc...). I'd like to incorporate it directly into the vehicle class rather than creating some work around - currently my setup makes clients send their button press events to the server before boosting can be done, which doesn't work with the prediction system and creates a noticeable lag. [url]http://wiki.garrysmod.com/page/GM/VehicleMove[/url] It seems that prediction for vehicles is something already being done, so if I could figure out a way to incorporate Rocket League style boosting directly into it's class by overriding... [I]something[/I]... then I believe this would allow the prediction system to work with it. The question is, would this even work and how exactly would I go about doing this? [DEL]Also, another question, how would I add a network variable to a vehicle? Like, say, the vehicle's fuel levels.[/DEL] Derp [url]http://wiki.garrysmod.com/page/Entity/SetNWFloat[/url]
fairly simple question: anyone know how to layer sequences on scripted entities? i'm trying to whip up my own tf2 buildings but i can't get the firing sequences on the sentry to work right and it's doing my head in ent:SetSequence() applies the sequence improperly (as it's meant to be layered on) and ent:RestartGesture() appears to be completely broken
[QUOTE=NiandraLades;48850926]How would I add a delay to this so the menu doesn't tend to reopen when you try to close it? I noticed the wiki says that stuff like input.WasKeyPressed is only used for move hooks and this is giving me a little trouble I know it's something with CurTime(), but I'm not sure what the structure of it is [code] hook.Add("Think", "menukey", function() if input.IsKeyDown(key) and not open then OpenMenu() open = true elseif input.IsKeyDown(key) and open then CloseMenu() open = false end end) [/code][/QUOTE] [code] local pizzatime = CurTime() local pizzadooropen = false -- yes im hungry ty local pizzastatus = false local function togglepizzastatus() pizzastatus = not pizzastatus if(pizzastatus) then print("PIZZATIME") else print("no pizza Q__Q") end end hook.Add("Think", "menukey", function() local pizzadelivery= input.IsKeyDown(KEY_W) if(pizzadooropen) then if(not pizzadelivery) then pizzadooropen = false -- close door, pizza is rdy2eat end return end if(pizzatime>CurTime()) then return end if(pizzadelivery) then pizzadooropen = true togglepizzastatus() pizzatime = CurTime() + 0.3 end end) [/code]
Why would a concommand work fine in console but when you bind it to a key it doesn't work? I've tried multiple keys with no luck... just FYI, togglepanel works absolutely perfect when I use console but whichever key I bind it to does nothing...really weird. [CODE]function togglemypanel () if PanelTable.base:IsVisible(true) then PanelTable.base:Hide() else PanelTable.base:Show() end end concommand.Add("togglepanel",togglemypanel) [/CODE] edit MakePopup was screwing things up....I removed it but now Panel:SetMouseInputEnabled( true) doesn't have any effect and I can't access any of the panel items without a mouse Edit: reporting back after solving. Use gui.EnableClicker instead
Currently having a strange issue involving KeyValues, an ent I define that is spawned by the map has certain keyvalues set that I want to check but everytime I do even though the value is present when calling it outside KeyValue returns nil. Here is the code I have [code]function ENT:KeyValue( key, value ) key = string.lower(key) if key == "nodename" then self.nodeName = value end end function ENT:GetSpawnNode() local pNodeEnt = ents.FindByName(self.nodeName)[1] if IsValid(pNodeEnt) then return pNodeEnt else return nil end end[/code] Basically what this system is doing is building a hierarchy of nodes the nodeName in the parent will be the name of the child and the while loop works down the list until the last node doesn't have a nodeName in which it'll return nil and break the while loop Here is the while loop [code] local node = ents.FindByName(self.nodeName)[1] while IsValid(node) do table.insert(nodePoints, node) node = node:GetSpawnNode() end[/code]
this piece of code isn't working, even on the maps ive set it not to work on, it still works on those maps [code]-- -- -- RANDOM WEATHER -- -- hook.Add("TTTPrepareRound", "weather", function() if SERVER then map = game.GetMap() if map ~= ttt_office_b1 or map ~= ttt_lost_temple_v1 then game.ConsoleCommand("ulx settime "..math.random(1,23).."\n") else game.ConsoleCommand("ulx settime 12\n") end if map ~= ttt_office_b1 or map ~= ttt_bb_teenroom_b2 or map ~= ttt_lost_temple_v1 then if math.random(0,100) > 65 then tableweather = { ("weather rain"), ("weather rain"), ("weather rain"), ("weather fog"), ("weather fog"), ("weather fog"), ("weather snow"), ("weather snow"), ("weather snow"), ("weather storm"), ("weather storm"), ("weather blizzard")} weatherchoice = table.Random(tableweather) game.ConsoleCommand("ulx "..weatherchoice.."\n") else game.ConsoleCommand("ulx weather none\n") end else game.ConsoleCommand("ulx weather none\n") end end end)[/code]
[QUOTE=343N;48863058]Broken code[/QUOTE] PS: Your code was really hard to read through. This should work for you. [code] -- -- -- RANDOM WEATHER -- -- local badtimemaps = { ["ttt_office_b1"] = true, ["ttt_lost_temple_v1"] = true } local badweathermaps = { ["ttt_office_b1"] = true, ["ttt_bb_teenroom_b2"] = true, ["ttt_lost_temple_v1"] = true } local tableweather = { "weather rain", "weather rain", "weather rain", "weather fog", "weather fog", "weather fog", "weather snow", "weather snow", "weather snow", "weather storm", "weather storm", "weather blizzard"} hook.Add("TTTPrepareRound", "weather", function() local map = game.GetMap() -- Plz localize variables as common as this if not badtimemaps[map] then -- This is more efficient. game.ConsoleCommand("ulx settime "..math.random(1,23).."\n") else game.ConsoleCommand("ulx settime 12\n") end if not badwathermaps[map] then if math.random(0,100) > 65 then game.ConsoleCommand("ulx "..table.Random(tableweather).."\n") else -- Plz tab properly. Thx game.ConsoleCommand("ulx weather none\n") end else -- plz tab properly. thx game.ConsoleCommand("ulx weather none\n") end end) [/code] Idk, I didn't test it. Report errors
Hey guys. How would I create a randomizing system based on values in tables? Example: 100 has a higher chance to be the output as 10
[QUOTE=deinemudda32;48863794]Hey guys. How would I create a randomizing system based on values in tables? Example: 100 has a higher chance to be the output as 10[/QUOTE] Maybe have higher values more then once in the table?
I dont understand what you're talking about.
[QUOTE=deinemudda32;48864296]I dont understand what you're talking about.[/QUOTE] He says do somthing like this: [lua] local tbl = { 100, 100, 100, 10 }[/lua] Now 100 has a 75% chance to be picked, whereas 10 has a 25% chance. That's not recommended tho. I'd suggest giving each value a key which will be the chance of getting picked, e.g. [lua]local tbl = { 75 = 100, 25 = 10, }[/lua] Now you can do math.Random( 1, 100 ) and convert the number into the key of the table.
Yea, but that'll drop the performance if the table is too big. I already tried that.
[QUOTE=deinemudda32;48864312]Yea, but that'll drop the performance if the table is too big. I already tried that.[/QUOTE] Ok, do what I said then? :v:
getting this error on the standard ttt teleporter (unmodified) [code][ERROR] gamemodes/terrortown/entities/effects/teleport_beamdown.lua:38: attempt to index a string value with bad key ('Play' is not part of the string library) 1. error - [C]:-1 2. __index - lua/includes/extensions/string.lua:310 3. unknown - gamemodes/terrortown/entities/effects/teleport_beamdown.lua:38 [/code] [editline]9th October 2015[/editline] line 38 of teleport_beamdown (and lines around it) [code] if IsValid(self.Owner) then self.Dummy = ClientsideModel(self.Owner:GetModel(), RENDERGROUP_OPAQUE) self.Dummy:SetPos(self.BasePos) self.Dummy:SetAngles(data:GetAngles()) self.Dummy:AddEffects(EF_NODRAW) local s = self.Dummy:LookupSequence("idle_all") self.Dummy:SetSequence(s) else self.Dummy = nil end sound.Play(loopsound, self:GetPos(), 50, 100) -- line 38 end[/code]
Okay, so I've been getting some mixed messages. If I wanted to store information about a player, Garry said to use NW*, but Neth said to use Player.*; which one do you guys prefer?
[QUOTE=PigeonTroll;48864667]Okay, so I've been getting some mixed messages. If I wanted to store information about a player, Garry said to use NW*, but Neth said to use Player.*; which one do you guys prefer?[/QUOTE] I personally use NW for variables that won't be changed, and will only be ran once (e.g. check a player's time on the server (utime) on a PlayerAuthed hook). But if I want to store someone's kill count, I'd use ply.kills "var = var + 1" is a lot easier than redefining a NWInt
[QUOTE=JasonMan34;48864700]I personally use NW for variables that won't be changed, and will only be ran once (e.g. check a player's time on the server (utime) on a PlayerAuthed hook). But if I want to store someone's kill count, I'd use ply.kills "var = var + 1" is a lot easier than redefining a NWInt[/QUOTE] ply.kills for example: Is this var saved after disconnect (like pdata for example)? Never used it before :3
[QUOTE=P4sca1;48864724]ply.kills for example: Is this var saved after disconnect (like pdata for example)? Never used it before :3[/QUOTE] I use it for a reward system on TTT, it's map based so it fits perfectly for what I need
Is there any way to simulate clicking the screen on a vgui panel?
[QUOTE=343N;48864480]getting this error on the standard ttt teleporter (unmodified) [code][ERROR] gamemodes/terrortown/entities/effects/teleport_beamdown.lua:38: attempt to index a string value with bad key ('Play' is not part of the string library) 1. error - [C]:-1 2. __index - lua/includes/extensions/string.lua:310 3. unknown - gamemodes/terrortown/entities/effects/teleport_beamdown.lua:38 [/code] [editline]9th October 2015[/editline] line 38 of teleport_beamdown (and lines around it) [code] if IsValid(self.Owner) then self.Dummy = ClientsideModel(self.Owner:GetModel(), RENDERGROUP_OPAQUE) self.Dummy:SetPos(self.BasePos) self.Dummy:SetAngles(data:GetAngles()) self.Dummy:AddEffects(EF_NODRAW) local s = self.Dummy:LookupSequence("idle_all") self.Dummy:SetSequence(s) else self.Dummy = nil end sound.Play(loopsound, self:GetPos(), 50, 100) -- line 38 end[/code][/QUOTE] Did you make another global variable with the name "sound" somewhere?
Anyone can tell me what is wrong with my stencils ? Sometime, they fuckup (Colors goes to shit and sometime disappear) (Low quality screenshot, i was using steam's streaming service) [IMG]http://puu.sh/kEbPF/aabb7e749a.jpg[/IMG] Or [IMG]http://puu.sh/kEcBq/81fe10c963.jpg[/IMG] The function with all my stencils [url]https://github.com/ExtReMLapin/GryMod/blob/master/lua/grymod/client/cl_hud.lua#L618[/url] Or .. if you don't like github [lua] function GryMod.Stencils() local compassmask = { -- if we want to support eyefinity, we have to update the table each frames { x = -1*GryModXDistance_int + GryModXDistance2_int + GryMod.EyeFinityScrW()*(072/1920), y = ScrH()-GryMod.EyeFinityScrW()*(215/1920) }, { x = -1*GryModXDistance_int + GryModXDistance2_int + GryMod.EyeFinityScrW()*(273/1920), y = ScrH()-GryMod.EyeFinityScrW()*(227/1920) }, { x = -1*GryModXDistance_int + GryModXDistance2_int + GryMod.EyeFinityScrW()*(294/1920), y = ScrH()-GryMod.EyeFinityScrW()*(207/1920) }, { x = -1*GryModXDistance_int + GryModXDistance2_int + GryMod.EyeFinityScrW()*(061/1920), y = ScrH()-GryMod.EyeFinityScrW()*(194/1920) }, { x = -1*GryModXDistance_int + GryModXDistance2_int + GryMod.EyeFinityScrW()*(060/1920), y = ScrH()-GryMod.EyeFinityScrW()*(204/1920) } } local energybarpoly1 = { -- if we want to support eyefinity, we have to update the table each frames { x = GryModXDistance_int + GryModXDistance2_int + GryMod.EyeFinityScrW()-GryMod.EyeFinityScrW()*(446/1920), y = ScrH()-GryMod.EyeFinityScrW()*(136/1920) }, { x = GryModXDistance_int + GryModXDistance2_int + GryMod.EyeFinityScrW()-GryMod.EyeFinityScrW()*(436/1920), y = ScrH()-GryMod.EyeFinityScrW()*(144/1920) }, { x = GryModXDistance_int + GryModXDistance2_int + GryMod.EyeFinityScrW()-GryMod.EyeFinityScrW()*(277/1920), y = ScrH()-GryMod.EyeFinityScrW()*(136/1920) }, { x = GryModXDistance_int + GryModXDistance2_int + GryMod.EyeFinityScrW()-GryMod.EyeFinityScrW()*(277/1920), y = ScrH()-GryMod.EyeFinityScrW()*(113.5/1920) }, { x = GryModXDistance_int + GryModXDistance2_int + GryMod.EyeFinityScrW()-GryMod.EyeFinityScrW()*(446/1920), y = ScrH()-GryMod.EyeFinityScrW()*(122/1920) } } local healthbarpoly1 = { -- if we want to support eyefinity, we have to update the table each frames { x = GryModXDistance_int + GryModXDistance2_int + GryMod.EyeFinityScrW()-GryMod.EyeFinityScrW()*(446/1920), y = ScrH()-GryMod.EyeFinityScrW()*(112/1920) }, { x = GryModXDistance_int + GryModXDistance2_int + GryMod.EyeFinityScrW()-GryMod.EyeFinityScrW()*(277/1920), y = ScrH()-GryMod.EyeFinityScrW()*(102.5/1920) }, { x = GryModXDistance_int + GryModXDistance2_int + GryMod.EyeFinityScrW()-GryMod.EyeFinityScrW()*(277/1920), y = ScrH()-GryMod.EyeFinityScrW()*(81.5/1920) }, { x = GryModXDistance_int + GryModXDistance2_int + GryMod.EyeFinityScrW()-GryMod.EyeFinityScrW()*(436/1920), y = ScrH()-GryMod.EyeFinityScrW()*(91/1920) }, { x = GryModXDistance_int + GryModXDistance2_int + GryMod.EyeFinityScrW()-GryMod.EyeFinityScrW()*(446/1920), y = ScrH()-GryMod.EyeFinityScrW()*(97/1920) } } //270 103 //228 100 //228 78 //270 80 //+32 for ener local energybarpoly2 = { -- cut the bars { x = GryModXDistance_int + GryModXDistance2_int + GryMod.EyeFinityScrW()-GryMod.EyeFinityScrW()*(270/1920), y = ScrH()-GryMod.EyeFinityScrW()*(135.5/1920) }, { x = GryModXDistance_int + GryModXDistance2_int + GryMod.EyeFinityScrW()-GryMod.EyeFinityScrW()*(228/1920), y = ScrH()-GryMod.EyeFinityScrW()*(133/1920) }, { x = GryModXDistance_int + GryModXDistance2_int + GryMod.EyeFinityScrW()-GryMod.EyeFinityScrW()*(228/1920), y = ScrH()-GryMod.EyeFinityScrW()*(111/1920) }, { x = GryModXDistance_int + GryModXDistance2_int + GryMod.EyeFinityScrW()-GryMod.EyeFinityScrW()*(270/1920), y = ScrH()-GryMod.EyeFinityScrW()*(113.5/1920) } } local healthbarpoly2 = { -- cut the bars { x = GryModXDistance_int + GryModXDistance2_int + GryMod.EyeFinityScrW()-GryMod.EyeFinityScrW()*(270/1920), y = ScrH()-GryMod.EyeFinityScrW()*(102/1920) }, { x = GryModXDistance_int + GryModXDistance2_int + GryMod.EyeFinityScrW()-GryMod.EyeFinityScrW()*(228/1920), y = ScrH()-GryMod.EyeFinityScrW()*(99.5/1920) }, { x = GryModXDistance_int + GryModXDistance2_int + GryMod.EyeFinityScrW()-GryMod.EyeFinityScrW()*(228/1920), y = ScrH()-GryMod.EyeFinityScrW()*(78.5/1920) }, { x = GryModXDistance_int + GryModXDistance2_int + GryMod.EyeFinityScrW()-GryMod.EyeFinityScrW()*(270/1920), y = ScrH()-GryMod.EyeFinityScrW()*(81/1920) } } local nbener = LocalPlayer():GetNWInt("GryEnergy") local nbhlt = LocalPlayer():Health() render.ClearStencil() render.SetStencilEnable( true ) render.SetStencilWriteMask( 1 ) render.SetStencilTestMask( 1 ) render.SetStencilFailOperation( STENCILOPERATION_ZERO ) render.SetStencilPassOperation( STENCILOPERATION_REPLACE ) render.SetStencilZFailOperation( STENCILOPERATION_KEEP ) render.SetStencilCompareFunction( STENCILCOMPARISONFUNCTION_ALWAYS ) surface.DrawPoly( compassmask ) render.SetStencilCompareFunction( STENCILCOMPARISONFUNCTION_EQUAL ) render.SetStencilReferenceValue( 1 ) draw.SimpleText( 'N', 'ScoreboardText', GryMod.EyeFinityScrW()*(0.0104166666666667)- GryModXDistance_int + GryModXDistance2_int + (LocalPlayer():EyeAngles().y * 3.32)+ GryMod.EyeFinityScrW()*(134/1920), tempscrh - GryMod.EyeFinityScrW()*(218/1920) -((LocalPlayer():EyeAngles().y * 3.32)/15)+GryMod.EyeFinityScrW()*(-5/1920)) draw.SimpleText( 'NE','ScoreboardText', GryMod.EyeFinityScrW()*(0.0104166666666667)- GryModXDistance_int + GryModXDistance2_int + (( LocalPlayer():EyeAngles().y + 45 ) * 3.32) + GryMod.EyeFinityScrW()*(134/1920), (( tempscrh - GryMod.EyeFinityScrW()*(218/1920) -((( LocalPlayer():EyeAngles().y + 45 ) * 3.32)/15)+GryMod.EyeFinityScrW()*(-5/1920)))) draw.SimpleText( 'E', 'ScoreboardText', GryMod.EyeFinityScrW()*(0.0104166666666667)- GryModXDistance_int + GryModXDistance2_int +(( LocalPlayer():EyeAngles().y + 90 ) * 3.32)+ GryMod.EyeFinityScrW()*(134/1920), (( tempscrh -GryMod.EyeFinityScrW()*(218/1920) -(( LocalPlayer():EyeAngles().y + 90 )* 3.32)/15)+GryMod.EyeFinityScrW()*(-5/1920))) draw.SimpleText( 'SE','ScoreboardText', GryMod.EyeFinityScrW()*(0.0104166666666667)- GryModXDistance_int + GryModXDistance2_int + (( LocalPlayer():EyeAngles().y + 135 ) * 3.32) + GryMod.EyeFinityScrW()*(134/1920), (( tempscrh - GryMod.EyeFinityScrW()*(218/1920) -((( LocalPlayer():EyeAngles().y + 135 ) * 3.32)/15)+GryMod.EyeFinityScrW()*(-5/1920)))) draw.SimpleText( 'S', 'ScoreboardText', GryMod.EyeFinityScrW()*(0.0104166666666667)- GryModXDistance_int + GryModXDistance2_int +math.max( math.NormalizeAngle( LocalPlayer():EyeAngles().y + 180 ), math.NormalizeAngle( LocalPlayer():EyeAngles().y - 180 ) ) * 5 + GryMod.EyeFinityScrW()*(134/1920), (( tempscrh - GryMod.EyeFinityScrW()*(218/1920) -((math.max( math.NormalizeAngle( LocalPlayer():EyeAngles().y + 180 ), math.NormalizeAngle( LocalPlayer():EyeAngles().y - 180 ) ) * 3.32)/15)+GryMod.EyeFinityScrW()*(-5/1920)))) draw.SimpleText( 'SW','ScoreboardText', GryMod.EyeFinityScrW()*(0.0104166666666667)- GryModXDistance_int + GryModXDistance2_int +(( LocalPlayer():EyeAngles().y - 135 ) * 3.32)+ GryMod.EyeFinityScrW()*(134/1920), (( tempscrh - GryMod.EyeFinityScrW()*(218/1920)-((( LocalPlayer():EyeAngles().y - 135 ) * 3.32)/15)+GryMod.EyeFinityScrW()*(-5/1920)))) draw.SimpleText( 'W', 'ScoreboardText', GryMod.EyeFinityScrW()*(0.0104166666666667)- GryModXDistance_int + GryModXDistance2_int + (( LocalPlayer():EyeAngles().y - 90 ) * 3.32) + GryMod.EyeFinityScrW()*(134/1920), (( tempscrh - GryMod.EyeFinityScrW()*(218/1920) -((( LocalPlayer():EyeAngles().y - 90 ) * 3.32)/15)+GryMod.EyeFinityScrW()*(-5/1920)))) draw.SimpleText( 'NW','ScoreboardText', GryMod.EyeFinityScrW()*(0.0104166666666667)- GryModXDistance_int + GryModXDistance2_int + (( LocalPlayer():EyeAngles().y - 45 ) * 3.32) + GryMod.EyeFinityScrW()*(134/1920), (( tempscrh - GryMod.EyeFinityScrW()*(218/1920) -((( Loc
I don't see you resetting your color before calling draw poly.
So i added "draw.NoTexture()" before each draw poly call. Strange, because it only turn to shit (see screenshit) sometimes, not everytime. When using other stencils or spawning weird props. Edit : Adding draw.NoTexture() fuckup the colors. I don't know if by "reset color" you meant draw.NoTexture(), i never had to reset color tbh :v: How it looks when not using others stencils/weird props : [T]http://puu.sh/kEd7s/8c818bf542.jpg[/T] (Not reseting color or draw.NoTexture())
In what world by reading the word "color" you immediately think of "material/texture"? Reset THE COLOR ( [url]http://wiki.garrysmod.com/page/Global/Color[/url] ) using [url]http://wiki.garrysmod.com/page/surface/SetDrawColor[/url] [editline]9th October 2015[/editline] But yeah, you should also reset the texture. You must reset them at least once per your drawing function.
Okay so im making a ent based addon, it basically works by putting two ents together and it makes a new ent. How can i make it that once 10 ents have been made, a player can't create anymore untill someone collects their ent (Clicks e after 5 minutes) or if it gets destroyed(Health reaches 0)
Keep track of how many entities were added/merged in the resulting entity? newentity.Merges = math.max( oldent1.Merges, oldent2.Merges ) + 1
Okay, I'm a little confused as to how I'd do this. It's probably really simple but I can't really think of it right now. Alright, so let's say I have a weapon in my inventory that has a value "SWEP.WepType = WEP_PRIMARY" Now, in the PlayerCanPickupWeapon hook, how would I make it so that if the player has a weapon with the SWEP.WepType = WEP_PRIMARY variable value and the weapon they want to pick up has that same value, they couldn't pick the weapon up? It's resulting a mindfuck on my part right now, I can't think :tired:
[QUOTE=MaximLaHaxim;48867045]Okay, I'm a little confused as to how I'd do this. It's probably really simple but I can't really think of it right now. Alright, so let's say I have a weapon in my inventory that has a value "SWEP.WepType = WEP_PRIMARY" Now, in the PlayerCanPickupWeapon hook, how would I make it so that if the player has a weapon with the SWEP.WepType = WEP_PRIMARY variable value and the weapon they want to pick up has that same value, they couldn't pick the weapon up? It's resulting a mindfuck on my part right now, I can't think :tired:[/QUOTE] Something like this? [code] hook.Add('PlayerCanPickupWeapon', 'SlotRestriction', function(ply, wep) for _, v in pairs(ply:GetWeapons()) do if v.WepType == wep.WepType then return false end end end) [/code] If this is for a gamemode, just use the GM:* function instead of hook.Add.
Seriously shouldn't need its own thread... I'm trying to make my character invisible to others (and his weapons) When I use any iteration of SetColor or SetWeapon color, it works but my weapons are GONE. I try cycling through them but when I respawn (that's the function command) my weapons are gone. (i had a camera so i verified I was invisible) [CODE]function GM:PlayerSpawn( ply ) ply:SetColor( Vector( 0, 0, 1 ) ) ply:SetRenderMode(RENDERMODE_TRANSALPHA) end[/CODE]
Sorry, you need to Log In to post a reply to this thread.