TrinityCore - smart_scripts

12/26/2011 21:04 °"Crazy"°#1
smart_scripts


Dieses Tutorial soll einige Grundladen der smart_scripts vermitteln. Es ist in einigen Projekten untser smart_scripts oder SAI bekannt.

Praktische Beispiele, an denen ich die smart_scripts demonstriere, sind ein Teleport und ein Buff.


Praktisches Beispiel in einem Projekt:
Es soll ein Teleporter gebaut werden, der die Spieler von der aktuellen Position zu einer anderen festgelegten telepotieren soll.

SQL:
Code:
INSERT INTO  smart_scripts (entryorguid, source_type, id, link, event_type, event_phase_mask, event_chance, event_flags, event_param1, event_param2, event_param3, event_param4, action_type, action_param1, action_param2, action_param3, action_param4, action_param5, action_param6, target_type, target_param1, target_param2, target_param3, target_x, target_y, target_z, target_o, comment) VALUES 
('190000', 0, 1, 0, 62, 0, 100, 0, '50000', 1, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 8, 0, 0, '1234', '5678', '9800', '3.5', 'Testteleport');
Wir nehmen die SQL einmal komplett auseinander.

190000 - Die Entry der Creature
1 - die ID des Scripts, kann beliebig fortlaufen.
62 - Eventtype
100 - Somit wird gewährleistet, dass eine 100%ige Chance besteht, dass das Event ausgelöst wird
50000 - Die ID des Gossipmenüs
62 - Actiontype (hier teleport)
1 - Map des Zielorts
8 - Target, hier der Spieler.
1234 - X - Koordinate
4567 - Y - Koordinate
8900 - Z - Koordinate
3.5 - Orentiation
Testteleport - Ein Kommentar

Somit haben wir die Relevanten Daten einmal komplett auseinander genommen. Da dieses recht verwirrend ausschaut, kann man die SQL - Datei auch folgendermaßen aufbauen, um selbst besser zurechtzufinden:

SQL:
Code:
SET @entry := 190000;
SET @gossipmenu := 50000;
SET @event := 62;
SET @action := 62;


INSERT INTO  smart_scripts (entryorguid, source_type, id, link, event_type, event_phase_mask, event_chance, event_flags, event_param1, event_param2, event_param3, event_param4, action_type, action_param1, action_param2, action_param3, action_param4, action_param5, action_param6, target_type, target_param1, target_param2, target_param3, target_x, target_y, target_z, target_o, comment) VALUES 
('@entry', 0, 1, 0, @event, 0, 100, 0, '@gossipmenu', 1, 0, 0, @action, 1, 0, 0, 0, 0, 0, 0, 8, 0, 0, '1234', '5678', '9800', '3.5', 'Testteleport');

Somit haben wir unsere Datei etwas sortiert und als Datenbankdeveloper sieht man etwas besser durch. Natürlich kann man es beliebig weiter verfeinern, das soll der grobe Schliff sein.




Praktisches Beispiel in einem Projekt:
Ihr bekommt die Aufgabe, einen NPC zu basteln, welcher den Spielern den Buff 1234 gibt. Dieses sollt ihr schnell machen.

SQL
Code:
REPLACE INTO smart_scripts (entryorguid, source_type, id, link, event_type, event_phase_mask, event_chance, event_flags, event_param1, event_param2, event_param3, event_param4, action_type, action_param1, action_param2, action_param3, action_param4, action_param5, action_param6, target_type, target_param1, target_param2, target_param3, target_x, target_y, target_z, target_o, comment) VALUES 
('190005', 0, 1, 0, 62, 0, 100, 0, '121201', 1, 0, 0, 85, 48161, 2, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 'Machtwort Seelenstärke');
Hier seht Ihr im Vergleich des ersten Beispieles etwas anderes. Verändert wurde der Actiontype, der nun 85 beträgt. Dahinter der Param1, sprich Parameter 1 ist die ID des spells, der Parameter 2 ist der Castflag, der ausgelöst wird, wenn es getriggert wurde. In dem Falle, wenn der Spieler den Spell abruft.




Ich hoffe, ich konnte in Kurzfassung Euch ein bisschen den Sinn der Smart_scripts näher bringen.

Wenn Fragen offen sind oder ich einige Praktische Beispiele noch hinzufügen soll, so schreibt mir eine PN oder hier in den Thread.


Nützliche Links:
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]


(c) by °"Crazy"° - elitepvpers.com
12/26/2011 21:08 CrystalPrime#2
Verstehe zwar nicht von WoW aber solche arbeit ist sicher sehr schwer
und ein danke für die mühe sehr wert.
12/29/2011 13:15 n1_Roxxer#3
toppse halt ;)
gj bro ;)
12/29/2011 13:22 °"Crazy"°#4
Quote:
Originally Posted by n1_Roxxer View Post
toppse halt ;)
gj bro ;)
Schön, Dich auch mal wieder zu sehen. :)

Habe eben noch einen Fehler in der SQL - Syntax behoben.
12/29/2011 14:02 n1_Roxxer#5
Quote:
Originally Posted by °"Crazy"° View Post
Schön, Dich auch mal wieder zu sehen. :)

Habe eben noch einen Fehler in der SQL - Syntax behoben.
Ich saug mir grad nen 335er Client, vllt komm ich nachher mal skype dann können wir schreiben, jenachdem was das rl so vor hat ;o
01/29/2012 20:48 °"Crazy"°#6
Schreibfehler und Query angepasst