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 


Please help with candy crush cheat
Goto page Previous  1, 2, 3  Next
 
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine
View previous topic :: View next topic  
Author Message
mgr.inz.Player
I post too much
Reputation: 218

Joined: 07 Nov 2008
Posts: 4438
Location: W kraju nad Wisla. UTC+01:00

PostPosted: Sun Apr 14, 2013 4:19 pm    Post subject: Reply with quote

Flash hacker wrote:
@cons:
It cannot gather processes while trainer working?


This is how standalonephase2.dat works by default. It extracts needed files, then it launch final EXE, renamed CheatEngine EXE.

Then it waits ( WaitForSingleObject ). After trainer is closed, standalonephase2.dat removes all files.


My code creates txt file with names, pids and ppids, just after standalonephase2.dat extract needed files.

_________________
Back to top
View user's profile Send private message MSN Messenger
Rectangle
Advanced Cheater
Reputation: 1

Joined: 23 Feb 2013
Posts: 73

PostPosted: Sun Apr 14, 2013 4:26 pm    Post subject: Reply with quote

Flash hacker wrote:
No no I meant,
Assign them both after Scripts entries.
Enable Both of them (Freeze them, or press on Active boxes).
And whenever you want to disable (turn off the cheat), just unfreeze/uncheck the Active boxes.

Well the first one works, freezes the GUI moves just fine.
But perhaps I'm still misunderstanding how to get the second one to work.

Here's what I did:
  • Open cheat engine, and attach to candy crush (in firefox).
  • Click Memory View -> Tools -> Auto Assemble
  • Copy/paste your 1st AA script, then do File -> Assign to current cheat table
  • Copy/paste your 2nd AA script, then do File -> Assign to current cheat table
  • Enter any level in the game
  • (Optional, just for debugging) Find and add both GUI & non-GUI moves addresses to the table, via a few memscan operations
  • Enable the 1st script
  • Enable the 2nd script
  • Perform any number of moves in the game

I did notice that the AOB patterns you have are quite different from mine, and after using "Find out what writes to this address" on both the GUI and non-GUI entries, none of the provided addresses hold those patterns you've provided.
Strange.
Back to top
View user's profile Send private message
DaSpamer
Grandmaster Cheater Supreme
Reputation: 52

Joined: 13 Sep 2011
Posts: 1578

PostPosted: Sun Apr 14, 2013 4:26 pm    Post subject: Reply with quote

How about this suggestion?
So we need to get all chrome.exe processes ID.
Then do for each open process ID this:
Heres a suggestion that will help ALOT!
So we need to get all chrome.exe processes ID.
Then do for each open process ID this:
Code:

--There 2 Flash plugins for chrome.
--1 is pepper Flash which is the dafault and edited I think
--2 is the original adobe .swf if Im not mistaken...
--If Im wrong or not its don't matter :P
errorOnLookupFailure(false)
reinitializeSymbolhandler()
err1=getAddress("pepflashplayer.dll")==0 --Gets the address of 'C:\Program Files (x86)\Google\Chrome\Application\26.0.1410.64\PepperFlash\pepflashplayer.dll'.
err2=getAddress("NPSWF32_11_6_602_180.dll")==0 --Gets the address of 'C:\Windows\SysWOW64\Macromed\Flash\NPSWF32_11_6_602_180.dll'.
if err1==true and err2==true then -- If both .dll location above are true than its not the right chrome.exe process
print("Not the right chrome.exe process!")
--Continue to the next process...
else
print("It is the right chrome.exe process!")
--Enable hack...
end

Until we find the right process!
This will save us lots of time.

But obtaining PID is something I ain't smart enough for Razz.
Hope I helped somehow Very Happy.

Rectangle wrote:
Flash hacker wrote:
No no I meant,
Assign them both after Scripts entries.
Enable Both of them (Freeze them, or press on Active boxes).
And whenever you want to disable (turn off the cheat), just unfreeze/uncheck the Active boxes.

Well the first one works, freezes the GUI moves just fine.
But perhaps I'm still misunderstanding how to get the second one to work.

Here's what I did:
  • Open cheat engine, and attach to candy crush (in firefox).
  • Click Memory View -> Tools -> Auto Assemble
  • Copy/paste your 1st AA script, then do File -> Assign to current cheat table
  • Copy/paste your 2nd AA script, then do File -> Assign to current cheat table
  • Enter any level in the game
  • (Optional, just for debugging) Find and add both GUI & non-GUI moves addresses to the table, via a few memscan operations
  • Enable the 1st script
  • Enable the 2nd script
  • Perform any number of moves in the game

I did notice that the AOB patterns you have are quite different from mine, and after using "Find out what writes to this address" on both the GUI and non-GUI entries, none of the provided addresses hold those patterns you've provided.
Strange.

Used 'Find out what access this address(s)', for 2 reason, it auto updates the values in the game and not when you consume an move (thread).
And its can be enabled instantly after starting an match, unlike "Find out what writes to this address" which you can find the AoB only after consuming 1 movement.

--Edit
Edited the Chrome thing.
I made a mistake Razz.
wrote
Code:
npswf32.dll
instead of
Code:
NPSWF32_11_6_602_180.dll


Alliteratively I'd recommend using this instead:
Code:
--There 2 Flash plugins for chrome.
--1 is pepper Flash which is the dafault and edited I think
--2 is the original adobe .swf if Im not mistaken...
--If Im wrong or not its don't matter :P
errorOnLookupFailure(false)
reinitializeSymbolhandler()
err1=getAddress("pepflashplayer.dll")==0 --Gets the address of 'C:\Program Files (x86)\Google\Chrome\Application\26.0.1410.64\PepperFlash\pepflashplayer.dll'.
err2=getAddress("AdobeCPGetAPI")==0 --Gets the address of 'C:\Windows\SysWOW64\Macromed\Flash\NPSWF32_11_6_602_180.dll'.
if err1==true and err2==true then -- If both .dll location above are true than its not the right chrome.exe process
print("Not the right chrome.exe process!")
--Continue to the next process...
else
print("It is the right chrome.exe process!")
--Enable hack...
end


Because this:
Code:
NPSWF32_11_6_602_180.dll

Will be changed when adobe updates their Flash Player it can become for example this:
Code:
NPSWF32_11_6_602_246.dll

_________________
HEY Hitler
Do you get lazy when making trainers?
Well no more!
My CETrainer will generate it for you in seconds, so you won't get lazy! Very Happy

http://forum.cheatengine.org/viewtopic.php?t=564919


Last edited by DaSpamer on Sun Apr 14, 2013 4:37 pm; edited 1 time in total
Back to top
View user's profile Send private message
mgr.inz.Player
I post too much
Reputation: 218

Joined: 07 Nov 2008
Posts: 4438
Location: W kraju nad Wisla. UTC+01:00

PostPosted: Sun Apr 14, 2013 4:36 pm    Post subject: Reply with quote

I can try make Lua magic. But without PPIDs.

Give me one hour Razz

_________________
Back to top
View user's profile Send private message MSN Messenger
DaSpamer
Grandmaster Cheater Supreme
Reputation: 52

Joined: 13 Sep 2011
Posts: 1578

PostPosted: Sun Apr 14, 2013 4:38 pm    Post subject: Reply with quote

mgr.inz.Player wrote:
I can try make Lua magic. But without PPIDs.

Give me one hour Razz

Use this instead*
Code:
--There 2 Flash plugins for chrome.
--1 is pepper Flash which is the dafault and edited I think
--2 is the original adobe .swf if Im not mistaken...
--If Im wrong or not its don't matter :P
errorOnLookupFailure(false)
reinitializeSymbolhandler()
err1=getAddress("pepflashplayer.dll")==0 --Gets the address of 'C:\Program Files (x86)\Google\Chrome\Application\26.0.1410.64\PepperFlash\pepflashplayer.dll'.
err2=getAddress("AdobeCPGetAPI")==0 --Gets the address of 'C:\Windows\SysWOW64\Macromed\Flash\NPSWF32_11_6_602_180.dll'.
if err1==true and err2==true then -- If both .dll location above are true than its not the right chrome.exe process
print("Not the right chrome.exe process!")
--Continue to the next process...
else
print("It is the right chrome.exe process!")
--Enable hack...
end


And you can make anything, thats why I always coming to you Very Happy
You're very inspiring.

_________________
HEY Hitler
Do you get lazy when making trainers?
Well no more!
My CETrainer will generate it for you in seconds, so you won't get lazy! Very Happy

http://forum.cheatengine.org/viewtopic.php?t=564919
Back to top
View user's profile Send private message
Rectangle
Advanced Cheater
Reputation: 1

Joined: 23 Feb 2013
Posts: 73

PostPosted: Sun Apr 14, 2013 4:41 pm    Post subject: Reply with quote

Flash hacker wrote:
How about this suggestion?
Code:
...
err1=getAddress("pepflashplayer.dll")==0 --Gets the address of 'C:\Program Files (x86)\Google\Chrome\Application\26.0.1410.64\PepperFlash\pepflashplayer.dll'.
...

The problem with this is it will have a limited working lifespan.
This is because not everyone will have the same version of Adobe Flash, and at any time Adobe could upgrade their flash players to a new version which may have a different name.
When I was testing against chrome, I found 2 things to be true (at least most of the time, if not all the time) on my machine:
  • The most previously added chrome.exe process is the one being used by the flash plugin
  • The 2nd highest peak working set is the one being used by the flash plugin

So in theory, you could modify PWS to return the 2nd highest, or you could simply attatch to the most recent chrome.exe process.
But another possible, and perhaps more reliable option would be what you suggested in another thread, via using a hotkey and getForegroundProcess().


Last edited by Rectangle on Sun Apr 14, 2013 4:45 pm; edited 3 times in total
Back to top
View user's profile Send private message
mgr.inz.Player
I post too much
Reputation: 218

Joined: 07 Nov 2008
Posts: 4438
Location: W kraju nad Wisla. UTC+01:00

PostPosted: Sun Apr 14, 2013 4:41 pm    Post subject: Reply with quote

Flash hacker wrote:
mgr.inz.Player wrote:
I can try make Lua magic. But without PPIDs.

Give me one hour Razz

Use this instead*
Code:
--There 2 Flash plugins for chrome.
--1 is pepper Flash which is the dafault and edited I think
--2 is the original adobe .swf if Im not mistaken...
--If Im wrong or not its don't matter :P
errorOnLookupFailure(false)
reinitializeSymbolhandler()
err1=getAddress("pepflashplayer.dll")==0 --Gets the address of 'C:Program Files (x86)GoogleChromeApplication.0.1410.64PepperFlashpepflashplayer.dll'.
err2=getAddress("AdobeCPGetAPI")==0 --Gets the address of 'C:WindowsSysWOW64MacromedFlashNPSWF32_11_6_602_180.dll'.
if err1==true and err2==true then -- If both .dll location above are true than its not the right chrome.exe process
print("Not the right chrome.exe process!")
--Continue to the next process...
else
print("It is the right chrome.exe process!")
--Enable hack...
end


And you can make anything, thats why I always coming to you Very Happy
You're very inspiring.


I actually has more universal method on my mind (picking automatically another process).
We will see.

_________________
Back to top
View user's profile Send private message MSN Messenger
DaSpamer
Grandmaster Cheater Supreme
Reputation: 52

Joined: 13 Sep 2011
Posts: 1578

PostPosted: Sun Apr 14, 2013 4:45 pm    Post subject: Reply with quote

Rectangle wrote:
Flash hacker wrote:
How about this suggestion?
Code:
...
err1=getAddress("pepflashplayer.dll")==0 --Gets the address of 'C:\Program Files (x86)\Google\Chrome\Application\26.0.1410.64\PepperFlash\pepflashplayer.dll'.
...

The problem with this is it will have a limited working lifespan.
This is because not everyone will have the same version of Adobe Flash, and at any time Adobe could upgrade their flash players to a new version which may have a different name.
When I was testing against chrome, I found 2 things to be true (at least most of the time, if not all the time) on my machine:
  • The most previously added chrome.exe process is the one being used by the flash plugin
  • The 2nd highest peak working set is the one being used by the flash plugin

So in theory, you could modify PWS to return the 2nd highest, or you could simply attatch to the most recent chrome.exe process.
But another possible option would be what you suggested in another thread, via using a hotkey and getForegroundProcess().

Depends on the game*
3D will be 1st.
And the getAddress... will always work, google never rename it, atleast for now, its been that way already 6 months I think.
when FlashPlayer gets update you usually see differences in name if FlashPlayer process is named this:
Code:
NPSWF32_11_6_602_180.dll

_11_6_602_180 - represents version and that why its always good to avoid it.
(also why you're writing FlashPlayerPlugin, and not its fully name, but when you get address you must to write the full address string).
Meanwhile
Code:
pepflashplayer.dll
don't represents the version, nor
Code:
AdobeCPGetAPI

_________________
HEY Hitler
Do you get lazy when making trainers?
Well no more!
My CETrainer will generate it for you in seconds, so you won't get lazy! Very Happy

http://forum.cheatengine.org/viewtopic.php?t=564919
Back to top
View user's profile Send private message
Rectangle
Advanced Cheater
Reputation: 1

Joined: 23 Feb 2013
Posts: 73

PostPosted: Sun Apr 14, 2013 4:51 pm    Post subject: Reply with quote

Flash hacker wrote:
Meanwhile
Code:
pepflashplayer.dll
don't represents the version, nor
Code:
AdobeCPGetAPI

I believe "Pepper" is the code name for the current version of Adobe Flash.
Much like Apple's OSX was named Tiger, then Leopard, Snow Leopard and finally it's current version of Lion.
The numbers just represent a more accurate version/revision system.
Adobe can and eventually will change this, though it might not be too often.
Back to top
View user's profile Send private message
DaSpamer
Grandmaster Cheater Supreme
Reputation: 52

Joined: 13 Sep 2011
Posts: 1578

PostPosted: Sun Apr 14, 2013 4:55 pm    Post subject: Reply with quote

Rectangle wrote:
Flash hacker wrote:
Meanwhile
Code:
pepflashplayer.dll
don't represents the version, nor
Code:
AdobeCPGetAPI

"Pepper" is the code name for the current version of Adobe Flash.
Much like Apple's OSX was named Tiger, then Leopard, Snow Leopard and finally it's current version of Lion.
Adobe can and eventually will change this, though it might not be too often.

http://blog.chromium.org/2012/08/the-road-to-safer-more-stable-and.html
Google Chrome has worked on it pretty long time.
Read it.
And this
https://productforums.google.com/d/msg/chrome/paLqB6HU1lk/w9_2gUE4_PUJ
He has defined the location and file name, name don't change folder (version is it defined in the url does change.)
Don't worry Smile

And if you want to compare look Razz:

Anyway,
I gtg to sleep, tomorrow is a long day.. Smile
Thanks for chat guys, talk to you tomorrow.
Quote:
C:\...\Google\Chrome\Application\26.0.1410.64\PepperFlash\pepflashplayer.dll
C:\...\Google\Chrome\Application\21.0.1180.60\PepperFlash\pepflashplayer.dll

_________________
HEY Hitler
Do you get lazy when making trainers?
Well no more!
My CETrainer will generate it for you in seconds, so you won't get lazy! Very Happy

http://forum.cheatengine.org/viewtopic.php?t=564919
Back to top
View user's profile Send private message
mgr.inz.Player
I post too much
Reputation: 218

Joined: 07 Nov 2008
Posts: 4438
Location: W kraju nad Wisla. UTC+01:00

PostPosted: Sun Apr 14, 2013 5:07 pm    Post subject: This post has 1 review(s) Reply with quote

OK. First release of "pickRightProcess" script. I am aware that code needs to be improved.

Code:

-- ############ Adjust those: ##################################################

process = "chrome.exe" -- you can set this variable by using combobox,
                       -- editbox or soemthing

function enableCheatsGuiWhatEver()
  -- initialize UI (or reinitialize UI)
  -- or whatever you want to do afer finding right process:
  -- enabling controls, cheats


end

-- this function returns true if good process, false if bad
function checkProcessMajor()
  reinitializeSymbolhandler()

  -- for Chrome flash

  if getAddress("pepflashplayer.dll")~=0 or
     getAddress("AdobeCPGetAPI")     ~=0 then
       return true
  end

  -- you can change above condition to something else.
  -- for example you can make aobscan check -  if pattern found -> return true


  return false -- return false by default
end

-- #############################################################################







-- do not thouch code below (unless you know what you are doing)
errorOnLookupFailure(false)

strings_add(getAutoAttachList(),process)

alreadycheckedPIDS={} -- checked processes pids

openNextProcTimer = createTimer(nil,false)
timer_setInterval(openNextProcTimer, 1000)
timer_onTimer(openNextProcTimer,
function (sender)
  local tempPIDtable = getPids()
  if #tempPIDtable == 0 then return end

  --OK, we have new PID
  timer_setEnabled(sender,false)
  openProcess(tempPIDtable[1])
end
)

function getPids()
  local SL=createStringlist()
        getProcesslist(SL)
  local tempPIDtable={}

  for i=0,strings_getCount(SL)-1 do
    local entry = strings_getString(SL,i)
    local processname = entry:sub(10,255)
    local PID = tonumber('0x'..entry:sub(1,8))
    if processname == process then
      if alreadycheckedPIDS[PID]~=true then
        table.insert(tempPIDtable,PID)
      end
    end
  end

  object_destroy(SL)
  return tempPIDtable
end


function checkProcess(sender)
  timer_setEnabled(sender,false)

  -- add currently opened process to ignore list
  -- (openNextProc will ignore those)
  alreadycheckedPIDS[getOpenedProcessID()]=true

  if checkProcessMajor() then
    -- OUR TARGET FOUND
    timer_setEnabled(openNextProcTimer,false)
    alreadycheckedPIDS={}
    enableCheatsGuiWhatEver()
  else
    timer_setEnabled(openNextProcTimer,true)
  end
end


function onOpenProcess()
  timer_setEnabled(checkProcessTimer,true)
end

checkProcessTimer = createTimer(nil,false)
timer_setInterval(checkProcessTimer, 1000)
timer_onTimer(checkProcessTimer, checkProcess)




Just launch above code. Open chrome.
CE will attach to first process, then next, then next, until it finds chrome process with loaded Flash plugin.


How I tested this script:
1. Launched CE, I executed script
2. Launched Chrome
3. I open first site without Flash, I open second site without Flash in another Tab. CE keeps attaching to other chrome.exe processes.
4. I repeat step 3 many times
5. I open site with Flash objects, I start game.
6. CE is attached to correct chrome.exe

If user close Tab with game, or close chrome completely. Then launch chrome again. Above script do not seek for chrome.exe anymore.

But you can force searching by enabling timer again. With this code:
Code:
timer_setEnabled(openNextProcTimer,true)

_________________
Back to top
View user's profile Send private message MSN Messenger
DaSpamer
Grandmaster Cheater Supreme
Reputation: 52

Joined: 13 Sep 2011
Posts: 1578

PostPosted: Sun Apr 14, 2013 11:02 pm    Post subject: Reply with quote

mgr.inz.Player wrote:
OK. First release of "pickRightProcess" script. I am aware that code needs to be improved.

Code:

-- ############ Adjust those: ##################################################

process = "chrome.exe" -- you can set this variable by using combobox,
                       -- editbox or soemthing

function enableCheatsGuiWhatEver()
  -- initialize UI (or reinitialize UI)
  -- or whatever you want to do afer finding right process:
  -- enabling controls, cheats


end

-- this function returns true if good process, false if bad
function checkProcessMajor()
  reinitializeSymbolhandler()

  -- for Chrome flash

  if getAddress("pepflashplayer.dll")~=0 or
     getAddress("AdobeCPGetAPI")     ~=0 then
       return true
  end

  -- you can change above condition to something else.
  -- for example you can make aobscan check -  if pattern found -> return true


  return false -- return false by default
end

-- #############################################################################







-- do not thouch code below (unless you know what you are doing)
errorOnLookupFailure(false)

strings_add(getAutoAttachList(),process)

alreadycheckedPIDS={} -- checked processes pids

openNextProcTimer = createTimer(nil,false)
timer_setInterval(openNextProcTimer, 1000)
timer_onTimer(openNextProcTimer,
function (sender)
  local tempPIDtable = getPids()
  if #tempPIDtable == 0 then return end

  --OK, we have new PID
  timer_setEnabled(sender,false)
  openProcess(tempPIDtable[1])
end
)

function getPids()
  local SL=createStringlist()
        getProcesslist(SL)
  local tempPIDtable={}

  for i=0,strings_getCount(SL)-1 do
    local entry = strings_getString(SL,i)
    local processname = entry:sub(10,255)
    local PID = tonumber('0x'..entry:sub(1,8))
    if processname == process then
      if alreadycheckedPIDS[PID]~=true then
        table.insert(tempPIDtable,PID)
      end
    end
  end

  object_destroy(SL)
  return tempPIDtable
end


function checkProcess(sender)
  timer_setEnabled(sender,false)

  -- add currently opened process to ignore list
  -- (openNextProc will ignore those)
  alreadycheckedPIDS[getOpenedProcessID()]=true

  if checkProcessMajor() then
    -- OUR TARGET FOUND
    timer_setEnabled(openNextProcTimer,false)
    alreadycheckedPIDS={}
    enableCheatsGuiWhatEver()
  else
    timer_setEnabled(openNextProcTimer,true)
  end
end


function onOpenProcess()
  timer_setEnabled(checkProcessTimer,true)
end

checkProcessTimer = createTimer(nil,false)
timer_setInterval(checkProcessTimer, 1000)
timer_onTimer(checkProcessTimer, checkProcess)




Just launch above code. Open chrome.
CE will attach to first process, then next, then next, until it finds chrome process with loaded Flash plugin.


How I tested this script:
1. Launched CE, I executed script
2. Launched Chrome
3. I open first site without Flash, I open second site without Flash in another Tab. CE keeps attaching to other chrome.exe processes.
4. I repeat step 3 many times
5. I open site with Flash objects, I start game.
6. CE is attached to correct chrome.exe

If user close Tab with game, or close chrome completely. Then launch chrome again. Above script do not seek for chrome.exe anymore.

But you can force searching by enabling timer again. With this code:
Code:
timer_setEnabled(openNextProcTimer,true)


Nice!
Works like expected mate!
Good job.

(Couldn't rep you, I have to wait a bit, when I will be able I will rep.)

_________________
HEY Hitler
Do you get lazy when making trainers?
Well no more!
My CETrainer will generate it for you in seconds, so you won't get lazy! Very Happy

http://forum.cheatengine.org/viewtopic.php?t=564919
Back to top
View user's profile Send private message
peace
How do I cheat?
Reputation: 0

Joined: 13 Apr 2013
Posts: 3
Location: United Kingdom

PostPosted: Mon Apr 15, 2013 3:52 am    Post subject: Reply with quote

Just wanted to let you know it worked by changing both of the addresses values. This is on google chrome btw.
Wow this thread has so much stuff that I dont understand. I hope I can understand some of it one day lol.
Back to top
View user's profile Send private message
mgr.inz.Player
I post too much
Reputation: 218

Joined: 07 Nov 2008
Posts: 4438
Location: W kraju nad Wisla. UTC+01:00

PostPosted: Mon Apr 15, 2013 3:56 am    Post subject: Reply with quote

@peace, godspeed! (truly)


@Flash hacker, looks like CE freeze when getProcesslist() is excessively used. At least for me under WinXP. Hmm. I have to investigate it, probably I will report this issue on official CE bug tracker.

_________________
Back to top
View user's profile Send private message MSN Messenger
DaSpamer
Grandmaster Cheater Supreme
Reputation: 52

Joined: 13 Sep 2011
Posts: 1578

PostPosted: Mon Apr 15, 2013 4:11 am    Post subject: Reply with quote

mgr.inz.Player wrote:
@peace, godspeed! (truly)


@Flash hacker, looks like CE freeze when getProcesslist() is excessively used. At least for me under WinXP. Hmm. I have to investigate it, probably I will report this issue on official CE bug tracker.

I didn't had any issues .-.
I just don't know how to re-use it after attaching successfully.

_________________
HEY Hitler
Do you get lazy when making trainers?
Well no more!
My CETrainer will generate it for you in seconds, so you won't get lazy! Very Happy

http://forum.cheatengine.org/viewtopic.php?t=564919
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 All times are GMT - 6 Hours
Goto page Previous  1, 2, 3  Next
Page 2 of 3

 
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