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 


CE Script Editor [Notepad +]
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine Extensions
View previous topic :: View next topic  
Author Message
DaSpamer
Grandmaster Cheater Supreme
Reputation: 44

Joined: 13 Sep 2011
Posts: 1560

PostPosted: Mon Dec 21, 2020 7:46 am    Post subject: CE Script Editor [Notepad +] This post has 6 review(s) Reply with quote

CE Lua Script and autoAssemble windows are great, but I felt that they lacked additional view,I sometime end up with dozen asm/lua scripts window open while testing.

Wrote a small script editor with Lua, AA, text syntax, allowing you also to change between the syntax at ease, write scripts and test them rather easily.

Can open up to *userdefined* views at once, can zoom in out, load scripts, save scripts, execute scripts.
I've also 'ripped' lua engine output memo and placed at bottom, one less window to worry about.
Also included toolbar (using TBitBtn that is not yet documented).
created close buttons & current tab highlight for TPageControl, note that it is quite hacky, and will flicker sometimes (on mouse enter/leave), but works great.

Some features I would like to implement, any requests/contributions/improvements are welcomed.

    AA Templates
    Session - open previous documents
    Auto backup - store and restore unsaved files (similar behavior to notepad ++)
    Project folder - quick access

    Put in auto run, in Cheat Engine -> Table you will have Script Editor (shortcut Ctrl+L)



    preview:

https://i.ibb.co/tqxsYyb/download.png
https://i.ibb.co/6JC5vpD/Screenshot-47.png

Code:
-- change log
   -- 23/12/2020
   -- add onmousemoveevent for pagecontrol parent (to redraw...)
   -- fixed form always being on top
   -- fixed middle mouse button not prompting to save before closing tab
   -- added right click to addresslist to edit scripts
      -- saving scripts from addresslist will update script data, but will not save the table*
   -- when closing ce it will prompt you to save all files
      -- if there are scripts that are unsaved script editor will popup, canceling will cancel CE shutdown
   -- window size & position is now saved in registry and will load from there..
   -- changed newtab hotkey (now CTRL+E) and fixed openFile hotkey
   -- fixed a small bug that AA scripts were not activated

   -- 27/12/2020
   -- reduced a bit toolbar dimensions so it would like decent for smaller monitors. (let me know if its too mch);
   -- some config options can be found at top of the script
   -- got rid of the additional findComponentByName call for readability
   -- add popup menu for syn edit
      -- added some templates
         -- Code Injection
         -- AOB Injection
         -- Full Code Injection
         -- * template address is fetched from the most recent (top-most memory viewer) for multi-memory viewer windows.
      -- Cheat Table framework code ([ENABLE][DISABLE]...)
      -- add an option to save to addresslist (only new (unsaved) tabs)
      -- added copy,cut,paste,undo/redo,select all options
   -- added event to remove orphan addresslist scripts tabs (when an auto assembler script is removed) -> fixing access violation when modifying non-existing scripts;
   -- fixed activating script reporting successful activation, when in fact it did not activate.
   -- fixed some typos
   -- added mouse event to output text to move caret to the error line (double click on the error line ...)
   -- added option to not show script editor on print (setting is saved to registry)
   -- added options to close all (modified) tabs when closing script window (setting is saved to registry)

   -- 02/01/2021
   -- Hooked Keystrokes array, and replaced Ctrl+N (newline hotkey) with Alt+N, and Ctrl+T (delete word) with Ctrl+D; (limited currently to CE v7.2)
      -- Ctrl+N will now open a new tab
         -- complete TSynEdit hotkeys --> https://github.com/ultibohub/Lazarus/blob/master/components/synedit/syneditkeycmds.pp#L1128
   -- Added find & replace
      -- Can search as plain text, whole word, case (in)sensitive, backwards and wrap around (notepad++ alike)
      -- 3 Search mode, Plain,Extended and Lua Pattern Matching, refer to lua patterns for more information (https://www.lua.org/pil/20.2.html)
      -- Added option to replace text, it supports %capture index (similiar to gsub)
         -- if search mode is set to Lua Pattern Matching, you may use up to 9 %capture indexes (%0 is the captured string),
            -- otherwise, in Plain and Extended you may use only %0 and %1 captured index (they're the same, the capture string);
      -- Added transparency to allow user to see better without having to close the window
      -- Added find(CTRL+F),find next(F3) and replace(CTRL+SHIFT+F) to the main menu, with hotkeys of course.
         -- current selected text will be auto assigned to the find box when opening search/replace window.
      -- Added a button to the toolbar



ce_script_editor.lua
 Description:

Download
 Filename:  ce_script_editor.lua
 Filesize:  144.48 KB
 Downloaded:  148 Time(s)


ce_script_editor.lua
 Description:
27/12/2020

Download
 Filename:  ce_script_editor.lua
 Filesize:  116.33 KB
 Downloaded:  66 Time(s)


ce_script_editor.lua
 Description:
23/12/2020

Download
 Filename:  ce_script_editor.lua
 Filesize:  100.01 KB
 Downloaded:  78 Time(s)


ce_script_editor.lua
 Description:
21/12/2020

Download
 Filename:  ce_script_editor.lua
 Filesize:  94.3 KB
 Downloaded:  58 Time(s)


_________________
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 Sat Jan 02, 2021 8:20 am; edited 12 times in total
Back to top
View user's profile Send private message
ByTransient
Expert Cheater
Reputation: 1

Joined: 05 Sep 2020
Posts: 123

PostPosted: Mon Dec 21, 2020 8:54 am    Post subject: Reply with quote

First comment ...
Intelligence, idea and coding .. Question Idea Arrow
Sometimes there are unique ideas, but the coding is unknown.
Sometimes good coding is known, but ideas become sterile.
You have both.
Congratulations, good job.
+1 is yours. (I hope this replicates)

Edit:

Suggestions;
1) For Cheat Table Lua Script, you must release the standalone "Lua Engine". (Maybe
Code:
if LuaScript.visible=true then
getLuaEngine().cbShowOnPrint.Checked=true end
)
2) There is no mouse left click menu, only hotkeys work (Ctrl + C, V etc.) and this is tiring.

3) Adding record type;
Code:
Cheat Table (*.CT)|*.CT|Cheat Table (*.CETRAINER)|*.CETRAINER|


Last edited by ByTransient on Mon Dec 21, 2020 11:42 am; edited 1 time in total
Back to top
View user's profile Send private message
Csimbi
I post too much
Reputation: 77

Joined: 14 Jul 2007
Posts: 2741

PostPosted: Mon Dec 21, 2020 10:09 am    Post subject: Reply with quote

Sounds promising!
The preview image seems broken.
So, how do I run this?
Drop into autorun?
How do I start your editor?

To me, the AA templates would be the best.
Although I suppose I can always create that using the standard CE dialog, and then continue editing in yours.

Thanks!
Back to top
View user's profile Send private message
DaSpamer
Grandmaster Cheater Supreme
Reputation: 44

Joined: 13 Sep 2011
Posts: 1560

PostPosted: Mon Dec 21, 2020 10:56 am    Post subject: Reply with quote

Csimbi wrote:
Sounds promising!
The preview image seems broken.
So, how do I run this?
Drop into autorun?
How do I start your editor?

To me, the AA templates would be the best.
Although I suppose I can always create that using the standard CE dialog, and then continue editing in yours.

Thanks!

I'm using lightshot, here's a direct link https://prnt.sc/w7560e (alt: https://ibb.co/F50w8GB)

Well integrating AA templates would allow to produce better scripts in much ease, and in the right environment for them, modifying the script and adding file dialog wouldn't be too difficult, though I've written it up in a bit ugly way, might split between pagecontrols everything into separate classes.

it's possible to add a popup/mainmenu and add the templates, I will work on it very soon.


About how to use, yes place in auto run, in table -> first entry (or CTRL+L) to open it up, ALT+1 --> ALT+3 to change syntax (or main menu), F5 to execute, SHIFT+F5 to execute locally (assembly), in case of error it will print out the error.

_________________
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
Csimbi
I post too much
Reputation: 77

Joined: 14 Jul 2007
Posts: 2741

PostPosted: Mon Dec 21, 2020 4:34 pm    Post subject: Reply with quote

Wow, this is very nicely done!
Fantactic job!

Any chance to add it to the right-click menu so right-clicking on an AA script would open up the script directly for editing?
(and there could be an 'update' button or something when I am done with the editing to update the script in the table, provided it's not currently enabled?)
Might be long shot, but I like this a lot in the build-in editor.

Thank you for considering!
Back to top
View user's profile Send private message
DaSpamer
Grandmaster Cheater Supreme
Reputation: 44

Joined: 13 Sep 2011
Posts: 1560

PostPosted: Mon Dec 21, 2020 5:15 pm    Post subject: Reply with quote

ByTransient wrote:
First comment ...
Intelligence, idea and coding .. Question Idea Arrow
Sometimes there are unique ideas, but the coding is unknown.
Sometimes good coding is known, but ideas become sterile.
You have both.
Congratulations, good job.
+1 is yours. (I hope this replicates)

Edit:

Suggestions;
1) For Cheat Table Lua Script, you must release the standalone "Lua Engine". (Maybe
Code:
if LuaScript.visible=true then
getLuaEngine().cbShowOnPrint.Checked=true end
)
2) There is no mouse left click menu, only hotkeys work (Ctrl + C, V etc.) and this is tiring.

3) Adding record type;
Code:
Cheat Table (*.CT)|*.CT|Cheat Table (*.CETRAINER)|*.CETRAINER|


1. it is not possible as I hid main lua engine inside CE form, and cbShowOnPrint do not function any more honestly, if it bothers you that it pop upon print (regardless on cbShowOnPrint state) I will add an option to disable in the next update.

2.Yes I am aware this is next step, along with AA templates.

3.There is no (currently at least) syntax for xml, and the main idea is to edit ce assembly and lua scripts plain text is useful for viewing/storing plain values, so I did not really bother to include CT and CETRAINER extensions as they can be viewed as plain text (*.*), but will add it as well.

Thank you for the kind words and feedback.

Csimbi wrote:
Wow, this is very nicely done!
Fantactic job!

Any chance to add it to the right-click menu so right-clicking on an AA script would open up the script directly for editing?
(and there could be an 'update' button or something when I am done with the editing to update the script in the table, provided it's not currently enabled?)
Might be long shot, but I like this a lot in the build-in editor.

Thank you for considering!


Will add it to the todo list!

_________________
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
Lynxz Gaming
Expert Cheater
Reputation: 3

Joined: 01 Jul 2017
Posts: 208
Location: help

PostPosted: Tue Dec 22, 2020 1:17 am    Post subject: Re: CE Script Editor Reply with quote

omg really helpful thank you! +1
_________________
my english is bad
discord : rynx#9828
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
ByTransient
Expert Cheater
Reputation: 1

Joined: 05 Sep 2020
Posts: 123

PostPosted: Tue Dec 22, 2020 2:31 am    Post subject: Reply with quote

A few more suggestions;

1) When initialized, it stays above CE on the screen. When I click on CE, ScriptEditor does not go into the background. You can make the ScriptEditor fall into the background.

2) When launched, instead of opening as a large screen, it can start at the "Lua Engine" size and coordinate. (This might bring up an additional "onResize = function")

And a special request;
We are novices; We are in favor of rare codes in "Extensions" to be covered in the "Lua Tutorials" section.
There are "Rare" codes in the coding you made above. Please open and process these in chapters in "Lua Tutorials".


Ops .. Thank you for your understanding and patience.
Back to top
View user's profile Send private message
DaSpamer
Grandmaster Cheater Supreme
Reputation: 44

Joined: 13 Sep 2011
Posts: 1560

PostPosted: Tue Dec 22, 2020 4:23 pm    Post subject: Reply with quote

ByTransient wrote:
A few more suggestions;

1) When initialized, it stays above CE on the screen. When I click on CE, ScriptEditor does not go into the background. You can make the ScriptEditor fall into the background.

2) When launched, instead of opening as a large screen, it can start at the "Lua Engine" size and coordinate. (This might bring up an additional "onResize = function")

And a special request;
We are novices; We are in favor of rare codes in "Extensions" to be covered in the "Lua Tutorials" section.
There are "Rare" codes in the coding you made above. Please open and process these in chapters in "Lua Tutorials".


Ops .. Thank you for your understanding and patience.


uploaded new file with some fixes and additions

1. Yes I noticed it on my laptop, it is fixed now.
2. It will now save the window dimension and position (along with the bottom panel of the output)

Regarding the request, honestly, tutorials are meant to cover the basics and get new beginners a bit of guidance.
If you want to learn how and what I did, I would recommend just stripping the code bit after bit, I left some comments so I wont 'wtf' myself as well.

@Csimbi, added the right click option (or CTRL+SPACE) to open auto assembly scripts (in bulk if you wish), saving them (Ctrl+S/toolbar/closing the tab), will simply update the memoryrecord script.
Fixed also F5/SHIFT+F5 not enabling AA scripts.

Will work tomorrow on templates, will probabaly have to take mgr.inz.player script and use current tab synedit rather than AA window synedit.


updated script file is in the main post.

_________________
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
Csimbi
I post too much
Reputation: 77

Joined: 14 Jul 2007
Posts: 2741

PostPosted: Wed Dec 23, 2020 6:11 am    Post subject: Reply with quote

DaSpamer wrote:

@Csimbi, added the right click option (or CTRL+SPACE) to open auto assembly scripts (in bulk if you wish), saving them (Ctrl+S/toolbar/closing the tab), will simply update the memoryrecord script.
Fixed also F5/SHIFT+F5 not enabling AA scripts.

Thanks, will check it out when I get home.

Edit:
I like the hotkey, not need to right click finally!!! Loving it!
Save works correctly, even when two scripts are named the same way - thumbs up!
Quirk: when the script is deleted from the cheat table, the label in the editing window disappears but the script stays there. Maybe you could close the editor of the deleted script as a whole to avoid those "Error:Access violation" messages?

I am editing an AA script and I hit F5.
What does "--test The code injection was successfull " mean?
Did it pass the test successfully?
I don't see it enabled in the table and I can do this over and over again, meaning that injection did not actually happed, did it?

Typo: "successfull " is just one 'l' and you might want to replace the spaces with dots Wink

Also, your script seems to state "--test The code injection was successfull " when CE itself fails saying "The array of byte name xxx could not be found."

Request:
When hitting F3, search for the next occurrence of currently selected text (and keep result selected).
When hitting SHIFT+F3, search for the previous occurrence of currently selected text (and keep result selected).

Edit2:
Closing the main editor window should close all editing tabs without saving, unless a script was modified (not saved) and I guess there should be some kind of warning about losing work.
Tapping CTRL+SPACE on a script that's open for editing should switch to the right tab in the editor instead of opening yet another tab.
For some reason, there is a space at the end of each line (after CTRL+SPACEing an AA script).

Request:
This might be a long shot, but would it be possible to implement that double-clicking in the status windows on "Error in line 167" would move the editor to that line?
Back to top
View user's profile Send private message
DaSpamer
Grandmaster Cheater Supreme
Reputation: 44

Joined: 13 Sep 2011
Posts: 1560

PostPosted: Wed Dec 23, 2020 7:15 am    Post subject: Reply with quote

Csimbi wrote:
DaSpamer wrote:

@Csimbi, added the right click option (or CTRL+SPACE) to open auto assembly scripts (in bulk if you wish), saving them (Ctrl+S/toolbar/closing the tab), will simply update the memoryrecord script.
Fixed also F5/SHIFT+F5 not enabling AA scripts.

Thanks, will check it out when I get home.

Edit:
I like the hotkey, not need to right click finally!!! Loving it!
Save works correctly, even when two scripts are named the same way - thumbs up!
Quirk: when the script is deleted from the cheat table, the label in the editing window disappears but the script stays there. Maybe you could close the editor of the deleted script as a whole to avoid those "Error:Access violation" messages?

I am editing an AA script and I hit F5.
What does "--test The code injection was successfull " mean?
Did it pass the test successfully?
I don't see it enabled in the table and I can do this over and over again, meaning that injection did not actually happed, did it?

Typo: "successfull " is just one 'l' and you might want to replace the spaces with dots Wink

Also, your script seems to state "--test The code injection was successfull " when CE itself fails saying "The array of byte name xxx could not be found."

Request:
When hitting F3, search for the next occurrence of currently selected text (and keep result selected).
When hitting SHIFT+F3, search for the previous occurrence of currently selected text (and keep result selected).

Edit2:
Closing the main editor window should close all editing tabs without saving, unless a script was modified (not saved) and I guess there should be some kind of warning about losing work.
Tapping CTRL+SPACE on a script that's open for editing should switch to the right tab in the editor instead of opening yet another tab.
For some reason, there is a space at the end of each line (after CTRL+SPACEing an AA script).

Request:
This might be a long shot, but would it be possible to implement that double-clicking in the status windows on "Error in line 167" would move the editor to that line?



Thank you for the feedback and much appreciated suggestions! keep 'em coming!
I will fix the bug that deleted AA script does not get deleted in the script editor.

Regarding the output message stating code injection was successful, it was simply checking firstly for syntax, afterwards doing autoassemble (discarding success status) and printing success message, fixed it now.
Will fix the typo, would appreciate for any other typo corrections or wrong grammar (Not native speaker).

Working currently on popup menu for text editor (with additional AA specific options),
including search (icon is already included but haven't programmed the logic), AA templates, code injection from disassembly view.

Regarding closing main editor window should close all tabs, I will add it as an option (personal opinion, it could prevent accidental data loss).

Will also fix the bug that editing script will create new tab instead of going to already opened tab, regarding space adding to the end of the line, that's due the hotkey shortcut choice, might have to replace shortcut with something else or perhaps wait until user releases hotkey.


@Last request, almost everything can be possible, just give me the time.

will try to finish AA templates/synedit popup menu and search logic & bug fixes today.

_________________
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
Csimbi
I post too much
Reputation: 77

Joined: 14 Jul 2007
Posts: 2741

PostPosted: Wed Dec 23, 2020 7:40 am    Post subject: Reply with quote

I love it so I will provide feedback, of course!
Thank you for the continued support!

DaSpamer wrote:

Regarding closing main editor window should close all tabs, I will add it as an option (personal opinion, it could prevent accidental data loss).

Aye, good idea.

DaSpamer wrote:

@Last request, almost everything can be possible, just give me the time.

I am a patient man, take your time.
Good things do not "just happen" overnight.

PS
You should update your status to LUA God Wink
Back to top
View user's profile Send private message
ByTransient
Expert Cheater
Reputation: 1

Joined: 05 Sep 2020
Posts: 123

PostPosted: Thu Dec 24, 2020 3:47 am    Post subject: Reply with quote

proposal;
----------
There is a situation I constantly encounter.
Example, when there is an error associated with "Timer", LuaEngine will always write the error.
To fix the error I need to disable the "onPrint" event in LuaEngine. Then I fix the error.
----------

I could not see this function in "Lua Script Editor".
If so, can you explain the way to use it?
Back to top
View user's profile Send private message
DaSpamer
Grandmaster Cheater Supreme
Reputation: 44

Joined: 13 Sep 2011
Posts: 1560

PostPosted: Sat Dec 26, 2020 8:24 pm    Post subject: Reply with quote

Csimbi wrote:
Quirk: when the script is deleted from the cheat table, the label in the editing window disappears but the script stays there. Maybe you could close the editor of the deleted script as a whole to avoid those "Error:Access violation" messages?

Fixed

Csimbi wrote:
Typo: "successfull " is just one 'l' and you might want to replace the spaces with dots Wink

Fixed (actually changed Razz)

Csimbi wrote:

Also, your script seems to state "--test The code injection was successfull " when CE itself fails saying "The array of byte name xxx could not be found."

Fixed


Csimbi wrote:

Closing the main editor window should close all editing tabs without saving, unless a script was modified (not saved) and I guess there should be some kind of warning about losing work.

Added a new menu item with option to close all tabs on close.

Csimbi wrote:

Tapping CTRL+SPACE on a script that's open for editing should switch to the right tab in the editor instead of opening yet another tab.

Fixed



ByTransient wrote:
proposal;
----------
There is a situation I constantly encounter.
Example, when there is an error associated with "Timer", LuaEngine will always write the error.
To fix the error I need to disable the "onPrint" event in LuaEngine. Then I fix the error.
----------

I could not see this function in "Lua Script Editor".
If so, can you explain the way to use it?

Added a new menu item with option to not show script editor window when there's something being printed.


Csimbi wrote:

Request:
This might be a long shot, but would it be possible to implement that double-clicking in the status windows on "Error in line 167" would move the editor to that line?

Added as a feature.
The only possible side bug would be trying to press on the Error in line... in different script tab.
A solution would be to create a local output memo (with stringslist object for each tab),
And display errors only related to the tab script, that means the main output script would be related only for lua calls and/or other errors (access violation and such).

Let me know what you think of this.



Csimbi wrote:

For some reason, there is a space at the end of each line (after CTRL+SPACEing an AA script).

Does it bother so much? as it seems that taking memoryrecord returns the text with additional blank line, can be fixed the question if it's necessary..

Csimbi wrote:

Request:
When hitting F3, search for the next occurrence of currently selected text (and keep result selected).
When hitting SHIFT+F3, search for the previous occurrence of currently selected text (and keep result selected).

Next thing up a long with the custom templates script.





Updated main post with new file.
Let me know of any new bugs or typos and such!

Edit:
Regarding templates (code injection and such).
The address to injected is taken from the top most memory view window!
That means if you have several memory view window, the address will be taken from the most recently used (z order actually..) window.


I will add templates menus also to the mainmenu.

Templates are visible only in Cheat Engine assembly syntax!

_________________
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
Csimbi
I post too much
Reputation: 77

Joined: 14 Jul 2007
Posts: 2741

PostPosted: Sun Dec 27, 2020 6:34 am    Post subject: Reply with quote

Thanks for all the fixes!
I'll check them later on today an update this post.
Correction: tomorrow.
Today is the 27th - part of the three days 'peace period'.

DaSpamer wrote:

Csimbi wrote:

For some reason, there is a space at the end of each line (after CTRL+SPACEing an AA script).

Does it bother so much? as it seems that taking memoryrecord returns the text with additional blank line, can be fixed the question if it's necessary..

No, not much - but it feels awkward because I know they should not be there Wink

DaSpamer wrote:

Regarding templates (code injection and such).
The address to injected is taken from the top most memory view window!
That means if you have several memory view window, the address will be taken from the most recently used (z order actually..) window.

Nicely done! Been missing this in CE.
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
Goto page 1, 2  Next
Page 1 of 2

 
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