[Source Tut] Eigene Scroll erstellen

02/20/2014 01:02 .Trotex.#1
Custom Scrolls erstellen

Hallo liebe Com,

Ich hab solch ein Tutorial nirgends gefunden und daher dacht ich mir mach ich es einfach mal :)

Es geht darum wie man in der Source seine eigene Scroll mit eigenen Wirkungen erstellt.
Ich werde versuchen alles so zu erklären dass man es mit 0 Source Kenntnis versteht.

Fangen wir mal an mit dem Source Part.

In der MoverSkill.cpp gibt es eine Funktion die sich so schimpft:
Code:
int  CMover::DoUseItemSystem( ItemProp *pItemProp, CItemElem* pItemElem, int nPart )
Sie brauchen wir wenn wir eine Art Item benutzen. Alle hier verzeichneten Items haben in der Regel in ihrer dwID auch ein "_SYS_" (DoUseItemSystem sagt alles)

Ich werde das Ganze mit der Scroll aus Lumis Tutorial zum Premium System über SM Mode erläutern. [Only registered and activated users can see links. Click Here To Register...]

Das ist seine Scroll aus dem Tut:
Code:
#ifdef __PREMIUM
case II_ITEM_PREMIUM:
{
if( !( IsSMMode( SM_PREMIUM ) ) )
SetSMMode( SM_PREMIUM, pItemProp->dwCircleTime );
else
nResult = 2;
}
break;
#endif
Also. Eine neue Scroll könnt ihr nun in der Switch-Abfrage erstellen. Eine Switch-Abfrage ist nichts anderes als, dass das Programm guckt welchen Wert eine Variable hat. Unsere Abfrage fragt nach pItemProp->dwID :
Code:
switch( pItemProp->dwID ) { 
...
}
Also nach der dwID des benutzen Items. (pItemProp wurde der Funktion übergeben, wie man in der Deklaration sieht)

Um nun die neue Scroll auch zu erstellen gehen wir direkt in die Switch-Abfrage und erstellen, nach zum Beispiel der ersten Scroll, also nach dem ersten "break;" eine neue "Möglichkeit" in Form von:
Code:
case II_ITEM_PREMIUM {
//Inhalt der "Möglichkeit" bzw. in dem Fall dass das benutzte Item die dwID "II_ITEM_PREMIUM" hat
}
break;
Erklärung:
Nun können wir uns dem Inhalt witmen.. Ich werde dieses Tutorial später um die BUFF_ITEM 's erweitern, aber westmal nun zu Lumis Scroll:

Code:
if( !( IsSMMode( SM_PREMIUM ) ) )
SetSMMode( SM_PREMIUM, pItemProp->dwCircleTime );
else
nResult = 2;
Diese Funktion fragt einfach nur ab ob der SM Mode SM_PREMIUM aktiv ist.
Wenn er es nicht ist wenn die Scroll benutzt wird, so wird dem Player der SM Mode SM_PREMIUM zugewiesen, für die Zeit, die in der pItemProp->dwCircle Time (Ressource Part) zugewisen ist.

Nun müssen wir nur noch in dem Ressource Ordner der Source in der defineItem.h das item "II_ITEM_PREMIUM" hinzufügen. Also so:
Code:
#define II_ITEM_PREMIUM                2125
Also kommen wir nun zum Ressource Part.

In der defineItem.h eures Ressource-Ordners in euren Files wird das selbe gemacht wie in der Source.

In der propItem.txt (alternativ Spec_Item) kommt Folgenes:
Code:
6    II_ITEM_PREMIUM     "Item [Premium]"    1    1    IK1_CHARGED    IK2_SYSTEM    IK3_SCROLL    =    =    1    =    5000000    =    =    =    =    =    =    =    0    =    =    1    =    =    1    1    =    =    =    =    _NONE    0    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    XI_SYS_REMOVE01    =    =    =    604800    =    =    WUI_NOW    =    =    =    =    =    =    =    =    =    0    0    0    0    0    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    """itm_GenGemAmpere.dds"""    0    """"""    "I will give you the premium status"
Erklärung:
Die Rubrik "Buffs" werde ich noch adden.


Don't Copy and Paste.
Credits:
95% Trotex
5% Lumi für die Scroll-Vorlage in seinem Tut
02/20/2014 01:16 JiiGaa#2
Nice Tut. Sehr ausführlich :)

Was genau meinst du jetzt mit der "Rubrik Buffs" ? :o
02/20/2014 01:24 .Trotex.#3
Quote:
Originally Posted by JiiGaa View Post
Nice Tut. Sehr ausführlich :)

Was genau meinst du jetzt mit der "Rubrik Buffs" ? :o

Es gibt bei manchen Scrolls wie den Amplis die Funktion einen "Buff" zu adden der verschiedene Funktionen beherbergt, dazu werd ich die nächsten Tage mal ein wenig was drüber schreiben
(Ich bin einfach nur zu müde für heute und muss zur Frühschicht morgen :D)
02/22/2014 18:35 Sedrika#4
Das break; kommt vor dem } sonst würde es wenig Sinn ergeben.
Ansonsten gut erklärt :)
02/22/2014 18:37 WurstbrotQT#5
Quote:
Originally Posted by Sedrika View Post
Das break; kommt vor dem } sonst würde es wenig Sinn ergeben.
Ansonsten gut erklärt :)
Muss nicht sein, ist eine Frage des Stils.
02/22/2014 19:03 Lumi#6
Quote:
Originally Posted by Sedrika View Post
Das break; kommt vor dem } sonst würde es wenig Sinn ergeben.
Ansonsten gut erklärt :)
Würde theoretisch beides gehen, da beide den gleichen Sinn haben.

Btw. Gut erklärt. :) Ich bin mal gespannt wie genau du das mit den Buffs erklärst. :p
02/22/2014 19:22 Sedrika#7
Quote:
Originally Posted by WurstbrotQT View Post
Muss nicht sein, ist eine Frage des Stils.
Hab es vorher noch nie ausprobiert o.ä., da ich es nicht anders gelernt habe. Aber wenn es doch gehen sollte, dann nehme ich meine Aussage zurück.
02/22/2014 19:37 Chiamasu#8
Also ich wäre auch dafür das Sedrika das Tutorial mal in seinen Index aufnimmt.
Du hast alles ausführlich erklärt nicht so wie andere die einfach schreiben
PHP Code:
Macht das darunter oder macht das dazwischen usw
Was ich ausserdem gut finde das du einzelne Wörter wie z.B. break o.Ä. erläutert hast.

Danke für dein Tutorial

Lg Chiamasu