[Opensim-dev] llDetectedType and NPC's
Justin Clark-Casey
jjustincc at googlemail.com
Tue Jul 10 00:08:41 UTC 2012
I agree. Ideally, I think no LL function would be extended. However, in terms of general mechanisms (e.g. event,
sensors), extension has effectively already taken place.
On 08/07/12 19:26, Dahlia Trimble wrote:
> In general it's not a good idea to extend any "ll" function beyond the equivalent SL definition as there is no guarantee
> that LL may add any new functionality that may conflict in the future. If this were to happen it would be difficult to
> resolve the conflicts as there would be scripts in use that depend on the conflicting definitions. Also some scripters
> don't always use symbolic constants (a terrible practice but it does happen) so it's not just a matter of changing a
> conflicting value for a constant and recompiling. If your solution is dependent on deviating from the SL definition
> for any "ll" API call, it may be easier for all involved in the future if you can redesign it such as to avoid future
> incompatibilities.
>
> On Sun, Jul 8, 2012 at 3:14 AM, Argus <argus at archimuh.de <mailto:argus at archimuh.de>> wrote:
>
> Hi.
>
> I have a problem with the way that NPCs might be implemented in llDetectedType. A patch can be found in Mantis 6066.
>
> In the events touch, collision and sensor one can use the function llDetectedType which return some basic infos on
> what type of object/agent... has been detected by the event. To complete this function, we still need to add NPCs as
> type. Sofar, so good...
>
> NPC do however also have the possebility to be created using OS_NPC_SENCE_AS_AGENT. This was implemented sothat
> NPCs would work with sensor events ( without changing the lsl script). At that time NPCs were not implemented to
> llDetectedType which one could have easely used to change the lsl script to work with NPCs and/OR agents instead of
> implementing OS_NPC_SENCE_AS_AGENT. The result is, that using OS_NPC_SENCE_AS_AGENT would return an agent when using
> llDetected AND that there is NO way to know if the event was triggered by an agent or NPC without forcing the users
> to enable osIsNPC for everybody, and I do realy mean everybody. For me and some other projects I know of, this will
> have fatal sideeffects.
>
>
>
> Let look at our 3 avatar type, normal agent, liblibomv bot and NPC's and how these can be used for identification.
>
> Situation 1) A closed grid with hypergrid disabled.
>
> - Normal agent = registered at grid, unique uuid + name within grid, controled by human
> - Bots = basicaly same as agent, registered at grid, with unique uuid + name within grid, but remotly controled by
> software
> - NPC = NOT registered, unique uuid within grid, ANY fictional OR existing name possible and like bots remotly
> controled.
>
> If llDetectedType return agent for NPCs using OS_NPC_SENSE_AGENT we only could detect the NPC using
> llRequestAgentData to see if we get a posetive respone via DATA_NAME (unless the region itself detects the online
> NPC as agent and returns the NPC data, havnt tested that yet.) In any case, the uuid remains unique and can always
> be used to identify a single agent/npc/bot
>
> Situation 2) Multigrid system with hypergrid enabled.
>
> - Normal agent = registered at grid, unique uuid + name within grid, controled by human, surname changes with
> hypergrid, name supplies griddata on hypergrid travels
> - Bots = basicaly same as agent, registered at grid, with unique uuid + name within grid, but remotly controled by
> software, surname changes with hypergrid, name supplies griddata on hypergrid travels
> - NPC = NOT registered, unique uuid within grid, ANY fictional OR existing name possible and like bots remotly
> controled.
>
> The uuid - name relation is still unique WITHIN a grid, but the same uuid-name relationship can be used in
> multiple grids by DIFFRENT users. However when hypergrid traveling the name changes and one can extract the agents
> origin grid sothat one recieves a unique uuid+name+grid relationship. In a multigrid system were llDetectedType
> return agent for NPCs using OS_NPC_SENSE_AGENT there is NO method using plain lsl to get the unique uuid+name+grid
> relationship, llRequestAgentData is not available in all grids from the hypergrid visitor. The names of NPCs are
> NOT unique within a grid AND the uuid could already exist in another grid for an agent. The uuid alone CAN'T be used
> to identify a single agent/bot/npc in a multi grid system which is hypergrid enabled.
>
> Short summary: In a mutligrid system with hypergrid each agent/bot has a unique uuid - name - grid relationship
> were 2 elements are needed for identification, in a single grid without hypergrid the uuid is enough to identify
> each agent/bot/npc. In a multigrid system NPC have to be identified as NPC sothat one can identify the NPC using
> uuid + grid.
>
>
>
> As mentioned there is no plain lsl method for identification in a multiple grid system with hypergrid if
> llDetectedType returns an Agent for NPCs using OS_NPC_SENSE_AGENT. In Opensim we do have OSSL function which could
> be used to help to distinguish between a registered agent and a NPC, eg. osIsNPC. The problem is however, that a
> multigrid system would have to have multiple scripts available for all sorts of ossl combinations.
>
> a) No NPCs allowed for anyone - script does not need any NPCs and all event can only be triggered by agents.
> b) NPCs allowed for 1 or more users, osIsNPC not enabled - Our script CAN'T recognize an NPC, so the service has to
> be excluded and may not be used on that region
> c) NPC allowed for 1 or more users, osIsNPC enabled for those users - Our script CAN'T recognize an NPC if the
> script is owned by someone not enabled to use osIsNPC, so the service has to be excluded and may not be used on that
> region.
> d) NPC allowed for 1 or more users, osIsNPC enabled for everyone - Our script can now use osIsNPC nowmatter who the
> owner is, only now we can recognize NPCs
>
> So if your offering a multigrid service, were we need 2 elements for identification, it is required to have atleast
> 2 script. 1 script for regions were noone can use NPCs and another were osIsNPC is enabled for everyone. This means
> that atleast 2 scripts need to be maintained by the scriptor and a huge support team which has to personaly speak to
> each customer to explain what script to use etc etc. Latest after 1 year the customer has forgotten everything and
> changes the NPC settings, which messes up the agent identification or the region owner changes something without
> notifying the parcelwoners because he himself only wants to try something.
>
> Now if the script is in a hud, then we never know what region settings are configured on the region we visit. So
> as we dont know anything about the settings, our entire uuid+name+grid relation is useless and we have NO method
> atall for identification in a multigrid system with hypergrid enabled. All ossl that could be used for NPC detection
> must be considered not avialble while NPC can be used by others.
>
> One could create extra modules to help us, but latest if a closed grid is involved we are not able to run our
> additional module. So thats also not an option.
>
>
> Résumé: The only method that would help in a multigrid system is, if llDetectedType ALWAYS returns NPC nomatter what
> settings is used and AGENT for any agent/bot. Enabling OS_NPC_SENSE_AGENT to alow llDetectedType to return agent
> makes all 3rd party systems in a multigrid hypergrid enabled enviroment virtualy impossible to handle.
>
>
> It was thus also my intention to get this issue solved prior to implementation of osNPCTouch, but for that it is to
> late now anyway :(.
>
> Michelle Argus
>
>
>
>
>
>
> _________________________________________________
> Opensim-dev mailing list
> Opensim-dev at lists.berlios.de <mailto:Opensim-dev at lists.berlios.de>
> https://lists.berlios.de/__mailman/listinfo/opensim-dev <https://lists.berlios.de/mailman/listinfo/opensim-dev>
>
>
>
>
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/opensim-dev
>
--
Justin Clark-Casey (justincc)
http://justincc.org/blog
http://twitter.com/justincc
More information about the Opensim-dev
mailing list