Graal Forums  

Go Back   Graal Forums > Development Forums > NPC Scripting > New Scripting Engine (GS2)
FAQ Members List Calendar Search Today's Posts Mark Forums Read

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 06-27-2006, 05:11 AM
_Z3phyr_ _Z3phyr_ is offline
Banned
Join Date: Sep 2003
Location: Louisiane
Posts: 390
_Z3phyr_ is an unknown quantity at this point
onKeyDown, onKeyUp

I'm trying to learn how to do GUI stuff, but I haven't been able to master the onKeyDown and onKeyUp events... can someone gimme a working example or explain wtf a scancode and all that stuff is?

Quote:
Originally Posted by wiki
onKeyDown(keycode,keystring,scancode) - a key has been pressed while the control had the input focus (makeFirstResponder())

onKeyUp(keycode,keystring,scancode) - the key has been released
keycode is obvious, same as GS1 I assume, but wtf is the other stuff and how does it work?



to ApothiX -> outstanding edit, sir!

Last edited by _Z3phyr_; 06-27-2006 at 08:34 AM..
Reply With Quote
  #2  
Old 06-27-2006, 07:05 AM
ApothiX ApothiX is offline
Okiesmokie
Join Date: May 2004
Posts: 1,447
ApothiX is on a distinguished road
http://en.wikipedia.org/wiki/Scancode

http://en.wikipedia.org/wiki/Scancode

Edit: Received a PM from the maker of the thread requesting more information, and not just a link with "someone else's words" on it.

A simple method of determining what key has what scancode can be scripted. This script does just that (In old-gscript for compatibility with the editor, it's not likely that you'd want to upload something like this to a server.)

PHP Code:
//#CLIENTSIDE
if(createdtimeout 0.05;

if(
timeout) {
  for(
i=0;i<256;i++) {
    if(
keydown2(i,true)) {
      
setplayerprop #c,Scancode: #v(i);
    
}
  }

  
timeout 0.05;

That will tell you which key has which scancode, you can then go ahead and use the onKeyDown event as follows:

PHP Code:
function ControlName.onKeyDown(keycodekeystringscancode) {
  if(
scancode == 65) {
    
player.chat "The a key was pressed while ControlName had focus.";
  }

a more simpler method of this, as scancodes change depending on the keyboard layout (I believe, could be wrong though) would be to just check for the character.

PHP Code:
function ControlName.onKeyDown(keycodekeystringscancode) {
  if(
keystring == "a" || keystring == "A") {
    
player.chat "The a key was pressed while ControlName had focus.";
  }

I'm not sure what the 'keycode' is exactly, but it probably has something to do with the standard game controls, like keydown().

Quote:
keydown( key ) the specified key is pressed (0..10: up,left,down,right,S,A,D,M,tab,Q,P)

Edit again: <_< Now that I re-read it, keycode and scancode may be mixed up in those examples. I haven't done this for awhile so you may want to double check that. Scancode can still be determined using a method similiar to this, although all scancodes are shown on the wiki page I linked to.
__________________


[06:24:19] * Parts: Skyld ([email protected]/skyld) ("Perhaps Okiesmokie did not realise that I like the boys. ")

Last edited by ApothiX; 06-27-2006 at 07:39 AM..
Reply With Quote
  #3  
Old 06-27-2006, 06:52 PM
Admins Admins is offline
Graal Administration
Join Date: Jan 2000
Location: Admins
Posts: 11,693
Admins has much to be proud ofAdmins has much to be proud ofAdmins has much to be proud ofAdmins has much to be proud ofAdmins has much to be proud ofAdmins has much to be proud of
In v4 the old scripting engine is providing the scancode too.

Keycode - the virtual keycode, you can search for VK_ESCAPE (or XK_) or similar on the web. That works also for special keys, like Escape, Shift etc. You can get the keycode for a special character with the function getkeycode(character). Also the function keydown2(keycode,ignoremodifierkeys) requires keycodes.

Keystring - the character pressed, e.g. 'a'

Scancode - the number of the key on the keyboard. This is different on Mac (USB keyboards?) and Windows/Linux, but it's the only way to detect some keys that are used for several characters at the same time. This has been added in v4 to make things like Piano simplier. You need to test this on Mac though since the scancodes are different there (check player.platform). Best might be in this case to let the player choose the keys he/she wants to use, although that will require some scripting to ask the player to press the wanted key and then check in onKeyDown what scancode the key has.
Reply With Quote
  #4  
Old 06-27-2006, 08:16 PM
zokemon zokemon is offline
That one guy...
zokemon's Avatar
Join Date: Mar 2001
Location: Sonoma County, California
Posts: 2,925
zokemon is a jewel in the roughzokemon is a jewel in the rough
Send a message via ICQ to zokemon Send a message via AIM to zokemon Send a message via MSN to zokemon Send a message via Yahoo to zokemon
onKeyDown() and onKeyUp() are basically the same as onKeyPressed() but instead works if you press a key while the control you use it with has focus (of course onKeyUp() is the same as onKeyDown() but is triggered when you release the key). The keycode is basically the number assignment for the key you press down.
An easy way to check for the keycode in an online script:
NPC Code:

function onKeyPressed(keycode, keystring, scancode) {
echo("---");
echo("Keycode: " @ keycode);
echo("Keystring: " @ keystring);
echo("Scancode: " @ scancode);
}


This of course will show you the keycode, key letter and scancode in question being pressed.
Keystring is just the label of the key that you press but it doesn't always work (It only works for character keys such as letters, numbers and other charcters like : [ , . ' / ~). It will just be blank for keys such as shift or page down.
Scancode I haven't really worked with much. Can't help you with that sorry.
__________________
Do it with a DON!
Reply With Quote
  #5  
Old 06-28-2006, 01:35 AM
ApothiX ApothiX is offline
Okiesmokie
Join Date: May 2004
Posts: 1,447
ApothiX is on a distinguished road
Quote:
Originally Posted by Stefan
In v4 the old scripting engine is providing the scancode too.

Keycode - the virtual keycode, you can search for VK_ESCAPE (or XK_) or similar on the web. That works also for special keys, like Escape, Shift etc. You can get the keycode for a special character with the function getkeycode(character). Also the function keydown2(keycode,ignoremodifierkeys) requires keycodes.
Oh, they are eh? Was wondering about that. Are the VK_ constants defined in the new engine?

Just incase they aren't, here is a snippit from WinUser.h (C Header file that ships with win32-comptible compilers)

PHP Code:
#ifndef NOVIRTUALKEYCODES


/*
 * Virtual Keys, Standard Set
 */
#define VK_LBUTTON        0x01
#define VK_RBUTTON        0x02
#define VK_CANCEL         0x03
#define VK_MBUTTON        0x04    /* NOT contiguous with L & RBUTTON */

#if(_WIN32_WINNT >= 0x0500)
#define VK_XBUTTON1       0x05    /* NOT contiguous with L & RBUTTON */
#define VK_XBUTTON2       0x06    /* NOT contiguous with L & RBUTTON */
#endif /* _WIN32_WINNT >= 0x0500 */

/*
 * 0x07 : unassigned
 */

#define VK_BACK           0x08
#define VK_TAB            0x09

/*
 * 0x0A - 0x0B : reserved
 */

#define VK_CLEAR          0x0C
#define VK_RETURN         0x0D

#define VK_SHIFT          0x10
#define VK_CONTROL        0x11
#define VK_MENU           0x12
#define VK_PAUSE          0x13
#define VK_CAPITAL        0x14

#define VK_KANA           0x15
#define VK_HANGEUL        0x15  /* old name - should be here for compatibility */
#define VK_HANGUL         0x15
#define VK_JUNJA          0x17
#define VK_FINAL          0x18
#define VK_HANJA          0x19
#define VK_KANJI          0x19

#define VK_ESCAPE         0x1B

#define VK_CONVERT        0x1C
#define VK_NONCONVERT     0x1D
#define VK_ACCEPT         0x1E
#define VK_MODECHANGE     0x1F

#define VK_SPACE          0x20
#define VK_PRIOR          0x21
#define VK_NEXT           0x22
#define VK_END            0x23
#define VK_HOME           0x24
#define VK_LEFT           0x25
#define VK_UP             0x26
#define VK_RIGHT          0x27
#define VK_DOWN           0x28
#define VK_SELECT         0x29
#define VK_PRINT          0x2A
#define VK_EXECUTE        0x2B
#define VK_SNAPSHOT       0x2C
#define VK_INSERT         0x2D
#define VK_DELETE         0x2E
#define VK_HELP           0x2F

/*
 * VK_0 - VK_9 are the same as ASCII '0' - '9' (0x30 - 0x39)
 * 0x40 : unassigned
 * VK_A - VK_Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A)
 */

#define VK_LWIN           0x5B
#define VK_RWIN           0x5C
#define VK_APPS           0x5D

/*
 * 0x5E : reserved
 */

#define VK_SLEEP          0x5F

#define VK_NUMPAD0        0x60
#define VK_NUMPAD1        0x61
#define VK_NUMPAD2        0x62
#define VK_NUMPAD3        0x63
#define VK_NUMPAD4        0x64
#define VK_NUMPAD5        0x65
#define VK_NUMPAD6        0x66
#define VK_NUMPAD7        0x67
#define VK_NUMPAD8        0x68
#define VK_NUMPAD9        0x69
#define VK_MULTIPLY       0x6A
#define VK_ADD            0x6B
#define VK_SEPARATOR      0x6C
#define VK_SUBTRACT       0x6D
#define VK_DECIMAL        0x6E
#define VK_DIVIDE         0x6F
#define VK_F1             0x70
#define VK_F2             0x71
#define VK_F3             0x72
#define VK_F4             0x73
#define VK_F5             0x74
#define VK_F6             0x75
#define VK_F7             0x76
#define VK_F8             0x77
#define VK_F9             0x78
#define VK_F10            0x79
#define VK_F11            0x7A
#define VK_F12            0x7B
#define VK_F13            0x7C
#define VK_F14            0x7D
#define VK_F15            0x7E
#define VK_F16            0x7F
#define VK_F17            0x80
#define VK_F18            0x81
#define VK_F19            0x82
#define VK_F20            0x83
#define VK_F21            0x84
#define VK_F22            0x85
#define VK_F23            0x86
#define VK_F24            0x87

/*
 * 0x88 - 0x8F : unassigned
 */

#define VK_NUMLOCK        0x90
#define VK_SCROLL         0x91

/*
 * NEC PC-9800 kbd definitions
 */
#define VK_OEM_NEC_EQUAL  0x92   // '=' key on numpad

/*
 * Fujitsu/OASYS kbd definitions
 */
#define VK_OEM_FJ_JISHO   0x92   // 'Dictionary' key
#define VK_OEM_FJ_MASSHOU 0x93   // 'Unregister word' key
#define VK_OEM_FJ_TOUROKU 0x94   // 'Register word' key
#define VK_OEM_FJ_LOYA    0x95   // 'Left OYAYUBI' key
#define VK_OEM_FJ_ROYA    0x96   // 'Right OYAYUBI' key

/*
 * 0x97 - 0x9F : unassigned
 */

/*
 * VK_L* & VK_R* - left and right Alt, Ctrl and Shift virtual keys.
 * Used only as parameters to GetAsyncKeyState() and GetKeyState().
 * No other API or message will distinguish left and right keys in this way.
 */
#define VK_LSHIFT         0xA0
#define VK_RSHIFT         0xA1
#define VK_LCONTROL       0xA2
#define VK_RCONTROL       0xA3
#define VK_LMENU          0xA4
#define VK_RMENU          0xA5

#if(_WIN32_WINNT >= 0x0500)
#define VK_BROWSER_BACK        0xA6
#define VK_BROWSER_FORWARD     0xA7
#define VK_BROWSER_REFRESH     0xA8
#define VK_BROWSER_STOP        0xA9
#define VK_BROWSER_SEARCH      0xAA
#define VK_BROWSER_FAVORITES   0xAB
#define VK_BROWSER_HOME        0xAC

#define VK_VOLUME_MUTE         0xAD
#define VK_VOLUME_DOWN         0xAE
#define VK_VOLUME_UP           0xAF
#define VK_MEDIA_NEXT_TRACK    0xB0
#define VK_MEDIA_PREV_TRACK    0xB1
#define VK_MEDIA_STOP          0xB2
#define VK_MEDIA_PLAY_PAUSE    0xB3
#define VK_LAUNCH_MAIL         0xB4
#define VK_LAUNCH_MEDIA_SELECT 0xB5
#define VK_LAUNCH_APP1         0xB6
#define VK_LAUNCH_APP2         0xB7

#endif /* _WIN32_WINNT >= 0x0500 */

/*
 * 0xB8 - 0xB9 : reserved
 */

#define VK_OEM_1          0xBA   // ';:' for US
#define VK_OEM_PLUS       0xBB   // '+' any country
#define VK_OEM_COMMA      0xBC   // ',' any country
#define VK_OEM_MINUS      0xBD   // '-' any country
#define VK_OEM_PERIOD     0xBE   // '.' any country
#define VK_OEM_2          0xBF   // '/?' for US
#define VK_OEM_3          0xC0   // '`~' for US

/*
 * 0xC1 - 0xD7 : reserved
 */

/*
 * 0xD8 - 0xDA : unassigned
 */

#define VK_OEM_4          0xDB  //  '[{' for US
#define VK_OEM_5          0xDC  //  '\|' for US
#define VK_OEM_6          0xDD  //  ']}' for US
#define VK_OEM_7          0xDE  //  ''"' for US
#define VK_OEM_8          0xDF

/*
 * 0xE0 : reserved
 */

/*
 * Various extended or enhanced keyboards
 */
#define VK_OEM_AX         0xE1  //  'AX' key on Japanese AX kbd
#define VK_OEM_102        0xE2  //  "<>" or "\|" on RT 102-key kbd.
#define VK_ICO_HELP       0xE3  //  Help key on ICO
#define VK_ICO_00         0xE4  //  00 key on ICO

#if(WINVER >= 0x0400)
#define VK_PROCESSKEY     0xE5
#endif /* WINVER >= 0x0400 */

#define VK_ICO_CLEAR      0xE6


#if(_WIN32_WINNT >= 0x0500)
#define VK_PACKET         0xE7
#endif /* _WIN32_WINNT >= 0x0500 */

/*
 * 0xE8 : unassigned
 */

/*
 * Nokia/Ericsson definitions
 */
#define VK_OEM_RESET      0xE9
#define VK_OEM_JUMP       0xEA
#define VK_OEM_PA1        0xEB
#define VK_OEM_PA2        0xEC
#define VK_OEM_PA3        0xED
#define VK_OEM_WSCTRL     0xEE
#define VK_OEM_CUSEL      0xEF
#define VK_OEM_ATTN       0xF0
#define VK_OEM_FINISH     0xF1
#define VK_OEM_COPY       0xF2
#define VK_OEM_AUTO       0xF3
#define VK_OEM_ENLW       0xF4
#define VK_OEM_BACKTAB    0xF5

#define VK_ATTN           0xF6
#define VK_CRSEL          0xF7
#define VK_EXSEL          0xF8
#define VK_EREOF          0xF9
#define VK_PLAY           0xFA
#define VK_ZOOM           0xFB
#define VK_NONAME         0xFC
#define VK_PA1            0xFD
#define VK_OEM_CLEAR      0xFE

/*
 * 0xFF : reserved
 */


#endif /* !NOVIRTUALKEYCODES */ 
__________________


[06:24:19] * Parts: Skyld ([email protected]/skyld) ("Perhaps Okiesmokie did not realise that I like the boys. ")
Reply With Quote
  #6  
Old 06-28-2006, 01:53 AM
ApothiX ApothiX is offline
Okiesmokie
Join Date: May 2004
Posts: 1,447
ApothiX is on a distinguished road
And seeing as how I have nothing else better to do, I took the liberty of converting that header file into an enum supported by gscript2.

PHP Code:
enum {
    
VK_LBUTTON 0x01,
    
VK_RBUTTON,
    
VK_CANCEL,
    
VK_MBUTTON,
    
VK_XBUTTON1,
    
VK_XBUTTON2,
    
VK_BACK 0x08,
    
VK_TAB,
    
VK_CLEAR 0x0C,
    
VK_RETURN,
    
VK_SHIFT 0x10,
    
VK_CONTROL,
    
VK_MENU,
    
VK_PAUSE,
    
VK_CAPITAL,
    
VK_KANA,
    
VK_HANGEUL 0x15,
    
VK_HANGUL 0x15,
    
VK_JUNJA 0x17,
    
VK_FINAL,
    
VK_HANJA,
    
VK_KANJI 0x19,
    
VK_ESCAPE 0x1B,
    
VK_CONVERT 0x1C,
    
VK_NONCONVERT,
    
VK_ACCEPT,
    
VK_MODECHANGE,
    
VK_SPACE,
    
VK_PRIOR,
    
VK_NEXT,
    
VK_END,
    
VK_HOME,
    
VK_LEFT,
    
VK_UP,
    
VK_RIGHT,
    
VK_DOWN,
    
VK_SELECT,
    
VK_PRINT,
    
VK_EXECUTE,
    
VK_SNAPSHOPT,
    
VK_INSERT,
    
VK_DELETE,
    
VK_HELP,
    
VK_0,
    
VK_1,
    
VK_2,
    
VK_3,
    
VK_4,
    
VK_5,
    
VK_6,
    
VK_7,
    
VK_8,
    
VK_9,
    
VK_A 0x41,
    
VK_B,
    
VK_C,
    
VK_D,
    
VK_E,
    
VK_F,
    
VK_G,
    
VK_H,
    
VK_I,
    
VK_J,
    
VK_K,
    
VK_L,
    
VK_M,
    
VK_N,
    
VK_O,
    
VK_P,
    
VK_Q,
    
VK_R,
    
VK_S,
    
VK_T,
    
VK_U,
    
VK_V,
    
VK_W,
    
VK_X,
    
VK_Y,
    
VK_Z,
    
VK_LWIN,
    
VK_RWIN,
    
VK_APPS,
    
VK_SLEEP 0x5F,
    
VK_NUMPAD0,
    
VK_NUMPAD1,
    
VK_NUMPAD2,
    
VK_NUMPAD3,
    
VK_NUMPAD4,
    
VK_NUMPAD5,
    
VK_NUMPAD6,
    
VK_NUMPAD7,
    
VK_NUMPAD8,
    
VK_NUMPAD9,
    
VK_MULTIPLY,
    
VK_ADD,
    
VK_SEPARATOR,
    
VK_SUBTRACT,
    
VK_DECIMAL,
    
VK_DIVIDE,
    
VK_F1,
    
VK_F2,
    
VK_F3,
    
VK_F4,
    
VK_F5,
    
VK_F6,
    
VK_F7,
    
VK_F8,
    
VK_F9,
    
VK_F10,
    
VK_F11,
    
VK_F12,
    
VK_F13,
    
VK_F14,
    
VK_F15,
    
VK_F16,
    
VK_F17,
    
VK_F18,
    
VK_F19,
    
VK_F20,
    
VK_F21,
    
VK_F22,
    
VK_F23,
    
VK_F24,
    
VK_NUMLOCK 0x90,
    
VK_SCROLL,
    
VK_OEM_NEC_EQUAL,
    
VK_OEM_FJ_JISHO 0x92,
    
VK_OEM_FJ_MASSHOU,
    
VK_OEM_FJ_TOUROKU,
    
VK_OEM_FJ_LOYA,
    
VK_OEM_FJ_ROYA,
    
VK_LSHIFT 0xA0,
    
VK_RSHIFT,
    
VK_LCONTROL,
    
VK_RCONTROL,
    
VK_LMENU,
    
VK_RMENU,
    
VK_BROWSER_BACK,
    
VK_BROWSER_FORWARD,
    
VK_BROWSER_REFRESH,
    
VK_BROWSER_STOP,
    
VK_BROWSER_SEARCH,
    
VK_BROWSER_FAVORITES,
    
VK_BROWSER_HOME,
    
VK_VOLUME_MUTE,
    
VK_VOLUME_DOWN,
    
VK_VOLUME_UP,
    
VK_MEDIA_NEXT_TRACK,
    
VK_MEDIA_PREV_TRACK,
    
VK_MEDIA_STOP,
    
VK_MEDIA_PLAY_PAUSE,
    
VK_LAUNCH_MAIL,
    
VK_LAUNCH_MEDIA_SELECT,
    
VK_LAUNCH_APP1,
    
VK_LAUNCH_APP2,
    
VK_OEM_1 0xBA,
    
VK_OEM_PLUS,
    
VK_OEM_COMMA,
    
VK_OEM_MINUS,
    
VK_OEM_PERIOD,
    
VK_OEM_2,
    
VK_OEM_3,
    
VK_OEM_4 0xDB,
    
VK_OEM_5,
    
VK_OEM_6,
    
VK_OEM_7,
    
VK_OEM_8,
    
VK_OEM_AX 0xE1,
    
VK_OEM_102,
    
VK_ICO_HELP,
    
VK_ICO_00,
    
VK_PROCESSKEY,
    
VK_ICO_CLEAR,
    
VK_PACKET,
    
VK_OEM_RESET 0xE9,
    
VK_OEM_JUMP,
    
VK_OEM_PA1,
    
VK_OEM_PA2,
    
VK_OEM_PA3,
    
VK_OEM_WSCTRL,
    
VK_OEM_CUSEL,
    
VK_OEM_ATTN,
    
VK_OEM_FINISH,
    
VK_OEM_COPY,
    
VK_OEM_AUTO,
    
VK_OEM_ENLW,
    
VK_OEM_BACKTAB,
    
VK_ATTN,
    
VK_CRSEL,
    
VK_EXSEL,
    
VK_EREOF,
    
VK_PLAY,
    
VK_ZOOM,
    
VK_NONAME,
    
VK_PA1,
    
VK_OEM_CLEAR
}; 
Please note, I did this all by hand, retyped all that crap. So I may have made a typo or two somewhere. If you spot something wrong with this, please tell me and I will correct it.
__________________


[06:24:19] * Parts: Skyld ([email protected]/skyld) ("Perhaps Okiesmokie did not realise that I like the boys. ")
Reply With Quote
  #7  
Old 06-28-2006, 03:20 PM
Admins Admins is offline
Graal Administration
Join Date: Jan 2000
Location: Admins
Posts: 11,693
Admins has much to be proud ofAdmins has much to be proud ofAdmins has much to be proud ofAdmins has much to be proud ofAdmins has much to be proud ofAdmins has much to be proud of
I think that the virtual keycodes come from Unix, e.g. XK_Escape is 0xff1b, the VK_ codes are introduced by Windows but are basicly the same (VK_ESCAPE=0x1b)
Reply With Quote
  #8  
Old 06-28-2006, 04:38 PM
ApothiX ApothiX is offline
Okiesmokie
Join Date: May 2004
Posts: 1,447
ApothiX is on a distinguished road
Quote:
Originally Posted by Stefan
I think that the virtual keycodes come from Unix, e.g. XK_Escape is 0xff1b, the VK_ codes are introduced by Windows but are basicly the same (VK_ESCAPE=0x1b)
Which does Graal use? I'd assume the VK_ codes, especially if you were originally using DirectInput.
__________________


[06:24:19] * Parts: Skyld ([email protected]/skyld) ("Perhaps Okiesmokie did not realise that I like the boys. ")
Reply With Quote
  #9  
Old 06-28-2006, 06:16 PM
Admins Admins is offline
Graal Administration
Join Date: Jan 2000
Location: Admins
Posts: 11,693
Admins has much to be proud ofAdmins has much to be proud ofAdmins has much to be proud ofAdmins has much to be proud ofAdmins has much to be proud ofAdmins has much to be proud of
I said they are the same when you just take the last two hexadecimal characters
Reply With Quote
  #10  
Old 06-28-2006, 07:49 PM
_Z3phyr_ _Z3phyr_ is offline
Banned
Join Date: Sep 2003
Location: Louisiane
Posts: 390
_Z3phyr_ is an unknown quantity at this point
GScript Mid-Term Exam:


Instructions.
/*
Indicate validity of example GScript code in a boolean value expression of "this.answer", where this.answer is equal to the example GScript given.

if (this.answer==false) { explain("why"); }
*/



1)

PHP Code:
this.answer 

Really though — can someone give me a working example? I read the posts and I see hexadecimals and header files.... I learn things by dumbing them down via example, and hexadecimal definitions aren't exactly my idea of dumb.
Reply With Quote
  #11  
Old 06-29-2006, 04:38 PM
ApothiX ApothiX is offline
Okiesmokie
Join Date: May 2004
Posts: 1,447
ApothiX is on a distinguished road
the enum crap I provided lets you do things like this:

PHP Code:
function ControlName.onKeyDown(keycodecharscancode) {
  if(
keycode == VK_RETURN) {
    
player.chat "ROFL U PRESED ENTAR U SILY GOOSE";
  }

__________________


[06:24:19] * Parts: Skyld ([email protected]/skyld) ("Perhaps Okiesmokie did not realise that I like the boys. ")
Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +2. The time now is 01:49 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, vBulletin Solutions Inc.
Copyright (C) 1998-2019 Toonslab All Rights Reserved.