Difference between revisions of "User talk:Perry Mizin"

From Second Life Wiki
Jump to navigation Jump to search
Line 177: Line 177:
     isMaster = newMaster;
     isMaster = newMaster;
     llMessageLinked(LINK_THIS, 34829304, (string)isMaster, "");
     llMessageLinked(LINK_THIS, 34829304, (string)isMaster, "");
}
</lsl>
string checkLanguage()
<lsl>
string checkLanguage(string tempString)
{
    if (llGetSubString(tempString, 0, 1) == "zh")
    {
        tempString = "zh-CN";
    }
    else if (tempString == "und")
    {
        tempString = "el";
    }
    else if (llListFindList(languageCodes, [tempString]) == -1)
    {
        tempString = "";
    }
    tempString = llGetSubString(tempString, 0, 1);
    return tempString;
}
</lsl>
addAgent()
<lsl>
addAgent(key id, string language, integer recheckLangauge)
{
    integer listPos;
    integer listPosID;
    integer idNum;
    string  tempString;
    if (llListFindList(agentsInTranslation,[id]) == -1)
    {
        @at;
        idNum = llRound(llFrand(2000000)) + 1;
        if(~llListFindList(agentsInTranslation, (list)idNum))
        {//it exists     
            jump at;
        }
        agentsInTranslation = (agentsInTranslation=[]) + agentsInTranslation + [id, language, recheckLangauge, idNum];
        llMessageLinked(LINK_THIS, 64562349, language, id);
    }
    else
    {
        listPos = llListFindList(agentsInTranslation, [id]);
        agentsInTranslation = llListReplaceList(agentsInTranslation, [language, recheckLangauge], listPos + 1, listPos + 2);
    }
}
</lsl>
string addNewAgent()
<lsl>
string addNewAgent(key id)
{
    string speakerLanguage;
    if (llGetAgentSize(id) != ZERO_VECTOR)
    {
        speakerLanguage  = checkLanguage(llGetAgentLanguage(id));
        if (speakerLanguage == "")
        {
            speakerLanguage = "en";
            addAgent(id, speakerLanguage, TRUE);
        }
        else
        {
            addAgent(id, speakerLanguage, FALSE);
        }
    }
    return speakerLanguage;
}
</lsl>
key getAgentKey()
<ls>
key getAgentKey(integer agentID)
{
    if(~llListFindList(agentsInTranslation, (list)agentID))
    {
        integer gklistPos = llListFindList(agentsInTranslation, [agentID]);
        return llList2Key(agentsInTranslation, gklistPos - 3);
    }
    else
    {
        return "";
    }
}
}
</lsl>
</lsl>

Revision as of 02:17, 14 December 2009

Bienvenid@

Hola, soy Perry Mizin y este será mi humilde intento de contribucion al proyecto "Traductor Universal de Google" creado por Hank Ramos.

El siguiente codigo fué originalmente creado por Hank Ramos, empezaré modificando algunas funciones a mi manera... No os riais

Welcome

Hello, I am Perry Mizin and this will be my humble try to contribute with the project "Universal Google Translator" created by Hank Ramos.

The next code was originally created by Hank Ramos, I will start modifiying some functions on my way... Don´t laugh


THE CODE BELOW IS NOT TESTED

txTxtLot() = sendTextBatch() <lsl> txTxtLot(integer txch, string txtxt) {

   txtxt = llXorBase64StringsCorrect(llStringToBase64(txtxt), llStringToBase64(password));
   while (llStringLength(txtxt) > 508) //If string is 509 characters or longer 
   {
       llSay(txch, llGetSubString(txtxt, 0, 507)); //send 508 character chunk
       txtxt = llGetSubString(txtxt, 508, -1);  //delete 508 character chunk
   }
   llSay(txch, txtxt);  //send out any remainder chunk or original chunk
   //Perry Mizin Comment: I don´t understand the aim of the following if.    
   //Hank Ramos Comment: this line serves to "trigger" the receiver not to wait for another batch.  If the
   //message length is exactly 508 characters, the receiver things that another chunk of the message is coming.
   //This message serves to tell the receiver that the last chunk was the last chunk, not another regular chunk.
   if (llStringLength(txtxt) == 508)
       llSay(txch, (string)(txch*4958654));
   //Hank Ramos Comment: this just flashes the color of the bottom prim to show a message was sent
   llMessageLinked(LINK_ALL_CHILDREN, 6634934, (string)<0.25, 0, 0.25>, ""); 

} </lsl>


string rxTxtLot() = string receiveTextBatch() <lsl> string rxTxtLot(key rxid, string rxmsg) {

   integer rxliPos;
   string  rxtmpStr = "";
   while (~llListFindList(sayCache, (list)rxid))
   {
       rxliPos = llListFindList(sayCache, [rxid]);
       rxtmpStr = (rxtmpStr="") + rxtmpStr + llList2String(sayCache, rxliPos + 1);
       sayCache = llDeleteSubList(sayCache, rxliPos, rxliPos + 1);
   }
   rxmsg = rxtmpStr + rxmsg;
   rxmsg = llBase64ToString(llXorBase64StringsCorrect(rxmsg, llStringToBase64(password)));
   return rxmsg;

}


integer rxTxtLotBusy = FALSE; //Perry Mizin: added Busy Mode, this could fail or prevent fail string rxTxtLot(key rxid, string rxmsg) {

   if (rxTxtLotBusy == FALSE)
   {
       rxTxtLotBusy = TRUE;
       integer rxliPos;
       string  rxtmpStr = "";
       if(~llListFindList(sayCache, (list)rxid))
       {
           @rxin;
           rxliPos = llListFindList(sayCache, [rxid]);
           rxtmpStr = (rxtmpStr="") + rxtmpStr + llList2String(sayCache, rxliPos + 1);
           sayCache = llDeleteSubList(sayCache, rxliPos, rxliPos + 1);
           if(~llListFindList(sayCache, (list)rxid))
           {
                jump rxin;
           }
       }
       rxmsg = rxtmpStr + rxmsg;
       rxmsg = llBase64ToString(llXorBase64StringsCorrect(rxmsg, llStringToBase64(password)));
       rxTxtLotBusy = FALSE;
       return rxmsg;
   }
   else
   {
       //Perry Mizin: llSaySomething?
       return "";        
   }

} </lsl>


string rxTxtLotPrv() = string receiveTextBatchPrivate() <lsl> string rxTxtLotPrv(key prxid, string prxmsg) {

   integer prxliPos;
   string  prxtmpStr = "";
   while (~llListFindList(sayCachePrivate, (list)prxid))
   {
       prxliPos = llListFindList(sayCachePrivate, [prxid]);
       prxtmpStr = (prxtmpStr="") + prxtmpStr + llList2String(sayCachePrivate, prxliPos + 1);
       sayCachePrivate = llDeleteSubList(sayCachePrivate, prxliPos, prxliPos + 1);
   }
   prxmsg = prxtmpStr + prxmsg;
   prxmsg = llBase64ToString(llXorBase64StringsCorrect(prxmsg, llStringToBase64(password)));
   return prxmsg;

} </lsl>

updateTranslatorList() <lsl> updateTranslatorList() {

   integer nx;
   integer xliLng;
   list    newList;
   string  tmpStrPos;
   integer newMaster;
   //Scan and remove translators not in the area
   xliLng = llGetListLength(translators);
   for (nx = 0; nx < xliLng; nx += 2)
   {
       tmpStrPos = llList2String(llGetObjectDetails(llList2Key(translators, nx + 1), [OBJECT_POS]), 0);
       if ((llVecDist(llGetPos(), (vector)tmpStrPos) <= 20.0) && (tmpStrPos != ""))
       {
           newList = (newList=[]) + newList +  llList2List(translators, nx, nx + 1);
       }
   }
   translators = newList;

// llMessageLinked(LINK_THIS, 65635544, (string)xliLng, ""); //Perry Mizin: what is this necesary for?

   if (translators == [])
   {
       newMaster = 1;
   }
   else
   {
       if (enabled)
       {
           xliLng = llGetListLength(translators);
           newMaster = 2;
           for (nx = 0; nx < xliLng; nx += 2)
           {
               //llOwnerSay("Checking Priority Number(" +  (string)priorityNumber + "): " + (string)llList2Integer(translators, x));
               if (llList2Integer(translators, nx) > priorityNumber)
               {
                   newMaster = 0;
               }
           }
       }
       else
       {
           newMaster = 0;
       }
   }
   if ((isMaster > 0) && (newMaster == 0))
   {
       //We are being demoted from master to slave
       //Flush agentsInTranslation to master
       if (agentsInTranslation != [])
       {
           //Demotion Dump of agentsInTranslation to Master
           txTxtLot(broadcastChannel, llList2CSV([1003, llList2CSV(agentsInTranslation)]));
           if (isInitialized == FALSE)
           {
               return;
           }
           txTxtLot(broadcastChannel, llList2CSV([1004, options])); //error
       }
       llListenRemove(listenID);
   }
   if ((isMaster == 0) && (newMaster > 0))
   {
       llListenRemove(listenID);
       listenID = llListen(0, "", "", ""); 
   }
   isMaster = newMaster;
   llMessageLinked(LINK_THIS, 34829304, (string)isMaster, "");

} </lsl>

string checkLanguage() <lsl> string checkLanguage(string tempString) {

   if (llGetSubString(tempString, 0, 1) == "zh")
   {
       tempString = "zh-CN";
   }
   else if (tempString == "und")
   {
       tempString = "el";
   }
   else if (llListFindList(languageCodes, [tempString]) == -1)
   {
       tempString = "";
   }
   tempString = llGetSubString(tempString, 0, 1);
   return tempString;

} </lsl>

addAgent() <lsl> addAgent(key id, string language, integer recheckLangauge) {

   integer listPos;
   integer listPosID;
   integer idNum;
   string  tempString;

   if (llListFindList(agentsInTranslation,[id]) == -1)
   {
       @at;
       idNum = llRound(llFrand(2000000)) + 1;
       if(~llListFindList(agentsInTranslation, (list)idNum))
       {//it exists       
           jump at;
       }
       agentsInTranslation = (agentsInTranslation=[]) + agentsInTranslation + [id, language, recheckLangauge, idNum];
       llMessageLinked(LINK_THIS, 64562349, language, id);
   }
   else
   {
       listPos = llListFindList(agentsInTranslation, [id]);
       agentsInTranslation = llListReplaceList(agentsInTranslation, [language, recheckLangauge], listPos + 1, listPos + 2);
   }

} </lsl>

string addNewAgent() <lsl> string addNewAgent(key id) {

   string speakerLanguage;

   if (llGetAgentSize(id) != ZERO_VECTOR)
   {
       speakerLanguage  = checkLanguage(llGetAgentLanguage(id));
       if (speakerLanguage == "")
       {
           speakerLanguage = "en";
           addAgent(id, speakerLanguage, TRUE);
       }
       else
       {
           addAgent(id, speakerLanguage, FALSE);
       }
   }
   return speakerLanguage;

} </lsl>

key getAgentKey() <ls> key getAgentKey(integer agentID) {

   if(~llListFindList(agentsInTranslation, (list)agentID))
   {
       integer gklistPos = llListFindList(agentsInTranslation, [agentID]);
       return llList2Key(agentsInTranslation, gklistPos - 3);
   }
   else
   {
       return "";
   }

} </lsl>