Master
59.2997
2007 yılında yayımladığım isim sisteminin halen kullanıldığını görmekteyim. O zamanın şartları ile yazılan scriptin şu an kullanılması pek içime sinmiyor açıkçası. O yüzden sistemi güncelleyip (baştan yazdım gerçi) tekrar yayınlıyorum. Bu halinin daha iyi olduğunu düşünüyorum, eski sistemi kullanan arkadaşlara ricam yeni sisteme geçmeleridir. Sistemi test etmedim eden birisi buraya yazabilirse mutlu olurum :)

[comment isim_sistemi]
yazan: Slothere
tarih: 31/07/2009
version: 056b+

açıklama:
- sistem, eskiden (2007'de) yazdığım sisteme kıyasla daha stabil şekilde çalışmaktadır. eski sistemin güncellenmiş halidir.
- on=@login tetikleyicisinin altına "f_isim" fonksiyonu eklenmesi sistem için gerekli ve yeterlidir. eklemediğiniz takdirde sistem çalışmaz.
- aktif bir soyad sisteminiz bulunuyorsa sistem kişinin soy isimli halini değil, kişinin yalın haldeki ismini kontrol edecektir.
---------------------

[function f_isim_duzenle]
local.isim <strarg <strtoupper(<strsub 0 1 <args>>)><strtolower(<strsub 1 16 <args>>)>>
return <local.isim>

[function f_karakter]
for 0 <eval (strlen(<args>)) -1>
  if !strmatch('*[a-z]*','<strsub <dlocal._for> 1 <args>>')
    local.hatali ++
  endif
endfor
return <dlocal.hatali>

[function f_kontrol]
for 0 <eval (<serv.accounts>) -1>
  if (<serv.account.<dlocal._for>>)
    for x 0 <eval (<serv.account.<dlocal._for>.chars>) -1>
      local.isim = <strarg <serv.account.<dlocal._for>.char.<dlocal.x>.name>>
        if !strcmpi('<local.isim>','<args>') && (<serv.account.<dlocal._for>.char.<dlocal.x>.uid> != <src>)
          local.return ++
        endif
    endfor
  endif
endfor
return <dlocal.return>

[function f_isim]
local.isim <strarg <src.name>>
if (<eval <src.f_kontrol <local.isim>>> > 0) && !(<src.dtag0.isimkontrolu>)
  src.flags <src.flags>|04
  sdialog d_isim_duzenle
endif

[dialog d_isim_duzenle]
0,0
nomove
noclose

resizepic 50 50 5054 320 180
resizepic 60 60 3000 300 160
dhtmlgump 95 70 250 50 0 0 <strarg <src.name>> ismi sunucuda kullanilmaktadir. Lutfen yeni bir isim girip onaylayiniz.
resizepic 120 130 3000 160 20
dtextentry 125 130 140 20 1152 0 <argv[0]>
button 120 165 4005 4007 1 0 1
dtext 155 165 1152 Tamam

[dialog d_isim_duzenle button]
on = 1
if (<eval (strlen(<argtxt[0]>))> < 3) || (<eval (strlen(<argtxt[0]>))> > 16)
  src.sysmessage @1153 isminiz en az 3, en fazla 16 karakterden olusabilir.
  sdialog d_isim_duzenle,0,<argtxt[0]>
elif (<eval (<f_karakter <argtxt[0]>>)> > 0)
  src.sysmessage @1153 isminizde hatali karakterler bulunmaktadir.
  sdialog d_isim_duzenle,0,<argtxt[0]>
elif (<eval (<f_kontrol <argtxt[0]>>)> > 0)
  src.sysmessage @1153 <argtxt[0]> ismi sunucuda kullanilmaktadir
  sdialog d_isim_duzenle,0,<argtxt[0]>
else
  local.isim <f_isim_duzenle <argtxt[0]>>
  src.name <local.isim>
  src.sysmessage @1153 isminiz <local.isim> olarak duzenlendi.
  src.flags <src.flags>&~04
  src.tag.isimkontrolu 1
endif
return 1

[eof]
Regex ile bütün karakterleri kontrol ettirebilirsin. Daha kullanışlı olucaktır.

[FUNCTION F_KARAKTER]
LOCAL.HATALI = 0
IF !(STRREGEX(^[A-Z]+[a-z]*$, <ARGS>))
    RETURN 1
ELSE
   RETURN 0
ENDIF

Eğer hatalıysa 1 döndürüyor

Bu kısmıda :

elif (<eval (<f_karakter <argtxt[0]>>)> > 0)
  src.sysmessage @1153 isminizde hatali karakterler bulunmaktadir.
  sdialog d_isim_duzenle,0,<argtxt[0]>

bu şekilde :

elif (<f_karakter <argtxt[0]>>)
  src.sysmessage @1153 isminizde hatali karakterler bulunmaktadir.
  sdialog d_isim_duzenle,0,<argtxt[0]>

Değiştirebilirsin
Silindi
Members
0
@Slothere
2 hata gördüm
1.si mesela playerin adı Yeni serverde bulunca dialog çıkıor dialoga örn Asd yazıyorum tamam diyorum message şöle geliyor ' isminiz Yeni olarak tekrar düzenlendi' yani asd olarak demiyor isminide 0 yapıyor

2. aslında bu hata deil ama düşünmemiş mesela serverde Yeni nickinde biri var biri daha açmaya çalıştı açmaya çalışanda dialog çıkıor fakat adam oyundan çıktığında daha önce Yeni olarak açmış kullanıcıya dialog gidior yani yeni açan oyundan çıkıp eskisinin o hatayı almasını bekler.

Üye Ol veya Giriş Yap

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