Solution exists:
osIsNpc(key npc)
(sorry: trying to make it short)
--
http://www.speculoos.net/
secondlife://speculoos.net:8002/
Speculoos, the belgian cookie-flavored metaverse
Le 10 juil. 2012 à 23:21, Argus a écrit :
> Yes, opensource also means nothing can be trusted 100% and that anyone can do
> whatever they want to fool the entire world. Most users do however want a
> running system for everyone, so those people will not deliberatly mess
> around, but thats all going off topic anyway.
>
>
>
> Ok, Examples... I will go through some simple ones and increase the
> difficulty degree with each example....
>
> Very basic scripts:
> -----------------------
>
> Example 1: Giver script
> Very basic and common scripts are givers triggered by touch which also send a
> message to the owner to inform them that someone recieve an item. NPCs cant
> recieve items sent by llGiveInventory so we can exclude NPCs using
> llDetectedType and prevent the message also beeing sent.
>
> Example 2: IM messengers
> All the offline/online IM messengers sont need to respond to touches via NPCs
>
> Scripts that gather infos:
> -----------------------
>
> Example 3: Visitor lists
> All the visito lists that use sensor do not need to count NPCs which are
> using OS_NPC_SENSE_AS_AGENT
>
> Example 4: Huds and other gimmics
> Some huds and other gimmics show who is near by, e.g. a hug animation gimmic.
> These normaly also do not need to show NPCs
>
> Statistic scripts:
> -----------------------
>
> Example 5: Voting station
> Voting stations such as the one by oliveira in Osgrid count the unique
> touches to rank the places by popularity. NPCs definatly do not need to be
> counted. Due to the easy and fast method of creating hundreds of unique NPCs
> the NPCs can be used to manipulate votes. Bots are much more complex to use
> and need to go through the grid registration. Comparing bots with NPCs, then
> bots will extremly rare tool for manipulations.
>
> Multigrid systems in hypergrid.
> -----------------------
>
> Example 6:
> Now this is were the very complex situation starts with the multigrid and
> hypergrid stough. I will add sections A,B,C.. to make it easier in the
> discussions which will follow...
>
> I am going to extract a very "basic" part of one of my projects which
> includes a Rentbox and much more. I will add sections A,B,C.. to make it
> easier in the discussions which will follow... Giving script code example for
> this is not easy, so I will have to try to explain the prosedure a bit.
>
> A)
> I am going to extract a very "basic" part of one of my projects which
> includes a Rentbox and many more inworld tools, all of which is connected to
> webtools for easy offline management etc etc.. One part of my rentbox is,
> that it offers the inworld dialog boxes in multiple languages. If a unknown
> avatar touches the rentbox, then the avatar can select a language via a
> dialog box. If the avatar is known and previously already selected a
> language, then the dialog box automaticaly selects the last chosen language
> which is saved on a webserver for that avatar. Sofar that should be clear
>
> B)
> The entire system is running in multiple grids, eg OSgrid, and these also
> include closed grids such as SL and GermanGrid. Some grids are hypergrid
> enabled and allow traveling between these grids. As my system is hypergrid
> compatible, the last selected language is also automaticaly available in
> foreign grids. Lets say a hypergrid visitor from GermanGrid has selected
> german as language at a Rentbox in German grid, then they also will have a
> german dialog when touching a rentbox in osgrid.
>
> C)
> The automatic recognition of the last selected language requires that the
> avatar can uniquely be identified, otherwise it would mean that everyone
> needs to reselect the language every time they touch a rentbox. In a mutigrid
> hypergrid enabled enviroment without NPCs we have the following basic data
> stored:
>
> Gridtable
> +----------------------+--------------------------------+
> | Gridname | hg last name of avatar |
> +----------------------+--------------------------------+
> | OSGrid | hg.osgrid.org |
> | GermanGrid | login.germangrid.de |
> +----------------------+--------------------------------+
>
> Avatar language table
> +----+----------------------+--------------------+--------------------+----------------+
> | id | Gridname | Avatar uuid | Avatar name | language |
> +----+----------------------+--------------------+--------------------+----------------+
> | 1 | OSgrid | uuid-1 | Avatar 1 |
> en |
> | 2 | OSgrid | uuid-2 | Avatar 2 |
> en |
> | 3 | GermanGrid | uuid-3 | Avatar 3 | de
> |
> | 4 | GermanGrid | uuid-4 | Avatar 4 | en
> |
> | 5 | GermanGrid | uuid-5 | Avatar 5 | en
> |
> | 6 | OSgrid | uuid-3 | Avatar 6 |
> de |
> | 7 | OSgrid | uuid-4 | Avatar 4 |
> en |
> | 8 | OSgrid | uuid-6 | Avatar 5 |
> de |
> +----+----------------------+--------------------+--------------------+----------------+
>
> D)
> Now lets look at the avatars with the id's 7-9
>
> Case id 7: the Avatar uuid "uuid-3" can exist in other grids, eg. GermanGrid
> id 3
> Case id 8: The Avatar name "Avatar 4" can also exist in another grid, eg
> GermanGrid id 4
> Case id 9: The Avatar uuid "uuid-6" AND Avatar name "Avatar 5" can also exist
> in another grid, eg GermanGrid id 6
>
> Each avatar is however uniquely registered in each single grid and each uuid
> and each avatar name cannot be reused multiple times within each grid.
>
> E)
> Now lets asume our Rentbox is standing in OSgrid. If:
>
> 1) Avatar with "uuid-1" and "Avatar 1" touches the rentbox, we know its the
> avatar with id 1 which has english selected and its a local avatar from osgrid
> 2) Avatar with "uuid-3" and "Avatar.3 @login.germangrid.de" touches the
> rentbox, we know its the avatar with id 3 which has german selected and is a
> hypergird traveler from GermanGrid
> 3) Avatar with "uuid-3" and "Avatar 6" touches the rentbox, we know its the
> avatar with id 7 which has german selected. The uuid is not unique in all
> grids, but the name didnt change to a hypergrid name!
> 4) Avatar with "uuid-7" and "Avatar 7" touches the rentbox, this is a new
> avatar so we add it to our db and ask for the language
> +----+----------------------+--------------------+--------------------+----------------+
> | 9 | OSgrid | uuid-7 | Avatar 7 |
> ? |
> +----+----------------------+--------------------+--------------------+----------------+
>
> So the name change from hypergrid visitors makes it possible to reliably
> identify the avatar eventhough the avatar uuid and/or avatar name is not
> unique in all grids. If one only searches by uuid or name, then multiple
> avatars would be returned.
>
> F)
> User friendly tools like a rentbox to offer functions to add Tendants by name
> were the uuid is not known. Based on the fact that avatars have a unique name
> and a unique uuid the identification via name + grid is possible in a
> mutigrid system. We might not always be able to add a new avatar with a uuid
> immidiatly e.g. due to script delays, but we can update that information
>
> So now lets add a tendant with the avatar name "Avatar 7" from OSgrid. Lets
> also asume that the grid is very buizy and scripts are slow in getting the
> uuid so we addthe agent without a uuid for now. Remember, avatar uuid + names
> are unique, so what can go wrong?
> +----+----------------------+--------------------+--------------------+----------------+
> | 9 | OSgrid | ? | Avatar 7 |
> ? |
> +----+----------------------+--------------------+--------------------+----------------+
>
> G)
> Now lets add NPCs to our table. NPC are currently imprisoned to the region of
> creation. Lets again take a rentbox in OSgrid which gets touched by a NPC.
>
> 1) we add NPC with NPC uuid "uuid-7" and NPC name "NPC 1". The NPC name does
> not deliver any grid data, so the NPC is in the same grid as our rentbox=
> OSgrid.
> +----+----------------------+--------------------+--------------------+----------------+
> | 10 | OSgrid | uuid-7 | NPC 1 | ?
> |
> +----+----------------------+--------------------+--------------------+----------------+
> We added a new user, so please select the language before continuing...
>
>
> 2) we add NPC with NPC uuid "uuid-8" and Avatar name "NPC.8
> @login.germangrid.de". The NPC name is a typical hypergrid name, so the NPC
> is from GermanGrid. Ups, a NPC currently cant teleport anywere, especialy not
> hypergrid.
> +----+----------------------+--------------------+--------------------+----------------+
> | 11 | GermanGrid | uuid-8 | NPC 8 | ?
> |
> +----+----------------------+--------------------+--------------------+----------------+
> We added a new user, so please select the language before continuing...
>
>
> 3) we add NPC with NPC uuid "uuid-9" and NPC name "Avatar 1". The NPC name
> does not deliver any grid data, so the NPC is in the same grid as our
> rentbox= OSgrid. Ups, "Avatar 1" is already in use in OSgrid. Who is a NPC
> and who is a agent?
> +----+----------------------+--------------------+--------------------+----------------+
> | 12 | OSgrid | uuid-9 | Avatar 1 | ?
> |
> +----+----------------------+--------------------+--------------------+----------------+
> We have 2 x "Avatar 1" in OSgrid, one with english selected (id 1), and
> another with no language selected (id12) As the uuid is unique, we asume its
> id 12, so please select the language... Unfortunatly as of now we cannot
> offer name based services for "Avatar 1" because we have 2 entries.
>
>
> 4) we add NPC with NPC uuid "uuid-5" and Avatar name "Avatar.5
> @login.germangrid.de". The NPC name is a typical hypergrid name, so the NPC
> is from GermanGrid. We already know this avatar with the id 5. Big ups, we
> won the jackpot by having the same uuid and name. While we are at it, how
> about we cancel the current lease...
>
>
> 5) we add NPC with NPC uuid "uuid-10" and Avatar name "Avatar 7". The NPC
> name does not deliver any grid data, so the NPC is in the same grid as our
> rentbox= OSgrid. Great, we were faster than the script retrieving the uuid
> for "Avatar 7" in F, lets update it. Pitty "Avatar 7" with the id 9 actualy
> isnt a NPC
> +----+----------------------+--------------------+--------------------+----------------+
> | 9 | OSgrid | uuid-10 | Avatar 7 |
> ? |
> +----+----------------------+--------------------+--------------------+----------------+
> We added a new user, so please select the language before continuing...
>
>
> H)
> A Rentbox is much more complex then the language settings when touching. We
> have hovertext with names, owners functions, staf related functions,
> tendants, commisioning, addon modules, banning systems etc etc which all
> require a possetive identification.
>
> I)
> If lsl offers the possebility to detect an NPC as a NPC only, and agents as
> agents only, then one can atleast add the type to our avatar table in C or
> ignore NPCs.
>
> Due to hypergrid the scripts also can travel through hypergrid and land on
> other grids. Other grids or even regions might not be running on newer OS
> versions with all ossl/NPC functions/constants implemented so the scripts
> need to rely on the smalest available functionset.
>
> Up till now lsl was "dictated" by LL and there was no possebility in OS to
> create exeptions from LL, not even adding true grid data to the header of
> http_requests. For me and other scripters in multiple grids the smalest
> reliable functionset thus always has been the lsl implemented functions in
> opensim were the script could be copied 1:1 to SL without changes. All
> scripts using OSSL or which require specific settings are good for the
> advanced users. Just imagine telling someone in SL using a hippo rentbox that
> one needs to do modifications to the sim and someone forgot to add a single
> function and everything broke, yippi
>
> NPCs are now the big exeption. It would be logical that SL scripts need to be
> changes to fully work with NPCs, but instead one changed the NPCs and lsl
> sothat sl scripts work with NPCs while ignoring the diffrences between NPCs
> and Agents/Bots.
>
>
> Hope that helps...
>
>
>
>
>
>
> Am 10.07.2012 02:30, schrieb Justin Clark-Casey:
>> Argus, I'm a little confused. Some of what you say seems to concern NPCs
>> going to other regions via Hypergrid. But OS NPCs are bound to the region
>> they are instantiated in. Possibly they may be able to cross to regions in
>> the same simulator in the future, but they will never be able to go to other
>> simulators, let alone Hypergrid.
>>
>> So I'm assuming you're talking about reliable NPC detection in a Hypergrid
>> situation. Ultimately, this is impossible because the OpenSimulator
>> operator can always change the code to return what they like. So it doesn't
>> matter what function the script uses - it can always be fooled.
>>
>> I don't personally object to extending llDetectedType() to return NPC,
>> though NPC was a poor choice of constant name imo since it could clash with
>> Linden developments in the future. I also don't object to some config value
>> to stop the use of OS_NPC_SENSE_AS_AGENT on a particular simulator. But
>> being able to use NPCs with existing scripts is very useful in some contexts
>> so if llDetectedType() is to be extended it must accomodate that option for
>> consistency with everything else.
>>
>> Perhaps you could provide a concrete example. Not a whole script but
>> described functionality for some real in-world tool.
>>
>>
>>
>
>
> _______________________________________________
> Opensim-dev mailing list
> [email protected]
> https://lists.berlios.de/mailman/listinfo/opensim-dev
_______________________________________________
Opensim-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/opensim-dev