| 
			
				|  | Cheat Engine The Official Site of Cheat Engine
 
 
 |  
 
	
		| View previous topic :: View next topic |  
		| Author | Message |  
		| MidiGuyDP How do I cheat?
 
 ![]() Reputation: 0 
 Joined: 05 Aug 2019
 Posts: 4
 
 
 | 
			
				|  Posted: Mon Aug 05, 2019 6:10 pm    Post subject: Using Cheat Engine to view Top 5 positions (It's Possible!!) |   |  
				| 
 |  
				| Hi there! Name's MidiGuyDP. How's it going? 
 I've come here with a... probably rather unique question. Before I get to it, I wanna go over what I'd like to do.
 
 So I've got the game called Re-Volt on the PC, and I enjoy doing scenario races by grabbing custom cars made by the community, and having them represent other characters/people, in this case, Super Mario Bros characters
 
 So this is all good. However, I want to take it a step further, and add a top 4 style interface to the left that keeps track of the position of the top 4 racers, think of the interface in Mario Kart 64. (See attached picture for example)
 
 So that's the gist.
 
 I've recently installed cheat engine, thinking I could use it's lua related features to perhaps Draw this information to the game screen (I've done it on SMBX), but I don't think that's do able.
 
 What I have managed to do, is find the information that tells me this:
 
 -The name of the racer
 -The position of the racer
 
 Here's some code that I've put together figured out so far (Basic compared to most stuff I've seen)
 
 
  	  | Code: |  	  | P1Name = readString(0x00B53458) P1Pos = readInteger(0x00B533A8)
 
 P2Name = readString(0x00B58700)
 P2Pos = readInteger(0x00B58650)
 
 P3Name = readString(0x00B5D9A8)
 P3Pos = readInteger(0x00B5D8F8)
 
 P4Name = readString(0x00B62C50)
 P4Pos = readInteger(0x00B62BA0)
 
 if P1Pos == 0 then
 print("1st: " .. P1Name)
 end
 if P2Pos == 0 then
 print("1st: " .. P2Name)
 end
 if P3Pos == 0 then
 print("1st: " .. P3Name)
 end
 if P4Pos == 0 then
 print("1st: " .. P4Name)
 end
 | 
 
 So figured I could use this information with lua to run "If" commands to check "If" this character is in "1st" than "Draw this Image", or in this example's case, print text
 
 Though currently, I'm quite unsure of how to go forward, or if it's actually possible to simply use this information to simply create a way to keep track of a top 4 positions info that constantly changes.
 I thought, perhaps I could use the form feature in CE to somehow make the code print or draw the wanted data to it, then perhaps grab them with OBS and record the video.
 
 So... my question is, would this be possible using CE? If anyone could help, that would be great!
   
 
 
 
	
		
	 
		| Description: |  |  
		| Filesize: | 653.25 KB |  
		| Viewed: | 5706 Time(s) |  
		| 
  
 
 |  
 
 Last edited by MidiGuyDP on Wed Aug 07, 2019 6:11 pm; edited 1 time in total
 |  |  
		| Back to top |  |  
		|  |  
		| Csimbi I post too much
 
  Reputation: 97 
 Joined: 14 Jul 2007
 Posts: 3327
 
 
 | 
			
				|  Posted: Tue Aug 06, 2019 7:05 am    Post subject: |   |  
				| 
 |  
				| CE can surely find the values you'd need and with LUA you can sort out the top 4 and feed the final data 'somewhere'. My hunch is, you will need to tap into DirectX (or similar) to actually draw onto the canvas and put the data fed by the LUA script.
 Never done it, just a hunch.
 
 So, my logic would be: Use CE to find values, fetch, sort and format with LUA, and feed to your own engine that draws to the canvas.
 
 Good luck!
 
 You might want to make a tutorial out of it, I'm sure plenty of people would be interested.
 
 PS.
 I loved Re-Volt, too back in the days
   |  |  
		| Back to top |  |  
		|  |  
		| MidiGuyDP How do I cheat?
 
 ![]() Reputation: 0 
 Joined: 05 Aug 2019
 Posts: 4
 
 
 | 
			
				|  Posted: Wed Aug 07, 2019 2:56 am    Post subject: |   |  
				| 
 |  
				| Welp, thanks to the thread called: 
 "Basic Animation Uisng CE GUI and Lua Script" by Corroder
 
 I was able to pretty much achieve what I wanted to do.
   
 
 Here's some videos of it in action (On a youtube channel called MidiGuyDPGamer):
 
 (1st demonstration, TOP 5 Positions on a separate window on the side)
 /watch?v=COwMb8PNZKU
 Name: [Re-Volt] 16-Car Mario Themed Race (TOP 5 Positions on Side)
 
 (2nd demo, TOP 5 integrated into game screen OBS recording)
 /watch?v=WU8xxY3yVs8
 Name: [Re-Volt] 16-Car Mario Themed Race (TOP 5 Positions on game)
 
 (Load youtube(dot)com and add those links to it, or search for those specific video titles. Can't post Urls atm so this is the best way I can share, I attached a preview screen though)
 
 
 So yeah, the Basic Animation thread had what I needed, it provided me with info on how to create the canvas I needed to put the position images. Then with that I just needed to find a way to use the "IF" command with the Name & Position data to tell it when to display what, and made a nice looking interface in the process. ^^
 
 The second video has OBS using window display 5 times with the appropriate cropping to display the TOP 5 positions on an overlay that I custom made for that scene on OBS to record the gameplay. They're not on the game screen it'self, but it's as close as I've gotten to doing so.
 
 Check out the vids and let me know what you guys think. I think it turned out pretty good!
   
 
 Though if anyone knows of a way to draw the data right on to the game screen itself, let me know!
   
 
 
 
	
		
	 
		| Description: |  |  
		| Filesize: | 605.69 KB |  
		| Viewed: | 5646 Time(s) |  
		| 
  
 
 |  
 |  |  
		| Back to top |  |  
		|  |  
		| mindoff Advanced Cheater
 
 ![]() Reputation: 0 
 Joined: 12 Jun 2016
 Posts: 96
 
 
 | 
			
				|  Posted: Wed Aug 07, 2019 4:55 am    Post subject: |   |  
				| 
 |  
				| Looking nice,how did you draw the custom image to screen with Lua? 
 Could you share some keyword or maybe code to show how you did it?
 
 Want to draw a custom hud myself,got no idea.
 |  |  
		| Back to top |  |  
		|  |  
		| MidiGuyDP How do I cheat?
 
 ![]() Reputation: 0 
 Joined: 05 Aug 2019
 Posts: 4
 
 
 | 
			
				|  Posted: Wed Aug 07, 2019 7:00 pm    Post subject: |   |  
				| 
 |  
				| I actually didn't draw it directly to the screen. 
 I used the CE Animation made by Corroder as a template to allow me to use the data to create another window that contained the changing positions.
 
 I then used OBS to screengrab the gameplay, and the new generated window with the changing top 5 positions. Allowing me to overlay it onto the gameplay (On the OBS screen)
 
 This is the Code I put together using the Animation as a Template:
 
 
  	  | Code: |  	  | f = createForm() f.setSize(230,930)
 f.Position = 'poScreenCenter'
 f.Caption = 'CRDR - Basic Animation Concept'
 
 pnl = createPanel(f)
 pnl.setSize(230,880)
 pnl.setPosition(0,0)
 
 bgrImg = createImage(pnl)
 bgrImg.setSize(230,880)
 bgrImg.setPosition(0,0)
 bgrImg.Align = 'alClient'
 bgrImg.Picture.loadFromStream(findTableFile('MainBGRender.png').Stream)
 bgrImg.Stretch = true
 
 p1 = createImage(pnl)
 p1.setSize(150,150)
 p1.stretch = true
 p1.setPosition(60,25)
 
 p2 = createImage(pnl)
 p2.setSize(150,150)
 p2.stretch = true
 p2.setPosition(60,195)
 
 p3 = createImage(pnl)
 p3.setSize(150,150)
 p3.stretch = true
 p3.setPosition(60,365)
 
 p4 = createImage(pnl)
 p4.setSize(150,150)
 p4.stretch = true
 p4.setPosition(60,535)
 
 p5 = createImage(pnl)
 p5.setSize(150,150)
 p5.stretch = true
 p5.setPosition(60,705)
 
 sonic = createImage(pnl)
 sonic.setSize(200,200)
 sonic.stretch = true
 sonic.setPosition(-100,-13)
 
 rat = createImage(pnl)
 rat.setSize(100,100)
 rat.stretch = true
 rat.setPosition(5,50)
 
 btn = createToggleBox(f)
 btn.setSize(100,50)
 btn.setPosition(10,880)
 btn.caption = 'Start'
 
 label1 = createLabel(f)
 label1.Left = 627
 label1.Top = 890
 label1.Caption = '< Increase Speed'
 
 label2 = createLabel(f)
 label2.Left = 700
 label2.Top = 890
 label2.Caption = 'Decrease Speed >'
 
 trb = createTrackBar(f)
 trb.setSize(370,50)
 trb.Top = 880
 trb.Left = 520
 trb.Max = 500
 trb.Min = 0
 trb.Position = 500
 trb.SelStart = 0
 trb.ScalePos = 'trTop'
 
 ---------------------------------------------------------SONIC
 function hack1()
 sndfile=findTableFile('CHICK.XM')
 if (checkbox_getState(btn) == 1) then
 if xmplayer_isPlaying() == true then
 xmplayer_resume()
 else
 xmplayer_playXM(sndfile)
 end
 t.enabled = true
 t2.enabled = true
 btn.caption = 'Stop'
 else
 xmplayer_pause()
 t.enabled = false
 t2.enabled = false
 btn.caption = 'Start'
 end
 end
 
 function t_tick()
 Mode = "POS"
 P1Name = readString(0x00B53458)
 P1NamePng = (P1Name .. Mode .. ".png")
 P1Pos = readInteger(0x00B533A8)
 
 P2Name = readString(0x00B58700)
 P2NamePng = (P2Name .. Mode .. ".png")
 P2Pos = readInteger(0x00B58650)
 
 P3Name = readString(0x00B5D9A8)
 P3NamePng = (P3Name .. Mode .. ".png")
 P3Pos = readInteger(0x00B5D8F8)
 
 P4Name = readString(0x00B62C50)
 P4NamePng = (P4Name .. Mode .. ".png")
 P4Pos = readInteger(0x00B62BA0)
 
 P5Name = readString(0x00B67EF8)
 P5NamePng = (P5Name .. Mode .. ".png")
 P5Pos = readInteger(0x00B67E48)
 
 P6Name = readString(0x00B6D1A0)
 P6NamePng = (P6Name .. Mode .. ".png")
 P6Pos = readInteger(0x00B6D0F0)
 
 P7Name = readString(0x00B72448)
 P7NamePng = (P7Name .. Mode .. ".png")
 P7Pos = readInteger(0x00B72398)
 
 P8Name = readString(0x00B776F0)
 P8NamePng = (P8Name .. Mode .. ".png")
 P8Pos = readInteger(0x00B77640)
 
 P9Name = readString(0x00B7C998)
 P9NamePng = (P9Name .. Mode .. ".png")
 P9Pos = readInteger(0x00B7C8E8)
 
 P10Name = readString(0x00B81C40)
 P10NamePng = (P10Name .. Mode .. ".png")
 P10Pos = readInteger(0x00B81B90)
 
 P11Name = readString(0x00B86EE8)
 P11NamePng = (P11Name .. Mode .. ".png")
 P11Pos = readInteger(0x00B86E38)
 
 P12Name = readString(0x00B8C190)
 P12NamePng = (P12Name .. Mode .. ".png")
 P12Pos = readInteger(0x00B8C0E0)
 
 P13Name = readString(0x00B91438)
 P13NamePng = (P13Name .. Mode .. ".png")
 P13Pos = readInteger(0x00B91388)
 
 P14Name = readString(0x00B966E0)
 P14NamePng = (P14Name .. Mode .. ".png")
 P14Pos = readInteger(0x00B96630)
 
 P15Name = readString(0x00B9B988)
 P15NamePng = (P15Name .. Mode .. ".png")
 P15Pos = readInteger(0x00B9B8D8)
 
 P16Name = readString(0x00BA0C30)
 P16NamePng = (P16Name .. Mode .. ".png")
 P16Pos = readInteger(0x00BA0B80)
 
 if P1Pos == 0 then
 p1.Picture.loadFromStream(findTableFile(P1NamePng).Stream)
 end
 if P2Pos == 0 then
 p1.Picture.loadFromStream(findTableFile(P2NamePng).Stream)
 end
 if P3Pos == 0 then
 p1.Picture.loadFromStream(findTableFile(P3NamePng).Stream)
 end
 if P4Pos == 0 then
 p1.Picture.loadFromStream(findTableFile(P4NamePng).Stream)
 end
 
 if P5Pos == 0 then
 p1.Picture.loadFromStream(findTableFile(P5NamePng).Stream)
 end
 if P6Pos == 0 then
 p1.Picture.loadFromStream(findTableFile(P6NamePng).Stream)
 end
 if P7Pos == 0 then
 p1.Picture.loadFromStream(findTableFile(P7NamePng).Stream)
 end
 if P8Pos == 0 then
 p1.Picture.loadFromStream(findTableFile(P8NamePng).Stream)
 end
 
 if P9Pos == 0 then
 p1.Picture.loadFromStream(findTableFile(P9NamePng).Stream)
 end
 if P10Pos == 0 then
 p1.Picture.loadFromStream(findTableFile(P10NamePng).Stream)
 end
 if P11Pos == 0 then
 p1.Picture.loadFromStream(findTableFile(P11NamePng).Stream)
 end
 if P12Pos == 0 then
 p1.Picture.loadFromStream(findTableFile(P12NamePng).Stream)
 end
 
 if P13Pos == 0 then
 p1.Picture.loadFromStream(findTableFile(P13NamePng).Stream)
 end
 if P14Pos == 0 then
 p1.Picture.loadFromStream(findTableFile(P14NamePng).Stream)
 end
 if P15Pos == 0 then
 p1.Picture.loadFromStream(findTableFile(P15NamePng).Stream)
 end
 if P16Pos == 0 then
 p1.Picture.loadFromStream(findTableFile(P16NamePng).Stream)
 end
 
 if P1Pos == 1 then
 p2.Picture.loadFromStream(findTableFile(P1NamePng).Stream)
 end
 if P2Pos == 1 then
 p2.Picture.loadFromStream(findTableFile(P2NamePng).Stream)
 end
 if P3Pos == 1 then
 p2.Picture.loadFromStream(findTableFile(P3NamePng).Stream)
 end
 if P4Pos == 1 then
 p2.Picture.loadFromStream(findTableFile(P4NamePng).Stream)
 end
 
 if P5Pos == 1 then
 p2.Picture.loadFromStream(findTableFile(P5NamePng).Stream)
 end
 if P6Pos == 1 then
 p2.Picture.loadFromStream(findTableFile(P6NamePng).Stream)
 end
 if P7Pos == 1 then
 p2.Picture.loadFromStream(findTableFile(P7NamePng).Stream)
 end
 if P8Pos == 1 then
 p2.Picture.loadFromStream(findTableFile(P8NamePng).Stream)
 end
 
 if P9Pos == 1 then
 p2.Picture.loadFromStream(findTableFile(P9NamePng).Stream)
 end
 if P10Pos == 1 then
 p2.Picture.loadFromStream(findTableFile(P10NamePng).Stream)
 end
 if P11Pos == 1 then
 p2.Picture.loadFromStream(findTableFile(P11NamePng).Stream)
 end
 if P12Pos == 1 then
 p2.Picture.loadFromStream(findTableFile(P12NamePng).Stream)
 end
 
 if P13Pos == 1 then
 p2.Picture.loadFromStream(findTableFile(P13NamePng).Stream)
 end
 if P14Pos == 1 then
 p2.Picture.loadFromStream(findTableFile(P14NamePng).Stream)
 end
 if P15Pos == 1 then
 p2.Picture.loadFromStream(findTableFile(P15NamePng).Stream)
 end
 if P16Pos == 1 then
 p2.Picture.loadFromStream(findTableFile(P16NamePng).Stream)
 end
 
 if P1Pos == 2 then
 p3.Picture.loadFromStream(findTableFile(P1NamePng).Stream)
 end
 if P2Pos == 2 then
 p3.Picture.loadFromStream(findTableFile(P2NamePng).Stream)
 end
 if P3Pos == 2 then
 p3.Picture.loadFromStream(findTableFile(P3NamePng).Stream)
 end
 if P4Pos == 2 then
 p3.Picture.loadFromStream(findTableFile(P4NamePng).Stream)
 end
 
 if P5Pos == 2 then
 p3.Picture.loadFromStream(findTableFile(P5NamePng).Stream)
 end
 if P6Pos == 2 then
 p3.Picture.loadFromStream(findTableFile(P6NamePng).Stream)
 end
 if P7Pos == 2 then
 p3.Picture.loadFromStream(findTableFile(P7NamePng).Stream)
 end
 if P8Pos == 2 then
 p3.Picture.loadFromStream(findTableFile(P8NamePng).Stream)
 end
 
 if P9Pos == 2 then
 p3.Picture.loadFromStream(findTableFile(P9NamePng).Stream)
 end
 if P10Pos == 2 then
 p3.Picture.loadFromStream(findTableFile(P10NamePng).Stream)
 end
 if P11Pos == 2 then
 p3.Picture.loadFromStream(findTableFile(P11NamePng).Stream)
 end
 if P12Pos == 2 then
 p3.Picture.loadFromStream(findTableFile(P12NamePng).Stream)
 end
 
 if P13Pos == 2 then
 p3.Picture.loadFromStream(findTableFile(P13NamePng).Stream)
 end
 if P14Pos == 2 then
 p3.Picture.loadFromStream(findTableFile(P14NamePng).Stream)
 end
 if P15Pos == 2 then
 p3.Picture.loadFromStream(findTableFile(P15NamePng).Stream)
 end
 if P16Pos == 2 then
 p3.Picture.loadFromStream(findTableFile(P16NamePng).Stream)
 end
 
 if P1Pos == 3 then
 p4.Picture.loadFromStream(findTableFile(P1NamePng).Stream)
 end
 if P2Pos == 3 then
 p4.Picture.loadFromStream(findTableFile(P2NamePng).Stream)
 end
 if P3Pos == 3 then
 p4.Picture.loadFromStream(findTableFile(P3NamePng).Stream)
 end
 if P4Pos == 3 then
 p4.Picture.loadFromStream(findTableFile(P4NamePng).Stream)
 end
 
 if P5Pos == 3 then
 p4.Picture.loadFromStream(findTableFile(P5NamePng).Stream)
 end
 if P6Pos == 3 then
 p4.Picture.loadFromStream(findTableFile(P6NamePng).Stream)
 end
 if P7Pos == 3 then
 p4.Picture.loadFromStream(findTableFile(P7NamePng).Stream)
 end
 if P8Pos == 3 then
 p4.Picture.loadFromStream(findTableFile(P8NamePng).Stream)
 end
 
 if P9Pos == 3 then
 p4.Picture.loadFromStream(findTableFile(P9NamePng).Stream)
 end
 if P10Pos == 3 then
 p4.Picture.loadFromStream(findTableFile(P10NamePng).Stream)
 end
 if P11Pos == 3 then
 p4.Picture.loadFromStream(findTableFile(P11NamePng).Stream)
 end
 if P12Pos == 3 then
 p4.Picture.loadFromStream(findTableFile(P12NamePng).Stream)
 end
 
 if P13Pos == 3 then
 p4.Picture.loadFromStream(findTableFile(P13NamePng).Stream)
 end
 if P14Pos == 3 then
 p4.Picture.loadFromStream(findTableFile(P14NamePng).Stream)
 end
 if P15Pos == 3 then
 p4.Picture.loadFromStream(findTableFile(P15NamePng).Stream)
 end
 if P16Pos == 3 then
 p4.Picture.loadFromStream(findTableFile(P16NamePng).Stream)
 end
 
 if P1Pos == 4 then
 p5.Picture.loadFromStream(findTableFile(P1NamePng).Stream)
 end
 if P2Pos == 4 then
 p5.Picture.loadFromStream(findTableFile(P2NamePng).Stream)
 end
 if P3Pos == 4 then
 p5.Picture.loadFromStream(findTableFile(P3NamePng).Stream)
 end
 if P4Pos == 4 then
 p5.Picture.loadFromStream(findTableFile(P4NamePng).Stream)
 end
 
 if P5Pos == 4 then
 p5.Picture.loadFromStream(findTableFile(P5NamePng).Stream)
 end
 if P6Pos == 4 then
 p5.Picture.loadFromStream(findTableFile(P6NamePng).Stream)
 end
 if P7Pos == 4 then
 p5.Picture.loadFromStream(findTableFile(P7NamePng).Stream)
 end
 if P8Pos == 4 then
 p5.Picture.loadFromStream(findTableFile(P8NamePng).Stream)
 end
 
 if P9Pos == 4 then
 p5.Picture.loadFromStream(findTableFile(P9NamePng).Stream)
 end
 if P10Pos == 4 then
 p5.Picture.loadFromStream(findTableFile(P10NamePng).Stream)
 end
 if P11Pos == 4 then
 p5.Picture.loadFromStream(findTableFile(P11NamePng).Stream)
 end
 if P12Pos == 4 then
 p5.Picture.loadFromStream(findTableFile(P12NamePng).Stream)
 end
 
 if P13Pos == 4 then
 p5.Picture.loadFromStream(findTableFile(P13NamePng).Stream)
 end
 if P14Pos == 4 then
 p5.Picture.loadFromStream(findTableFile(P14NamePng).Stream)
 end
 if P15Pos == 4 then
 p5.Picture.loadFromStream(findTableFile(P15NamePng).Stream)
 end
 if P16Pos == 4 then
 p5.Picture.loadFromStream(findTableFile(P16NamePng).Stream)
 end
 end
 
 t = createTimer()
 t.interval = 200
 t.enabled = false
 t.onTimer = t_tick
 
 -------------------------------------------------------------RAT
 
 
 t2 = createTimer()
 t2.interval = 100
 t2.enabled = false
 t2.onTimer = t_tick2
 
 --============================================---
 function trbChange(sender)
 r = trb.position
 t.interval = r
 t2.interval = r
 end
 
 function exit()
 xmplayer_stop()
 closeCE()
 return caFree
 end
 
 f.show()
 btn.onChange = hack1
 trb.onChange = trbChange
 f.onClose = exit
 | 
 
 This creates a window along with a nice overlay graphic I put together (MainBGRender.png, have a look in the attachments for it) along with a button labeled "Start" to click on whenever you're ready to start running the positions tracker.
 
 I've uploaded a CT file to wetransfer (Since I can't attach it since it's too big), so go to the site called wetransfer(got)com, then add this to it:
 /downloads/2b42473402deffc28a108b686900cb0920190808004531/7a113b
 It contains a bunch of premade avatars & the code, and the MainRenderBG (Seen in attachments), to enable you to make it work
 
 So this design works for Re-Volt, Specificly RVGL Build 17.0327a. (Not sure if it would work for any other versions, since I don't know if adresses were moved around in updates)
 
 So how it works is this, the avatar GFX (150 x 150) filename, are directly linked to the car's names+POS.png, in other words like this example:
 
 Car Name: Mario
 Avatar Filename: MarioPOS.png
 
 So you have to make sure that the GFX that you import into your CE Table has to have that exact naming, or you will get errors.
 Also, another thing, As far as I can see, I cannot seem to put spaces in the filenames, so the car's names also cannot have any spaces.
 
 So alright, I shall sum this all up in steps to make it easier to follow:
 1.Download the CT File
 2.Open Cheat Engine and load the CT file
 3.Run Re-Volt (While making sure you have cars installed that have the same names as the .png files in the CT
 4.Link the Re-Volt process to CE
 5.Ready up a race
 6.Load up the lua script Cheat Table and Execute script
 7.A new window with the top 5 positions should appear, with the button "Start" at the bottom
 8.Start up your race
 9.Click on the "Start" button on the TOP 5 window
 10.And if all the cars present have GFX loaded into the CT file that have thier names identical to the png files, and have NO spaces in their names (Eg: Car: Mario  GFX: MarioPOS.png), you're good to go!
   
 Alrighty... phew... that took forever to set up. If you have any questions, let me know!
 
 
 
 
	
		
	 
		| Description: |  |  
		| Filesize: | 82.71 KB |  
		| Viewed: | 5602 Time(s) |  
		| 
  
 
 |  
 |  |  
		| Back to top |  |  
		|  |  
		| Csimbi I post too much
 
  Reputation: 97 
 Joined: 14 Jul 2007
 Posts: 3327
 
 
 | 
			
				|  Posted: Thu Aug 08, 2019 10:53 am    Post subject: |   |  
				| 
 |  
				| I watched that second video. Wow, nice job, congrats!
 |  |  
		| Back to top |  |  
		|  |  
		|  |  
  
	| 
 
 | You cannot post new topics in this forum You cannot reply to topics in this forum
 You cannot edit your posts in this forum
 You cannot delete your posts in this forum
 You cannot vote in polls in this forum
 You cannot attach files in this forum
 You can download files in this forum
 
 |  |