User:Dz
From OpenSimulator
(Difference between revisions)
(New page: == Welcome to the OpenSimulator Space of dz == I am generally involved in running OpenSim instances for fun, but I have been induced to try it for profit and the pursuit of scholarly cre...) |
(→Welcome to the OpenSimulator Space of dz) |
||
Line 11: | Line 11: | ||
I have been administering Linux based OpenSim servers since release 6.1, mostly on Ubuntu. | I have been administering Linux based OpenSim servers since release 6.1, mostly on Ubuntu. | ||
I have active avatars on OSGrid, ScienceSim, Inworldz, and that "SL" place. | I have active avatars on OSGrid, ScienceSim, Inworldz, and that "SL" place. | ||
+ | |||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | == NPC Utilities == | ||
+ | |||
+ | |||
+ | <source lang = "lsl"> | ||
+ | |||
+ | // OpenSimian BotKiller | ||
+ | // Kills all the NPC's in the region.. Please use with discretion. | ||
+ | // Iterate over a list of avatar keys, using them as an arguments to osNpcRemove | ||
+ | // Add a delay to the timer if sim performance starts to drag during logouts | ||
+ | // Feel free to use/distribute/modify to suit your needs | ||
+ | // Prepared for transfer to MOSES grid - D Osborn 5.3.2013 | ||
+ | |||
+ | integer who2kill = 0; | ||
+ | integer howmany = 0; | ||
+ | list avatars = []; | ||
+ | |||
+ | default | ||
+ | { | ||
+ | state_entry() | ||
+ | { | ||
+ | llSetText("waiting ", <1.0, 0.0, 0.0>, 1.0); | ||
+ | } | ||
+ | |||
+ | touch_end(integer total_number) // should not change state in touch_start events.... | ||
+ | { | ||
+ | avatars = osGetAvatarList(); | ||
+ | howmany = llGetListLength(avatars)/3; | ||
+ | state KillThem; | ||
+ | } | ||
+ | |||
+ | changed(integer change) // Reset on region restart | ||
+ | { | ||
+ | if (change & CHANGED_REGION_RESTART) | ||
+ | { | ||
+ | llResetScript(); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | state KillThem | ||
+ | |||
+ | { | ||
+ | state_entry() | ||
+ | { | ||
+ | llSetText("Processing ", <1.0, 0.0, 0.0>, 1.0); | ||
+ | llSetTimerEvent(3.0); // remove 1 every 3 seconds to minimize performance impact | ||
+ | } | ||
+ | |||
+ | timer() | ||
+ | { | ||
+ | osNpcRemove(llList2Key(avatars,who2kill*3)); | ||
+ | llSetText("Removed so far : " + (string) (who2kill + 1), <1.0, 0.0, 0.0>, 1.0); | ||
+ | |||
+ | who2kill++; | ||
+ | if(who2kill>=howmany) | ||
+ | state default; | ||
+ | |||
+ | llSetTimerEvent(3.0/ llGetRegionTimeDilation()); // Use timedilation to add to the delay if lagging | ||
+ | } | ||
+ | |||
+ | |||
+ | touch_end(integer interrupt) // abort by touching the object while it is processing | ||
+ | { | ||
+ | llResetScript(); | ||
+ | } | ||
+ | |||
+ | changed(integer change) | ||
+ | { | ||
+ | if (change & CHANGED_REGION_RESTART) | ||
+ | { | ||
+ | llResetScript(); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </source > |
Revision as of 18:02, 6 May 2013
Welcome to the OpenSimulator Space of dz
I am generally involved in running OpenSim instances for fun, but I have been induced to try it for profit and the pursuit of scholarly credits.
I am an incessant lurker...It took me 2 years to add these 3 lines to my profile here.
I monitor the following OpenSimulator mailing-lists Opensim-Users, OpenSim-devs, libomv-dev. I can also be found lurking in the SL opensim group chat.
I have been administering Linux based OpenSim servers since release 6.1, mostly on Ubuntu. I have active avatars on OSGrid, ScienceSim, Inworldz, and that "SL" place.
NPC Utilities
// OpenSimian BotKiller // Kills all the NPC's in the region.. Please use with discretion. // Iterate over a list of avatar keys, using them as an arguments to osNpcRemove // Add a delay to the timer if sim performance starts to drag during logouts // Feel free to use/distribute/modify to suit your needs // Prepared for transfer to MOSES grid - D Osborn 5.3.2013 integer who2kill = 0; integer howmany = 0; list avatars = []; default { state_entry() { llSetText("waiting ", <1.0, 0.0, 0.0>, 1.0); } touch_end(integer total_number) // should not change state in touch_start events.... { avatars = osGetAvatarList(); howmany = llGetListLength(avatars)/3; state KillThem; } changed(integer change) // Reset on region restart { if (change & CHANGED_REGION_RESTART) { llResetScript(); } } } state KillThem { state_entry() { llSetText("Processing ", <1.0, 0.0, 0.0>, 1.0); llSetTimerEvent(3.0); // remove 1 every 3 seconds to minimize performance impact } timer() { osNpcRemove(llList2Key(avatars,who2kill*3)); llSetText("Removed so far : " + (string) (who2kill + 1), <1.0, 0.0, 0.0>, 1.0); who2kill++; if(who2kill>=howmany) state default; llSetTimerEvent(3.0/ llGetRegionTimeDilation()); // Use timedilation to add to the delay if lagging } touch_end(integer interrupt) // abort by touching the object while it is processing { llResetScript(); } changed(integer change) { if (change & CHANGED_REGION_RESTART) { llResetScript(); } } }