Jump to content

JJValero Writer

Resident
  • Posts

    61
  • Joined

  • Last visited

Everything posted by JJValero Writer

  1. A nivel de tiendas hace unos 14 o 15 años había una región donde ofrecían ese servicio. Les enviabas una foto y te hacían el avatar con tu cara. Eso si, se trataba de avatares estilo clásico. Pero cerraron por falta de suficientes clientes. ¿Quién querría tener un avatar con su cara pudiendo ser guapo? 🙂 🙂 🙂 🙂
  2. Although I am aware that many users distrust this solution, I think it is the best possible one. My argument is that network vendors are not a product, they are a service. When you buy a networked vendor, be it from Casper or from any other creator, it is providing you with a free service. This free service is the maintenance of servers, backup, technical support, ... This service is not free for the creators who provide it, and I gather that a service that handles over a million transactions in a single day consumes a lot of bandwidth. Hosting is not exactly cheap. This is a fixed cost that must be paid month by month. At first, when there are few users, there are more benefits than costs that are covered by vendor sales. But if the number of users continues to grow and especially if the number of new buyers decreases, there may come a time when the benefits are significantly reduced and may even be lower than the costs. That is why in a short time the creators are forced to create new products and addons. HippoTech "got its fingers caught" and had to close down. But it is not the only one since there are other less well-known systems such as AeonVox or E2V that also "got their fingers caught". I don't know if CasperTech is above or below the line where it still makes a profit. But in the long term it is inevitable that this business model will be unviable. There are only two solutions, either a subscription system or the purchase of the system by LL. If the subscription system is adopted, many users will switch to other systems and the sword of damocles will continue to threaten to fall just as HippoTech did. That is why I say that the solution that has been adopted is better.
  3. Something has gone wrong in the latest updates/reboots. I see problems when crossing the sim and when trying to do a teleport Now i am in "Blake Sea - Cattewater". When I try to cross to another region it is hell. I lose control of the avatar until I lose connection with SL. When trying to reconnect I have to do several retries because my avatar remains in ghost mode for several minutes. I have had problems with various regions in the area, as well as various regions south of Barbarossa. Too i have lost several boats that for some reason have not been returned.
  4. In same sites like the region Barbarossa or same sandbox there are grieffers using Keyframe attacks. Those attacks are able to enter in "no entry" parcels. Due those attacks are not detected by the SL client or Firestorm i created this script. Create a little orb and put the script inside and add to your avatar. default { state_entry() { } attach(key id) { if (id == NULL_KEY) { if (llGetPermissions() & PERMISSION_TAKE_CONTROLS) { llReleaseControls(); llSetTimerEvent(0.0); } } else { llRequestPermissions(id, PERMISSION_TAKE_CONTROLS); } } run_time_permissions(integer perm) { if (perm & PERMISSION_TAKE_CONTROLS) { llTakeControls( CONTROL_ML_LBUTTON , TRUE, TRUE); } } control(key id, integer level, integer edge) { } collision_start(integer num) { integer cnt; for (cnt = 0; cnt < num; cnt++) { integer type = llDetectedType(cnt); string name = llDetectedName(cnt); string ownerId = llDetectedOwner(cnt); key kObject = llDetectedKey(cnt); list lResults = llGetObjectDetails(kObject, [ OBJECT_PHYSICS ]); if ((type & (ACTIVE | SCRIPTED) ) != 0) { integer bIsPhysical = llList2Integer(lResults, 0); if (bIsPhysical == FALSE) { float fVel = llVecMag(llDetectedVel(cnt)); // Can be a NPV, frame Orbiter, frame pusher, elevator, .... if (fVel > 30.0) { llOwnerSay("keyframe : '" + name + "' Speed: '" + (string) fVel + "' Owner: secondlife:///app/agent/" + ownerId + "/about"); } // if } } } } collision_end(integer num) { } }
  5. I use those two functions: string float2Str(float in) { return (string)((integer)in) + "." + (string)((integer)((in - (integer)in) * 100)); } string vector2Str(vector v) { return "<" + float2Str(v.x) + ", " + float2Str(v.y) + ", " + float2Str(v.z) + ">"; } default { state_entry() { } touch_start(integer total_number) { vector v = <215.7509, 235.845750, 4001.50356>; llOwnerSay((string) v + " ======= " + vector2Str(v)); } }
  6. My doubt is a bit difficult to formulate. First I need to explain which point of the GDPR is the one that confuses me. GDPR is a European law that prohibits having personal data of users if it is not strictly necessary to maintain this data and requires that they have a strong security so that they do not fall into the wrong hands. Also, there has to be a mechanism whereby any user can request from the company that maintains the database what they know about him. This law not only affects European companies but also companies from outside Europe that have European users. It seems that they are a bit strict and consider personal data such things as IP address and user names. Initially if a script, for example a voting system or a visitor counter stores names within that script, it would not be breaking that law because the data never comes out of SecondLife. I remember that a few years ago there was a freebie visit counter that used an external database to remind visitors when was the last visit. I also remember external Name2Key databases to get the UUID of a secondlife user from their name. There are also collective ban systems in such a way that if a user is banned from an island it is also banned from all other islands that use that system. There were also avatars lists to avoid content theft through xploits. For example when anyone wear a stolen copy of QHUD it shouts "This HUD is stolen" and the name of avatar is added in a database. Those type of external database could be breaching the GDPR, although not necessarily, because it maintains a database with personal data. Apart from that, they should implement a mechanism in such a way that a user can request their personal data and even their deletion. My question is if instead of storing user names, I do a digest using an algorithm such as MD5 or SHA256 could be enough to avoid falling into illegality. Algorithms such as MD256 create a summary of the data provided. and it is not possible to retrieve the data provided from that summary. According to that, the database would be anonymous so it would be complying with the law. However, in the event that the database is stolen by a hacker, anyone knowing a name could apply the same algorithm and retrieve private data from a user. This is the reason for my doubt. Is SHA256 enough?
  7. I have confused forum, deleted. No delete option found.
  8. Resi, nothing of two. Only will report anyone sitted on a NPV with more of 1000 prims. Overfillers usually are NPV (Non Physical Vehicle) that can have a land impact above 20.000 Land Impact. A very popular one have exactly 100.000 LI and there are others of several millions. Usually overfillers are used in big sandboxes. Many times as a defence in order to avoid grieffers attacks, but a grieffer can use too an overfiller to disable the region for hours and hours. That is, it is a double-edged knife. Overfillers are like the sprays that were invented to prevent women being raped. But the rapists used them too. And they were removed from the market. ampliation Of course, if you are the owner of a sandbox you can use scripts using "llGetParcelPrimOwners()"
  9. Perhaps anytime, while you working in a sandbox you detected that are you unable to rez prims due anyone is overfilling the sandbox. This script shows who is overfilling the region. Create a prim with size <0.01000, 0.05000, 0.05000>, put the script inside and wear it as a HUD. If anyone overfill the sandbox HUD will become red color and send a message saying the name. This do not detect the conventional fillers or overfillers that do not need to sit on it. list g_lFillers; integer isOverFilled(vector vPos) { integer bResult = FALSE; integer iMaxPrimsT = llGetParcelMaxPrims(vPos, TRUE); integer iTotalRe = llGetParcelPrimCount(vPos, PARCEL_COUNT_TOTAL, TRUE); if (iTotalRe > iMaxPrimsT) { bResult = TRUE; } return bResult; } whoFilling(vector vPos) { integer iMaxPrims = llGetParcelMaxPrims(vPos, TRUE); list lAgents = llGetAgentList(AGENT_LIST_REGION, []); integer iMax = llGetListLength(lAgents); integer iCount; for (iCount = 0; iCount < iMax; iCount++) { key kAgent = llList2Key(lAgents, iCount); integer iAgentInfo = llGetAgentInfo(kAgent); list lDetails = llGetObjectDetails(kAgent, [OBJECT_ROOT, OBJECT_NAME]); key kObject = llList2Key(lDetails, 0); string sAvatar = llList2String(lDetails, 1); if (iAgentInfo & AGENT_ON_OBJECT) { if (kAgent != kObject) { list lObjDetails = llGetObjectDetails( kObject, [OBJECT_NAME, OBJECT_PRIM_EQUIVALENCE]); string sObjName = llList2String(lObjDetails, 0); integer iNPrims = llList2Integer(lObjDetails, 1); if (iNPrims > iMaxPrims) { if (llListFindList(g_lFillers, [ kAgent ]) == -1) { g_lFillers = g_lFillers + [ kAgent ]; llOwnerSay(sAvatar + " is overfilling the parcel."); } } else { integer iPos = llListFindList(g_lFillers, [ kAgent ]); if (iPos >= 0) { g_lFillers = llDeleteSubList(g_lFillers, iPos, iPos); llOwnerSay(sAvatar + " stopped overfill the parcel."); } } } } } } default { state_entry() { g_lFillers = []; llSetTimerEvent(2.0); } on_rez(integer start_param) { g_lFillers = []; } timer() { vector vPos = llGetPos(); if (isOverFilled(llGetPos()) == TRUE) { llSetColor(<1.0, 0.0, 0.0>, ALL_SIDES); whoFilling(vPos); } else { llSetColor(<0.0, 1.0, 0.0>, ALL_SIDES); if (llGetListLength(g_lFillers) > 0) { whoFilling(vPos); } } } changed(integer change) { if ((change & CHANGED_REGION) == CHANGED_REGION) { g_lFillers = []; } } }
  10. Hello, i trying to convert various linksets to mesh using the tool mesh studio. But it stop working for me. I tryed many diferent objects and from diferent simulators, same result. [13:52:58] Object: Mesh creation started It is as if the server were stopped Please, anyone with that tool can test if still working?
  11. Just what tittle says. This only work with food that dissapear when it is over. // Do not deed with group this script or you will not be able to make it work. // Unless if you remove owner detection in touch events. // Modify this constants as your needs. float TIME_TO_CHECK = 10.0; // Every how many seconds check if there are food. vector RELATIVE_POS = <0.0, 0.0, 0.25>; // Position relative to rezzer. integer WARNING_IF_LESS = 2; // Send IM to owner if there are less items in inventory. //----------------------------------------------------------------------------- // Do not modify below this line. Unless you know what are you doing. integer PARAM = 0; // Param to pass to the object to rezz. key gFoodRezzed; rezzFood() { llRezObject( llGetInventoryName(INVENTORY_OBJECT, 0), llGetPos() + RELATIVE_POS, ZERO_VECTOR, ZERO_ROTATION, PARAM); } // rezzFood default { state_entry() { gFoodRezzed = NULL_KEY; if (llGetInventoryNumber(INVENTORY_OBJECT) == 0) { llOwnerSay("No food in inventory. Please, put food in inventory and clickme."); state stopped; } else { state working; } // if } // state_entry } // default state stopped { state_entry() { } // state_entry on_rez(integer start_param) { llResetScript(); } // on_rez touch_start(integer total_number) { if (llDetectedKey(0) != llGetOwner()) { return; } // if if (llGetInventoryNumber(INVENTORY_OBJECT) == 0) { llOwnerSay("Please, put food in inventory and clickme again."); } else { state working; } // if } // touch_start // Bug around. This is needed. touch_end(integer total_number) { } // touch_end } // stopped state working { state_entry() { if (gFoodRezzed == NULL_KEY) { rezzFood(); } else { llSetTimerEvent(TIME_TO_CHECK); } // if } // state_entry state_exit() { llSetTimerEvent(0.0); } // state_exit on_rez(integer start_param) { llResetScript(); } // on_rez object_rez(key id) { gFoodRezzed = id; if (llGetInventoryNumber(INVENTORY_OBJECT) < WARNING_IF_LESS) { llInstantMessage(llGetOwner(), "Food is scarce."); } // if llSetTimerEvent(TIME_TO_CHECK); } // object_rez timer() { list lDetails = llGetObjectDetails(gFoodRezzed, [ OBJECT_POS ]); if (llGetListLength(lDetails) == 0) { llSetTimerEvent(0.0); if (llGetInventoryNumber(INVENTORY_OBJECT) == 0) { llInstantMessage(llGetOwner(), "The food is over."); state stopped; } else { rezzFood(); } // if } // if } // timer touch_start(integer total_number) { if (llDetectedKey(0) != llGetOwner()) { return; } // if llOwnerSay("Stopping. Touch me again to make horses happy."); state stopped; } // touch_start // Bug around. This is needed. touch_end(integer total_number) { } // touch_end } // working
  12. Son ataques. Hay varios tipos de ataques que derriban el SIM. Algunos provocan un rollback desconectando a todos los avatares y el sim está no disponible durante algunos minutos. Esto puede provocar problemas con las cajas de pago de las tiendas de alquiler. Pagas dos semanas de tier y al día siguiente la caja te dice que se ha acabado tu rental. También hay ataques que dejan el sim definitivamente tumbado durante horas o días hasta que alguien abre un ticket de soporte. Y en casos raros he visto ataques que hace que todfos los objetos del SIM sean retornados.
  13. I do not know the number of JIRA, but since ago several months there are an annoying bug that is being used by grieffers. The symptoms are: Not possible to rez objects. But it is possible to create new objects. Scripts in HUDs and attachements do not work. Huge lag. And i amazing, what is the status of that bug? Greetings
  14. This script return shouters to their owners. The main use is for malls. If a tenant rezz a lucky chair or any other object configured to shout, is returned. This script know if any object is shouting if their distance is more of 20 m. They must be placed at strategic distances, for example 30 m above the mall. If you are using this script in a place subsceptible of be attacked by grieffers, I recommend remove the line that starts with "llInstantMessage" near of the end of code. The code is this: key gkOwner = NULL_KEY; float RADIUS = 20.0; integer g_iReturnedObjects; integer g_iErrors; default { state_entry() { llSetMemoryLimit(4096 * 3); gkOwner = llGetOwner(); list lDetails = llGetParcelDetails(llGetPos(), [ PARCEL_DETAILS_OWNER, PARCEL_DETAILS_GROUP]); key kParcelOwner = llList2Key(lDetails, 0); key kParcelGroup = llList2Key(lDetails, 1); if (kParcelOwner == gkOwner) { state GetPermissions; } else if (kParcelOwner == kParcelGroup) { llOwnerSay("Parcel is deeded to a group, you must deed this object in order to work."); } else { llOwnerSay("I can not work here, you are not the owner of this land."); } } on_rez(integer start_param) { llResetScript(); } changed(integer change) { if ((change & CHANGED_OWNER) == CHANGED_OWNER) { key kNewOwner = llGetOwner(); list lDetails = llGetParcelDetails(llGetPos(), [ PARCEL_DETAILS_OWNER, PARCEL_DETAILS_GROUP]); key kParcelOwner = llList2Key(lDetails, 0); key kParcelGroup = llList2Key(lDetails, 1); if (kNewOwner == kParcelGroup) { state GetPermissions; } else if (kNewOwner == kParcelOwner) { gkOwner = kNewOwner; state GetPermissions; } } } } state GetPermissions { state_entry() { llWhisper(0, "waiting for permissions."); llRequestPermissions(gkOwner, PERMISSION_RETURN_OBJECTS); } on_rez(integer start_param) { llResetScript(); } run_time_permissions(integer value) { if (value & PERMISSION_RETURN_OBJECTS) { state Running; } } } state Running { state_entry() { g_iReturnedObjects = 0; g_iErrors = 0; llWhisper(0, "Ok, permissions given"); llListen(0, "", NULL_KEY, ""); } on_rez(integer start_param) { llResetScript(); } changed(integer change) { if ((change & CHANGED_OWNER) == CHANGED_OWNER) { llResetScript(); } // if } listen(integer channel, string name, key id, string message) { if (llOverMyLand(id) == FALSE) { return; } list lResults = llGetObjectDetails(id, [ OBJECT_POS, OBJECT_OWNER, OBJECT_ROOT ]); vector vObjPos = llList2Vector(lResults, 0); key kObjOwner = llList2Key(lResults, 1); key kRoot = llList2Key(lResults, 2); if (id == kObjOwner) { return; // is an avatar. } key kObjToReturn = id; if (kRoot != id) { kObjToReturn = kRoot; } float fDistance = llVecMag(vObjPos - llGetPos()); if (fDistance > RADIUS) { llInstantMessage(gkOwner, "Returning object [" + name + "] from owner: " + (string) llGetOwnerKey(id)); integer result = llReturnObjectsByID( [ kObjToReturn ]); if (result == 1) { g_iReturnedObjects++; } else { g_iErrors++; llSay(DEBUG_CHANNEL, "Value returned: " + (string) result); } } llSetText("Returned : " + (string) g_iReturnedObjects + "\nErrors : " + (string) g_iErrors, <1.0, 1.0, 1.0>, 1.0); } }
  15. I detected a problem when teleport inside the same region. The client generates many keystrokes and causes activation of the turbo mode. It's like when you're sitting in a vehicle and edit an object. This is a version that minimizes the problem. //_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/integer MIN_SPEED = 500;integer MAX_SPEED = 32000;string DEFAULT_SOUND = "1adbd5fa-5b29-0827-473f-ec551e073548";float VOLUME = 1.0;float TIME_AFTER_TP = 10.0;//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/integer g_iSpeed = MIN_SPEED;float g_fLastTime;integer turbo = FALSE;string g_sSound;integer g_bWorking;//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/default { state_entry() { llSetMemoryLimit(4096 * 3); if (llGetAttached() != 0) { llRequestPermissions(llGetOwner(), PERMISSION_TAKE_CONTROLS); } // if if (llGetInventoryNumber(INVENTORY_SOUND) > 0) { g_sSound = llGetInventoryName(INVENTORY_SOUND, 0); } else { g_sSound = DEFAULT_SOUND; } // if } // state_entry attach(key id) { if (llGetAttached() != 0) { llRequestPermissions(id, PERMISSION_TAKE_CONTROLS); } // if } // attack run_time_permissions(integer perm) { if (perm & PERMISSION_TAKE_CONTROLS) { g_fLastTime = llGetWallclock(); llTakeControls( CONTROL_FWD | CONTROL_BACK | CONTROL_LEFT | CONTROL_RIGHT | CONTROL_ROT_LEFT | CONTROL_ROT_RIGHT | CONTROL_UP | CONTROL_DOWN | CONTROL_LBUTTON | CONTROL_ML_LBUTTON , TRUE, TRUE); llOwnerSay("Turbo mode ready!"); llOwnerSay("(UP + BACK) or (DOWN + BACK) or (FWD + BACK) activates turbo"); llOwnerSay("ROT_RIGHT + ROT_LEFT increment speed."); llOwnerSay("ROT_LEFT + ROT_RIGHT decrement speed."); llOwnerSay("Current speed is: " + (string) g_iSpeed); g_bWorking = TRUE; } // if } // run_time_permissions control(key id, integer level, integer edge) { if (g_bWorking == FALSE) { return; } // if vector vMove = ZERO_VECTOR; if ((level == (CONTROL_FWD | CONTROL_BACK)) || (level == (CONTROL_UP | CONTROL_BACK)) || (level == (CONTROL_DOWN | CONTROL_BACK))) { if (turbo == FALSE) { llTriggerSound(g_sSound, VOLUME); } // if turbo = TRUE; } else if (((~level & CONTROL_FWD) && (edge & CONTROL_FWD)) || ((~level & CONTROL_UP) && (edge & CONTROL_UP)) || ((~level & CONTROL_DOWN) && (edge & CONTROL_DOWN))) { turbo = FALSE; } // if if (turbo) { if (level & CONTROL_FWD) { vMove = llRot2Fwd(llGetRot()); vMove = llVecNorm(vMove); } else if (level & CONTROL_UP) { vMove = <0.0, 0.0, 1.0>; } else if (level & CONTROL_DOWN) { vMove = <0.0, 0.0, -1.0>; } // if } // if if ((level & CONTROL_ROT_LEFT) && (edge & CONTROL_ROT_RIGHT)) { if (llFabs(llGetWallclock() - g_fLastTime) >= 1.0) { if (g_iSpeed > MIN_SPEED) { g_iSpeed /= 2; } llOwnerSay("Speed changed to: " + (string) g_iSpeed); g_fLastTime = llGetWallclock(); } } else if ((level & CONTROL_ROT_RIGHT) && (edge & CONTROL_ROT_LEFT)) { if (llFabs(llGetWallclock() - g_fLastTime) >= 1.0) { if (g_iSpeed < MAX_SPEED) { g_iSpeed *= 2; } llOwnerSay("Speed changed to: " + (string) g_iSpeed); g_fLastTime = llGetWallclock(); } } vMove *= g_iSpeed; llSetForce(vMove, FALSE); } // control changed(integer change) { if (change & CHANGED_TELEPORT) { g_bWorking = FALSE; llSetForce(ZERO_VECTOR, FALSE); llSetTimerEvent(TIME_AFTER_TP); } } // changed timer() { g_bWorking = TRUE; llSetTimerEvent(TIME_AFTER_TP); } // timer} // default
  16. Do not use near of sim crossing, or you will end three or four simulators away. Put script inside of a non visible sphere of size=<0.5, 0.5, 0.5>. Wear object in any site of your body or free hud position. While you walking or flying press back key to boost. this work too when you up or down. Press Left + Right or right + Left to increase or decrease the speed. This script can be added too in a existing HUD. //_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ integer MIN_SPEED = 500; integer MAX_SPEED = 32000; string DEFAULT_SOUND = "1adbd5fa-5b29-0827-473f-ec551e073548"; float VOLUME = 1.0; //_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ integer g_iSpeed = MIN_SPEED; float g_fLastTime; integer turbo = FALSE; string g_sSound; //_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ default { state_entry() { llSetMemoryLimit(4096 * 2); if (llGetAttached() != 0) { llRequestPermissions(llGetOwner(), PERMISSION_TAKE_CONTROLS); } // if if (llGetInventoryNumber(INVENTORY_SOUND) > 0) { g_sSound = llGetInventoryName(INVENTORY_SOUND, 0); } else { g_sSound = DEFAULT_SOUND; } // if } // state_entry attach(key id) { if (llGetAttached() != 0) { llRequestPermissions(id, PERMISSION_TAKE_CONTROLS); } // if } // attack run_time_permissions(integer perm) { if (perm & PERMISSION_TAKE_CONTROLS) { g_fLastTime = llGetWallclock(); llTakeControls( CONTROL_FWD | CONTROL_BACK | CONTROL_LEFT | CONTROL_RIGHT | CONTROL_ROT_LEFT | CONTROL_ROT_RIGHT | CONTROL_UP | CONTROL_DOWN | CONTROL_LBUTTON | CONTROL_ML_LBUTTON , TRUE, TRUE); llOwnerSay("Turbo mode ready!"); llOwnerSay("(UP + BACK) or (DOWN + BACK) or (FWD + BACK) activates turbo"); llOwnerSay("ROT_RIGHT + ROT_LEFT increment speed."); llOwnerSay("ROT_LEFT + ROT_RIGHT decrement speed."); llOwnerSay("Current speed is: " + (string) g_iSpeed); } // if } // run_time_permissions control(key id, integer level, integer edge) { vector vMove = ZERO_VECTOR; if ((level == (CONTROL_FWD | CONTROL_BACK)) || (level == (CONTROL_UP | CONTROL_BACK)) || (level == (CONTROL_DOWN | CONTROL_BACK))) { if (turbo == FALSE) { llTriggerSound(g_sSound, VOLUME); } // if turbo = TRUE; } else if (((~level & CONTROL_FWD) && (edge & CONTROL_FWD)) || ((~level & CONTROL_UP) && (edge & CONTROL_UP)) || ((~level & CONTROL_DOWN) && (edge & CONTROL_DOWN))) { turbo = FALSE; } // if if (turbo) { if (level & CONTROL_FWD) { vMove = llRot2Fwd(llGetRot()); vMove = llVecNorm(vMove); } else if (level & CONTROL_UP) { vMove = <0.0, 0.0, 1.0>; } else if (level & CONTROL_DOWN) { vMove = <0.0, 0.0, -1.0>; } // if } // if if ((level & CONTROL_ROT_LEFT) && (edge & CONTROL_ROT_RIGHT)) { if (llFabs(llGetWallclock() - g_fLastTime) >= 1.0) { if (g_iSpeed > MIN_SPEED) { g_iSpeed /= 2; } llOwnerSay("Speed changed to: " + (string) g_iSpeed); g_fLastTime = llGetWallclock(); } } else if ((level & CONTROL_ROT_RIGHT) && (edge & CONTROL_ROT_LEFT)) { if (llFabs(llGetWallclock() - g_fLastTime) >= 1.0) { if (g_iSpeed < MAX_SPEED) { g_iSpeed *= 2; } llOwnerSay("Speed changed to: " + (string) g_iSpeed); g_fLastTime = llGetWallclock(); } } vMove *= g_iSpeed; llSetForce(vMove, FALSE); } // control } // default
  17. This script just show where are sitted all avatars in region. list g_lAgents = []; default { state_entry() { llSetText("", <1.0, 1.0, 1.0>, 1.0); llSetTimerEvent(1.0); } on_rez(integer start_param) { llResetScript(); } timer() { g_lAgents = llGetAgentList(AGENT_LIST_REGION, []); integer iMax = llGetListLength(g_lAgents); integer iCount; string sOut = ""; for (iCount = 0; iCount < iMax; iCount++){ key kAgent = llList2Key(g_lAgents, iCount); integer iAgentInfo = llGetAgentInfo(kAgent); list lDetails = llGetObjectDetails(kAgent, [OBJECT_ROOT, OBJECT_NAME]); key kObject = llList2Key(lDetails, 0); string sAvatar = llList2String(lDetails, 1); if (iAgentInfo & AGENT_ON_OBJECT) { if (kAgent != kObject) { list lObjDetails = llGetObjectDetails( kObject, [OBJECT_NAME, OBJECT_PHYSICS, OBJECT_RUNNING_SCRIPT_COUNT]); string sObjName = llList2String(lObjDetails, 0); integer bPhys = llList2Integer(lObjDetails, 1); integer iNScrips = llList2Integer(lObjDetails, 2); sOut += sAvatar + " on '" + sObjName + "'"; if ((bPhys == TRUE) && (iNScrips > 0)) { sOut += " (Vehicle)"; } else if ((bPhys == TRUE) && (iNScrips == 0)) { sOut += " (Physical)"; } else if ((bPhys == FALSE) && (iNScrips > 0)) { sOut += " (NPV)"; } else if ((bPhys == FALSE) && (iNScrips == 0)) { sOut += " (Object)"; } sOut += "\n"; } } else if (iAgentInfo & AGENT_SITTING) { sOut += sAvatar + " on Ground.\n"; } else { //sOut += sAvatar + " is not sitted.\n"; } } llSetText(sOut, <1.0, 1.0, 1.0>, 1.0); } }
  18. I no remember why i put this line, but probably is a bug or error. On the other hand, I do not have the habits to redefine input parameters, It is almost certain that it is a mistake. In OpenSim, the UUID of the sculpties and textures are not correct, but you can find the sculties on my freebie site. Greetings
  19. I've seen a rare bug the past two weeks, but do not know if it's a known bug. The symptoms are: * It is not possible to rezz objects. * Scripted objects can not rezz other objects. * However, it is possible to create objects. * Scripts within attachements do not work. * Large amount of lag. * If you try to rezz no copy objects, they disappear from inventory. This happened the saturday 22 and Yesterday in Venufalat region. greetings
  20. Script for search physical objects. key TEXTURE_KEY = "75a05371-e8bb-5b16-fbbe-2ea82a03731f"; string SOUND = "bfd75b28-d5e2-d3f6-ed8b-1ad42d591391"; float TIME = 0.5; key g_kLastDetected; particle_start(key kTexture, key kDestiny, vector vEndEscale, vector vAcel) { llParticleSystem( [ PSYS_SRC_TEXTURE, kTexture, PSYS_PART_START_SCALE, <0.1, 0.1, 0>, PSYS_PART_END_SCALE, vEndEscale, PSYS_PART_START_COLOR, <1.0,1.0,1.0>, PSYS_PART_END_COLOR, <1.0,1.0,1.0>, PSYS_PART_START_ALPHA, 0.0, PSYS_PART_END_ALPHA, 1.0, PSYS_SRC_BURST_PART_COUNT, 1, PSYS_SRC_BURST_RATE, 0.9, PSYS_PART_MAX_AGE, 4.0, PSYS_SRC_MAX_AGE, 0.0, PSYS_SRC_PATTERN, 1, // 1=DROP, 2=EXPLODE, 4=ANGLE, 8=ANGLE_CONE, PSYS_SRC_ACCEL, vAcel, PSYS_SRC_BURST_RADIUS, 0.0, PSYS_SRC_BURST_SPEED_MIN, 0.0, PSYS_SRC_BURST_SPEED_MAX, 0.0, PSYS_SRC_ANGLE_BEGIN, 0*DEG_TO_RAD, PSYS_SRC_ANGLE_END, 90*DEG_TO_RAD, PSYS_SRC_OMEGA, <1,0,0>, PSYS_SRC_TARGET_KEY, kDestiny, PSYS_PART_FLAGS, ( 0 | PSYS_PART_INTERP_COLOR_MASK | PSYS_PART_INTERP_SCALE_MASK // | PSYS_PART_EMISSIVE_MASK // | PSYS_PART_FOLLOW_VELOCITY_MASK // | PSYS_PART_WIND_MASK // | PSYS_PART_BOUNCE_MASK | PSYS_PART_FOLLOW_SRC_MASK | PSYS_PART_TARGET_POS_MASK // | PSYS_PART_TARGET_LINEAR_MASK ) ] ); } // particle_start particle_stop() { llParticleSystem([ ]); } // particle_stop default { state_entry() { llSetMemoryLimit(4096 * 4); llSetLinkPrimitiveParamsFast( LINK_THIS, [ PRIM_NAME, "Physical Locator (v0.2.0)", PRIM_TYPE, PRIM_TYPE_SPHERE, PRIM_HOLE_DEFAULT, <0.0, 1.0, 0.0>, 0.0, <0.0, 0.0, 0.0>, <0.0, 1.0, 0.0>, PRIM_MATERIAL, PRIM_MATERIAL_GLASS, PRIM_SIZE, <0.5, 0.5, 0.5>, PRIM_TEXTURE, ALL_SIDES, "20298eb3-1240-791a-b7e3-0274d644895d", <3.0, 3.0, 0.0>, <0.0, 0.0, 0.0>, 0.0, PRIM_BUMP_SHINY, ALL_SIDES, PRIM_SHINY_HIGH, PRIM_BUMP_NONE, PRIM_FULLBRIGHT, ALL_SIDES, TRUE ]); state off; } // state_entry } // default state off { state_entry() { llSetTextureAnim (FALSE, ALL_SIDES, 0, 0, 0, 0, 0.0); llSetText("Phys Locator: OFF\n", <0.0, 1.0, 1.0>, 1.0); particle_stop(); } // state_entry on_rez(integer start_param) { llResetScript(); } // on_rez touch_start(integer num_detected) { integer iCount; for (iCount = 0; iCount < num_detected; iCount++) { if (llDetectedKey(iCount) == llGetOwner()) { state on; } // if } // for } // touch_start touch_end(integer num_detected) { } // touch_end } // state off state on { state_entry() { g_kLastDetected = NULL_KEY; llSetTextureAnim (ANIM_ON | LOOP | SMOOTH, ALL_SIDES, 1, 1, 0, 0, 0.05); llSetText("Phys Locator: ON\n", <0.0, 1.0, 1.0>, 1.0); llSetTimerEvent(TIME); } // state_entry state_exit() { llSetTimerEvent(0.0); } // state_exit on_rez(integer start_param) { llResetScript(); } // on_rez touch_start(integer num_detected) { integer iCount; for (iCount = 0; iCount < num_detected; iCount++) { if (llDetectedKey(iCount) == llGetOwner()) { state off; } // if } // for } // touch_start touch_end(integer num_detected) { } // touch_end timer() { llSensor("", NULL_KEY, ACTIVE | PASSIVE, 96.0, PI); } // timer sensor(integer num_detected) { integer bDetected = FALSE; integer iCount; for (iCount = 0; iCount < num_detected; iCount++) { key kObject = llDetectedKey(iCount); list lResults = llGetObjectDetails( kObject, [ OBJECT_PHYSICS, OBJECT_PHYSICS_COST, OBJECT_SCRIPT_TIME, OBJECT_OWNER, OBJECT_NAME ]); integer bIsPhysical = llList2Integer(lResults, 0); if (bIsPhysical == TRUE) { if (kObject != g_kLastDetected) { llPlaySound(SOUND, 1.0); g_kLastDetected = kObject; } // if bDetected = TRUE; float fPhysCost = llList2Float(lResults, 1); float fScriptTime = llList2Float(lResults, 2); string sOwner = llList2String(lResults, 3); string sName = llList2String(lResults, 4); string sMsg = "Phys Locator: ON\n"; sMsg += "Phys Cost: " + (string) fPhysCost + "\n"; sMsg += "Script Time: " + (string) fScriptTime + "\n"; sMsg += "Owner: " + sOwner + "\n"; sMsg += "Name; " + sName + "\n"; llSetText(sMsg, <0.0, 1.0, 1.0>, 1.0); particle_start(TEXTURE_KEY, kObject, <2.0, 2.0, 0.0>, ZERO_VECTOR); iCount = num_detected; // Break } } // for if (bDetected == FALSE) { llSetText("Phys Locator: ON\nNo physical objects detected.", <0.0, 1.0, 1.0>, 1.0); particle_stop(); g_kLastDetected = NULL_KEY; } } // sensor no_sensor() { llSetText("Phys Locator: ON\nNothing detected.", <0.0, 1.0, 1.0>, 1.0); particle_stop(); g_kLastDetected = NULL_KEY; } } // state on
  21. > This is not a solution to griefing or 'grey goo' attacks. Could it work if combined with a filler?
  22. Ejecuta desde una consola para que puedas ver el mensaje de error. Probablemente sea la versión de las bibliotecas (DLLs) que se han usado para compilarlo. Hasta hace poco funcionaba bién en la 11.04, pero han actualizado el compilador que usan y ahora es necesaria al menos la versión 12.04 para que funcione. Quizás la 13.04 ya usa otra versión de DLL.
  23. I acepted the TOS using the phoenix viewer. The button only is clickable if you scroll the text. I guess this widespread confusion is due to that hardly anyone installed their own software on their computer. In almost any software you install on your machine, the process is identical.
  24. These last days, the network has been running pretty bad. Now I know the cause, it is a DDoS attack that has affected the global network. Responsible was arrested yesterday in Barcelona. This is a spammer who launched an attack on an anti-spam company. May he rot in jail, I hate that kind of people.
  25. I maded a little trip with a mesh vehicle from "Trabala" region to "Satellite" region. At other times, almost all times that i crossed a continent i haved my avatar stucked two of three times on average. But this time was different. My avatar got stucked in a few meters after of sim crossing in the same place as the vehicle and soon my client was disconnected. This occurred five or six times. When reconnected, appeared in my house instead of the region where is the vehicle. Another problem I've noticed is older. When I cross a region with a mesh vehicle, some primitives are rendered invisible and is necessary to go back to see them again.
×
×
  • Create New...