Seite 1 von 1

ITEM verschwindet nach TIMER

Verfasst: 15 Dez 2013 03:16
von Joker
Hallo, bin schon seit Tagen dran aber irgendwie komm ich nicht drauf.
Hab ne Rune zu nem TELEPAD gemacht mit 3 (4) Sekunden Timer. Irgendwie hat Ich erst, dass der Timer immer von vorne angefangen hat obwohl er bei 0 stehen bleiben sollte. Nun (keine Ahnung warum) verschwindet die Rune nach ablauf der Zeit (Und wenn ich mein Item neu erstelle ist der TIMER auf 1750sek.)

Hier mal der SCRIPT:

[ITEMDEF i_rune_pits1]
ID=i_rune_marker
CATEGORY=Custom Items
SUBSECTION=Teleporter
DESCRIPTION=Rune to Pits
NAME=Pits
TYPE=t_telepad

ON@CREATE
COLOR=0b7d

ON=@STEP
MORE=1
IF (<TIMER>=3)
SRC.MESSAGE 3
ELIF (<TIMER>=2)
SRC.MESSAGE 2
ELIF (<TIMER>=1)
SRC.MESSAGE 1
ELIF (<TIMER>=0)
SRC.GO=6036,1177,0
MORE=0
endif
RETURN 0

ON@TIMER
IF (<MORE>=1)
TIMER=4
endif
RETURN 1

Ich weiss auch nich am Anfang hats ja ganz gut funktioniert, wollt nur das er wartet bis man mal wieder drauf tritt und neu anfängt und nicht dauernt von selbst neu zählt und jetzt hab ich irgendwas verändert, kein plan mehr was...

Danke im voraus für Antworten.

Re: ITEM verschwindet nach TIMER

Verfasst: 15 Dez 2013 07:56
von Shidhun
Ich hatte derlei vor geraumer Zeit auf andere Art gelöst. Vielleicht hilft Dir das ja weiter. :

Code: Alles auswählen

[itemdef i_teleporter_custom]
ID=01f1c
NAME=Teleporter
TYPE=t_script
WEIGHT=0

on=@create
	ATTR=attr_newbie|attr_move_never

on=@dclick
if <src.isgm>
	sdialog d_teleporter
endif
return 1

on=@step
if ((<morex> <= 0) && (<morey> <= 0) )
src.sysmessageua 060,0,0,deu Fehler : Keine Zielkoordinaten eingegeben.
return 1
endif
if <src.isgm>
	if !(<src.flags> & statf_insubstantial)
		src.flags = <src.flags>|statf_insubstantial
		src.go <morep>
		src.update
	endif
else
	if <src.findid(i_mem_teleporter_delay)>
		return 1
	endif
	// Memory zum teleportieren
	serv.newitem i_mem_teleporter
	new.link=<uid>
	src.equip <new.uid>
	new.timer 3
	new.attr=attr_decay
	// Dummy-Item um triggern zu verhindern
	serv.newitem i_mem_teleporter_delay
	src.equip <new.uid>
	new.timer 5
	new.attr=attr_decay
endif
return 1

[itemdef i_mem_teleporter]
id=i_memory
type=t_eq_script
name=teleporter_memory

on=@timer
	if (<cont.p.x>==<link.p.x>)&&(<cont.p.y>==<link.p.y>)
		cont.flags |= 08
		cont.update
		cont.f_teleporter_teleto <link.morep>
		if !<isempty <link.tag0.teleporter_message>>
			cont.timerf 1,f_teleporter_message "<link.tag.teleporter_message>"
		endif
	endif
	remove
	return 1
	
[itemdef i_mem_teleporter_delay]
id=i_memory
type=t_eq_script
name=teleporter_memory

[function f_teleporter_teleto]
flags &= ~08
p <args>
update
return 0

[function f_teleporter_message]
src.sysmessageua 030,0,1,deu <args>
return 0

//////////////////////////////////////////////////////////////////////////
//			  Dialoge
//////////////////////////////////////////////////////////////////////////
[DIALOG d_teleporter]
70,40
page 0
RESIZEPIC 0 0 1010 300 350
dhtmlgump 0 30 300 30 0 0 <def.center><def.BFONT>color="#444444"><def.big>Mini-Wurmloch fuer Quirinus<def.BFONTE><def.centere>
dhtmlgump 20 70 300 30 0 0 <def.BFONT>color="#444444"><def.big>Derzeitige Zieloordinaten :<def.BFONTE>
dhtmlgump 20 90 300 30 0 0 <def.BFONT>color="#000088"><def.big><qval (<morep> != 0) ? <morep>:Keine Koordinaten eingestellt><def.BFONTE>
BUTTON 20 133 2118 2117 1 0 100 
dhtmlgump 40 130 300 30 0 0 <def.BFONT>color="#444444"><def.big>Neue Koordinaten einstellen<def.BFONTE>
BUTTON 20 153 2118 2117 1 0 200 
dhtmlgump 40 150 300 30 0 0 <def.BFONT>color="#444444"><def.big>Koordinaten loeschen<def.BFONTE>
BUTTON 20 173 2118 2117 1 0 300 
dhtmlgump 40 170 300 30 0 0 <def.BFONT>color="#444444"><def.big>Zu Koordinaten gehen<def.BFONTE>
BUTTON 20 173 2118 2117 1 0 300 
dhtmlgump 40 170 300 30 0 0 <def.BFONT>color="#444444"><def.big>Zu Koordinaten gehen<def.BFONTE>
BUTTON 20 233 2118 2117 0 2 0 
dhtmlgump 40 230 300 30 0 0 <def.BFONT>color="#444444"><def.big>Sysmessage auswaehlen<def.BFONTE>

page 2
RESIZEPIC 350 0 1010 300 350
dhtmlgump 350 30 300 30 0 0 <def.center><def.BFONT>color="#444444"><def.big>Text fuer Sysmessage<def.BFONTE><def.centere>
dhtmlgump 360 60 280 80 0 0 <def.BFONT>color="#444444"><def.big>Bitte in der Sysmessage kein Semikolon verwenden, dies kann zu Fehlern fuehren. Umlaute werden ebenfalls nicht angezeigt.<def.BFONTE>

resizepic 360 160 9300 280 100
if !(<isempty <tag.teleporter_message>>)
	dtextentrylimited 365 162 270 140 0481 3 150 <tag.teleporter_message>
else
	dtextentrylimited 365 162 270 80 0481 3 150 <var.blankline>
endif

BUTTON 450 273 2118 2117 1 0 600
dhtmlgump 470 270 300 30 0 0 <def.BFONT>color="#444444"><def.big>Loeschen<def.BFONTE>
BUTTON 450 293 2118 2117 1 0 700
dhtmlgump 470 290 300 30 0 0 <def.BFONT>color="#444444"><def.big>Uebernehmen<def.BFONTE>

[DIALOG d_teleporter button]
on=0
return 1
on=100
src.sysmessageua 030,0,0,deu Bitte klicke auf den Ort der als Ziel eingetragen werden soll.
targetfg f_teleporter <uid>
return 0

on=200
src.sysmessageua 060,0,0,deu Koordinaten wurden geloescht. Neue per oberstem Button setzen, oder mit "set morep x y z"
morep 0 0 0
return 1

on=300
if ((<morex> <= 0) && (<morey> <= 0) )
src.sysmessageua 060,0,0,deu Keine Zielkoordinaten eingegeben.
return 1
endif
if !(<src.flags> & statf_insubstantial)
	src.flags =<src.flags>|statf_insubstantial
	src.timerf 1,f_teleporter_effect <def.def_teleporter_effect_<argchkid>>
	src.update
endif
src.go <morep>
return 1

on=600
tag.teleporter_message=
src.sysmessage Systemnachricht geloescht.
return 1

on=700
tag.teleporter_message=<argtxt[3]>
src.sysmessage Systemnachricht gesetzt.
return 1

[function f_teleporter]
src.sysmessageua 030,0,0,deu Koordinaten gesetzt.
serv.uid.<args>.morep <targp.x> <targp.y> <targp.z>
return 1

Re: ITEM verschwindet nach TIMER

Verfasst: 15 Dez 2013 16:32
von Joker
OK. Dummer kleiner fehler... :kh:

hab das "=" vergessen ON=@TIMER

Also jetzt funktioniert das wieder mit dem drauf laufen dann runter zählen 3,2,1 und Teleport an den Ort. Rune bleibt auch jetzt da und er setzt am Ende More auf 0, sodass es nicht automatisch wieder den TIMER einschaltet.

"""ABER"""

Wenn ich drauf lauf kommt More 1 (ist ja noch richtig), aber er fängt den Countdown (TIMER) nicht wieder von 4Sekunden an.... der bleibt auf -1 (INGAME .Info) ???

versteh echt nicht warum... :bh: Ist doch total logisch und mega einfach gehalten, oder hab ich irgendwo nen denkfehler ?(

Re: ITEM verschwindet nach TIMER

Verfasst: 15 Dez 2013 17:49
von Shidhun
einfach noch eine Abfrage einbauen :

if <timer> < 0
timer=3
endif

Re: ITEM verschwindet nach TIMER

Verfasst: 15 Dez 2013 22:01
von Joker
Merci für den Tipp, hat mich auf ne andere Idee gebracht ^^

Sieht vielleicht für manche (Sch***e) aus, aber ich bin stolz drauf :D
Hab`s nen bisschen abgeändert und jetzt funktioniert soweit ganz gut :)

[ITEMDEF i_rune_pits1]
ID=i_rune_marker
CATEGORY=Custom Items
SUBSECTION=Teleporter
DESCRIPTION=Rune to Pits
NAME=Pits
TYPE=t_telepad

ON=@CREATE
COLOR=03e
MORE=0
TIMER=5

ON=@STEP
MORE=1
IF ((<more>=1) && (<TIMER>=0))
TIMER=5
LINK.UID
ELIF (<TIMER>=0)
TIMER=0
ELIF (<TIMER><0)
TIMER=0
ELIF (<TIMER>=4)
SRC.MESSAGE 3
ELIF (<TIMER>=3)
SRC.MESSAGE 2
ELIF (<TIMER>=2)
SRC.MESSAGE 1
ELIF (<TIMER>=1)
SRC.GO=6036,1177,0
MORE=0
endif
RETURN 0

ON=@TIMER
IF (<MORE>=1)
TIMER=5
endif
RETURN 1

Möchte jetzt nich nerven oder so :angel1: aber ich frag einfach mal...

Ich muss jetzt dauernt auf der Rune draufstehen damit des Teil runterzählt und mich weg Telet.
Und im I-Net hab ich was nachgelesen aber so verstehen tuh ichs nicht.
Will nen Link oder irgendwie was den Player greift in seine ID das wenn er auf die Rune tritt das er egal wo hin er dann rennt oder sich beamt das der TIMER trotzdem über seinem Kopf weiter läuft und ihn dann zum festgemachten ort telet.

"AUßER" er wird angegriffen oder geht in den Kampf-Modus, dann soll er den ganzen Script abbrechen ///Aber den teil will ich selber versuchen zu machen :)

Wichtig wäre mir erst mal ob man da nen Link an den Player festmachen kann ???
mit Link.uid ??? hat der was damit zu tun ?

Re: ITEM verschwindet nach TIMER

Verfasst: 16 Dez 2013 13:58
von Shidhun
Auf diese Weise sollte es funktionieren. Zu beachten ist, dass @Step hier einen kleinen Delay beim ersten Tick verursacht.

Über das Event kannt Du noch weitere Abfragen einbauen. Wichtig ist, dass es immer entfernt wird bei Treffern (etc) sowie beim unequippen des Memory-Items

Code: Alles auswählen

[ITEMDEF i_rune_pits1]
ID=i_rune_marker
CATEGORY=Custom Items
SUBSECTION=Teleporter
DESCRIPTION=Rune to Pits
NAME=Pits
TYPE=t_telepad

ON=@CREATE
COLOR=03e

on=@step
	if !<src.findid(i_mem_teleporter)>
		serv.newitem i_mem_teleporter
		new.morep=6036,1177,0
		new.more1=3
		src.equip <new.uid>
		new.attr=attr_decay
		new.trigger @timer
		src.events +e_teleporter
	else
		return 1
   endif
   
[EVENTS e_teleporter]
on=@userwarmode
	src.sysmessageua 030,0,0,deu Deine Konzentration wird gestört, so dass Du nicht mehr in der Lage bist zu reisen.
	if <src.findid(i_mem_teleporter)>
		src.findid(i_mem_teleporter).remove
	endif
	src.timerf 0,events -e_teleporter
	return 0
	
on=@gethit
	src.sysmessageua 030,0,0,deu Deine Konzentration wird gestört, so dass Du nicht mehr in der Lage bist zu reisen.
	if <src.findid(i_mem_teleporter)>
		src.findid(i_mem_teleporter).remove
	endif
	src.timerf 0,events -e_teleporter
	return 0
	
[itemdef i_mem_teleporter]
id=i_memory
type=t_eq_script
name=teleporter_memory

on=@timer
	if <dmore1> > 0
		cont.say <dmore1>
		more1 -= 1
		timer=<dmore1>
	else
		cont.go <morep>
		cont.update
		remove
	endif
	return 1

on=@unequip
	cont.events -e_teleporter

Re: ITEM verschwindet nach TIMER

Verfasst: 19 Dez 2013 18:43
von Joker
Vielen Dank :]

Der Script ist (in meinen Augen) absolut Perfekt, den hätt Ich in Wochen nich hingekriegt xD.

Morz interesant wie andere des Schreiben vielleicht lern ich was drauß ^^

Danke nochmal :)