[DIALOG d_soyadi]
3, 3
PAGE 0
nomove
resizepic 0 0 3500 305 240
text 22 23 1152 0
textentry 25 100 160 16 1152 1 1
button 207 188 243 241 1 0 1
button 33 185 249 248 1 1 2

[DIALOG d_soyadi TEXT]
<serv.servname> Soyadi Menu
Soyadi Buraya


[DIALOG d_soyadi BUTTON]
on=1
src.sysmessage @48,,1 Islem Iptal Edildi...
on=2
buraya yaptırıcam komutu


arkadaşlar ben soyadi sistemi yapmaya calisiyorum yanliz adam soyadini yazdiginda okeya tıkladıgında soyadı iki kelimeden olusmamlı @ gibi harfler olmamlı birde en fazla 9 harf olmali onu nasıl yaparım??
uzunluğu strlen kullanarak yapacaksın sadece harf yaptırma işi biraz zor bütün harfleri sorgulatman gerekir uğraş biraz takıldığın yerde yardım ederiz.
saol genesis yapmayı başardım
eğer sadece harf olması için gereken kodları başka yerden aldıysan büyük ihtimalle şu açık vardır.

xx12xx yaptığın zaman sorgu işlemiyor denersen senin için yararlı olur o bölümü for kullanarak yaparsın.
script konusunda cok iyi degilim forla yapamayabilirim
for 0 <eval strlen(<argtxt[0]>) -1>
if !((strmatch('[a-z]','<strsub <eval <local._for>> 1 <argtxt[0]>>') || (STRMATCH("*'*","<argtxt[0]>")))
src.sysmessage Bla bla bla
return 1
endif
endfor

mantık olarak kolay aslında

strsub belirli aralıklar arasındaki girdileri belirlemek için ve sen for kullanarak sırayla tüm girdileri sorguluyorsun.
saol genesis ben rexos un aile sisteminden bakarak söle yaptım

[itemdef i_deed_soyadi]
defname i_deed_soyadi
id i_deed
name Soyadi Deed

on=@create
attr attr_newbie
color 080a

on=@click
message @48,,1 [<serv.servname>]
message @48,,1 [<name>]
return 1

on=@dclick
if (<src.tag0.birkeretikladim> == 0)
src.dialog d_soyadi
src.tag0.birkeretikladim=1
else
src.sysmessage @48,,1 Bir Kere Tikladiniz...
endif
return 1

[DIALOG d_soyadi]
3, 3
PAGE 0
nomove
noclose
resizepic 0 0 3500 305 240
text 22 23 1152 0
textentry 25 100 160 16 1152 1 1
button 207 188 243 241 1 0 1
button 33 185 249 248 1 1 2

[DIALOG d_soyadi TEXT]
<serv.servname> Soyadi Menu
Soyadi Buraya


[DIALOG d_soyadi BUTTON]
on=1
src.sysmessage @48,,1 Soyadini deed'i sadece birkere kullanabilirsin dikkatli ol
src.dialog d_soyadi


on=2
if (strmatch('<argtxt[1]>','')
src.sysmessage @025,1,1 Lutfen Bir Soy Ad Giriniz.
src.dialog d_soyadi
return 1
endif

for 0 <eval strlen(<argtxt[1]>) -1>
if !strmatch('[a-z]','<strsub <eval <local._for>> 1 <argtxt[1]>>')
src.sysmessage @025,1,1 Hatali Soyadi Girdiniz : "<argtxt[1]>"
src.sdialog d_soyadi
return 1
endif
endfor

if ((strlen(<argtxt[1]>) > 12) || ((strlen(<argtxt[1]>) < 4)
src.dialog d_soyadi
src.sysmessage @025,1,1 Soy Isminiz az 4, en fazla 12 karakter olmalidir.
else
src.name <src.name> <argtxt[1]>
return 1
endif

calıntı olmaz dimi
peki ya 2 tane ayni aile olursa ?
evt olabilir o zaman taglarlami engellicez
bu aile isimlerini kaydettirip button un altında sorgulatacaksın.
???? :D
Sunu Dene Birde ;

obj=<uid>
forplayers 6144
if (<obj.uid> != <uid>
if (strmatch('[<obj.name>]', '<argtxt[1]>')
src.dialog d_isimdegis <== Buraya Senin Dialogunu Yaz..
src.sysmessage @025,1,1 Bu Soyad'dan Sunucuda Bulunmaktadir.
return 1
endif
endif
endfor

if ((strlen(<argtxt[1]>) > 13) || ((strlen(<argtxt[1]>) < 5)
src.dialog d_isimdegis <== Buraya Senin Dialogunu Yaz..
src.sysmessage @025,1,1 Soyadiniz En Az 5, En Fazla 13 Karakter Olmalidir.
return 1
endif
olmadi
butonda son işlem olarak ekle

call f_sorgu <argtxt[0]>

[function f_sorgu]
forplayers 60000
if (strmatch('<streat <name>>','<args>'))
src.sysmessage @38,1,1 Bu soyada sahip birisi var.
else
// işlemler
return 1
endif
endfor


Bunun çalışma mantığı ismindeki boşluktan sonrasını ele alır XXX YYY adlı bir oyuncuda YYY yi sorgular yani girmiş olduğun değeri kişinin adındaki boşluktan sonrası ile karşılaştırır değerler aynı çıkarsa bu soyada sahip birisi var mesajını verir.
genesis scripte böylemi yerleştirilecek

[itemdef i_deed_soyadi]
defname i_deed_soyadi
id i_deed
name Soyadi Deed

on=@create
attr attr_newbie
color 080a

on=@click
message @48,,1 [<serv.servname>]
message @48,,1 [<name>]
return 1

on=@dclick
if (<src.tag0.birkeretikladim> == 0)
src.dialog d_soyadi
src.tag0.birkeretikladim=1
else
src.sysmessage @48,,1 Bir Kere Tikladiniz...
endif
return 1

[DIALOG d_soyadi]
3, 3
PAGE 0
nomove
noclose
resizepic 0 0 3500 305 240
text 22 23 1152 0
textentry 25 100 160 16 1152 1 1
button 207 188 243 241 1 0 1
button 33 185 249 248 1 1 2

[DIALOG d_soyadi TEXT]
<serv.servname> Soyadi Menu
Soyadi Buraya


[DIALOG d_soyadi BUTTON]
on=1
src.sysmessage @48,,1 Soyadini deed'i sadece birkere kullanabilirsin dikkatli ol
src.dialog d_soyadi


on=2
if (strmatch('<argtxt[1]>','')
src.sysmessage @025,1,1 Lutfen Bir Soy Ad Giriniz.
src.dialog d_soyadi
return 1
endif

for 0 <eval strlen(<argtxt[1]>) -1>
if !strmatch('[a-z]','<strsub <eval <local._for>> 1 <argtxt[1]>>')
src.sysmessage @025,1,1 Hatali Soyadi Girdiniz : "<argtxt[1]>"
src.sdialog d_soyadi
return 1
endif
endfor


if ((strlen(<argtxt[1]>) > 12) || ((strlen(<argtxt[1]>) < 4)
src.dialog d_soyadi
src.sysmessage @025,1,1 Soy Isminiz az 4, en fazla 12 karakter olmalidir.
else
call f_sorgu <argtxt[1]>
return 0
endif
endif


[function f_sorgu]
forplayers 60000
if (strmatch('<streat <name>>','<args>'))
src.sysmessage @38,1,1 Bu soyada sahip birisi var.
else
src.name <src.name> <argtxt[1]>
return 1
endif
endfor



Üye Ol veya Giriş Yap

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