User talk:Perry Mizin: Difference between revisions
Perry Mizin (talk | contribs) |
Perry Mizin (talk | contribs) |
||
| Line 106: | Line 106: | ||
prxmsg = llBase64ToString(llXorBase64StringsCorrect(prxmsg, llStringToBase64(password))); | prxmsg = llBase64ToString(llXorBase64StringsCorrect(prxmsg, llStringToBase64(password))); | ||
return prxmsg; | 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> | </lsl> | ||
Revision as of 01:54, 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>