Arkadaşlar stat.scp çok güzel fakat 2 sorunu var:
1.Statların hepsi 100 oluyor,Fakat korumaya almıyor(Burası hem yanlış hemde doğru.Tamam stat cap 225 olsun ve dahada artmasına izin verilmesin ama her stat 100 100 100 olabiliyor.Yani 100 25 100 olsa dahi 100 Olanları arttıramıyorsun fakat 25 artıyor)

[FUNCTION stat]
if <hits> < <str>
src.sysmessage @33,1,1 Canınız az iken bunu yapamazsınız.
return 1
endif
if (<src.findid.i_rune_protection>) || (<src.findid.i_rune_reactive_armor>) || (<src.findid.i_rune_bless>) || (<src.findid.i_rune_strength>) || (<src.findid.i_rune_agility>) || (<src.findid.i_rune_cunning>)
src.sysmessage @33,1,1 Üzerinizde koruma büyüsü varken olmaz.
return 1
endif
findlayer(32).remove
findlayer(44).remove
findlayer(47).remove
IF (<isevent.e_stats>)
	str = <dtag0.ostr>
	dex = <dtag0.odex>
	int = <dtag0.oint>
	src.sysmessage @33,1,1 Statlarınız şu anda korunuyor.
else
	src.sysmessage @33,1,1 Statlarınız şu anda korunmuyor.
ENDIF
sdialog d_statcontrol

[Dialog d_statcontrol]
0,0
nomove
noclose
resizepic 160 60 5170 400 210
dhtmlgump 350 82 75 20 0 0 <def.bfont_dred>-1  -5 -10
dhtmlgump 450 82 75 20 0 0 <def.bfont_dred>+1  +5 +10

dhtmlgump 200 105 100 30 0 0 Strength  ->
dhtmlgump 290 105 50 30 0 0 <def.bfont_dred>(<src.ostr>)
button 350 105 0FD 0FC 1 0 1
button 375 105 0FD 0FC 1 0 2
button 400 105 0FD 0FC 1 0 3
button 450 105 0fa 0fb 1 0 11
button 475 105 0fa 0fb 1 0 12
button 500 105 0fa 0fb 1 0 13

dhtmlgump 200 135 100 30 0 0 Dexterity  ->
dhtmlgump 290 135 50 30 0 0 <def.bfont_dred>(<src.odex>)
button 350 135 0FD 0FC 1 0 4
button 375 135 0FD 0FC 1 0 5
button 400 135 0FD 0FC 1 0 6
button 450 135 0fa 0fb 1 0 14
button 475 135 0fa 0fb 1 0 15
button 500 135 0fa 0fb 1 0 16

dhtmlgump 200 165 100 30 0 0 Intelligence ->
dhtmlgump 290 165 50 30 0 0 <def.bfont_dred> (<src.oint>)
button 350 165 0FD 0FC 1 0 7
button 375 165 0FD 0FC 1 0 8
button 400 165 0FD 0FC 1 0 9
button 450 165 0fa 0fb 1 0 17
button 475 165 0fa 0fb 1 0 18
button 500 165 0fa 0fb 1 0 19

button 200 200 4005 4006 1 0 50
button 200 220 4005 4006 1 0 51
dhtmlgump 235 221 150 30 0 0 <def.bfont_dred>Korumayı kaldır.
dhtmlgump 235 202 150 30 0 0 <def.bfont_dgreen>Statlarımı korumaya al.

[Dialog d_statcontrol button]
on = 1 3
if (<src.findlayer(32)>) || (<src.findlayer(44)>) || (<src.findlayer(47)>)
	src.sysmessage @33,1,1 Üzerinizde statlarınızı etkileyebilecek bir büyü bulunuyor.
	sdialog d_statcontrol
	return 1
endif
if <src.isevent.e_stats>
	src.sysmessage @33,1,1 Statlarınız korunur durumdayken kullanamazsınız.
	sdialog d_statcontrol
	return 1
endif
IF (<dargn> == 1)
	local.stat = 1
ELIF (<dargn> == 2)
	local.stat = 5
ELSE
	local.stat = 10
ENDIF
IF (<eval (<src.ostr> - <dlocal.stat>)> >= 25)
	src.ostr -= <dlocal.stat>
	sdialog d_statcontrol
ELSE
	src.sysmessage @33,1,1 En fazla 25'e kadar düşürebilirsiniz.
	sdialog d_statcontrol
	return 1
ENDIF

on=11 13
if (<src.findlayer(32)>) || (<src.findlayer(44)>) || (<src.findlayer(47)>)
	src.sysmessage @33,1,1 Üzerinizde statlarınızı etkileyebilecek bir büyü bulunuyor.
	sdialog d_statcontrol
	return 1
endif
if <src.isevent.e_stats>
	src.sysmessage @33,1,1 Statlarınız korunur durumdayken kullanamazsınız.
	sdialog d_statcontrol
	return 1
endif
if <argn>==11
	local.stat 1
elif <argn>==12
	local.stat 5
else
	local.stat 10
endif
if <eval (<src.ostr> + <local.stat>)> > 100)
	src.sysmessage @33,1,1 En fazla 100'e kadar yükseltebilirsiniz.
elif <eval (<src.stattotal> + <local.stat>)> > 225
	src.sysmessage @33,1,1 Stat toplamınız en fazla 255 olabilir.
else
	src.ostr += <dlocal.stat>
endif
sdialog d_statcontrol

on = 4 6
if (<src.findlayer(32)>) || (<src.findlayer(44)>) || (<src.findlayer(47)>)
	src.sysmessage @33,1,1 Üzerinizde statlarınızı etkileyebilecek bir büyü bulunuyor.
	sdialog d_statcontrol
	return 1
endif
if <src.isevent.e_stats>
	src.sysmessage @33,1,1 Statlarınız korunur durumdayken kullanamazsınız.
	sdialog d_statcontrol
	return 1
endif
IF (<dargn> == 4)
	local.stat = 1
ELIF (<dargn> == 5)
	local.stat = 5
ELSE
	local.stat = 10
ENDIF
IF (<eval (<src.odex> - <dlocal.stat>)> >= 25)
	src.odex -= <dlocal.stat>
	sdialog d_statcontrol
ELSE
	src.sysmessage @33,1,1 En fazla 25'e kadar düşürebilirsiniz.
	sdialog d_statcontrol
	return 1
ENDIF

on=14 16
if (<src.findlayer(32)>) || (<src.findlayer(44)>) || (<src.findlayer(47)>)
	src.sysmessage @33,1,1 Üzerinizde statlarınızı etkileyebilecek bir büyü bulunuyor.
	sdialog d_statcontrol
	return 1
endif
if <src.isevent.e_stats>
	src.sysmessage @33,1,1 Statlarınız korunur durumdayken kullanamazsınız.
	sdialog d_statcontrol
	return 1
endif
if <argn>==14
	local.stat 1
elif <argn>==15
	local.stat 5
else
	local.stat 10
endif
if <eval (<src.odex> + <local.stat>)> > 100)
	src.sysmessage @33,1,1 En fazla 100'e kadar yükseltebilirsiniz.
elif <eval (<src.stattotal> + <local.stat>)> > 225
	src.sysmessage @33,1,1 Stat toplamınız en fazla 255 olabilir.
else
	src.odex += <dlocal.stat>
endif
sdialog d_statcontrol
	
on = 7 9
if (<src.findlayer(32)>) || (<src.findlayer(44)>) || (<src.findlayer(47)>)
	src.sysmessage @33,1,1 Üzerinizde statlarınızı etkileyebilecek bir büyü bulunuyor.
	sdialog d_statcontrol
	return 1
endif
if <src.isevent.e_stats>
	src.sysmessage @33,1,1 Statlarınız korunur durumdayken kullanamazsınız.
	sdialog d_statcontrol
	return 1
endif
IF (<dargn> == 7)
	local.stat = 1
ELIF (<dargn> == 8)
	local.stat = 5
ELSE
	local.stat = 10
ENDIF
IF (<eval (<src.oint> - <dlocal.stat>)> >= 25)
	src.oint -= <dlocal.stat>
	sdialog d_statcontrol
ELSE
	src.sysmessage @33,1,1 En fazla 25'e kadar düşürebilirsiniz.
	sdialog d_statcontrol
	return 1
ENDIF

on=17 19
if (<src.findlayer(32)>) || (<src.findlayer(44)>) || (<src.findlayer(47)>)
	src.sysmessage @33,1,1 Üzerinizde statlarınızı etkileyebilecek bir büyü bulunuyor.
	sdialog d_statcontrol
	return 1
endif
if <src.isevent.e_stats>
	src.sysmessage @33,1,1 Statlarınız korunur durumdayken kullanamazsınız.
	sdialog d_statcontrol
	return 1
endif
if <argn>==17
	local.stat 1
elif <argn>==18
	local.stat 5
else
	local.stat 10
endif
if <eval (<src.oint> + <local.stat>)> > 100)
	src.sysmessage @33,1,1 En fazla 100'e kadar yükseltebilirsiniz.
elif <eval (<src.stattotal> + <local.stat>)> > 225
	src.sysmessage @33,1,1 Stat toplamınız en fazla 255 olabilir.
else
	src.oint += <dlocal.stat>
endif
sdialog d_statcontrol

on = 50
IF !(<src.flags> & statf_dead)
	IF (<findlayer(32)> || <findlayer(44)> || <findlayer(47)>)
	src.sysmessage @33,1,1 Üzerinizde statlarınızı etkileyebilecek bir büyü bulunuyor.
		sdialog d_statcontrol
		return 1
	ENDIF
	IF (<isevent.e_stats>)
		src.sysmessage @33,1,1 Statlarınız şu an zaten koruma altında.
		sdialog d_statcontrol
		return 1
	ENDIF
	local.stats = <eval (<src.ostr> + <src.odex> + <src.oint>)>
	IF (<dlocal.stats> != 225)
		src.sysmessage @33,1,1 Statlarınızı koruma altına alabilmeniz için stat toplamınız 225 olmalıdır.
		sdialog d_statcontrol
		return 1
	ENDIF
	src.f_unequip_pack
	src.tag.ostr = <src.ostr>
	src.tag.odex = <src.odex>
	src.tag.oint = <src.oint>
	src.events +e_stats
	serv.log ### STAT LOCK
	serv.log /* player=<src.name>/<src>
	serv.log / str=<src.str> dex=<src.dex> int=<src.int>
	serv.log ###
	src.sysmessage @33,1,1 Statlarınız artık korunur durumda.
	return 1
ENDIF

on = 51
IF !(<src.flags> & statf_dead)
	IF !(<isevent.e_stats>)
		src.sysmessage @33,1,1 Statlarınız korunur durumda değil.
		sdialog d_statcontrol
		return 1
	ENDIF
	src.f_unequip_pack
	src.tag.ostr =
	src.tag.odex =
	src.tag.oint =
	src.events -e_stats
	src.sysmessage @33,1,1 Statlarınız artık korunur durumda değil.
	return 1
ENDIF

[EVENTS e_stats]
on=@StatChange
IF !(<findlayer(32)> || <findlayer(44)> || <findlayer(47)>)
	local.stats = <eval (<str> + <dex> + <int>)>
	IF (<dlocal.stats> != 225)
		ostr = <dtag0.ostr>
		odex = <dtag0.odex>
		oint = <dtag0.oint>
	ENDIF
ENDIF

on=@SkillStart
IF !(<findlayer(32)> || <findlayer(44)> || <findlayer(47)>)
	local.stats = <eval (<str> + <dex> + <int>)>
	IF (<dlocal.stats> != 225)
		str = <dtag0.ostr>
		dex = <dtag0.odex>
		int = <dtag0.oint>
	ENDIF
ENDIF

on=@EnvironChange
IF !(<findlayer(32)> || <findlayer(44)> || <findlayer(47)>)
	local.stats = <eval (<str> + <dex> + <int>)>
	IF (<dlocal.stats> != 225)
		str = <dtag0.ostr>
		dex = <dtag0.odex>
		int = <dtag0.oint>
	ENDIF
ENDIF

on=@UserWarMode
IF !(<findlayer(32)> || <findlayer(44)> || <findlayer(47)>)
	local.stats = <eval (<str> + <dex> + <int>)>
	IF (<dlocal.stats> != 225)
		str = <dtag0.ostr>
		dex = <dtag0.odex>
		int = <dtag0.oint>
	ENDIF
ENDIF

on=@SpellCast
IF !(<findlayer(32)> || <findlayer(44)> || <findlayer(47)>)
	local.stats = <eval (<str> + <dex> + <int>)>
	IF (<dlocal.stats> != 225)
		str = <dtag0.ostr>
		dex = <dtag0.odex>
		int = <dtag0.oint>
	ENDIF
ENDIF

[EOF]
2.Konsolda bu hata var!
serv.log ### STAT LOCK
	 /* player=<src.name>/<src>
	 / str=<src.str> dex=<src.dex> int=<src.int>
	###
Yani satır numarası 250den başlıyor
serv.log ### STAT LOCK
serv.log /* player=<src.name>/<src>
serv.log / str=<src.str> dex=<src.dex> int=<src.int>
serv.log ###
Neophyte
26.6001
Statlarla ilgili konular oldukça fazla, bunlardan bir tanesi;
https://www.ultima-strike.com/forum/ultima-online/stat-bozuluyor-q34165
umarım çözüm bulabilirsiniz.

Üye Ol veya Giriş Yap

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