Sphere 56b ama healing sistemini bir türlü oturtamadık.

Anlayan arkadaşımız varsa bu scriptte ;
dex'e göre zaman ayarı
Büyü atarken bandaj yırtılmıyacak
Bandaj atarken 2 saniye frozen
3 ve üzeri demage yediği zaman bandaj yırtılacak.
Yapabilen arkadsş varsa çok Teşekkür ettim şimdiden.

[ITEMDEF 0ee9]
DUPEITEM=0e21

[ITEMDEF 0e22]
DUPEITEM=0e20

[ITEMDEF 0e21]
DEFNAME=i_bandage 
RESOURCES=i_cloth 
TYPE=T_BANDAGE 
WEIGHT=0.2 
DUPELIST=0ee9 
CATEGORY=Items by Professions 
SUBSECTION=Healer 
DESCRIPTION=clean bandages 

On=@DClick
if !(<topobj.uid> == <src.uid>)
	src.sysmessage @38 Bandajlar cantanizda olmali.
	return 1
elseif (<src.findid.i_mem_healing.timer> < 0)
	src.findid.i_mem_healing.remove
	return 0
elseif (<src.findid.i_mem_healing>)
	src.sysmessage @38 Bandajlari su an kullanamazsiniz.
	return 1
else
	return 0
endif

On=@Targon_Char
src.skill fail
if !(<src.restest 1 i_bandage>)
	src.sysmessage @38 Bandajiniz yok.
	return 1
elseif (<src.targ.distance> > 3)
	src.sysmessage @38 Hedefe ulasamiyorsunuz.
	return 1
elseif (<src.targ.npc> == 10) ||(<src.targ.npc> == 11) || (<src.targ.npc> == 12) || (<src.targ.npc> == 13)
	src.sysmessage @38 Bunu iyilestiremezsiniz.
	return 1
elseif (<src.targ.npc> == 1)
	if (<src.targ.id> == c_m_golem_tinker1) || (<src.targ.id> == c_m_golem_tinker2) || (<src.targ.id> == c_m_golem)
		src.sysmessage @38 Bunu bandajla iyilestiremezsiniz.
		return 1
	elseif (<src.targ.hits> == 0) && (<src.targ.id> == c_horse_tan) || (<src.targ.id> == c_horse_brown_dk) || (<src.targ.id> == c_horse_gray) || (<src.targ.id> == c_horse_brown_lt) || (<src.targ.id> == c_llama) || (<src.targ.id> == c_ostard_desert) || (<src.targ.id> == c_ostard_forest) || (<src.targ.id> == c_ostard_zostrich) || (<src.targ.id> == c_shire) || (<src.targ.id> == c_a_mustang_black) (<src.targ.id> == c_a_mustang_crimson) || (<src.targ.id> == c_a_mustang_skygray) || (<src.targ.id> == c_a_mustang_wimmimate) || (<src.targ.id> == c_a_mustang_pamamino) || (<src.targ.id> == c_a_mustang_sky) || (<src.targ.id> == c_a_mustang_redroan) || (<src.targ.id> == c_a_mustang_chocolate) || (<src.targ.id> == c_a_mustang_roan) || (<src.targ.id> == c_a_mustang_grey) || (<src.targ.id> == c_ostard_mid) || (<src.targ.id> == c_shire) || (<src.targ.id> == c_m_unicorn) || (<src.targ.id> == c_m_kirin) || (<src.targ.id> == c_steed_fire) || (<src.targ.id> == c_steed_silver) || (<src.targ.id> == c_m_silvercorn)
		src.sysmessage @38 Bunu bandajla iyilestiremezsiniz.
		return 1
	elseif !((<src.targ.hits> < <src.targ.str>) || (<src.targ.findid.i_rune_poison>))
		src.sysmessage @0481 <src.targ.name> tedaviye ihtiyac duymuyor.
		return 1
	elseif (<src.targ.findid.i_rune_poison>)
		if ((<src.veterinary> < 60.0) || (<src.animallore> < 60.0))
			src.sysmessage @38 Hayvan uzerindeki zehiri tedavi edecek kadar yetenekli degilsiniz.
			return 1
		endif
	else
		var.nx1 (<src.veterinary> / {20 50})
		var.nx2 (<src.animallore> / 50)
		var.nx3 <eval (<var.nx1> + <var.nx2> + {3 10})>
	endif
	src.sd 1
	src.anim 17
        serv.newitem i_mem_spellheal
        new.equip
	serv.newitem i_mem_healing
	new.morey <eval <var.nx3>>
	new.morex 3
	new.link <src.targ.uid>
	new.equip
	src.face
	return 1
elseif (<src.targ.flags>&statf_dead)
	if ((<src.healing> < 80.0) || (<src.anatomy> < 80.0))
		src.sysmessage Henuz oluleri diriltecek kudrete sahip degilsiniz.
	elseif !(<src.restest 5 i_bandage>)
		src.sysmessage @38 Diriltme islemi icin 5 bandaja ihtiyaciniz var.
	else
		if (<src.targ.kills> > 5)
			src.criminal 1
			src.sayua 048,6,6,0 * <src.targ.name> isimli katili diriltir *
		elseif (<src.targ.flags>&statf_criminal)
			src.criminal 1
			src.sayua 048,6,6,0 * <src.targ.name> isimli sucluyu diriltir *
		elseif (<src.memoryfindtype.memory_town>) && (<src.targ.memoryfindtype.memory_town>) && (<src.memoryfindtype.memory_town.link> != <src.targ.memoryfindtype.memory_town.link>)
			src.criminal 1
		elseif (<src.memoryfindtype.memory_guild.link.align>) && (<src.targ.memoryfindtype.memory_guild.link.align>) && (<src.memoryfindtype.memory_guild.link.align> != <src.targ.memoryfindtype.memory_guild.link.align>)
			src.criminal 1
		endif
		src.sd 2
		src.face
		src.anim 17
		src.consume 5 i_bandage
		src.targ.spelleffect s_resurrection 1000
		src.targ.sayua 048,6,6,0 * <src.name> sayesinde hayata doner *
		//src.checkhealing 2
		//src.checkanatomy 2
	endif
	return 1
elseif (<src.targ.memoryfindtype.memory_town>) && !(<src.memoryfindtype.memory_town>)
	src.sysmessage @38 Faction uyelerini iyilestiremezsiniz.
	return 1
elseif (<src.targ.memoryfindtype.memory_guild.link.align> > 0) && !(<src.memoryfindtype.memory_guild.link.align>)
	src.sysmessage @38 Order/Chaos uyelerini iyilestiremezsiniz.
	return 1
elseif !((<src.targ.hits> < <src.targ.str>) || (<src.targ.findid.i_rune_poison>))
	if !(<src.targ.uid> == <src.uid>)
		src.sysmessage @38 <src.targ.name> tedaviye ihtiyac duymuyor.
	else
		src.sysmessage @38 Tedaviye ihtiyaciniz yok.
	endif
	return 1
elseif (<src.targ.findid.i_rune_poison>)
	if ((<src.healing> < 60.0) || (<src.anatomy> < 60.0))
		src.sysmessage @38 Zehiri tedavi edecek kadar yetenekli degilsiniz.
		return 1
	endif
elseif (<src.targ.findid.i_bleeding>)         ///Bleeding
	if ((<src.healing> < 70.0) || (<src.anatomy> < 70.0))
		src.sysmessage @38 Yarayi tedavi edecek kadar yetenekli degilsiniz.
		return 1
	endif
else
	var.nx1 (<src.healing> / {20 50})
	var.nx2 (<src.anatomy> / 50)
	var.nx3 <eval (<var.nx1> + <var.nx2> + {3 10})>
endif

src.sd 1
src.anim 17
        serv.newitem i_mem_spellheal
        new.equip
serv.newitem i_mem_healing
new.morey <eval <var.nx3>>
if !(<src.targ.uid> == <src.uid>) // heal other
	new.morex 1
	new.link <src.targ.uid>
	src.face
endif
new.equip
return 1

[itemdef i_mem_healing]
ID=i_memory
TYPE=t_eq_script
NAME=healing mem

On=@Create
attr attr_decay|attr_newbie

On=@Equip
src.events +e_healing
timer 3

On=@UnEquip
cont.events -e_healing

On=@Timer
if (<morey>)
	if (<morex> == 3) // veterinary
		if !(<link.hits> < <link.str>) && !(<link.findid.i_rune_poison>)
			cont.sysmessage @0481 <link.name> tedaviye ihtiyac duymuyor.
			remove
			return 1
		elseif (<link.findid.i_rune_poison>)
			if (<cont.veterinary> < 60.0) || (<cont.animallore> < 60.0)
				cont.sysmessage @38 Zehiri tedavi edecek kadar yetenekli degilsiniz.
				remove
				return 1
			endif
		elseif (<link.findid.i_bleeding>)       ///////Hayvanlarda bleeding
			if (<cont.veterinary> < 70.0) || (<cont.animallore> < 70.0)
				cont.sysmessage @38 Yarayi tedavi edecek kadar yetenekli degilsiniz.
				remove
				return 1
			endif
		elseif !(<cont.restest 1 i_bandage>)
			cont.sysmessage @38 Bandajiniz yok.
			remove
			return 1
		endif
		cont.consume 1 i_bandage
		if (<link.findid.i_rune_poison>) // cure animal
			if !(rand(5) == 1)
				link.findid.i_rune_poison.remove
				link.effect 3,0376a,2,10,1
				link.sayu * iyilestirilir *
			else
				cont.sayua 020,6,6,0 * <link.name> uzerindeki zehiri iyilestiremez *
			endif
		elseif (<link.findid.i_bleeding>) //hayvanlarda yara iyilestirme poff :D
			if !(rand(5) == 1)
				link.findid.i_bleeding.remove
				link.effect 3,0376a,2,10,1
				link.sayu * yarasi iyilestirilir *
			else
				cont.sayua 020,6,6,0 * <link.name> uzerindeki yarayi iyilestiremez *
			endif
		else // heal animal
			link.hits <eval (<link.hits> + <morey>)>
			link.effect 3,0376a,2,10,1
			if (<link.hits> > <link.str>)
				link.hits <link.str>
			endif
			link.sayu * tedavi gorur *
			link.update
		endif
		cont.checkveterinary
		cont.checkanimallore
		if (<cont.dex> < 35)
			timer 6
		else
			timer 4
		endif
	elseif (<morex>) // others
		if !(<link.hits> < <link.str>) && !(<link.findid.i_rune_poison>)
			cont.sysmessage @0481 <link.name> tedaviye ihtiyac duymuyor.
			remove
			return 1
		elseif (<link.hits> < 1)
			cont.sysmessage @38 <link.name> tedavi esnasinda hayatini kaybetti.
			remove
			return 1
		elseif (<link.findid.i_rune_poison>)
			if (<cont.healing> < 60.0) || (<cont.anatomy> < 60.0)
				cont.sysmessage @38 Zehiri tedavi edecek kadar yetenekli degilsiniz.
				remove
				return 1
			endif
		elseif !(<cont.restest 1 i_bandage>)
			cont.sysmessage @38 Bandajiniz yok.
			remove
			return 1
		endif
		cont.consume 1 i_bandage
		if (<link.findid.i_rune_poison>) // cure other
			if !(rand(5) == 1)
				link.findid.i_rune_poison.remove
				link.effect 3,0376a,2,10,1
				if (<link.kills> > 5)
					cont.criminal 1
					cont.sayua 048,6,6,0 * <link.name> isimli katili iyilestirir *
				elseif (<link.flags>&statf_criminal)
					cont.criminal 1
					cont.sayua 048,6,6,0 * <link.name> isimli sucluyu iyilestirir *
				else
					link.sayua 048,6,6,0 * <cont.name> tarafindan iyilestirilir *
					if (<link.memoryfindtype.memory_town>) && (<cont.memoryfindtype.memory_town>) && (<cont.memoryfindtype.memory_town.link> != <link.memoryfindtype.memory_town.link>)
						cont.criminal 1
					elseif (<link.memoryfindtype.memory_guild.link.align>) && (<cont.memoryfindtype.memory_guild.link.align>) && (<cont.memoryfindtype.memory_guild.link.align> != <link.memoryfindtype.memory_guild.link.align>)
						cont.criminal 1
					endif
				endif
			else
				cont.sayua 020,6,6,0 * <link.name> uzerindeki zehiri iyilestiremez *
			endif
		elseif (<link.findid.i_bleeding>)///////////////////////////Bleeding 
			if !(rand(5) == 1)
				link.findid.i_bleeding.remove
				link.effect 3,0376a,2,10,1
				if (<link.kills> > 5)
					cont.criminal 1
					cont.sayua 048,6,6,0 * <link.name> yarasini iyilestirir.*
				elseif (<link.flags>&statf_criminal)
					cont.criminal 1
					cont.sayua 048,6,6,0 * <link.name> isimli suclunun yarasini iyilestirir. *
				else
					link.sayua 048,6,6,0 * <cont.name> tarafindan yarasi iyilestirilir. *
					if (<link.memoryfindtype.memory_town>) && (<cont.memoryfindtype.memory_town>) && (<cont.memoryfindtype.memory_town.link> != <link.memoryfindtype.memory_town.link>)
						cont.criminal 1
					elseif (<link.memoryfindtype.memory_guild.link.align>) && (<cont.memoryfindtype.memory_guild.link.align>) && (<cont.memoryfindtype.memory_guild.link.align> != <link.memoryfindtype.memory_guild.link.align>)
						cont.criminal 1
					endif
				endif
			else
				cont.sayua 020,6,6,0 * <link.name> uzerindeki yarayi tedavi edemez *
			endif        ////////////////////////////////////////////////////////////
		else // heal other
			link.hits (<link.hits> + <morey>)
			link.effect 3,0376a,2,10,1
			if (<link.hits> > <link.str>)
				link.hits <link.str>
			endif
			if (<link.kills> > 5)
				cont.criminal 1
				cont.sayua 048,6,6,0 * <link.name> isimli katili tedavi eder *
			elseif (<link.flags>&statf_criminal)
				cont.criminal 1
				cont.sayua 048,6,6,0 * <link.name> isimli sucluyu tedavi eder *
			else
				link.sayua 048,6,6,0 * <cont.name> tarafindan tedavi edilir *
				if (<link.memoryfindtype.memory_town>) && (<cont.memoryfindtype.memory_town>) && (<cont.memoryfindtype.memory_town.link> != <link.memoryfindtype.memory_town.link>)
					cont.criminal 1
				elseif (<link.memoryfindtype.memory_guild.link.align>) && (<cont.memoryfindtype.memory_guild.link.align>) && (<cont.memoryfindtype.memory_guild.link.align> != <link.memoryfindtype.memory_guild.link.align>)
					cont.criminal 1
				endif
			endif
		endif
		cont.checkhealing 1
		cont.checkanatomy 1
		if (<cont.dex> < 35)
			timer 6
		else
			timer 4
		endif
	else
		if !(<cont.hits> < <cont.str>) && !(<cont.findid.i_rune_poison>)
			cont.sysmessage @0481 Tedaviye ihtiyac duymuyorsunuz.
			remove
			return 1
		elseif (<cont.hits> < 1)
			remove
			return 1
		elseif (<cont.findid.i_rune_poison>)
			if (<cont.healing> < 60.0) || (<cont.anatomy> < 60.0)
				cont.sysmessage @38 Zehiri tedavi edecek kadar yetenekli degilsiniz.
				remove
				return 1
			endif 
   		elseif !(<cont.restest 1 i_bandage>)
			cont.sysmessage @38 Bandajiniz yok.
			remove
			return 1
		endif
		cont.consume 1 i_bandage
		if (<cont.findid.i_rune_poison>) // cure self
			if !(rand(5) == 1)
				cont.findid.i_rune_poison.remove
				cont.effect 3,0376a,2,10,1
				cont.sayua 048,6,6,0 * zehir etkisini iyilestirir *
			else
				cont.sayua 020,6,6,0 * zehiri iyilestiremez *
			endif
		elseif (<cont.findid.i_bleeding>)/////////Bleeding bana bleed
			if !(rand(5) == 1)
				cont.findid.i_bleeding.remove
				cont.effect 3,0376a,2,10,1
				cont.sayua 048,6,6,0 *yarayi tedavi eder*
			else
				cont.sayua 020,6,6,0  *yarayi tedavi edemez*
			endif
		else // heal self
			cont.hits (<cont.hits> + <morey>)
			cont.effect 3,0376a,2,10,1
			cont.sayua 048,6,6,0 * kendini tedavi eder *
			if (<cont.hits> > <cont.str>)
				cont.hits <cont.str>
			endif
		endif
		cont.checkhealing 1
		cont.checkanatomy 1
		if (<cont.dex> < 35)
			timer 10
		else
			timer 8
		endif
	endif
	morey 0 // memory'yi etkisiz hale getir
	cont.events -e_healing // eventi kaldir artik gerek yok
	return 1
endif
remove
return 1
	
[events e_healing]
On=@GetHit
if (rand(2) == 1)
	sayua 020,6,6,0 * bandajlari yirtilir *
	src.consume 1 i_bandage
	findid.i_mem_healing.remove
endif

On=@Death
findid.i_mem_healing.remove

On=@Logout
findid.i_mem_healing.remove

[function checkhealing]
if (<args> == 1) && (<healing> >= 80.0) && (rand(1) == 2)
	return 0
endif

if ((<skilllock[17]> == 0) && (<skilltotal> < 700.0))
	if (<healing> < 30.0)
		if (rand(2) == 1)
			healing (<healing> + 1)
		endif
	elseif (<healing> < 50.0)
		if (rand(2) == 1)
			healing (<healing> + 1)
		endif
	elseif (<healing> < 75.0)
		if (rand(2) == 1)
			healing (<healing> + 1)
		endif
	elseif (<healing> < 100.0)
		if (rand(2) == 1)
			healing (<healing> + 1)
		endif
	endif
endif

[function checkveterinary]
if ((<skilllock[39]> == 0) && (<skilltotal> < 700.0))
	if (<veterinary> < 30.0)
		if (rand(1) == 1)
			veterinary (<veterinary> + 1)
		endif
	elseif (<veterinary> < 50.0)
		if (rand(2) == 1)
			veterinary (<veterinary> + 1)
		endif
	elseif (<veterinary> < 75.0)
		if (rand(3) == 1)
			veterinary (<veterinary> + 1)
		endif
	elseif (<veterinary> < 100.0)
		if (rand(5) == 1)
			veterinary (<veterinary> + 1)
		endif
	endif
endif

[function checkanatomy]
if (<args> == 1) && (<anatomy> >= 80.0) && (rand(3) == 1)
	return 0
endif

if ((<skilllock[1]> == 0) && (<skilltotal> < 700.0))
	if (<anatomy> < 30.0)
		if (rand(1) == 1)
			anatomy (<anatomy> + 1)
		endif
	elseif (<anatomy> < 50.0)
		if (rand(2) == 1)
			anatomy (<anatomy> + 1)
		endif
	elseif (<anatomy> < 75.0)
		if (rand(3) == 1)
			anatomy (<anatomy> + 1)
		endif
	elseif (<anatomy> < 100.0)
		if (rand(5) == 1)
			anatomy (<anatomy> + 1)
		endif
	endif
endif

[function checkanimallore]
if ((<skilllock[2]> == 0) && (<skilltotal> < 700.0))
	if (<animallore> < 30.0)
		if (rand(1) == 1)
			animallore (<animallore> + 1)
		endif
	elseif (<animallore> < 50.0)
		if (rand(2) == 1)
			animallore (<animallore> + 1)
		endif
	elseif (<animallore> < 75.0)
		if (rand(4) == 1)
			animallore (<animallore> + 1)
		endif
	elseif (<animallore> < 100.0)
		if (rand(5) == 1)
			animallore (<animallore> + 1)
		endif
	endif
endif

[DIALOG d_rescon]
0,375

nomove
page 0 
resizepic 30 10 5054 145 75
text 45 15 600 0
text 60 35 0 1
text 60 55 0 2
button 40 35 210 211 1 0 1
button 40 55 210 211 1 0 0 

[DIALOG d_rescon TEXT]   
Resurrect?
yeah, sure.
no, thanks.

[DIALOG d_rescon BUTTON]  
ONBUTTON=0

ONBUTTON=1
SRC.RESURRECT

[ITEMDEF i_mem_spellheal]
ID=i_memory  
TYPE=t_eq_script  
NAME=Spell Heal
 
ON=@Create  
ATTR=attr_decay
  
ON=@equip
TIMER=3

ON=@Timer
remove
return 1

[EOF]


Bu konu Ghlahn tarafından düzenlendi(2013-01-16 00:35, 11 yıl önce)
Novice
12.5
code taglarını kullanırsan herkes rahatlar.
Daha önce başkasının benim güncelleştirdiğim bir script yazmıştım.

https://www.ultima-strike.com/uo-script
öncelikle cok saol bunda dex e gore timerini nereden ayarlıcaz bulamadımda
Dex'e göre bandaj zamanı anlayamadım benim onu yapmaktaki amaç nedir hocam tam olarak ?
Novice
12.5
Federal : Dex'e göre bandaj zamanı anlayamadım benim onu yapmaktaki amaç nedir hocam tam olarak ?

Dex'i hızlı olanın daha hızlı bandaj sarabilmesine olanak sağlar.Warrior karakteri (100 dex'e sahip) Mage karakterine göre (25 dex'e sahip) daha hızlı bandaj sarabilmesi doğal bir mantık.

@rahim48

scriptin en altında bandajsuresi adınd bir function var ona göre bir kontrol sağlıyor.
Tmmda mage 25 dexle nasıl bandaj atıcakki problem orada zaten gec atıyor bir warrior la karşı karşıya geldıgını dusunursek warrior ezer yanı
Federal : Tmmda mage 25 dexle nasıl bandaj atıcakki problem orada zaten gec atıyor bir warrior la karşı karşıya geldıgını dusunursek warrior ezer yanı

Genelde her sunucuda warriorlar eziliyor, mage kullanmasını bilen biri warrior'un uzağında kalarak onu alt edebilir kaldı ki mage heal be annox kullanarak kendini tedavi edebilme imkanı varken warrior sadece bandaj kullanabiliyor. (Potion her ikisi içinde dengeli olduğu için onu hesaba katmıyorum.)

Gerçek hayattan ele alırsak bandaj insan vücudundaki bir yarayı sarmak ve tedavi etmek amacıyla kullanılır. Büyücülerin bu tedaviden anlamaması oldukça normal çünkü savaşçılar aldıkları silah yaralarını kendileri tedavi ettikleri için dex mantığı doğru bir mantıktır.
İlginç yaklaşım yoğun olan bir sunucuda bunu yaşamak lazım tam görmek için :)
Expert
34.0001
pm'de bandajı zaten res dışında kullanan var mı? pvp serverı alışkanlığıdır varsa da.
Kell haklı ama sistemlerle alakalı birşey şimdi bandajı pm de kullanıp kullanmamak yani 3 sn de hp basıyora ben kullanırım şahsen bi bandaj bi bleed 2 in mani tamam iste yırttın :D
Expert
34.0001
eh işte 3 sn de basıyorsa pvp serverıdır muhtemelen :)
KeLL : eh işte 3 sn de basıyorsa pvp serverıdır muhtemelen :)

Ardayla aynı fikirde olmak ürkütüyor beni -.-'

Üye Ol veya Giriş Yap

Bu forum başlığına mesaj atmak istiyorsanız hemen üye olun veya giriş yapın.