Shoutbox

Problems with ChatWnd - Printable Version

-Shoutbox (https://shoutbox.menthix.net)
+-- Forum: MsgHelp Archive (/forumdisplay.php?fid=58)
+--- Forum: Messenger Plus! for Live Messenger (/forumdisplay.php?fid=4)
+---- Forum: Scripting (/forumdisplay.php?fid=39)
+----- Thread: Problems with ChatWnd (/showthread.php?tid=71929)

Problems with ChatWnd by neocon on 02-19-2007 at 06:48 PM

Hello fellas, I am trying to design a simple program that will encrypt a message on input and send the encrypted through msn. Alright, it works like this so far. When you type /Crypto you enable the encryption-machine, then you type whatever you want and when you eventually want to go back to normal you type /ExitCrypto. Alright, I am new to JScript and well I've got a few problems, I managed to make it work partially, however it doesn't really send the right message. I've written this program in C and it works perfectly so the algorithm is definitely not a problem. I will be glad if you guys can be of any help, thanks a bunch in advance

code:
var flag = new Boolean();
var CryptoTable = [], i = 8;

function OnEvent_Initialize(MessengerStart) {
    Debug.trace("Crypto Script v0.1 started.");
    parseIntoTable();
    flag = false;
}

function OnEvent_Uninitialize(MessengerExit) {
    Debug.trace("Crypto Script v0.1 terminated.");
}

function OnEvent_ChatWndSendMessage(ChatWnd, Message) {
    if(Message == "/Crypto") {
        flag = true;
        return "";
    }
   
    if(Message == "/ExitCrypto") {
        flag = false;
        return "";
    }
   
    if(flag) {
        var i = 0;
        var mesg = Message;
        var outString = "";
       
        while(i < Message.length) {
            if(mesg.charAt( i ) == ' ') {
                outString = outString + "#";
                i++;
                continue;
            }
            for(var x = 0; x < 8; x++) {
                for(var y = 0; y < 4; y++) {
                    if(CryptoTable[x][y] == mesg.charAt( i )) {
                        for(var z = 0; z < y + 1; z++) {
                            var send = x + 2;
                            outString = outString + send;
                        }
                    }
                }
            }
            if( ((i+1) != Message.length) && (mesg.charAt(i+1) != ' ') ) {
                outString = outString + "*";
            }
            i++;
        }
        ChatWnd.SendMessage(outString);
        return "";
    }
   
    return Message;
}

function parseIntoTable() {
    Debug.trace("parseIntoTable() called");
    do
        CryptoTable.push([]);
    while(0 < --i);
   
    CryptoTable[0] = ['A', 'B', 'C', -1 ];
    CryptoTable[1] = ['D', 'E', 'F', -1 ];
    CryptoTable[2] = ['G', 'H', 'I', -1 ];
    CryptoTable[3] = ['J', 'K', 'L', -1 ];
    CryptoTable[4] = ['M', 'N', 'O', -1 ];
    CryptoTable[5] = ['P', 'Q', 'R', 'S'];
    CryptoTable[6] = ['T', 'U', 'V', -1 ];
    CryptoTable[7] = ['W', 'X', 'Y', 'Z'];
}


C function
code:
void encrypt(char *mesg) {

    int i = 0;

    for(int x = 0; mesg[x] != '\0'; x++)
        mesg[x] = toupper(mesg[x]);

    while(mesg[i] != '\0') {
        if(mesg[i] == ' ') {
            cout << "#";
            i++;
            continue;
        }
        for(int x = 0; x < 8; x++) {
            for(int y = 0; y < 4; y++) {
                if(CryptoTable[x][y] == mesg[i]) {
                    for(int z = 0; z < y + 1; z++) {
                        cout  << (x+2);
                    }
                }
            }
        }
        if((mesg[i+1] != '\0') && (mesg[i+1] != ' ') )
            cout << "*";
        i++;
    }

}


RE: Problems with ChatWnd by Patchou on 02-20-2007 at 04:01 AM

if(Message == "/Crypto") {
        flag = true;
        return "";
    }

.. why the return statement here? the rest of your funciton is never executed! :)

Also, replace the last:
        ChatWnd.SendMessage(outString);
        return "";
by
        return outString;


RE: RE: Problems with ChatWnd by vikke on 02-20-2007 at 07:57 AM

quote:
Originally posted by Patchou
if(Message == "/Crypto") {
        flag = true;
        return "";
    }

.. why the return statement here? the rest of your funciton is never executed! :)

Well.. It is executed, if the message isn't "/Crypto" or "/CryptoExit" and "Crypto" is enabled.


RE: Problems with ChatWnd by neocon on 02-20-2007 at 05:06 PM

Well, I used the return statement there so that when the user types /Crypto, it will not send the message itself but just enable the encryption thing. Well it seems that the return outString; is what I needed, even though it doesn't work yet but that is because I probably made a mistake in the algorithm which I am about to correct right now. Thanks for the help :-)


Edit: So guys, yes it works :-)

the code here for anyone who is interested :D

code:
var flag = new Boolean();
var CryptoTable = [], i = 8;

function OnEvent_Initialize(MessengerStart)
{
    Debug.trace("Crypto Script v0.1 started.");
    parseIntoTable();
    flag = false;
}

function OnEvent_Uninitialize(MessengerExit)
{
    Debug.trace("Crypto Script v0.1 terminated.");
}

function OnEvent_ChatWndSendMessage(ChatWnd, Message)
{   
    if(Message == "/Crypto") {
        flag = true;
        return "";
    }
   
    if(Message == "/ExitCrypto") {
        flag = false;
        return "";
    }
   
    if(flag) {
        var i = 0;
        var mesg = Message;
        var outString = "";
       
        while(i < Message.length) {
            if(mesg.charAt( i ) == " ") {
                outString = outString + "#";
                i++;
                continue;
            }
            for(var x = 0; x < 8; x++) {
                for(var y = 0; y < 4; y++) {
                    if(CryptoTable[x][y] == mesg.charAt( i )) {
                        for(var z = 0; z < y + 1; z++) {
                            var send = (x + 2);
                            outString = outString + send;
                        }
                    }
                }
            }
            if( ((i+1) != Message.length) && (mesg.charAt(i+1) != ' ') ) {
                outString = outString + "*";
            }
            i++;
        }
        return outString;
    }
   
    return Message;
}

function parseIntoTable() {
        Debug.trace("parseIntoTable() called");
        do
            CryptoTable.push([]);
        while(0 < --i);
       
        CryptoTable[0] = ['A', 'B', 'C', -1 ];
        CryptoTable[1] = ['D', 'E', 'F', -1 ];
        CryptoTable[2] = ['G', 'H', 'I', -1 ];
        CryptoTable[3] = ['J', 'K', 'L', -1 ];
        CryptoTable[4] = ['M', 'N', 'O', -1 ];
        CryptoTable[5] = ['P', 'Q', 'R', 'S'];
        CryptoTable[6] = ['T', 'U', 'V', -1 ];
        CryptoTable[7] = ['W', 'X', 'Y', 'Z'];
}