Eine Nahkampfwaffe machen:Schwierigkeitsgrad: *****
Vorraussetzungen:-Was ist ein Script?-Wenige weitere Grundkenntnisse
In diesem Kurztutorial will ich erklären wie ihr eine Waffe für einen Ritter selbst machen könnt. Ich werde das alles am Beispiel einer Bratpfanne machen. Ihr könnt eurer Kreativität freien Lauf lassen.
Wir fangen an, in dem wir einfach ein neues Objekt erstellen. Wie das geht müssten eigentlich alle wissen, für die die es nicht wissen:
Zuerst brauchen wir natürlich eine Grafik. Das ist kein Grafiktutorial, darum bleibt das auftreiben der Grafik jedem selbst überlassen. Diese Grafik habe ich genommen:
Die DefCore.txt müsste standartmäßig so aussehen:
- Code:
-
[DefCore]
id=_NEW
Name=New Object
Version=4,9,5
Category=18960
MaxUserSelect=10
Width=6
Height=6
Offset=-3,-3
Value=10
Mass=10
Components=_NEW=1;
Picture=6,0,64,64
Vertices=1
VertexY=1
VertexFriction=20
Rebuy=1
Collectible=1
Wir setzen die Werte für unsere Grafik ein. Ich benutze hierzu den Vertexmanager. Den bekommt man
hier. Er ist einfach zu bedienen und ermöglicht uns unsere Grafik in die DefCore einzubringen.
Jetzt müssen wir noch einige Werte verändern. Am Schluss sieht das so aus:
- Code:
-
[DefCore]
id=PFAN
Version=4,9,8
Name=Bratpfanne
Category=C4D_Object|C4D_SelectMaterial|C4D_SelectKnowledge|C4D_SelectHomebase
MaxUserSelect=10
Width=10
Height=9
Offset=-5,-5
Vertices=2
VertexX=-4,3
VertexY=3,-3
VertexFriction=50,50
Picture=10,0,64,64
Value=35
Mass=25
Components=METL=3;
Rebuy=1
Collectible=1
Rotate=1
Was wurde verändert?-
ID geändert in PFAN (Beliebige ID, sie darf nur noch nicht bestehen)
-
Version = Engineversion mit der das Objekt erstellt wurde. Dürfte einfach unverändert bleiben.
-
Name geändert
- Die
Category angepasst
-
Grafik-Werte aus dem Vertexmanager eingefügt
-
Value = Wert des Objektes
-
Mass = Gewicht des Objektes
-
Components = Bestandteile des Objektes, wichtig bei der Herstellung!!! Meine Pfanne ist aus 3 Metall
-
Rotate = Drehbarkeit
So. Als nächstes ist der Script an der Reihe. Den können wir eigentlich erstmal aus dem Schwert oder der Axt kopieren und dann anpassen. Ich werde dennoch die einzelnen Funktionen beschreiben. Der Script sieht also so aus wenn wir ihn vom Schwert kopiert haben:
- Code:
-
/*--- Schwert ---*/
#strict //*--Einfach schöner als strict :) ---*//
/* Ist eine Handwaffe */
public func IsFightWeapon()
{
return(1);
}
/* Kampfaktion */
public func GetFightAction()
{
return("SwordFight");
}
/* Schlagaktion */
public func GetStrikeAction()
{
if (Random(2))
return("SwordThrust");
else
return("SwordStrike");
}
/* Kampfgeschwindigkeit */
public func GetStrikeTime()
{
return(2);
}
/* Kampfschaden */
public func GetStrikeDamage()
{
return(8);
}
/* Schlag */
public func StrikeSound()
{
Sound("SwordHit*");
}
/* Aufschlag */
protected func Hit()
{
Sound("SwordHit*");
return(1);
}
/* Kann geschmiedet werden */
public func IsAnvilProduct() { return(1); }
/* Aufwertungszauberkombo: Mit Schwert wird der Clonk zum Ritter */
public func GetRevaluationCombo(object pClonk) { return(KNIG); }
Eigentlich erklärt sich der Script von selbst, aber heir nochmal eine erklärung zum Script:
-
public func isFightWeapon() { return(1); } sagt dem Objeckt das es eine Handwaffe ist wie ein Schwert oder eine Axt. Die Funktion muss nicht verändert werden.
-
public func GetFightAction() { return("SwordFight"); } sagt, wie der Clonk aussieht, wenn er sich mit der Waffe mit einem anderen Clonk kabbelt. Hier stehen standartmäßig zur Verfügung: SwordFight und AxeFight. Welche wir nehmen kommt auf die Waffe an. Vielleicht mache ich auch noch ein Tutorial zum erstellen siner eigenen Kampfaktionen.
-
func GetStrikeAction() gibt die Aktion eines Schlages an. Hier werden wir nur eine Angeben. Wir schreiben also:
- Code:
-
public func GetStrikeAction()
{
return("DeineAktion");
}
Für "DeineAktion" lassen sich wieder verschiedene Aktionen einfügen: SwordStrike, SwordThrust, AxeStrike und AxeThrust. Probiert einfach, was am besten passt.
-
GetStrikeTime() gibt die Kampfgeschwindigkeit zurück. Die eines Schwertes ist 2.
-
GetStrikeDemage() gibt den Schaden, den die Waffe verursacht, zurück.
-
StrikeSound() gibt den Abgespielten Sound an. Ich verwende "Clonk" weil das zu einer Pfanne so schön passt
-
Hit() wird beim herrunterfallen des Objektes aufgerufen. Auch hier kommt ein Sound rein.
Dann haben wir noch zwei Funktionen, die eine sagt, dass das Objekt geschmiedet werden kann. Die andere sagt, zu was ein Clonk wird, wenn er mit diesem Gegenstand "Aufwertung" benutzt. Den zweiten Wert könnt ihr auch löschen, wenn ihr ihn nicht braucht.
So. Jetzt brauchen wir noch ein #appendto für den Ritterclonk damit er unsere Waffe auch verwenden kann. Dazu erstellen wir einfach ein neues Objekt und schieben es in unsere Waffe. Wir nennen es "#appendto KNIG.c4d". In die DefCore schreiben wir folgendes:
- Code:
-
[DefCore]
id=KNAP
Name=RitterappendTo
Version=4,9,5
Category=1
In den Script schreiben wir jetzt folgendes:
- Code:
-
/*-- RitterAppendTo --*/
#strict 2 //*--Einfach schöner als strict :) ---*//
#appendto KNIG
//! Welche Objekte kann dieser Clonk einsetzen?
public func CanUse(def)
{
// Schwert
if (def == SWOR) return(1);
// Axt
if (def == AXE1) return(1);
// Bogen
if (def == BOW1) return(1);
// Schild
if (def == SHIE) return(1);
// Speer
if (def == SPER) return(1);
// Lanze
if (def == LANC) return(1);
// Rüstung
if (def == ARMR) return(1);
// Schwarze Rüstung
if (def == BRMR) return(1);
// Unbekannt
return(0);
}
- Mit #appendto KNIG sagen wir, dass der Script ein Anhang an den Ritter ist. Die andere Funktion ist frei kopiert aus dem Ritterscript. Sie sagt, welche Waffen der Ritter nutzen darf. Da schreiben wir jetzt unsere Waffe in dieser Forma dazu:
- Code:
-
if (def == PFAN) return(1);
Um die anderen Funtionen nicht extra schreiben zu müssen und um ERRORS zu vermeiden ersetzen wir nun noch alle anderen Werte mit return(_inherited);
Das ganze sieht dann so aus:
- Code:
-
/*-- RitterAppendTo --*/
#strict
#appendto KNIG
//! Welche Objekte kann dieser Clonk einsetzen?
public func CanUse(def)
{
if (def == PFAN) return(1);
return(_inherited);
}
Ganz einfach
Jetzt ist unsere Waffe bereit für ihren ersten Probegang. Und?
Bei mir funktioniert es -.- "Clonk"
Viel Spaß mit euren eigenen Waffen, bei Fragen Kommentieren!
Es ist mein erstes Tutorial, also bitte: Verbesserungsvorschläge
mfg, MagicWipf