Neue Funktion für Vampire

Rund um das Scripten unter Sphere 55i

Moderator: Mods - Sphere

Antworten
Nachricht
Autor
Elgrimm

Neue Funktion für Vampire

#1 Beitrag von Elgrimm » 02 Aug 2006 15:35

Ich habe folgendes Problem.

Ich habe eine Rasse mit dem Namen Nachtwandler.
Nun möchte ich denen eine Funktion geben, mit deren Hilfe sie bei Tod die Möglichkeit haben, sich selbst wieder zu beleben.
Ich kann es ja nicht per Item machen, da man sowas ja als Geist nicht anklicken kann.


Also den Funktionsaufruf müßte ich ja so machen:

[plevel 0]
nachtwandler_1


Hier sind die Scripte mit denen ich die Rasse definiere.

Code: Alles auswählen

[DIALOG d_Race_Nachtwandler BUTTON] 
ONBUTTON=0 
SRC.SYSMESSAGE=Go then, and return when ready 
RETURN 1 
ONBUTTON=1 
IF <TIMER>>0 
RETURN 1 
ENDIF 
IF (<SRC.ID>==c_ghost_man) || (<SRC.ID>==c_ghost_woman) 
SRC.MESSAGE Your ghostly body passes through the object! 
TIMER=10 
RETURN 1 
ENDIF 
src.f_RaceNachtwandler 
src.newitem 0203c //Haare festlegen
src.act.bounce 
src.act.use 
src.go 6109,28,0 
RETURN 1 
ONBUTTON=2 
DIALOG d_Race_List 
RETURN 1 

Code: Alles auswählen

[FUNCTION f_RaceNachtwandler] 

TAG.RACE=RACE_Nachtwandler 
TAG.KUGELQUEST=00 
SRC.EVENTS +e_Nachtwandler_Race 
//SRC.EVENTS +E_DEAD //mein Totenscript - siehe fertige Scripts auf http://www.uodev.de/ 
//SRC.EVENTS +p_rempel_nicht //rempelscript - siehe fertige Scripts auf http://www.uodev.de/ 
TAG.STR=70 
TAG.DEX=100
TAG.INT=200
SRC.COLOR=07cc
SRC.OSKIN=07cc
SRC.TITLE=[Nachtwandler] 
SYSMESSAGE Du bist nun ein Nachtwandler! 
SOUND=snd_SPELL_CHAIN_LIGHTNING 
FIX 

[EVENTS e_Nachtwandler_Race] 

ON=@itemEQUIP
if (<act.DispID>==i_shield_heater)||(<act.type>==t_weapon_axe)||(<act.DispID>==i_platemail_leggings)||(<act.DispID>==i_platemail_gloves)||(<act.DispID>==i_platemail_arms)||(<act.DispID>==i_platemail_gorget)||(<act.DispID>==i_platemail_helm)
SRC.MESSAGE Dies kannst du nicht benutzen. 
SRC.ACT.BOUNCE 
RETURN 1 
ENDIF 

Code: Alles auswählen

[DIALOG Nachtwandler_Job BUTTON]
ONBUTTON=0 
SRC.SYSMESSAGE=Go then, and return when ready 
//////////////Schalter Nr 1//////////////
ONBUTTON=1
IF <TIMER>>0 
RETURN 1 
ENDIF 
IF (<SRC.ID>==c_ghost_man) || (<SRC.ID>==c_ghost_woman) 
SRC.MESSAGE Your ghostly body passes through the object! 
TIMER=10 
RETURN 1 
ENDIF 
src.f_nachtwandler_barde  
src.f_skillcap_nachtwandler_barde 
TIMER=3 
RETURN 0 

Code: Alles auswählen

//////////////Funktion Barde//////////////

[FUNCTION f_nachtwandler_barde] 

IF (<SRC.SKILLCLASS>==skill_nachtwandler_barde) 
sysmessage Du bist bereits ein Barde 
return 1 
endif 

src.events +e_nachtwandler_barde 
Src.Skillclass=skill_nachtwandler_barde //Skillclass in Spheretables.scp angelegt 
var.title=<src.title> // Titel des Rassenwandlers sichern 
TITLE=<Var.title>, Barde 
src.go 6098,14,0 
SYSMESSAGE Ihr seid nun ein Barde 
SYSMESSAGE Dir wird Gold mit auf den Weg gegeben 
NEWITEM=I_GOLD 
ACT.AMOUNT=500 
ACT.BOUNCE 
FIX 

[Function f_skillcap_nachtwandler_barde] 

/// skillcap abfrage 

if (<src.anatomy> >80.0)
src.anatomy=80.0
Endif 	
if (<src.ItemID> >60.0)
src.ItemID=60.0
Endif 	
if (<src.ArmsLore> >70.0)
src.ArmsLore=70.0
Endif 	
if (<src.Parrying> >80.0)
src.Parrying=80.0
Endif 	
if (<src.Begging> >1.0)
src.Begging=1.0
Endif 	
if (<src.Blacksmithing> >1.0)
src.Blacksmithing=1.0
Endif 	
if (<src.Bowcraft> >50.0)
src.Bowcraft=50.0
Endif 	
if (<src.Peacemaking> >100.0)
src.Peacemaking=100.0
Endif 	
if (<src.Camping> >100.0)
src.Camping=100.0
Endif 	
if (<src.Carpentry> >1.0)
src.Carpentry=1.0
Endif 	
if (<src.Cartography> >100.0)
src.Cartography=100.0
Endif 	
if (<src.Cooking> >80.0)
src.Cooking=80.0
Endif 	
if (<src.DetectingHidden> >80.0)
src.DetectingHidden=80.0
Endif 	
if (<src.Enticement> >100.0)
src.Enticement=100.0
Endif 	
if (<src.EvaluatingIntel> >80.0)
src.EvaluatingIntel=80.0
Endif 	
if (<src.Healing> >80.0)
src.Healing=80.0
Endif 	
if (<src.Fishing> >100.0)
src.Fishing=100.0
Endif 	
if (<src.Forensics> >50.0)
src.Forensics=50.0
Endif 	
if (<src.Herding> >30.0)
src.Herding=30.0
Endif 	
if (<src.Hiding> >80.0)
src.Hiding=80.0
Endif 	
if (<src.Provocation> >100.0)
src.Provocation=100.0
Endif 	
if (<src.Inscription> >1.0)
src.Inscription=1.0
Endif 	
if (<src.LockPicking> >80.0)
src.LockPicking=80.0
Endif 	
if (<src.Magery> >70.0)
src.Magery=70.0
Endif 	
if (<src.MagicResistance> >100.0)
src.MagicResistance=100.0
Endif 	
if (<src.Tactics> >80.0)
src.Tactics=80.0
Endif 	
if (<src.Snooping> >80.0)
src.Snooping=80.0
Endif 	
if (<src.Musicianship> >100.0)
src.Musicianship=100.0
Endif 	
if (<src.Poisoning> >90.0)
src.Poisoning=90.0
Endif 	
if (<src.Archery> >90.0)
src.Archery=90.0
Endif 	
if (<src.SpiritSpeak> >50.0)
src.SpiritSpeak=50.0
Endif 	
if (<src.Stealing> >80.0)
src.Stealing=80.0
Endif 	
if (<src.Tailoring> >1.0)
src.Tailoring=1.0
Endif 	
if (<src.Taming> >50.0)
src.Taming=50.0
Endif 	
if (<src.TasteID> >70.0)
src.TasteID=70.0
Endif 	
if (<src.Tinkering> >1.0)
src.Tinkering=1.0
Endif 	
if (<src.Tracking> >100.0)
src.Tracking=100.0
Endif 	
if (<src.Veterinary> >75.0)
src.Veterinary=75.0
Endif 	
if (<src.Swordsmanship> >40.0)
src.Swordsmanship=40.0
Endif 	
if (<src.Macefighting> >1.0)
src.Macefighting=1.0
Endif 	
if (<src.Fencing> >80.0)
src.Fencing=80.0
Endif 	
if (<src.Wrestling> >25.0)
src.Wrestling=25.0
Endif 	
if (<src.Lumberjacking> >1.0)
src.Lumberjacking=1.0
Endif 	
if (<src.Mining> >1.0)
src.Mining=1.0
Endif 	
if (<src.Meditation> >80.0)
src.Meditation=80.0
Endif 	
if (<src.Stealth> >80.0)
src.Stealth=80.0
Endif 	
if (<src.RemoveTrap> >80.0)
src.RemoveTrap=80.0
Endif 	
if (<src.Necromancy> >1.0)
src.Necromancy=1.0
Endif 	
if (<src.Alchemy> >70.0)
src.Alchemy=70.0
Endif 	
if (<src.AnimalLore> >70.0)
src.AnimalLore=70.0
Endif 

[EVENTS e_nachtwandler_barde] 

ON=@itemEQUIP 
IF (<act.baseid>==i_chainmail_coif) 
SRC.MESSAGE Dieses kannst du nicht tragen. 
SRC.ACT.BOUNCE 
RETURN 1 
ENDIF 

//Eingabe für Char`s die nicht Zaubern sollen

//On=@SpellCast 
//IF (<SRC.GM>==01) //GM's can cast all 
//RETURN 0 
//ENDIF 

//SRC.SYSMESSAGE Krieger Zaubern nicht 
//RETURN 1 //all other spells are restricted 

//Ende der Zaubereintragung

On=@itemdclick 

VAR.STR=5 
VAR.DEX=5 
VAR.INT=(-10) 
f_statcap 

on=@Login 
f_skillcap_nachtwandler_barde 
on=@death 
f_skillcap_nachtwandler_barde  
Ich habe schon Items zum Blutsaugen und Umwandeln zur Fledermaus.

Aber ich weiß nicht wie ich diese Funktion erstellen kann.
Wenn mir da jemand helfen kann, währe ich sehr froh.

Benutzeravatar
Overkiller
Moderator (Sphere)
Beiträge: 424
Registriert: 14 Jan 2004 18:02
Wohnort: 127.0.0.1
Kontaktdaten:

#2 Beitrag von Overkiller » 02 Aug 2006 17:41

Du willst eine wiederbeleben Funktion wenn ich das richtig verstehe ?

Code: Alles auswählen

[function wiederauferstehen]
IF (<TAG.RACE> == RACE_NACHTWANDLER )               // Rassen Check
     IF (src.flags & 02)                                                   // Check if Dead
     SRC.SYSMESSAGE So tot siehst du noch nicht aus
     ELSE
     SRC.RESURRECT
     SRC.MESSAGE Welcome Back !
     ENDIF
ELSE
SRC.SYSMESSAGE Diese Aktion ist für deine Rasse nicht erlaubt !
ENDIF
 
Bild

Elgrimm

#3 Beitrag von Elgrimm » 07 Aug 2006 16:16

Also irgendwie kann ich die Funktion auch aufrufen wenn ich ne andere Rasse habe.
Und auch die Meldung "So tot siehst du noch nicht aus" kommt nicht wenn ich noch Lebe und die Funktion benutze.

Moe

#4 Beitrag von Moe » 07 Aug 2006 20:32

Die Rassenabfrage muß natürlich auf deine Gegebenheiten angepaßt sein.
Will sagen, wenn RACE_NACHTWANDLER nicht per DEFNAME mit einem numerischen Wert belegt ist, ist es ein String und muß mit Stringfunktionen verglichen werden. Besser, weil schneller, stilvoller und von mir vorgeschlagen, wäre aber die Defnamevariante.

Elgrimm

#5 Beitrag von Elgrimm » 22 Aug 2006 12:50

Also ich habe es nun soweit das nur Nachtwandler diese Funktion aufrufen können.
Ich bekomme auch die Meldung das sie unter den Lebenden weilen wenn die Hits höher als 0 sind.
Aber der Teil der Wiederbelebung geht nicht.
Bekomme dort auch immer die Meldung das man unter den Lebenden weil.

Code: Alles auswählen

[function nachtwandler_special]
IF ! (<SRC.EVENTS>==e_Nachtwandler_Race)
	SRC.SYSMESSAGE Diese Aktion ist fuer deine Rasse nicht erlaubt !
	RETURN 1
	ELSE (<SRC.HITS> > 0)
		SRC.MESSAGE Du befindest dich schon unter den Lebenden!
	ELSE  (<SRC.HITS> = 0)
		SRC.RESURRECT
		SRC.MESSAGE Welcome Back !
		RETURN 1
ENDIF

Elgrimm

#6 Beitrag von Elgrimm » 22 Aug 2006 16:06

Lösung gefunden.

[function nachtwandler_erwachen]
IF ! (<SRC.OSKIN>==07cc)
SRC.SYSMESSAGE Diese Aktion ist fuer deine Rasse nicht erlaubt!
RETURN 1
ELIF (<SRC.HITS> > 0)
SRC.MESSAGE Du befindest dich schon unter den Lebenden!
RETURN 1
ELSE ! (<SRC.HITS> > 0)
SRC.RESURRECT
SRC.MESSAGE Willkommen im Reich der Lebenden!
RETURN 1
ENDIF

[plevel 0]
nachtwandler_erwachen

Nun geht es einwandfrei.

Antworten