Silindi
[function checkhealing]
if ((<skilllock[17]> == 0) && (<skilltotal> < 800.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> < 800.0))
	if (<veterinary> < 30.0)
		if (rand(7) == 1)
			veterinary (<veterinary> + 1)
		endif
	elseif (<veterinary> < 50.0)
		if (rand(8) == 1)
			veterinary (<veterinary> + 1)
		endif
	elseif (<veterinary> < 75.0)
		if (rand(9) == 1)
			veterinary (<veterinary> + 1)
		endif
	elseif (<veterinary> < 100.0)
		if (rand(10) == 1)
			veterinary (<veterinary> + 1)
		endif
	endif
endif

bu yerlerdekı randları artırarakmı skıllerı % 50 %90 kapatabılırım yoksa
[Skill 0]
DEFNAME=Skill_Alchemy
KEY=Alchemy
TITLE=Alchemist
EFFECT=0.0,125.0
DELAY=0.2,1.0
VALUES=1,30,200
ADV_RATE=1.0,2.0,3.0
DELAY=1.5
STAT_STR=0
STAT_DEX=0
STAT_INT=100
BONUS_STR=0
BONUS_DEX=0
BONUS_INT=100
BONUS_STATS=60

ON=@Fail
src.smg Iksiriniz heba oldu.

[Skill 1]
DEFNAME=Skill_Anatomy
KEY=Anatomy
TITLE=Scholar
PROMPT_MSG=Kimi inceleyeceksiniz??
DELAY=1.0,3.0
ADV_RATE=1.0,2.0,3.0
STAT_STR=0
STAT_DEX=0
STAT_INT=100
BONUS_STR=0
BONUS_DEX=0
BONUS_INT=100
BONUS_STATS=60

ON=@Fail
	src.smg Bu yaratik hakkinda pek fikriniz yok.
	return 1

[Skill 2]
DEFNAME=Skill_Animal_Lore
KEY=AnimalLore
TITLE=Scholar
PROMPT_MSG=Hangi hayvani inceleyeceksiniz?
DELAY=1.0,3.0
ADV_RATE=1.0,2.0,3.0
STAT_STR=0
STAT_DEX=0
STAT_INT=100
BONUS_STR=0
BONUS_DEX=0
BONUS_INT=100
BONUS_STATS=60

ON=@Fail
	src.smg Bu hayvan hakkinda pek fikriniz yok.
	return 1

[Skill 3]
DEFNAME=Skill_Appraise
KEY=ItemID
TITLE=Merchant
PROMPT_MSG=Neyi inceleyecegiz?
DELAY=1.0,3.0
ADV_RATE=1.0,2.0,3.0

STAT_STR=0
STAT_DEX=0
STAT_INT=100
BONUS_STR=0
BONUS_DEX=0
BONUS_INT=100
BONUS_STATS=60

ON=@Fail
	src.smg Bu esya hakkinda bir fikriniz yok.
	return 1


[Skill 4]
DEFNAME=Skill_Armslore
KEY=ArmsLore
TITLE=Arms%s
PROMPT_MSG=Neyi inceleyeceksiniz?
DELAY=1.0,3.0
ADV_RATE=1.0,2.0,3.0

STAT_STR=0
STAT_DEX=0
STAT_INT=100
BONUS_STR=0
BONUS_DEX=0
BONUS_INT=100
BONUS_STATS=60

ON=@Fail
	src.smg Bu esya hakkinda bir fikriniz yok.
	return 1

yoksa bu yerlerdekı DELAY larımı ayarlamam gerekır ve tam %50 ve %90 ayarladıgımı nasıl anlarım mesela tame craft skıllerı %90 dıger skıllerı %50 kapatmak ıstıyorum bunu nasıl yaparım hangı yolla ? skıllagaın le mı scptyazıp functıonlamı yapmam mantıklı yoksa sphereden skılın ana Delay ından mı ? yapmalıyım
Aslında yüzdelik veya rand'lık bir durum yoktur ortada. İnsanlar bu garip bilinmeyene bir ad koymak için böyle birşey uydurmuştur (Matematik)

Aslında burada olay rand yükseldikce yeteneği alabilme sıklığının azalmasıdır, bunu %'lik bir dilime bölemezsiniz. rand(2) de yapsanız, bu sizin her iki yetenek kullanımından birinde yetenek alacağınızı garantilemez. Yani sonuçta %50 olmaz. Ama böyle kabul edilir.
Silindi
Novice
6
Lai : Aslında yüzdelik veya rand'lık bir durum yoktur ortada. İnsanlar bu garip bilinmeyene bir ad koymak için böyle birşey uydurmuştur (Matematik)

Aslında burada olay rand yükseldikce yeteneği alabilme sıklığının azalmasıdır, bunu %'lik bir dilime bölemezsiniz. rand(2) de yapsanız, bu sizin her iki yetenek kullanımından birinde yetenek alacağınızı garantilemez. Yani sonuçta %50 olmaz. Ama böyle kabul edilir.

iyide bu benım soruma cevap degılkı ben servrdakı craft ve tame skilleri %80 90 kapatmak ıstıyorum zorlastırmak yanı dıger warıyor ve mage skıllerı %50 %60 a ayarlamak ıstıyorum bunun icin ıllakı bır yol vardır sonucta rand 5 1 deyınce 5de1 gelıyorsa skıll delay da nasıl gelıyor delay da 0.1,1.0,1.1,2.0 bunların anlamı ney onları bılmem lasım delayda 1.0,2.0,3.0 neye takabul edıyor onu bılıyormusn
Arkadaşım sayıları artırdıkca zorlaştırırsın, bu kadar basit. Ama yüzdelik bir dilim vermezsin.

Bir pastayı ikiye bölersen %50 bir taraf %50 diğer taraf olur. Ancak olasılıklar dahilinde mantıksız bir olay gelişir.

Verdiğin örnekte rand(5) dediğinde 5'inden 1'inin gain kazandıracağını mı sanıyorsun ? Sadece gain alımını biraz zorlaştırırsın. Ama yüzde veremezsin.

Eğer bu durumu algılamakta zorluk çekiyorsan deneyerek görebilirsin.
Öncelikle selamlar

Lai : Arkadaşım sayıları artırdıkca zorlaştırırsın, bu kadar basit. Ama yüzdelik bir dilim vermezsin.

Bir pastayı ikiye bölersen %50 bir taraf %50 diğer taraf olur. Ancak olasılıklar dahilinde mantıksız bir olay gelişir.

Verdiğin örnekte rand(5) dediğinde 5'inden 1'inin gain kazandıracağını mı sanıyorsun ? Sadece gain alımını biraz zorlaştırırsın. Ama yüzde veremezsin.

Eğer bu durumu algılamakta zorluk çekiyorsan deneyerek görebilirsin.

Laininde dediği gibi.

rand(5) yapıp bu sayının 1-5 den 5 e kadar herhangi bir sayıyı eşit olup olmadığını kontrol edip işlemlerinizi yapıtırırsanız matematiksel olarak %20 ihtimalle gerçekleşir fakat bu 10 denemede 2 skill kazanacağınız anlamına gelmez buda olasılığa girer.

Şu şekil düşünün rulette kırmızıya para yatırıp kazanma ihtimaliniz %50 dir fakat 2 sefer üst üste kırmızıya yatırıp kazanacağınız anlamına gelmez .
Şuan zaten eklediğin scpye göre sen skillgain için function kullanmışssın ki buda ayrı bir saçmalık olmuş zaten.Zaten sphere nin kendine ait bir skillgain özelliği mevcut eğer sen bide üstüne randlarla eklersen bu işi yani sphere_skill.scp deki gain ayarını bilmeyip kolaya kaçarsan zaten hiç bir şekilde ayar tutturamassın.Benim tavsiyem functionları kaldırıp sadece spherenin kendine ait gain ayarlarıyla oynamandır.

Şimdi sphere_skills.scp de comment kısmı var.

[COMMENT SKILL x]
ADV_RATE=10.0,200.0,800.0 // 10.0 successes at 0% to gain .1, 800.0 successes at 100% to gain .1 skill, 200.0 successes at 50% to gain .1,
VALUES=0,100 // The amount of value an item created with the skill gets at skill levels.

İşi bu şekilde yüzdeye gayet vurabilirsin.Yanlız Lai'nin sölediği gibi bu sana %100 lük bir oran sağlamaz.Örneğin ayarını %50 oranında gain için ayarladın.Bu sana %50 oranında gain sağlar ancak her seferinde bu böle olcak diye bir şey yok gerçektende.Ama %90 oranında tutarlık söz konusu.

ADV_RATE hakkında konu olması lazım zaten bu platformda o yüzden yazmıyorum kendin ara bul bi zahmet !
Ama eğer diyorsan ki ben 100 denemede adamın sadeve ve sadece X kere skill gain etmesini istiyorum aşağıdaki kodlar işine yariyabilir.

Oyun giren playerin src.ctag.ihtimal değerini 0 yaparsan sorunsuz calişir.

Pay ve payx değerlerini değiştirirsin ihtimalde değişir .

pay 10 payx 1 yaparsan %10 (10da1)
pay 2 payx 1 yaparsan %50 (2de1)

[defname paylar]
pay = 5
payx = 1

Bunlarda işlemi yaptıracağın function yada triggerin altına ekler islemler kısmını yaptırmak istediğin işlemle değişirsin.

if (rand(<eval <def.pay>>) = <eval <def.payx>>)
if (<eval <src.ctag.ihtimal>> = <eval <def.pay>>)
//islemler Buraya
src.ctag.ihtimal = 0
else
src.ctag.ihtimal <eval <src.ctag.ihtimal>+1>
endif
else
src.ctag.ihtimal <eval <src.ctag.ihtimal>+1>
if (<eval <src.ctag.ihtimal>> = <eval <def.pay>>)
//islemler buraya
src.ctag.ihtimal = 0
endif
endif
Expert
34.0001
Elende'nin dediği teorik olarak doğru ama pratiğe döktüğümüzde, 10 da 1 yetenek geliştiriyorsa, 9 tane yumruk atıp 1 tane hayvan tameleyerek taming kasabilirim. Onun için o function da son kullandığı yeteneği de kontrol etmek lazım.
Zaten doğrudan olarak arkadaşımızın istediği scripti paylaşmadım hazırcı paylaşımdan yana değilim onun yerine nasıl yapabileceğine dair mantığı kavrayıp kendi isteği üzerine düzenleyip geliştirmesi. ;)

Sizin dediğinizi engellemenin mantığınıda söylüyecek olursak ;

Eğer skill ph i için kullanılacaksa.

@skillgain triggerinde yukarıda belirttiğim kodlar içerisinde ctag değerinde <argn1> kullanmak gerekicektir.
Silindi
Members
0
tmm neyse ben zaten olayı cozdum gıbı saolun deneyecem gorecem artık napalım :D

Üye Ol veya Giriş Yap

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