Monster Heilen sich selbst ...

Rund um das Scripten unter Sphere 55i

Moderator: Mods - Sphere

Antworten
Nachricht
Autor
Lucianus

Monster Heilen sich selbst ...

#1 Beitrag von Lucianus » 15 Sep 2009 15:53

Also ich würde gerne ein Monster fertig machen, welches wenn es das erste mal geschlagen wird, einen Timer aktiviert.
Wenn man es nicht schafft das Monster in dieser Zeit zu töten, sollen seine Lebenspunkte wieder auf max wert gesetzt werden und der Timer beendet.

Beim nächsten schlag auf das, jetzt wieder heile, Monster soll dann der Timer wieder aktiviert werden etc.


Leider sitze ich gerade ziemlich aufm schlauch, hat da jmd. ne idee ?

Incanus
Junior Mitglied
Beiträge: 61
Registriert: 04 Feb 2004 16:29
Kontaktdaten:

#2 Beitrag von Incanus » 15 Sep 2009 16:05

Du brauchst:
- einen @GetHit Trigger
- ein Memory Item, welches im @Timer die Hitpoints des Monsters wieder hoch setzt.

Lucianus

#3 Beitrag von Lucianus » 15 Sep 2009 16:19

[CHARDEF c_glop]
ID=068
NAME=Pflanzen Monster

RESOURCES=1 i_glueckskiste

CAN=MT_WALK|MT_RUN|MT_USEHANDS
DAM=20,35
ARMOR=40

ON=@Create
NPC=brain_monster
TAG.KREATUR=Pflanze
STR=400
DEX=20
INT=100
MAGICRESISTANCE={10.0 30.0}
PARRYING={50.0 80.0}
TACTICS={90.0 100.0}
WRESTLING={80.0 90.0}
KARMA=-2500
FAME=0

ON=@NPCRestock

ON=@Timer
//wie ist der befehl für set (<hitpoints>==<STR>) ??

ON=@GetHit
src.act.newitem i_mem_timer
act.timer=20
act.equip=<uid>

CATEGORY=Monster
SUBSECTION=(Magische Hallen) Monster
DESCRIPTION=(23)Pflanze Glob


[itemdef i_mem_timer]
id=i_memory
type=t_eq_script
name=Pflanzen Timer

ON=@Timer
cont.sysmessage Ihr seid zu langsam
remove
return 1





Irgendwas mache ich noch falsch ...

Incanus
Junior Mitglied
Beiträge: 61
Registriert: 04 Feb 2004 16:29
Kontaktdaten:

#4 Beitrag von Incanus » 15 Sep 2009 17:05

Du solltest das Mem Item am NPC platzieren und nicht bei dessen Angreifer, so kannst du viel leichter fesstellen ob es schon einen timer gibt, und die Hitpoints dann hoch setzen:

Code: Alles auswählen

ON=@GetHit
if !<findid.i_mem_timer> // timer nur hinzufuegen, wenn es ihn noch nicht gibt
  newitem i_mem_timer
  act.timer=20
  act.cont=<uid> // timer am npc platzieren
  act.link <src.uid> // merken wer den npc angegriffen hat
endif

Code: Alles auswählen

[itemdef i_mem_timer]
id=i_memory
type=t_eq_script
name=Pflanzen Timer

on=@create
attr=attr_newbie

ON=@Timer
link.sysmessage Ihr seid zu langsam
cont.hits <cont.str>
remove
return 1 

Lucianus

#5 Beitrag von Lucianus » 15 Sep 2009 17:10

ahh ... *klick* ... ja so macht das sinn ... danke vielmals.

Lucianus

#6 Beitrag von Lucianus » 15 Sep 2009 17:44

So macht es was ich wollte :

Code: Alles auswählen

ON=@GetHit
if !<findid> // timer nur hinzufuegen, wenn es ihn noch nicht gibt
  newitem i_mem_timer
  act.timer=20
  act.cont=<uid> // timer am npc platzieren
endif

[itemdef i_mem_timer]
id=i_memory
type=t_eq_script
name=Pflanzen Timer

on=@create
attr=attr_newbie

ON=@Timer
cont.sayua=00085,0,0,deu=Ihr seid zu Langsam !!
cont.hits=400 
remove
return 1 
 

Nochmal vielen dank ;)

Lucianus

#7 Beitrag von Lucianus » 15 Sep 2009 20:49

ok ich habe da noch ein problem ...

ON=@Hit
IF (STRMATCH(<SRC>,Beschwoerung))
sayua=00085,0,0,deu=Beschworenes Fleisch !!
src.damage={100 200}

ELSEIF (<src>>=500)
sayua=00085,0,0,deu=Magisches Fleisch !!
src.damage={60 100}

ELSEIF (<src>>=500)
sayua=00085,0,0,deu=Magisches Fleisch !!
src.damage={60 100}

Else
sayua=00085,0,0,deu=TEST aussage

ENDIF

Wieso auch immer speicher er .TAG.KLASSE sowie .magery und .Spiritspeak hinter den src nicht ab.

Er soll beim zuschlagen prüfen ob die kreatur die er schlägt beschworen wurde, und somit den TAG.KLASSE "Beschwoerung" hat. .. ich bekomm die abfrage für den TAG.KLASSE einfach nicht hin ... oder er ignoriert die abfrage ...

Was ist falsch ?

Incanus
Junior Mitglied
Beiträge: 61
Registriert: 04 Feb 2004 16:29
Kontaktdaten:

#8 Beitrag von Incanus » 15 Sep 2009 21:06

Der Inhalt der spitzen Klammer <> wird richtig angezeigt, wenn du HTML für deine Beiträge deaktivierst.

Zum Problem selber..
Es ist einfacher mit dem statf_conjured Flag auf Beschwörungen zu testen.
Wenn du es aber doch mit dem Tag machen möchtest, müsste es wohl so aussehen:

Code: Alles auswählen

ON=@Hit
IF ( ! STRCMP(<SRC.TAG.Klasse>,Beschwoerung))
sayua=00085,0,0,deu=Beschworenes Fleisch !!
src.damage={100 200}
ELSEIF ...
STRCMP liefert bei Gleichheit 0 zurück

Lucianus

#9 Beitrag von Lucianus » 15 Sep 2009 21:14

schon gut, jetzt gehts ... wieso auch immer. *kopfkratz*

Dennoch danke.

Antworten