[Tutorial] - Hallo Welt

Hier wird über den Server UOX allgemein Diskutiert.
Antworten
Nachricht
Autor
SlasHeR

[Tutorial] - Hallo Welt

#1 Beitrag von SlasHeR » 22 Feb 2004 13:33

In diesem Tutorial lernen wir, wie wir ein Script auf ein Item binden und wie das Grundprinzip der Events funktioniert.

Als erstes erstellen wir uns ein neues Verzeichnis:
C:\UOX3\JS\Tutorials
Nun müssen wir ein leeres Script erstellen, dass wir "Script1.js" nennen.
Am einfachsten geht das, indem wir eine "Neue Textdatei.txt" erstellen, und dann entsprechend umbennen:
C:\UOX3\JS\Tutorials\Tutorial\Script1.js
Damit der Server weis, dass wir dort ein Script haben, müssen wir es erst in der "js_fileassociations.scp" auf eine ID binden.

Dazu öffnen wir die Datei:
C:\UOX3\JS\js_fileassociations.scp
Und fügen folgende Zeile am Ende des Scripts ein.
7000 /Tutorials/Script1.js

}



EOF
Nun geht es ans Scripten, dazu öffnen wir die datei "Script1.js".
Ich empfehle dazu UltraEdit oder ein anderes Programm, dass Syntax-Highlighting unterstützt für JS.
Alternativ geht aber auch der "Text-Editor" von Windows.

Bevor wir loslegen mit Scripten, sollten wir uns überlegen was wir scripten wollen. Der Titel dieses Tutorials heisst "Hallo Welt", also wollen wir ein simples Hallo-Welt Programm realisieren.

Dazu geben wir folgenden Code ein:

Code: Alles auswählen

function onUse(pUser, iUsed)
{
	pUser.SysMessage("Hallo Welt!");
}
Nun speichern wir die Datei und starten den Server.
Danach loggen wir dort ein, und geben folgende Befehle ein:
'add 345
'setscptrig 7000
Und zeigen mit dem Pointer auf das eben erstellte Item.
"'setscptrig ?ID?" binded eine ScriptID auf ein Item oder Character.

Wenn ihr nun einen Doppelklick auf die Mauer macht, die ihr eben erstellt habt, sollte ein "Hallo Welt" in der Programmzeile stehen.

Schauen wir uns dazu den Code nocheinmal einmal genauer an:

Code: Alles auswählen

function onUse(pUser, iUsed)
{
	pUser.SysMessage("Hallo Welt!");
}
Wie bereits erwähnt gibt es bei UOX3 JS sogenannte "Events", d.h. Ereignisse die bei bestimmten Programm-Aktionen auftreten.
In unserem Fall ist es das Doppelklick-Ereignis "onUse".

Nun fragt ihr euch sicher warum da "function" vor steht.
Nunja, das Event wird in JS wie eine normale Funktion gehandhabt, der auch wenn notwendig Paramter übergeben werden können.
Paramer sind Variablen, die die Funktion benötigt.
Sie werden in Klammern, und jeweils durch Kommas getrennt hinter der Funktion mit angegeben.

Code: Alles auswählen

function onUse(pUser, iUsed)
pUser = Der aktuelle Benutzer (Der Doppelklicker)
iUsed = Das Item / der Character auf den geklickt wurde.

Wie man in der UOX3 JS Documentation entnehmen kann, gibt es 2 wesentliche Objekt-Typen. Chatacter und Item.
Diese Objekte stellen verschiedene Funktionen bereit, die man mit einem "." direkt hinter dem Objektnamen mit ansprechen kann:

Code: Alles auswählen

function onUse(pUser, iUsed)
{
	pUser.SysMessage("Hallo Welt!");
}
Hier wird der Funktion SysMessage() vom Objekt-Typ Character eine
Zeichenkette "Hallo Welt!" übergeben. Die Funktion ansich bewirkt nur eine einfache Systemnachricht beim Spieler, die ihr sicher schon aus Ultima Online kennt.

Aber wofür stehen jetzt diese geschweiften Klammern ?
Ganz einfach, sie definieren den Programmblock von der Funktion onUse().
Wer dies nicht verstehen sollte, sollte sich umbedingt nochmal im Internet nach dem allgemeinen Java Script Syntax schlau machen, dort wird auch erklärt wofür das ";" am ende der Zeile der SysMessage() Funktion ist.

*ACHTUNG!*:
Wenn ihr ein Script verändert und dann speichert, müsst ihr erst den JS-Teil im UOX3 Server neuladen, oder den Server neustarten.
Da die erste Methode bequemer ist, zeige ich euch wie:
1. Zum Server-Window von UOX3 wechseln.
2. Die "*"-Taste drücken (Shift + "+"-Key); um die Konsole freizugeben.
3. Die "8"-Taste für JS-Reload betätigen.

Wer die anderen befehle sehen möchte kann auch danach nocheinmal die "?"-Taste drücken.
Zum Schluss sollte man die Konsole wieder "locken" mit der "*"-Taste.

Ãœbungsaufgaben:
1. Erweitere den oben gezeigten onUse-Event so,
dass der Spieler "Hallo Welt" sagt.

2. Erweitere den oben gezeigten onUse-Event so, dass das Item "Guten Tag" sagt.

3. Spiele zu den obengenannten einen Soundeffekt deiner Wahl ab.
Viel Spass wünscht der Nimrasdale Staff!

SlasHeR

#2 Beitrag von SlasHeR » 22 Feb 2004 13:35

Lösung: 1
by Switch (ex NRD Scripter)

Code: Alles auswählen

function onUse(pUser, iUsed) 
{ 
    pUser.SysMessage( "Hallo Welt!" ); 
    pUser.TextMessage("Hallo Welt"); 
}
Lösung: 2

Code: Alles auswählen

function onUse(pUser, iUsed) 
{ 
    pUser.SysMessage( "Hallo Welt!" ); 
    pUser.TextMessage("Hallo Welt"); 
    iUsed.TextMessage ("Guten Tag");
}
Lösung: 3

Code: Alles auswählen

function onUse(pUser, iUsed) 
{ 
    pUser.SysMessage( "Hallo Welt!" ); 
    pUser.TextMessage("Hallo Welt"); 
    iUsed.TextMessage ("Guten Tag");
    pUser.SoundEffect( 345, 1 ); 
}

Antworten