Cheat Engine Forum Index Cheat Engine
The Official Site of Cheat Engine
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 


I2 CE Teleporter

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine Extensions
View previous topic :: View next topic  
Author Message
TheyCallMeTim13
Wiki Contributor
Reputation: 50

Joined: 24 Feb 2017
Posts: 976
Location: Pluto

PostPosted: Sat Mar 10, 2018 1:02 pm    Post subject: I2 CE Teleporter Reply with quote


I2 CE Teleporter



A CE Lua Teleporter module.



Version: 1.0.9


The Doc String.
Code:
--[====================================================================================================================[

   I2 Cheat Engine Teleporter


   Version: 1.0.9
      1.0.1:
         * Initial setup.
      1.0.2:
         * Fixed saves memory record creation error.
         * Fixed memory record append on existing memory records.
         * Added "delete" and "rename" functions.
      1.0.3:
         * Added Teleport Back Feature. Back values are saved in "writeToCoords".
         * Added optional camera rotation angle (Pitch, Yaw).
            Not used; if "ptrI2CETeleporterCamRotationAngle" is "nil" or 0 (zero),
            Not used; if "Pitch" and "Yaw" are not found in save,
         * Fixed default line end, changed to '\n'.
      1.0.4:
         * Added optional player rotation angle (set from camera rotation angle).
            Not used; if "ptrI2CETeleporterPlayerRotationAngle" is "nil" or 0 (zero).
               Not used; if "ptrI2CETeleporterCamRotationAngle" is "nil" or 0 (zero),
               Not used; if "Pitch" and "Yaw" are not found in save,
         * Added "Debug" section to main memory records.
         * Added "WarnForNoSavesTableFile" setting.
         * Added "FlagPointerSymbol" to work with injected writes for the teleporter.
      1.0.5:
         * First release.
      1.0.6:
         * Fixed Auto Load to check for an attached process.
      1.0.7:
         * Fixed bug in delete save function, where save name was being cleared on the request (first call).
      1.0.8:
         * Fixed save name and new save name memory not getting allocated if auto allocate was false.
      1.0.9:
         * Fixed error with "getAddress" needing to be "getAddressSafe".



   Author: TheyCallMeTim13



   Features:
      - Set an auto allocated pointer "ptrI2CETeleporterCoord" (user symbol),
         or "CoordPointerSymbol" (setting) can be set to a string used to get the address.

      - A timer is used for writing to coordinates and rotation angle, just writes multiple times for a second.

      - Writes to coordinates using a saved file with names for lookup.
         - Optionally writes to camera pitch and yaw, and player yaw.
            Note: Only camera pitch and yaw, is read and saved.

      - When writing to the coordinates a flag is set "flgI2CETeleporter" (user symbol),
         or "FlagPointerSymbol" (setting) can be set to a byte flag address/symbol string.

         This allows for injection based teleport writes, just set "CoordPointerSymbol"
         to allocated memory (i.e.: X @+0, Y @+4, Z @+8) to read from after byte flag is set to 1.
         - Same for camera rotation angle, but byte flag is offset by +1.
         
      - Includes a function ("generateMemoryRecords") to generate "Teleport to: ??" scripts,
         that are added to a "Saves" grouped section (memory record).
         Note: Memory records are looked up using the description, so duplicates aren't made,
            but if the description is changed then a new one will be generated.

      - I got these, Cheese Buggers Man!
         
      - Includes a "Helpers" and "Debug" sections in the default memory records that are generated.

         - A generate memory records script is included in the helpers section.
         
         - A rename save section is included in the helpers section.
            Note: Only renames the save; new "teleport to" scripts will need to be generated,
               and old "teleport to" scripts removed (manually).
         
         - A delete save script is included in the helpers section.
            - the script first requests a save (save name) to be deleted
               and is only deleted the second time it is enabled.
      
      - Delete function first requests a save to be deleted and is only deleted on second call,
         unless force equates to true.


   Getting Started:

      Symbols: Must be set:
         "ptrI2CETeleporterCoord" (with a base address),
            i.e.: "mov [ptrI2CETeleporterCoord],***" (ASM)
         or I2CETeleporter.CoordPointerSymbol (with a symbol/address string).
            i.e.: "I2CETeleporter.CoordPointerSymbol = 'ptrCoordHook'" (Lua)

      Symbols: Optionally set:
         "ptrI2CETeleporterCamRotationAngle" (with a base address),
         or "I2CETeleporter.CamRotationAnglePointerSymbol" (with a symbol/address string).

         "ptrI2CETeleporterPlayerRotationAngle" (with a base address),
         or "I2CETeleporter.PlayerRotationAnglePointerSymbol" (with a symbol/address string).
            Note: Only "Yaw" is set using camera yaw.

         "ptrI2CETeleporterWayPoint" (with a base address),
         or "I2CETeleporter.WayPointPointerSymbol" (with a symbol/address string).

      Offsets: Optionally set:
         "I2CETeleporter.Xoffset" (default: 0)
         "I2CETeleporter.Yoffset" (default: 4)
         "I2CETeleporter.Zoffset" (default: 8)

         "I2CETeleporter.WayXoffset" (default: 0)
         "I2CETeleporter.WayYoffset" (default: 4)
         "I2CETeleporter.WayZoffset" (default: 8)

         "I2CETeleporter.PlayerYawOffset" (default: 0)
         "I2CETeleporter.CamPitchOffset" (default: 0)
         "I2CETeleporter.CamYawOffset" (default: 4)

      Adjusters: Optionally set:
         "I2CETeleporter.XaddOnWrite" (default: 0)
         "I2CETeleporter.YaddOnWrite" (default: 0)
         "I2CETeleporter.ZaddOnWrite" (default: 0)

         "I2CETeleporter.XaddOnRead" (default: 0)
         "I2CETeleporter.YaddOnRead" (default: 0)
         "I2CETeleporter.ZaddOnRead" (default: 0)

         "I2CETeleporter.WayXaddOnRead" (default: 0)
         "I2CETeleporter.WayYaddOnRead" (default: 0)
         "I2CETeleporter.WayZaddOnRead" (default: 0)


      Examples:
         Starter Example:
            Code (Lua):
               dofile([[E:\Where\Ever\The\Module\Is\I2CETeleporter.Lua]])
               I2CETeleporter.CoordPointerSymbol = '"Game.exe"+123ABC0'
               I2CETeleporter.Xoffset = 0x60
               I2CETeleporter.Yoffset = 0x64
               I2CETeleporter.Zoffset = 0x68
               ---- Comment out or remove after starter memory records are generated.
               I2CETeleporter.generateMemoryRecords()
               ---- END: Comment out or remove after starter memory records are generated.

         Example:
            Code (Lua):
               require 'I2CETeleporter'
               I2CETeleporter.AutoAllocate = false
               I2CETeleporter.CoordPointerSymbol = '[["Game.exe"+123ABC0]+10]+5D0'
         Example:
            Code (Lua):
               require 'I2CETeleporter'
               I2CETeleporter.AutoAllocate = false
               I2CETeleporter.CoordPointerSymbol = 'ptrCoordHook'

         Example:
            Code (Lua):
               require 'I2CETeleporter'
               I2CETeleporter.Xoffset = 0x60
               I2CETeleporter.Yoffset = 0x64
               I2CETeleporter.Zoffset = 0x68
            Code (ASM):
               ...
               mov [ptrI2CETeleporterCoord],rax
               ...
         Example:
            Code (Lua):
               require 'I2CETeleporter'
            Code (ASM):
               ...
               mov [ptrI2CETeleporterCoord],rax
               add [ptrI2CETeleporterCoord],60
               ...


      Call to generate starter memory records:
         
         "I2CETeleporter.generateMemoryRecords()"

         Note: Form then on you can use the "Generate Memory Records" in the "Helpers" section.



   Settings:
      Symbol Names:
         FlagPointerSymbol (default: 'flgI2CETeleporter')
         CoordPointerSymbol (default: 'ptrI2CETeleporterCoord')
         PlayerRotationAnglePointerSymbol (default: 'ptrI2CETeleporterPlayerRotationAngle')
         CamRotationAnglePointerSymbol (default: 'ptrI2CETeleporterCamRotationAngle')
         WayPointPointerSymbol (default: 'ptrI2CETeleporterWayPoint')
         SaveNameStringSymbol (default: 'strI2CETeleporterSaveName')
         NewSaveNameStringSymbol (default: 'strI2CETeleporterSaveNameNew')
      MainMemoryRecordDescription (default: '_[  I2CETeleporter  ]_')
      SavesMemoryRecordDescription (default: '_[  Saves  ]_' [translated])
      AutoLoad (default: true)
      AutoAllocate (default: true)
      AutoLoadAndSave (default: true)
      SavesFileName (default: 'I2CETeleporterSaves.txt')
      SavesFileAsTableFile (default: false)
      OverRideSaveMemoryRecords (default: false)
      AutoSaveSavesFile (default: true)
      WarnIfSavesTableFileNotFound (default: false)
      WriteToCoordsTimerInterval (default: 100)
      WriteToCoordsTimerTicksMax (default: 100)
      SetCamRotationAngleTimerInterval (default: 100)
      SetCamRotationAngleTimerTicksMax (default: 100)
      Xoffset (default: 0)
      Yoffset (default: 4)
      Zoffset (default: 8)
      XaddOnWrite (default: 0)
      YaddOnWrite (default: 0)
      ZaddOnWrite (default: 0)
      XaddOnRead (default: 0)
      YaddOnRead (default: 0)
      ZaddOnRead (default: 0)
      WayXoffset (default: 0)
      WayYoffset (default: 4)
      WayZoffset (default: 8)
      WayXaddOnRead (default: 0)
      WayYaddOnRead (default: 0)
      WayZaddOnRead (default: 0)
      PlayerYawOffset (default: 0)
      CamPitchOffset (default: 0)
      CamYawOffset (default: 4)
      SaveMemoryRecord (table)
      MainMemoryRecords (table)

   Symbol Addresses:
      FlagPointerAddress
      CoordPointerAddress
      PlayerRotationAnglePointerAddress
      CamRotationAnglePointerAddress
      WayPointPointerAddress
      SaveNameStringAddress
      NewSaveNameStringAddress

   Template Keys:
         - Keys to be used in script templates and memory record strings.
            format:
               ${TemplateKey}

      SaveName
      FlagPointerSymbol
      FlagPointerAddress
      CoordPointerSymbol
      CoordPointerAddress
      PlayerRotationAnglePointerSymbol
      PlayerRotationAnglePointerAddress
      CamRotationAnglePointerSymbol
      CamRotationAnglePointerAddress
      WayPointPointerSymbol
      WayPointPointerAddress
      SaveNameStringSymbol
      SaveNameStringAddress
      NewSaveNameStringSymbol
      NewSaveNameStringAddress
      Xoffset
      Yoffset
      Zoffset
      WayXoffset
      WayYoffset
      WayZoffset
      PlayerYawOffset
      CamPitchOffset
      CamYawOffset
      X
      Y
      Z
      WayX
      WayY
      WayZ
      CamPitch
      CamYaw


]====================================================================================================================]--




Instructions: I2 CE Teleporter



These are mostly just some steps to fallow, for those that are unsure where to go with this. But I have tried to set this up to work in a lot of ways so this isn't a complete list of ways to work with the module.

Basic Instructions - Auto Allocate Enabled (default):
This was always meant to be the lazy way, but I comes with it's own issues.

  1. Start a game that you have the player coordinates for, meaning you can freeze them and lock the player in place.
  2. Attach to the game, and add this to at the top of the cheat table Lua script (Ctrl+Alt+L).
    Code:
    require 'I2CETeleporter'

  3. Now save the cheat table, then close Cheat Engine.
  4. Place the "I2CETeleporter.lua" in the same directory as the cheat table you just created.
  5. Now reopen the cheat table you just saved.
  6. Run the cheat table Lua script, and attach to the game.
  7. In an Auto Assembler injection script where you get the player coordinates.
    Add some thing like this:
    Code:
    ...
    //// Some where in the injection
    mov [ptrI2CETeleporterCoord],*** //// Change *** to the registry of the coordinates base.
    add [ptrI2CETeleporterCoord],0000 //// Change 0000 to the offset of the first aligned coordinate (i.e.: X coord. offset).
    ...

  8. Enable the injection script and let it run to set the coordinate base.
  9. Now open the Lua Engine window (Ctrl+m, then Ctrl+L), and put this in the input section and hit execute.
    Code:
    I2CETeleporter.generateMemoryRecords()

  10. You should have had some memory records added to the table, so just close the Lua engine window.
  11. Expand (enable) the "_[ I2CETeleporter ]_" section.
  12. You should see a default save name of "Start Location". If you see "??" the memory was not allocated, try saving the tale and closing/reopening it and executed the Lua script manually (Ctrl+Alt+L, then hit the "Execute" button).
  13. Go to some place you want to save.
  14. Enter a unique name in the "Save Name" address (memory record).
  15. Enable the "Save Location" script, to save the current location with the current save name. You should see a "I2CETeleporterSaves.txt" file created in the same directory as the cheat table.
  16. Expand the "_[ Helpers - I2CETeleporter ]_" section, and enable the "Generate Memory Records" script.
  17. Expand the "_[ Saves ]_" section; and you should see a new "Teleport to: ****" script, use this to easally teleport to this save.
  18. Save table and create more saves, wreak havoc and what not.



Basic Instructions - Auto Allocate Disabled:
This was always meant to be the way to use this module. This is the recommended way to get started.

  1. Start a game that you have the player coordinates for, meaning you can freeze them and lock the player in place.
  2. Attach to the game, and add this to at the top of the cheat table Lua script (Ctrl+Alt+L).
    Code:
    require 'I2CETeleporter'
    I2CETeleporter.AutoAllocate = false

  3. Now save the cheat table, then close Cheat Engine.
  4. Place the "I2CETeleporter.lua" in the same directory as the cheat table you just created.
  5. Now reopen the cheat table you just saved.
  6. Run the cheat table Lua script, and attach to the game.
  7. In an Auto Assembler injection script where you get the player coordinates.
    Add some thing like this:
    Code:
    ...
    [Enable]
    ...
    alloc(ptrCoord, 8)
    registerSymbol(ptrCoord)
    ...
    //// Some where in the injection
    mov [ptrCoord],*** //// Change *** to the registry of the coordinates base.
    ...
    {$lua}
    I2CETeleporter.CoordPointerSymbol = 'ptrCoord'
    I2CETeleporter.Xoffset = 0x?? ---- Change ?? to the offset of the X coordinate.
    I2CETeleporter.Yoffset = 0x?? ---- Change ?? to the offset of the Y coordinate.
    I2CETeleporter.Zoffset = 0x?? ---- Change ?? to the offset of the Z coordinate.
    {$asm}
    [Disable]
    ...
    unregisterSymbol(ptrCoord)
    dealloc(ptrCoord)
    ...

  8. Enable the injection script and let it run to set the coordinate base and offsets.
  9. Now open the Lua Engine window (Ctrl+m, then Ctrl+L), and put this in the input section and hit execute.
    Code:
    I2CETeleporter.generateMemoryRecords()

  10. You should have had some memory records added to the table, so just close the Lua engine window.
  11. Expand (enable) the "_[ I2CETeleporter ]_" section.
  12. You should see a default save name of "Start Location". If you see "??" the memory was not allocated, try saving the tale and closing/reopening it and executed the Lua script manually (Ctrl+Alt+L, then hit the "Execute" button).
  13. Go to some place you want to save.
  14. Enter a unique name in the "Save Name" address (memory record).
  15. Enable the "Save Location" script, to save the current location with the current save name. You should see a "I2CETeleporterSaves.txt" file created in the same directory as the cheat table.
  16. Expand the "_[ Helpers - I2CETeleporter ]_" section, and enable the "Generate Memory Records" script.
  17. Expand the "_[ Saves ]_" section; and you should see a new "Teleport to: ****" script, use this to easally teleport to this save.
  18. Save table and create more saves, wreak havoc and what not.


Working Examples:
Metal Gear Solid 5 Phantom Pain Cheat Table
Dying Light Cheat Table
Dead Island DE Cheat Table

Related Topics
http://forum.cheatengine.org/viewtopic.php?t=607087



I2CETeleporter.lua
 Description:
I2 CE Teleporter v: 1.0.9

Download
 Filename:  I2CETeleporter.lua
 Filesize:  60.47 KB
 Downloaded:  1141 Time(s)


_________________


Last edited by TheyCallMeTim13 on Sun Dec 19, 2021 2:14 am; edited 9 times in total
Back to top
View user's profile Send private message Visit poster's website
XaneXXXX
Expert Cheater
Reputation: 0

Joined: 29 Nov 2012
Posts: 212

PostPosted: Sat Mar 10, 2018 3:45 pm    Post subject: Reply with quote

Really awesome work! Congratz on the release! Wink

This is not really a big deal since i don't really use the "save" function but the teleport to waypoint. But i tried to delete a save and it didn't seem to work. I might have done it wrong tho. I type in the name of the save i want to delete. Then i click on the "delete save" two times.In notepad++ it does something with the txt document since it says that it needs to reload. But the save is still in the document + in the CE table. Any idea?
Back to top
View user's profile Send private message
TheyCallMeTim13
Wiki Contributor
Reputation: 50

Joined: 24 Feb 2017
Posts: 976
Location: Pluto

PostPosted: Sat Mar 10, 2018 4:11 pm    Post subject: Reply with quote

XaneXXXX wrote:
...i tried to delete a save and it didn't seem to work....


It was a bug in the script. I posted an update with a fix.

_________________
Back to top
View user's profile Send private message Visit poster's website
XaneXXXX
Expert Cheater
Reputation: 0

Joined: 29 Nov 2012
Posts: 212

PostPosted: Sat Mar 10, 2018 4:19 pm    Post subject: Reply with quote

TheyCallMeTim13 wrote:
XaneXXXX wrote:
...i tried to delete a save and it didn't seem to work....


It was a bug in the script. I posted an update with a fix.


Great! Cheers Smile
Back to top
View user's profile Send private message
XaneXXXX
Expert Cheater
Reputation: 0

Joined: 29 Nov 2012
Posts: 212

PostPosted: Sun Mar 11, 2018 12:44 pm    Post subject: Reply with quote

Hello again! I looked through the lua code and realized that there is a lot of code there.. So I'm curious, how long have you been working on this? And what made you to think of this? Smile
Back to top
View user's profile Send private message
TheyCallMeTim13
Wiki Contributor
Reputation: 50

Joined: 24 Feb 2017
Posts: 976
Location: Pluto

PostPosted: Sun Mar 11, 2018 1:27 pm    Post subject: Reply with quote

XaneXXXX wrote:
Hello again! I looked through the lua code and realized that there is a lot of code there.. So I'm curious, how long have you been working on this? And what made you to think of this? Smile


I think for a about 4 or 5 weeks. Mostly I just like module based code, DRY code and what not. And I always seem to (try to) add a teleporter to my tables. I actually did some thing similar with pure ASM with save names; but no save file or helpers, and it's a mess and I did it just to see if I could.

EDIT:
That and manually saving coordinates and adding "Teleport to: ??" scripts, kinda sucked and changes where even worse. So I never actually had very many coordinates saved for my teleporters just what I needed to test, but with this I find it a lot easier and so I actually save coordinates.

_________________
Back to top
View user's profile Send private message Visit poster's website
XaneXXXX
Expert Cheater
Reputation: 0

Joined: 29 Nov 2012
Posts: 212

PostPosted: Wed Mar 14, 2018 8:06 am    Post subject: Reply with quote

TheyCallMeTim13 wrote:
XaneXXXX wrote:
Hello again! I looked through the lua code and realized that there is a lot of code there.. So I'm curious, how long have you been working on this? And what made you to think of this? Smile


I think for a about 4 or 5 weeks. Mostly I just like module based code, DRY code and what not. And I always seem to (try to) add a teleporter to my tables. I actually did some thing similar with pure ASM with save names; but no save file or helpers, and it's a mess and I did it just to see if I could.

EDIT:
That and manually saving coordinates and adding "Teleport to: ??" scripts, kinda sucked and changes where even worse. So I never actually had very many coordinates saved for my teleporters just what I needed to test, but with this I find it a lot easier and so I actually save coordinates.


Sorry for the late answer. I see, yeah before this i just found the coordinates, went to the important locations and saved them to a hotkey haha.

I was wondering, If i wanted to make a trainer out of this, How would i go about it? Do i need to include some files etc and if so how? Thanks again!
Back to top
View user's profile Send private message
TheyCallMeTim13
Wiki Contributor
Reputation: 50

Joined: 24 Feb 2017
Posts: 976
Location: Pluto

PostPosted: Wed Mar 14, 2018 11:24 am    Post subject: Reply with quote

XaneXXXX wrote:
...I was wondering, If i wanted to make a trainer out of this, How would i go about it? Do i need to include some files etc and if so how? Thanks again!



Really just the teleporter module it self.

But to be able to use it as a table file, I use this code:
Code:
--------
-------- CE Table Require
--------
local TableLuaFilesDirectory = 'luaFiles'
function CETrequire(moduleStr)
   if moduleStr ~= nil then
      local localTableLuaFilePath = moduleStr
      if TableLuaFilesDirectory ~= nil or TableLuaFilesDirectory ~= '' then
         local sep = package.config:sub(1,1)
         localTableLuaFilePath = TableLuaFilesDirectory .. sep .. moduleStr
      end
      local f, err = io.open(localTableLuaFilePath .. '.lua')
      if f and not err then
         f:close()
         return require(localTableLuaFilePath)
      else
         local tableFile = findTableFile(moduleStr .. '.lua')
         if tableFile == nil then
            return nil
         end
         local stream = tableFile.getData()
         local fileStr = nil
         local bytes = stream.read(stream.Size)
         for i = 1, #bytes do
            if fileStr == nil then
               fileStr = ''
            end
            fileStr = fileStr .. string.char(bytes[i])
         end
         if fileStr then
            return assert(loadstring(fileStr))()
         end
      end
   end
   return nil
end
CETrequire('I2CETeleporter')
-- CETrequire('I2CETableCEA')
-- CETrequire('SomeLuaModuleStoredAsTableFile')
-- SomeLuaModuleStoredAsTableFile.printTest() -- Just some examples.

This is a template from my Lua templates extension.
Just put this in the table Lua code. And this can even be trimmed to only look for table files, looking for local files first is for updating/debugging.

Then you can use the "Save name" string, and call "I2CETeleporter.teleport()", or you can pass a save name "I2CETeleporter.teleport('Some saved location')" (same with "I2CETeleporter.save()"). And then there is just write to coordinates (required: "I2CETeleporter.writeToCoords(x, y, z)", optional: "I2CETeleporter.writeToCoords(x, y, z, cP, cY)"). And don't forget about "I2CETeleporter.teleportBack()", which is updated when using either teleport or write to coordinates.


Now I'm thinking about some code using the save name to spit out some generic button functions (may be with full buttons) to a file, might be handy. May be some way to pick buttons or what ever else. I really don't make trainers so I'm not real sure what would be handy and what won't.

How would you set this up on the UI? Buttons, or a list, or some kinda combo box may be?

_________________
Back to top
View user's profile Send private message Visit poster's website
Sefy
Newbie cheater
Reputation: 0

Joined: 27 Dec 2012
Posts: 11

PostPosted: Sun Mar 18, 2018 6:52 pm    Post subject: Reply with quote

For some reason it only allocates the memory properly if it's set to auto allocate. What do you need me to provide?
Back to top
View user's profile Send private message
TheyCallMeTim13
Wiki Contributor
Reputation: 50

Joined: 24 Feb 2017
Posts: 976
Location: Pluto

PostPosted: Mon Mar 19, 2018 1:09 am    Post subject: Reply with quote

Module Updated:
Code:
1.0.8:
   * Fixed save name and new save name memory not getting allocated if auto allocate was false.
1.0.9:
   * Fixed error with "getAddress" needing to be "getAddressSafe".

_________________
Back to top
View user's profile Send private message Visit poster's website
Sefy
Newbie cheater
Reputation: 0

Joined: 27 Dec 2012
Posts: 11

PostPosted: Mon Mar 19, 2018 11:47 am    Post subject: Reply with quote

TheyCallMeTim13 wrote:
Module Updated:
Code:
1.0.8:
   * Fixed save name and new save name memory not getting allocated if auto allocate was false.
1.0.9:
   * Fixed error with "getAddress" needing to be "getAddressSafe".


Hey, thanks chief! Works now!
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine Extensions All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
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


Powered by phpBB © 2001, 2005 phpBB Group

CE Wiki   IRC (#CEF)   Twitter
Third party websites