I received much positive feedback for this map so I decided to implement tictactoe as a console game (obviously offline because there's no way to make this online):
Paste the lines below into your config.cfg (at your own risk, though any likely risk should be that it overwrites some of your cvars or aliases).
Type "tttstatus"
Start playing.
It even resets and detects if a field is already set
(@jitspoe apparently I can't edit the attachments of a post anymore?) Edit: Code below now prints the final field when someone won. Couldn't update the faulty screenshot.
Code won't handle ties but I'm too lazy to edit thousands of aliases (again). In case some madman actually plays it he would simply have to add another cvar that gets increased whenever a player makes his move and triggers some tie event when it's on 9 and nobody won
-----------------------------------------------------------------------------
seta ul "-"
seta um "-"
seta ur "-"
seta ml "-"
seta mm "-"
seta mr "-"
seta ol "-"
seta om "-"
seta or "-"
alias tttstatus "echo _ | l m r; echo u | $ol $om $or; echo m | $ml $mm $mr; echo l | $ul $um $ur; echo; echo Player $tttturn turn. 0 places x, 1 places o.; echo Type set<coordinate of the field you want to set>, e.g. setul for upper left."
alias tttreset "seta ol -; seta om -; seta or -; seta ml -; seta mm -; seta mr -; seta ul -; seta um -; seta ur -"
seta tttturn 0
alias setul "setulx"
alias setulx "setul$tttturn; cvar_toggle tttturn; tttstatus; alias setul tttalreadyset "
alias setul0 "seta ol x; cvar_inc sw1 1; cvar_inc ss1 1;cvar_inc sndia 1;tttcheck"
alias setul1 "seta ol o; cvar_inc cw1 1; cvar_inc cs1 1;cvar_inc cndia 1;tttcheck"
alias setml "setmlx"
alias setmlx "setml$tttturn; cvar_toggle tttturn; tttstatus; alias setml tttalreadyset "
alias setml0 "seta ml x; cvar_inc sw2 1;cvar_inc ss1 1;tttcheck"
alias setml1 "seta ml o; cvar_inc cw2 1;cvar_inc cs1 1;tttcheck"
alias setll "setllx"
alias setllx "setll$tttturn; cvar_toggle tttturn; tttstatus; alias setll tttalreadyset "
alias setll0 "seta ul x; cvar_inc sw3 1;cvar_inc ss1 1;cvar_inc spdia 1;tttcheck"
alias setll1 "seta ul o; cvar_inc cw3 1;cvar_inc cs1 1;cvar_inc cpdia 1;tttcheck"
alias setum "setumx"
alias setumx "setum$tttturn; cvar_toggle tttturn; tttstatus; alias setum tttalreadyset"
alias setum0 "seta om x; cvar_inc sw1 1; cvar_inc ss2 1;tttcheck"
alias setum1 "seta om o; cvar_inc cw1 1; cvar_inc cs2 1;tttcheck"
alias setmm "setmmx"
alias setmmx "setmm$tttturn; cvar_toggle tttturn; tttstatus; alias setmm tttalreadyset "
alias setmm0 "seta mm x; cvar_inc sw2 1; cvar_inc ss2 1; cvar_inc spdia 1; cvar_inc sndia 1;tttcheck"
alias setmm1 "seta mm o; cvar_inc cw2 1; cvar_inc cs2 1; cvar_inc cpdia 1; cvar_inc cndia 1;tttcheck"
alias setlm "setlmx"
alias setlmx "setlm$tttturn; cvar_toggle tttturn; tttstatus; alias setlm tttalreadyset "
alias setlm0 "seta um x; cvar_inc sw3 1; cvar_inc ss2 1;tttcheck"
alias setlm1 "seta um o; cvar_inc cw3 1; cvar_inc cs2 1;tttcheck"
alias setur "seturx"
alias seturx "setur$tttturn; cvar_toggle tttturn; tttstatus; alias setur tttalreadyset "
alias setur0 "seta or x; cvar_inc sw1 1; cvar_inc ss3 1; cvar_inc sndia 1;tttcheck"
alias setur1 "seta or o; cvar_inc cw1 1; cvar_inc cs3 1; cvar_inc cndia 1;tttcheck"
alias setmr "setmrx"
alias setmrx "setmr$tttturn; cvar_toggle tttturn; tttstatus; alias setmr tttalreadyset "
alias setmr0 "seta mr x; cvar_inc sw2 1; cvar_inc ss3 1;tttcheck"
alias setmr1 "seta mr o; cvar_inc cw2 1; cvar_inc cs3 1;tttcheck"
alias setlr "setlrx"
alias setlrx "setlr$tttturn; cvar_toggle tttturn; tttstatus; alias setlr tttalreadyset "
alias setlr0 "seta ur x; cvar_inc sw3 1; cvar_inc ss3 1; cvar_inc sndia 1;tttcheck"
alias setlr1 "seta ur o; cvar_inc cw3 1; cvar_inc cs3 1; cvar_inc cndia 1;tttcheck"
alias tttalreadyset echo This field is already set!;
alias tttaliasreset "alias setul setulx; alias setml setmlx; alias setll setllx; alias setum setumx; alias setmm setmmx; alias setlm setlmx; alias setur seturx; alias setmr setmrx; alias setlr setlrx"
seta cw1 0
seta cw2 0
seta cw3 0
seta cs1 0
seta cs2 0
seta cs3 0
seta cpdia 0
seta cndia 0
seta sw1 0
seta sw2 0
seta sw3 0
seta ss1 0
seta ss2 0
seta ss3 0
seta spdia 0
seta sndia 0
alias tttcheck "tttwin$cw1;wait;tttwin$cw2;wait;tttwin$cw3;wait;tttwin$cs1;wait;tttwin$cs2;wait;tttwin$cs3;wait;tttwin$cpdia;wait;tttwin$cndia;wait;tttwin$sw1;wait;tttwin$sw2;wait;tttwin$sw3;wait;tttwin$ss1;wait;tttwin$ss2;wait;tttwin$ss3;wait;tttwin$spdia;wait;tttwin$sndia"
alias tttwin0 ""
alias tttwin1 ""
alias tttwin2 ""
alias tttwin3 "tttstatus;echo -----------------;echo;echo Player $tttturn wins!;echo;tttreset;tttcountreset;tttaliasreset;echo -----------------"
alias tttcountreset "seta cw1 0; seta cw2 0; seta cw3 0; seta cs1 0; seta cs2 0; seta cs3 0; seta cpdia 0; seta cndia 0; seta sw1 0; seta sw2 0; seta sw3 0; seta ss1 0; seta ss2 0; seta ss3 0; seta spdia 0; seta sndia 0"