Hallo, Gast |
Sie müssen sich registrieren bevor Sie auf unserer Seite Beiträge schreiben können.
|
Foren-Statistiken |
» Mitglieder: 23
» Neuestes Mitglied: Lilida
» Foren-Themen: 602
» Foren-Beiträge: 1.578
Komplettstatistiken
|
Aktive Themen |
Red light district
Forum: Informationen und aktuelle Meldungen
Letzter Beitrag: Cheryl Furse
01.05.2024, 02:05
» Antworten: 9
» Ansichten: 405
|
Kritische Backdoor in XZ ...
Forum: Informationen und aktuelle Meldungen
Letzter Beitrag: ThunderTower
29.04.2024, 13:37
» Antworten: 0
» Ansichten: 54
|
AI text/image to mesh
Forum: Informationen und aktuelle Meldungen
Letzter Beitrag: Cheryl Furse
28.04.2024, 16:37
» Antworten: 0
» Ansichten: 55
|
Promo Couple Walk
Forum: Informationen und aktuelle Meldungen
Letzter Beitrag: Cheryl Furse
25.04.2024, 11:42
» Antworten: 0
» Ansichten: 76
|
Sim geht in Schlafmodus
Forum: OpenSim
Letzter Beitrag: ThunderTower
21.04.2024, 12:31
» Antworten: 5
» Ansichten: 649
|
Tanzball rezzen
Forum: OpenSim-Manager
Letzter Beitrag: Lilida
16.04.2024, 14:27
» Antworten: 6
» Ansichten: 578
|
Was ist ne Kaffestube ohn...
Forum: Kaffeestube
Letzter Beitrag: Susan
15.04.2024, 15:17
» Antworten: 0
» Ansichten: 334
|
C Programmierung und bull...
Forum: Scripting
Letzter Beitrag: Cheryl Furse
07.04.2024, 00:50
» Antworten: 2
» Ansichten: 415
|
Steampunk-Party mit Marlo...
Forum: Informationen und aktuelle Meldungen
Letzter Beitrag: ThunderTower
02.04.2024, 18:29
» Antworten: 0
» Ansichten: 256
|
ERÖFFNUNG FLORES SEA Wild...
Forum: Informationen und aktuelle Meldungen
Letzter Beitrag: ThunderTower
01.04.2024, 18:52
» Antworten: 3
» Ansichten: 367
|
|
|
Herzlich Willkommen |
Geschrieben von: ThunderTower - 27.11.2021, 13:41 - Forum: Informationen und aktuelle Meldungen
- Keine Antworten
|
|
Willkommen Bad Teller in unserem gemeinsamen Forum. Prima, dass Du uns gefunden hast.
Im Namen aller, darf ich Dich recht herzlich im Forum begrüßen!
Schön, dass du dich für eine wertschätzende Korrespondenz mit vielen unterschiedlichen Lerninhalten interessierst.
Wir wünschen Dir (entspricht unserem Grundsatz) bei uns eine angenehme, interessante und stets höfliche virtuelle Kommunikation.
Vielen Dank!
Das Foren-Team
|
|
|
Fehlende Datenbanktabellen für OpenSim (Gruppenfunktion) manuell nachinstallieren |
Geschrieben von: ThunderTower - 16.11.2021, 17:57 - Forum: SQL Server und Datenbanken
- Keine Antworten
|
|
Probleme bei der Erstellung von Gruppen können bei fehlenden Tabellen innerhalb der Datenbank auftreten.
Fehlende Datenbanktabellen für OpenSim (Gruppenfunktion) manuell nachinstallieren.
Folgende Tabellen manuell hinzufügen:
- CREATE TABLE os_groups_groups
- CREATE TABLE os_groups_membership
- CREATE TABLE os_groups_roles
- CREATE TABLE os_groups_rolemembership
- CREATE TABLE os_groups_invites
- CREATE TABLE os_groups_notices
- CREATE TABLE os_groups_principals
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 25
Server version: 8.0.27-0ubuntu0.20.04.1 (Ubuntu)
Copyright © 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema
| mysql
| onmaus1 - Datenbank
| mausi2
| erna3
| performance_schema
| sys
+--------------------+
7 rows in set (0.01 sec)
mysql> use onmaus1;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> SHOW TABLES;
+-------------------+
| Tables_in_onmaus1 |
+-------------------+
| Avatars
| Friends
| GridUser
| Presence
| UserAccounts
| assets
| auth
| bakedterrain
| classifieds
| estate_groups
| estate_managers
| estate_map
| estate_settings
| estate_users
| estateban
| hg_traveling_data
| im_offline
| inventoryfolders
| inventoryitems
| land
| landaccesslist
| migrations <-------------------------SELECT * FROM
| primitems
| prims
| primshapes
| regionban
| regionenvironment
| regionextra
| regions
| regionsettings
| regionwindlight
| spawn_points
| terrain
| tokens
| userdata
| usernotes
| userpicks
| userprofile
| usersettings
+-------------------+
39 rows in set (0.00 sec)
mysql> select * from migrations;
+-----------------+---------+
| name | version |
+-----------------+---------+
| migrations 1
| RegionStore 58
| EstateStore 35
| IM_Store 5
| UserAccount 6
| GridStore 10
| AssetStore 10
| AuthStore 4
| GridUserStore 2
| InventoryStore 7
| Avatar 3
| Presence 4
| os_groups_Store 3
| UserProfiles 5
| HGTravelStore 2
| FriendsStore 4
+-----------------+---------+
16 rows in set (0.00 sec)
Tabellen anlegen:
mysql> CREATE TABLE `os_groups_groups` (
-> `GroupID` char(36) NOT NULL default '',
-> `Location` varchar(255) NOT NULL default '',
-> `Name` varchar(255) CHARACTER SET utf8 NOT NULL default '',
-> `Charter` text CHARACTER SET utf8 NOT NULL,
-> `InsigniaID` char(36) NOT NULL default '',
-> `FounderID` char(36) NOT NULL default '',
-> `MembershipFee` int(11) NOT NULL default '0',
-> `OpenEnrollment` varchar(255) NOT NULL default '',
-> `ShowInList` int(4) NOT NULL default '0',
-> `AllowPublish` int(4) NOT NULL default '0',
-> `MaturePublish` int(4) NOT NULL default '0',
-> `OwnerRoleID` char(36) NOT NULL default '',
-> PRIMARY KEY (`GroupID`),
-> UNIQUE KEY `Name` (`Name`),
-> FULLTEXT KEY `Name_2` (`Name`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Query OK, 0 rows affected, 6 warnings (4.52 sec)
mysql> CREATE TABLE `os_groups_membership` (
-> `GroupID`char(36) NOT NULL default '',
-> `PrincipalID` VARCHAR(255) NOT NULL default '',
-> `SelectedRoleID` char(36) NOT NULL default '',
-> `Contribution` int(11) NOT NULL default '0',
-> `ListInProfile` int(4) NOT NULL default '1',
-> `AcceptNotices` int(4) NOT NULL default '1',
-> `AccessToken` char(36) NOT NULL default '',
-> PRIMARY KEY (`GroupID`,`PrincipalID`),
-> KEY `PrincipalID` (`PrincipalID`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Query OK, 0 rows affected, 3 warnings (1.21 sec)
mysql> CREATE TABLE `os_groups_roles` (
-> `GroupID` char(36) NOT NULL default '',
-> `RoleID` char(36) NOT NULL default '',
-> `Name` varchar(255) CHARACTER SET utf8 NOT NULL default '',
-> `Description` varchar(255) CHARACTER SET utf8 NOT NULL default '',
-> `Title` varchar(255) CHARACTER SET utf8 NOT NULL default '',
-> `Powers` bigint(20) unsigned NOT NULL default '0',
-> PRIMARY KEY (`GroupID`,`RoleID`),
-> KEY `GroupID` (`GroupID`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Query OK, 0 rows affected, 4 warnings (1.19 sec)
mysql> CREATE TABLE `os_groups_rolemembership` (
-> `GroupID` char(36) NOT NULL default '',
-> `RoleID` char(36) NOT NULL default '',
-> `PrincipalID` VARCHAR(255) NOT NULL default '',
-> PRIMARY KEY (`GroupID`,`RoleID`,`PrincipalID`),
-> KEY `PrincipalID` (`PrincipalID`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Query OK, 0 rows affected (1.17 sec)
mysql> CREATE TABLE `os_groups_invites` (
-> `InviteID` char(36) NOT NULL default '',
-> `GroupID` char(36) NOT NULL default '',
-> `RoleID` char(36) NOT NULL default '',
-> `PrincipalID` VARCHAR(255) NOT NULL default '',
-> `TMStamp` timestamp NOT NULL,
-> PRIMARY KEY (`InviteID`),
-> UNIQUE KEY `PrincipalGroup` (`GroupID`,`PrincipalID`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Query OK, 0 rows affected (1.11 sec)
mysql> CREATE TABLE `os_groups_notices` (
-> `GroupID` char(36) NOT NULL default '',
-> `NoticeID` char(36) NOT NULL default '',
-> `TMStamp` int(10) unsigned NOT NULL default '0',
-> `FromName` varchar(255) NOT NULL default '',
-> `Subject` varchar(255) CHARACTER SET utf8 NOT NULL default '',
-> `Message` text CHARACTER SET utf8 NOT NULL,
-> `HasAttachment` int(4) NOT NULL default '0',
-> `AttachmentType` int(4) NOT NULL default '0',
-> `AttachmentName` varchar(128) NOT NULL default '',
-> `AttachmentItemID` char(36) NOT NULL default '',
-> `AttachmentOwnerID` varchar(255) NOT NULL default '',
-> PRIMARY KEY (`NoticeID`),
-> KEY `GroupID` (`GroupID`),
-> KEY `TMStamp` (`TMStamp`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Query OK, 0 rows affected, 5 warnings (0.98 sec)
mysql> CREATE TABLE `os_groups_principals` (
-> `PrincipalID` VARCHAR(255) NOT NULL default '',
-> `ActiveGroupID` char(36) NOT NULL default '',
-> PRIMARY KEY (`PrincipalID`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Query OK, 0 rows affected (1.03 sec)
mysql> ALTER TABLE `os_groups_invites`
->
-> MODIFY `TMStamp` timestamp NOT NULL default CURRENT_TIMESTAMP;
Query OK, 0 rows affected (0.14 sec)
Records: 0 Duplicates: 0 Warnings: 0
Kontrolle:
mysql> show tables;
+--------------------------+
| Tables_in_onmaus1 |
+--------------------------+
| Avatars |
| Friends |
| GridUser |
| Presence |
| UserAccounts |
| assets |
| auth |
| bakedterrain |
| classifieds |
| estate_groups |
| estate_managers |
| estate_map |
| estate_settings |
| estate_users |
| estateban |
| hg_traveling_data |
| im_offline |
| inventoryfolders |
| inventoryitems |
| land |
| landaccesslist |
| migrations |
| os_groups_groups |
| os_groups_invites |
| os_groups_membership |
| os_groups_notices |
| os_groups_principals |
| os_groups_rolemembership |
| os_groups_roles |
| primitems |
| prims |
| primshapes |
| regionban |
| regionenvironment |
| regionextra |
| regions |
| regionsettings |
| regionwindlight |
| spawn_points |
| terrain |
| tokens |
| userdata |
| usernotes |
| userpicks |
| userprofile |
| usersettings |
+--------------------------+
46 rows in set (0.01 sec)
mysql> exit
Bye
|
|
|
Abschaltung verschiedener PHP-Funktionen auf Ubuntu 20.04.3 LTS mit PHP 7.4.3 |
Geschrieben von: ThunderTower - 10.11.2021, 16:25 - Forum: Serversoftware
- Keine Antworten
|
|
Abschaltung verschiedener PHP-Funktionen auf Ubuntu 20.04.3 LTS mit PHP 7.4.3
Einige PHP- Funktionen lassen sich mit der 'disable_functions =' in der php.ini aus Sicherheitsgründen ausschalten.
Ich nutze auf meinem Ubuntu 20.04.3 LTS die PHP Version PHP 7.4.3.
Die Abschaltung verschiedener Funktionen von PHP soll die Sicherheit vom Server weiter erhöhen.
Diese Funktion 'disable_functions =' in der php.ini wird den Angreifer in seinen Möglichkeiten möglicherweise einschränken.
Welches Linux?
sniper@honigbiene:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.3 LTS
Release: 20.04
Codename: focal
PHP Version abfragen:
sniper@honigbiene:~$ php -v
PHP 7.4.3 (cli) (built: Oct 25 2021 18:20:54) ( NTS )
Copyright © The PHP Group
Zend Engine v3.4.0, Copyright © Zend Technologies
with Zend OPcache v7.4.3, Copyright ©, by Zend Technologies
Wo ist die php.ini Datei?
sudo find / -name php.ini
Ausgabe:
/etc/php/7.4/apache2/php.ini
/etc/php/7.4/cli/php.ini
sniper@ghonigbiene:~$
Diese Datei öffnen und editieren:
sudo nano /etc/php/7.4/apache2/php.ini
Funktionen in der php.ini abschalten:
disable_functions =
Code:
Code: disable_functions = "exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source,mail,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,
pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare"
exec,- Führt ein externes Programm aus
passthru, - Führt ein externes Programm aus und zeigt dessen Ausgabe an
shell_exec, - Führt einen Befehl auf der Shell aus und liefert die komplette Ausgabe als String
system, - Führt ein externes Programm aus und zeigt dessen Ausgabe an
proc_open, - Execute a command and open file pointers for input/output
popen, - Opens process file pointer
curl_exec, - Perform a cURL session
curl_multi_exec, - Run the sub-connections of the current cURL handle
parse_ini_file, - Parse a configuration file
show_source, - Alias of highlight_file()
mail, - Mailfunktionen senden
pcntl_alarm, - Set an alarm clock for delivery of a signal
pcntl_fork, - Forks the currently running process
pcntl_waitpid, - Waits on or returns the status of a forked child
pcntl_wait, - Waits on or returns the status of a forked child
pcntl_wifexited, - Checks if status code represents a normal exit
pcntl_wifstopped, - Checks whether the child process is currently stopped
pcntl_wifsignaled, - Checks whether the status code represents a termination due to a signal
pcntl_wifcontinued, - nicht gefunden!
pcntl_wexitstatus, - Lefert den Statuscode
pcntl_wtermsig, - Returns the signal which caused the child to terminate
pcntl_wstopsig, - Gibt das Signal zurück, welches das Anhalten verursachte
pcntl_signal, - Richtet eine Signalverarbeitung ein
pcntl_signal_get_handler, - Get the current handler for specified signal
pcntl_signal_dispatch, - Calls signal handlers for pending signals
pcntl_get_last_error, - Retrieve the error number set by the last pcntl function which failed
pcntl_strerror, - Retrieve the system error message associated with the given errno
pcntl_sigprocmask, - Sets and retrieves blocked signals
pcntl_sigwaitinfo, - Waits for signals
pcntl_sigtimedwait, - Waits for signals, with a timeout
pcntl_exec, - Executes specified program in current process space
pcntl_getpriority, - Get the priority of any process
pcntl_setpriority, - Change the priority of any process
pcntl_async_signals,- Enable/disable asynchronous signal handling or return the old setting
Überprüfen:
Pfad:
root@honigbiene:~# cd /var/www/html
Datei erstellen:
root@honigbiene:/var/www/html# touch info.php
Code eintragen und abspeichern:
Aufrufen:
http://server-ip:port/info.php
|
|
|
OSSL BEFEHLE zur NPC ANIMATION |
Geschrieben von: Tron Mcp - 09.11.2021, 20:24 - Forum: Scripting
- Keine Antworten
|
|
OSSL BEFEHLE zur NPC ANIMATION
Dieser Artikel ist Teil einer Serie von OSSL Befehlen zur NPC Nutzung in Openim.
Ich habe die Befehle Thematisch gegliedert:
Hier die Befehle zur NPC Animation:
osNpcPlayAnimation, osNpcStopAnimation, osNpcSit, osNpcStand, osNpcTouch
Zunächst ein Wort vorab.
NPCs können auf verschiedenen Arten animiert werden.
NPCs lassen sich auch über Avatar Animations-Befehle (auf Posern) animieren.
Alle Möglichkeiten die Avataren zur Verfügung stehen (mittels Poser, Fahrzeugen, etc) sind verfügbar, werden hier aber nicht beschrieben.
Allerdings unterliegen NPCs Einschränkungen gegenüber Avataren: Sie können nicht über Simgrenzen bewegt werden!!! (Stand 11.2021).
Zudem können sie keine Dinge per Attach anziehen. Beispielsweise einen Besen beim Start einer Kehr Animation in die Hand anziehen geht nur beim Avatar.
Beim NPC benötigt man dafür eine weitere Appearance Notecard bei der der Besen bei der Erstellung angezogen war. dann werden die „Erscheinungen“ ausgetauscht.
Will man die NPCs jedoch nicht in Abhängigkeit von Sitzen auf Posern animieren so dienen folgende Befehle:
Dies entsprechen teilweise der bei Avataren per Tastatur Eingabe ausgelösten Bewegungen (sitzen, aufstehen, etwas berühren).
Animation eines NPCs starten
osNpcPlayAnimation(key npc, string animation)
Plays animation on the NPC identified by their key.
Threat Level High
Permissions ${OSSL|osslNPC}
Extra Delay 0 seconds
Spielt eine Animation an dem NPC ab (sofern die Priorität der neuen Animation höher als die der Alten ist).
Da mehre Animationen additiv abgespielt werden können, ist auf Überlappung und Priorität zu achten.
Bereits laufende Animationen die nicht mehr benötigt werden, sind mit osNPCStopAnimation zu stoppen.
Ob die alte Animation vor Start der Neuen gestoppt wird, oder danach ist abhängig vom Einsatz.
Beide Methoden haben ihre Vor- und Nachteile:
Zuerst Stoppen, dann Starten geht zuverlässig, aber es kann dazwischen Rucken oder Unterbrechung in der Bewegung geben.
Umgekehrt ist die Funktion Prioritäts abhängiger.
Beispiel:
osNpcPlayAnimation(npc, animation);
Animation eines NPCs stoppen
osNpcStopAnimation(key npc, string animation)
Stops an animation that is being played by the NPC identified by their key.
Threat Level High
Permissions ${OSSL|osslNPC}
Extra Delay 0 seconds
Stoppt eine laufende Animation. Dazu muss die Animation bekannt sein. Es gibt Standard Animationen mit den Namen „sit“ wenn man sich auf ein Sittarget setzt. Und „stand“ wenn man aufgestanden ist.
Beispiel:
osNpcStopAnimation(npc, animation);
NPC auf Sitz (sit target) / Objekt setzten
osNpcSit(key npc, key target, integer options)
Makes an NPC sit on an object.
Options - OS_NPC_SIT_NOW. Makes the npc instantly sit on the prim if possible.
This is the only option available and is currently always on no matter what is actually specified in the options field
If the prim has a sit target then sit always succeeds no matter the distance between the NPC and the prim.
If the prim has no sit target then
If the prim is within 10 meters of the NPC then the sit will always succeed.
At OpenSimulator 0.7.5 and later, if the prim is further than 10 meters away then nothing will happen.
Before OpenSimulator 0.7.5, if the prim is further than 10 meters away then the avatar will attempt to walk over to the prim but will not sit when it reaches it.
Threat Level High
Permissions ${OSSL|osslNPC}
Extra Delay 0 seconds
Dient dazu den Avatar auf ein Objekt mit/ohne Sit Target zu setzten, zum Beispiel auf einen Poser.
- key ist der Key/UUID des NPCs.
- target ist die UUID des Objektes auf das sich gesetzt werden soll.
- options ist aktuell nur „OS_NPC_SIT_NOW“ verfügbar.
- Laut Beschreibung ist der Erfolg des Sitzbefehls abhängig von der Distanz zum Objekt auf das gesetzt werden soll, wenn nicht per Script Befehl ein explizites Sit Target ausgewiesen wurde.
Beispiel:
llSitTarget(<0.3, 0.0, 0.55>, ZERO_ROTATION);
osNpcSit(npc, llGetKey(), OS_NPC_SIT_NOW);
Anmerkung:
Mit llGetKey() wird die eigene UUID des Prims ermittelt in dem das Script untergebracht ist.
Somit setzt sich der NPC auf das Objekt das dieses Script enthält.
Faktisch wird der NPC ein Child Prim mit der größten Linknummer des Objektes auf dem es sich hinsetzt.
Zusätzlich wird die Basisanimation „stand“ beendet und „sit“ gespielt.
NPC von Sitz (sit target)/ Objekt aufstehen lassen
osNpcStand(key npc)
Makes a sitting NPC stand up.
Threat Level High
Permissions ${OSSL|osslNPC}
Extra Delay 0 seconds
Der NPC mit der UUID/key "npc" steht auf.
Faktisch wird die Verlinkung mit dem Sit Prim aufgehoben, und der NPC wieder ein eigenständiges Objekt.
Zusätzlich wird die Basisanimation „sit“ beendet und „stand“ gespielt.
Beispiel: osNpcStand(npc);
Einen NPC ein Objekt berühren lassen
osNpcTouch(key npcKey, key objectKey, integer linkNum)
Only LINK_THIS and LINK_ROOT are valid for this function. Any other of the LINK_* constants will be ignored and no touch takes place.
1. If linkNum is LINK_THIS then the prim with the key objectKey will be touched.
2. If linkNum is LINK_ROOT or 0 then the root prim of the link set will be touched, even if the root prim key is not objectKey
3. For any other value of linkNum a search will be made through the linkset for a prim with that link number. If found that prim will be touched. If no prim is found for that link number the function fails silently and no touch takes place.
The touch is fired as if it came from an old client that does not support face touch detection or (probably) one of the text clients like Metabolt. Since there is no mouse the llDetectedTouch* functions will return the defaults (See the LSL Wiki for full details)
llDetectedTouchBinormal TOUCH_INVALID_VECTOR
llDetectedTouchFace TOUCH_INVALID_FACE
llDetectedTouchNormal TOUCH_INVALID_VECTOR
llDetectedTouchPos TOUCH_INVALID_VECTOR
llDetectedTouchST TOUCH_INVALID_TEXCOORD
llDetectedTouchUV TOUCH_INVALID_TEXCOORD
If the prim is not found or would not allow a normal client to touch it then this function fails silently.
Threat Level High
Permissions ${OSSL|osslNPC}
Extra Delay 0 seconds
Der mit npcKey beschriebene NPC , berührt das Objekt objectKey an der angegebenen Linknummer linkNum.
Parameter Beschreibung:
key npcKey = Key/UUID des NPCs
key objectKey = Key/UUID des Objektes das berührt werden soll.
integer linkNum = Linknummer des mit objectKey beschriebenen Objektes das berührt werden soll.
als Eingabe für Linknummer kann neben der Echten Linknummer auch folgendes angegeben werden:
- "LINK_THIS" : das Prim in dem dieses Script sich befindet
- "LINK_ROOT" : das Root Prim des Objektes in dem sich dieses Script (eventuell im Sub Prim) befindet
Beispiel: osNpcTouch(npc, llGetKey(), LINK_THIS);
Die Berührung wird die Touch Events triggern das per Script in dem angefassten Objekt wiederum ausgewertet werden kann.
Beispiel: der NPC fasst einen Türe an:
In der Türe findet sich dann etwas in dieser Art:
touch_start(integer number)
{
{
llSay(0,“Wer klopft da draussen und will rein?“);
}
}
Weitere Befehle sind in anderen Artikeln behandelt um die Übersichtlichkeit zu wahren.
Die Original Infos in Englisch findet ihr hier:
http://opensimulator.org/wiki/Scripting_Documentation
|
|
|
OSSL BEFEHLE zur NPC BEWEGUNG |
Geschrieben von: Tron Mcp - 09.11.2021, 20:03 - Forum: Scripting
- Keine Antworten
|
|
OSSL BEFEHLE zur NPC BEWEGUNG
Dieser Artikel ist Teil einer Serie von OSSL Befehlen zur NPC Nutzung in Openim.
Ich habe die Befehle Thematisch gegliedert:
Hier die Befehle zur NPC BEWEGUNG:
osNpcGetPos, osNpcGetRot,
osNpcSetRot, osNpcMoveTo, osNpcMoveToTarget, osSetSpeed, osNpcStopMoveToTarget
Absolute Position des NPC ermitteln
vector osNpcGetPos(key npc)
Return the current position of the NPC.
Threat Level High
Permissions ${OSSL|osslNPC}
Extra Delay 0 seconds
Ermittelt die absolute Position des per Key/ UUID benannten NPCs in der Sim und gibt dieses Ergebnis als Vektor zurück.
Drehung des NPC abfragen
rotation osNpcGetRot(key npc)
Gets the rotation of the avatar. Only the rotation around the Z plane in Euler rotation (horizontal rotation) has any meaning.
Threat Level High
Permissions ${OSSL|osslNPC}
Extra Delay 0 seconds
Ermittelt die absolute Rotation des per Key/ UUID benannten NPCs in der Sim und gibt dieses Ergebnis als Rotation zurück.
Dabei ist nur der Z Wert tatsächlich beachtenswert. Dieser wird in „Euler“ Notation angegeben.
Euler ist eine Winkeldarstellung in Radians für die Angabe von Kreissegmenten.
Was "Euler" genau ist findet ihr in der Scriptinfo auf Secondlife. Dafür gibt es Umwandlungs Befehle in den LSL Script Funktionen.
Und mit diesen Funktion könnt ihr Euler <-> Rotation wandeln:
http://wiki.secondlife.com/wiki/LlEuler2Rot
http://wiki.secondlife.com/wiki/LlRot2Euler
NPC drehen
osNpcSetRot(key npc, rotation rot)
Dreht den per Key/UUID benannten NPC auf eine zur Sim absolute Rotation in der Z-Achse.
Set the rotation of the avatar. Only setting the rotation in the Z plane in Euler rotation will have any meaningful effect (turning the avatar to point in one direction or another). Setting X or Y Euler values will result in the avatar rotating in an undefined manner.
Threat Level High
Permissions ${OSSL|osslNPC}
Extra Delay 0 seconds
Nur der Z Wert hat einen Funktion:
osNpcSetRot(npc, <0.000000, 0.000000, 1.000000, 0.000000>);
osNpcSetRot(npc, llEuler2Rot(<0.0, 0.0, PI>));
Beschreibung der Funktion Euler2Rot: http://wiki.secondlife.com/wiki/LlEuler2Rot
NPC an absolute Position bewegen
osNpcMoveTo(key npc, vector position)
Moves npc to the position.
Threat Level High
Permissions ${OSSL|osslNPC}
Extra Delay 0 seconds
Bewegt den per Key/UUID benannten NPC auf eine zur Sim absolute Position. Die Bewegung erfolgt in einem Schritt wie ein TP.
In diesem Fall wird der NPC bezogen auf seine vorherige Position um 5 m in der X-Achse und -1m der Y-Achse verstetzt.
osNpcMoveTo(npc, llGetPos() + <5.0, -1.0, 0.0>);
NPC in Richtung des Ziels losschicken
osNpcMoveToTarget(key npc, vector target, integer options)
Move the NPC to a given target over time. How the NPC will get there depends on the following options.
OS_NPC_FLY - Fly the NPC to the given position. The avatar will not land unless the OS_NPC_LAND_AT_TARGET option is also given.
OS_NPC_NO_FLY - Do not fly to the target. The NPC will attempt to walk to the location. If it's up in the air then the NPC will keep bouncing hopeless until another move target is given or the move is stopped.
OS_NPC_LAND_AT_TARGET - If given and the NPC is flying, then it will land when it reaches the target. If OS_NPC_NO_FLY is given then this option has no effect.
OS_NPC_FLY and OS_NPC_NO_FLY are options that cannot be combined - the NPC will end up doing one or the other. If you want the NPC to fly and land at the target, then OS_NPC_LAND_AT_TARGET must be combined with OS_NPC_FLY.
OS_NPC_RUNNING - make the NPC run to the given position.
Threat Level High
Permissions ${OSSL|osslNPC}
Extra Delay 0 seconds
Schickt den per Key/UUID benannten NPC los damit er die mit Vektor angegebene Position (irgendwann mal) erreicht.
Die Bewegung erfolgt in einstellbare Geschwindigkeit und dauert eine unbestimmte Zeit.
Die Geschwindigkeit mit der das auf das Ziel zugegangen wird ist mit osSetSpeed einstellbar. (nachfolgend beschrieben)
Die Art und Weise wie er hinkommt ist mit Parametern in „Options“ einstellbar.
So kann man vorgeben ob hin gegangen (kein Option Paramater) oder gelaufen (OS_NPC_RUNNING) wird.
Es ist auch einstellbar ob der Boden verlassen werden darf mittels Flug (OS_NPC_FLY)
oder am Boden gegangen werden muss (OS_NPC_NO_FLY).
Falls geflogen wird, so erfolgt die Landung am Zielpunkt nur nach separatem Parameter (OS_NPC_LAND_AT_TARGET).
Mehrere Parameter werden durch „|“ getrennt angegeben.
Beispiel: flieg hin zu einem Ziel das von der aktuellen Position in 5m X und -1m Y entfernt ist. Lande am Ziel wenn es erreicht ist.
osNpcMoveToTarget(npc, llGetPos() + <5.0, -1.0, 0.0>, OS_NPC_FLY | OS_NPC_LAND_AT_TARGET );
Die Bewegungs Geschwindigkeit einstellen
osSetSpeed(key ID, float SpeedModifier)
This allows for users to speed themselves up. It multiplies the running, walking, rotating and flying of the avatar.
The default value for SpeedModifier is 1.0.
To be precise, it affects physical velocity. If you specify too large or too small number for SpeedModifier, the target will be unmovable, showing the following message in the region console:
[PHYSICS]: Got a NaN velocity from Scene in a Character
Threat Level Moderate
Permissions ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Extra Delay 0 seconds
Mit diesem Befehl lässt sich die Laufgeschwindigkeit (für Avatare wie auch NPCs) einstellen.
Das wirkt auf Befehle aus die ein Laufen, Fliegen, etc beinhalten.
Im NPC Kontext macht das nur im Zusammenhang mit dem Befehl osNpcMoveToTarget Sinn.
osSetSpeed(llDetectedKey(0), 2.0); // Doppelte Bewegungs- Geschwindigkeit
osSetSpeed(llDetectedKey(0), 1.0); // Wieder Normal Geschwingigkeit
NPC Bewegung auf ein (noch nicht erreichtes) Ziel Stoppen
osNpcStopMoveToTarget(key npc)
Stop a current move to a target.
Threat Level High
Permissions ${OSSL|osslNPC}
Extra Delay 0 seconds
Mit diesem Befehl läßt sich ein Laufbefehl der mit osNpcMoveToTarget gegeben wurde wieder aufheben, auch wenn das Ziel noch nicht erreicht ist. Sinn macht das zum Beispiel in Zusammenhang mit einem Timer, der Zuschlägt wenn eine Bewegung zu lange gedauert hat, weil der Weg versperrt ist. Eine andere Anwendung ist Reaktion auf ein vorher nicht bekanntes Event.
Weitere Befehle sind in anderen Artikeln behandelt um die Übersichtlichkeit zu wahren.
Die Original Infos in Englisch findet ihr hier:
http://opensimulator.org/wiki/Scripting_Documentation
|
|
|
OSSL BEFEHLE zu NPC CHAT AUSGABE |
Geschrieben von: Tron Mcp - 09.11.2021, 19:36 - Forum: Scripting
- Keine Antworten
|
|
OSSL BEFEHLE zu NPC CHAT AUSGABE
Dieser Artikel ist Teil einer Serie von OSSL Befehlen zur NPC Nutzung in Openim.
Ich habe die Befehle Thematisch gegliedert:
Hier die Befehle zur NPC CHAT Ausgabe:
osNpcWhisper, osNpcSay, osNpcShout, osNpsSayTo
Einen NPC flüstern lassen mit osNPCWhisper
osNpcWhisper(key npc, int channel, string message)
npc whispers message on the given channel.
Threat Level High
Permissions ${OSSL|osslNPC}
Extra Delay 0 seconds
osNpcWhisper(npc, PUBLIC_CHANNEL, "Goodbye!");
Unter channel ist die kanalnummer des Kommunikationskanals gemeint. Diese sind als signed Int 2^8 definiert.
- Die negativen Kanalnummern können nur von Prim zu Prim Kommunikation eingesetzt werden.
Dies kann zum Beispiel auch ein Fernsteuerungs Prim sein das den NPC kontrolliert.
- 0 oder PUBLIC_CHANNEL bezeichnen den lokalen öffentlichen Chat Kanal den jeder Ava in der Nähe mithört.
- Positive Kanäle können (auch gemischt) von Prims und Avataren genutzt werden.
Höhere Kanäle dienen gezielter Kommunikation mit ausgewählten Kommunikations Partnern.
Einen NPC reden lassen mit osNpcSay
osNpcSay ist identisch wie Whisper, nur ist der Eempfang weiter im Umkreis des NPCs
osNpcSay(key npc, integer channel, string message)
osNpcSay(key npc, string message)
npc says message on the given channel (channel is 0 in the second form)
Threat Level High
Permissions ${OSSL|osslNPC}
Extra Delay 0 seconds
Für Say gibt es 2 Befehle die sich im ausgegeben Chatkanal unterscheiden
- Der erste Befehl deckt alle Anwendungsfälle ab, und ist identisch mit dem 2.Befehl wenn für channel der Wert 0 oder PUBLIC_CHANNEL eingetragen wird. So sind folgende beiden Beispiele in der Funktion identisch:
osNpcSay(npc, PUBLIC_CHANNEL, "Goodbye!");
osNpcSay(npc, "Goodbye!");
- Der zweite Befehl hgeht immer fest auf den allgemeinen Chatkanal 0.
Einen NPC laut Schreien lassen mit osNpcShout
ist identisch zu den 2 vorhergehenden Befehlen nur mit nochmals erhöhter Reichweite
osNpcShout(key npc, integer channel, string message)
npc shouts message on the given channel.
Threat Level High
Permissions ${OSSL|osslNPC}
Extra Delay 0 seconds
Aber wer will schon schreiende NPCs?
Einen NPC gezielt einen Avatar oder ein Objekt ansprechen lassen
osNpsSayTo ist ähnlich zu osNpsSay , nur wird ein spezieller User über seine UUID angesprochen.
Somit wird nicht herumgespamt.
osNpcSayTo(key npc, key target, integer channel, string message)
npc says message on the given channel to the specified target
Threat Level High
Permissions ${OSSL|osslNPC}
Extra Delay 0 seconds
Eine mögliche Anwendung ist ein spezieller Dialog mit jemanden der den NPC angeklickt hat, oder auf dem gleichen Poser sitzt.
Aber auf diese Art kann auch eine Fernbedienung realisiert werden.
Eine gute Anwendung sind Fahrzeug Rückmeldungen an den Fahrer eines Leihwagens.
So wird tatsächlich der Informiert der Fährt, und nicht der Besitzer des Wagens, oder alle in Hörweite.
Das kann bei einem Rennen sehr nützlich sein.
Weitere Befehle sind in anderen Artikeln behandelt um die Übersichtlichkeit zu wahren.
Die Original Infos in Englisch findet ihr hier:
http://opensimulator.org/wiki/Scripting_Documentation
|
|
|
|