Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - Kitty Hello

Pages: 1 [2] 3 4 ... 37
Announcements / New website
« on: 2016-Nov-19 »
I updated the website to a more modern html5/css3 layout. Eas the best I could come up with :(
I hope it also works for mobile now.

Code Snippets / IRC chat protocol / ChatBot
« on: 2016-Oct-30 »
Here is a basic framework for an IRC chat bot. I hope to use this for a clinet/server application one day.... Just have to deal with "flood posting" errors.

Code: GLBasic [Select]
// --------------------------------- //
// Project: IRC
// Start: Sunday, October 30, 2016
// IDE Version: 14.401

// SETCURRENTDIR("Media") // go to media files

IRC_connect("", "Chatbot", "glbasic")

IRC_send("I'm a bot ask me something")

//      LOCAL msg$ = STDIN$()
        LOCAL what$, sender$, text$
        IF IRC_recv(what$, sender$, text$)
                STDOUT "From: "+sender$+": what:" + what$+" text:"+text$+"\n"
        IF what$="NOTICE"
                IRC_send(sender$ + ", ask me anything but " +text$)


GLOBAL gIRC_sock%=-1
GLOBAL gIRC_channel$
GLOBAL gIRC_server$
FUNCTION IRC_connect%: server$, nick$, channel$

        gIRC_sock% = SOCK_TCPCONNECT(server$, 6667)
        IF gIRC_sock%=-1
                STDOUT "Error - connect\n"
                STDOUT NETGETLASTERROR$()+"\n"

        LOCAL what$, sender$, text$
        gIRC_nick$ = nick$
        gIRC_channel$ = channel$
        gIRC_server$ = server$

//      SOCK_TCPSEND(gIRC_sock%, "PASS *\r\n")
        SOCK_TCPSEND(gIRC_sock%, "NICK " + nick$+"\r\n")
        IRC_recv(what$, sender$, text$)
        SLEEP 2000
        IRC_recv(what$, sender$, text$)
        SOCK_TCPSEND(gIRC_sock%, "USER " + nick$+" 8 * :"+nick$+" v1.0 (\r\n")
        IRC_recv(what$, sender$, text$)

        STDOUT "**** JOIN *****\n"
        IRC_recv(what$, sender$, text$)

//      SOCK_TCPSEND(gIRC_sock%, "QUIT\r\n")

//      SOCK_TCPSEND(gIRC_sock%, "PRIVMSG NickServ register password\r\n")

        SOCK_TCPSEND(gIRC_sock%, "JOIN #"+channel$+"\r\n")

        STDOUT "**** reading *****\n"


FUNCTION IRC_send%: text$

        SOCK_TCPSEND(gIRC_sock%, "PRIVMSG #"+gIRC_channel$+" :"+text$+"\r\n")


FUNCTION IRC_parse%: BYREF msg$, BYREF what$, BYREF sender$, BYREF text$
        LOCAL cmd$ = LEFT$(msg$, 4)
        IF cmd$ = "PING"
                STDOUT "pong:"+MID$(msg$, 5)+"\n"
                SOCK_TCPSEND(gIRC_sock%, "PONG "+MID$(msg$, 5) + "\r\n")

// message
// :KungPhoo! PRIVMSG #glbasic :test

// private message
// :KungPhoo! NOTICE Chatbot :xxx

// KunhPhoo joined
// :KungPhoo! JOIN #glbasic

// KungPhoo left
// :KungPhoo! PART #glbasic

// Chatbot quit
// :Chatbot! QUIT :Ping timeout: 268 seconds

// KungPhoo kicked Chatbot
// :KungPhoo5! KICK #MinionsDomain Chatbot :KungPhoo5

// Excess flooding:
// ERROR :Closing Link: Chatbot by (Excess Flood)

        IF LEN(msg$)
                LOCAL tok$[]
                SPLITSTR(msg$, tok$[], " ")
                IF LEN(tok$[]) > 2
                        LOCAL who$[]
                        SPLITSTR(tok$[0], who$[], ":!")
                        IF LEN(who$[]) THEN sender$ = who$[0]
                        LOCAL pos% = INSTR(msg$, ":", 1) + 1
                        // Message
                        IF tok$[1] = "PRIVMSG"
                                what$ = "MSG"
                                text$ = MID$(msg$, pos)
                                RETURN TRUE

                        // whisper
                        IF tok$[1] = "NOTICE"
                                what$ = "NOTICE"
                                text$ = MID$(msg$, pos)
                                IF sender$ = gIRC_server$
                                        STDOUT "Msg from server: "+msg$+"\n"
                                        RETURN FALSE // skip them
                                RETURN TRUE
                        IF tok$[1] = "JOIN"
                                what$ = "JOIN"
                                text$ = MID$(msg$, pos)
                                RETURN TRUE
                        IF tok$[1] = "KICK" AND LEN(tok$[])>3 AND tok$[3]=gIRC_nick$
                                STDOUT "*** got kicked ***\n"
                                sender$ = gIRC_nick$

                        IF tok$[1] = "PART" OR tok$[1] = "QUIT"
                                what$ = "QUIT"
                                IF sender$ = gIRC_nick$
                                        STDOUT "*** RECONNECT ***\n"
                                        SOCK_TCPSEND(gIRC_sock%, "JOIN #"+gIRC_channel$+"\r\n")
                                RETURN TRUE


FUNCTION IRC_recv%: BYREF what$, BYREF sender$, BYREF text$


        IF gIRC_sock% =-1 THEN RETURN FALSE
        STATIC msg$
        SOCK_RECV(gIRC_sock%, msg$, 8*1024)

        LOCAL rv% = FALSE
        LOCAL tok$[]
        SPLITSTR(msg$, tok$[], "\r\n")
        FOREACH t$ IN tok$[]
                IF IRC_parse(t$, what$, sender$, text$)
                        STDOUT t$+"\n"
        RETURN rv%


Off Topic / MSPaint 3D
« on: 2016-Oct-27 »
You read right. MSPaint gets an update so you can make 3D objects.
Please post some news here when you have a preview version. Especially the file format is interesting.

Show Off / GigaMan
« on: 2016-Oct-01 »
This little jump&run is a port of one of my old Amiga games I wrote back in the 90s.
It's to show what the new version of GACK will be able to produce.

Announcements / Update
« on: 2016-Aug-17 »
This fixes the libPNG issue for the play store and also brings support for IPv6.

Excellent. Can you send me the changes made to the GLBasic code? I found you have a new function: float AndroidFloatCode(int skey)
Where do you use it?

Also, I can't seem to load some resources. And I don't seem to be able to write to DOCUMENTS (Android 6.0 here).

I get:
07-20 21:53:15.807 13711 13739 I glbasic : /data/data/com.glbasic.gacknonfree/files/Media/projects/version.txt
07-20 21:53:15.807 13711 13739 I glbasic : /storage/emulated/0/Documents/GACK/version.txt

Code Snippets / Wildcard string compare/search
« on: 2016-Apr-22 »
Code: GLBasic [Select]

LOCAL pp% = WildcardTextCompare("abcdefg", "*d*g*") // returns "3" -> where the "d" is

// case sensitive!
IMPORT int WildcardTextCompare(const char*, const char*)

// #NEED find first non* character match
// This function compares text strings, one of which can have wildcards ('*').
// GF: improved version
// returns 0..x -> position of first non wildcard character
//         -1   -> no match
int WildcardTextCompare(
        const char* pTameText,             // A string without wildcards
        const char* pWildText              // A (potentially) corresponding string with wildcards
        const char* pOrigTame=pTameText;
        const char* pFirstMatch=NULL;
        int bMatch = TRUE;
        const char* pAfterLastWild = NULL; // The location after the last '*', if we’ve encountered one
        const char* pAfterLastTame = NULL; // The location in the tame string, from which we started after last wildcard
        char t, w;

        // Walk the text strings one character at a time.
                t = *pTameText;
                w = *pWildText;

                // How do you match a unique text string?
                if (!t)
                        // Easy: unique up on it!
                        if (!w)
                                break;                                   // "x" matches "x"
                        else if (w == '*')
                                continue;                           // "x*" matches "x" or "xy"
                        else if (pAfterLastTame)
                                if (!(*pAfterLastTame))
                                        bMatch = FALSE;
                                pTameText = pAfterLastTame++;
                                pWildText = pAfterLastWild;

                        bMatch = FALSE;
                        break;                                           // "x" doesn't match "xy"
                        if(!pFirstMatch && w==t)
                                pFirstMatch = pTameText;
                        // How do you match a tame text string?
                        if (t != w)
                                // The tame way: unique up on it!
                                if (w == '*')
                                        pAfterLastWild = ++pWildText;
                                        pAfterLastTame = pTameText;
                                        w = *pWildText;

                                        if (!w )
                                                break;                           // "*" matches "x"
                                        continue;                           // "*y" matches "xy"
                                else if (pAfterLastWild)
                                        if (pAfterLastWild != pWildText)
                                                pWildText = pAfterLastWild;

                                                w = *pWildText;

                                                if (t == w)
                                        continue;                           // "*sip*" matches "mississippi"
                                        bMatch = FALSE;
                                        break;                                   // "x" doesn't match "y"


                        return (int)(pFirstMatch-pOrigTame); // return position of first match
                return 0; // match at first character
        return -1; // no match


Announcements / GLBasic V14
« on: 2015-Aug-13 »
The cleanup process is coninuing. The new v14 will be the next platform that will get long-time support.
This time the setup only contains the Win32 compilers, but with all headers. You can get the platform packages, that YOU need.
Each of the packages is able to compile the GLBasic source code, thus it's easy to start adding new platforms if you dare or help me fix problems.

The folder structure is a lot clearer now, I think you get the idea easily.

The news:
PRESCALER (read the manual) offers you a way to bring your Caanoo games to Android with one line of code: PRESCALER 320,240 // done!

Also for TYPEs, each TYPE has a function dbg(), that uses DEBUG to print all type variables.

Furthermore, I fixed a few bugs. Also for v12! Get the update if you don't want to try v14.

GLBasic - en / Windows 8 / Multitouch
« on: 2015-Jun-12 »

does this work? It works for mouse input. I don't have a Win8 tabalet with touchscreen.

Off Topic / Amiga disc to adf
« on: 2015-Feb-21 »
at mom's attic, I found a bunch of old Amiga discs with games I once programmed. Does anyone here have the tools to create disk file or copy the data to a PC? It's about 10 discs that are of interest.

Gesendet von meinem GT-N7100 mit Tapatalk

Off Topic / A Christmas present!
« on: 2014-Dec-25 »
How’s things? Did you get all your presents? I hope so for you.
But there’s one present you did not open. It’s not wrapped nicely, but it’s the one that you that shines more than any other. It’s the “Christmas“ gift.
If you think about the “Christmas” story – god became man - you might wonder “Why would he?”. And that is the right question to ask. Why would an almighty, above-all god want to become human like us? The rich one get poor, the high get low, the infinite get limited? The answer is found in the end of his human life.
God describes Himself as a “holy God”, that is clean and without sin. And as such, there can’t be any sin in His presence. Which is a problem, because I am a sinner? There are many things in my life that are not correct and I know that. I don’t know you, but God told us in Rom:3,23 that “there is no difference, all have sinned”. And this sin is a gap between God and us. This gap, however, was closed when Jesus Christ came and paid for our sins. The innocent had himself punished for the guilty, the immortal died for the mortal.
It’s a gift. It’s for free. It promises freedom from fear of “what comes next?” and restores the broken community with God.
“His name shall be called Wonderful, Counselor, The mighty God, The everlasting Father, The Prince of Peace” (Isaiah 9:6)
That’s what’s inside the “box”. It’s there for you, waiting to be opened.
And it’s just one prayer away. Get into a lockable room, tell Him where your life went wrong and take the promise that it has been paid for. Take peace for good.
You might have a hard time – break up, got unemployed, a disease. I can’t promise you a change. But I experienced peace and freedom in getting Jesus as my saviour. A good counsellor in all situations. He never let me alone. A friend. A loving and caring father.

Beta Tests / Fire TV
« on: 2014-Oct-01 »
It seems the remote control can be polled with KEY ()
Did anyone try that, yet?

Gesendet von meinem GT-N7100 mit Tapatalk

Off Topic / Google Wallet Trouble
« on: 2014-Sep-06 »
My Google Wallet account silently got put on hold. I can't sell Apps on Google Play since.

Google wrote:


Thank you for your continuing cooperation in our verification process. Unfortunately, we are still unable to verify some of the information you provided.

In order to continue the process, please send us a clear copy of a driver's license or a passport information page of "Gernot Frisch ".

Be assured that Google is committed to preserving the security of your information and will not share your details with anyone except under the very limited circumstances described in our Privacy Policy.

You can find our privacy policy at

If you have any additional questions, please feel free to respond to this message.


The Google Wallet Team

I replied:

the google wallet account agreement I signed when I started selling apps on Google Play Store did not require me to upload a passport image. I consider this information that is not required in order to get my account off hold. Can you please tell me any alternatives and the details why my account was put on hold, please?

With kind regards,
-Gernot Frisch


Thank you for contacting us. The email you received was legitimate and relates to Google's obligations under UK and European law.

We appreciate your concern about security; please be assured that the security of your information is our top priority. We will not share your details except under the extremely limited circumstances set out in our privacy policy.

For more information regarding our Privacy Policy, please see

Should you have any feedback, queries, or concerns, please don't hesitate to reply to this email.

Warmest Regards,


my questions were:
-Why did you put my account on hold?
-What can I do to get it back, since you will not get a copy of my passport or drivers licence?

I'm looking forward to your answers.

Best regards,
-Gernot Frisch


Thanks for your email.

Please note that Google wallet randomly checks the merchant details in order to provide secure shopping environment. Whenever merchants make use of certain Google Wallet features, Google Payment Corp. is required by financial regulations to obtain, verify, and record information that identifies each person who uses this service.

Kindly note that unless we receive the requested documents we will not be able to reinstate the account.

So, what now?
I started selling G.A.C.K. on Amazon now and consider the Samsung store, too.

Gesendet von meinem GT-N7100 mit Tapatalk

Announcements / V12 Release
« on: 2014-Jan-29 »
V12 is now officially released. I also packed a new adb.exe that can deal with the new security settings in Android 4.2.2+.
I want to encourage you to adjust any libs to work together with V12 now.

Off Topic / BitCoin payments
« on: 2013-Nov-22 »
Everyone talks about bitcoins. So it seems.
But - is there a market for that? Would people use bitcoins to buy software?

What are your toughts about this new currency?

Pages: 1 [2] 3 4 ... 37