Gökberkciğime, + Aile ismi değiştirme eklentisi :) Buda benden olsun.

Benim ki işler mi Gökberk ? :D

Yukarıdaki kodlarımıza aşağıdaki dialogumuzu ekliyoruz;

[dialog d_aile_rename button]
on = 1
if strlen(<argtxt[0]>) < 3 || strlen(<argtxt[0]>) > 15
src.sysmessage @38,,1 Soy isminiz, en az 3 en fazla 15 karakterden oluşabilir.
elif (<f_isim_kontrolu <argtxt[0]>> > 0)
src.sysmessage @38,,1 Lütfen sadece harf kullanınız.
elif (<f_soyadi_kontrolu <argtxt[0]>> > 0)
src.sysmessage @38,,1 Yazdığınız aile ismi zaten bulunuyor [<argtxt[0]>]
else
local.isim <strarg <src.name>>
local.soyisim <strtoupper(<strsub 0 1 <argtxt[0]>>)><strtolower(<strsub 1 15 <argtxt[0]>>)>
src.name <local.isim> <local.soyisim>
local.eskisoyisim <src.tag0.soyad>
src.tag0.soyad <argtxt[0]>
src.sysmessage @38,,1 Soy isminiz <src.tag.soyad> olarak değiştirilmiştir.
serv.b @68,1,1 <local.eskisoyisim> ailesi, <local.soyisim> olarak <local.isim> tarafindan değiştirildi.

 for 1 <eval <def.maxuye>>
  if strcmpi('<tag.uye<dlocal._for>>','')
    ref1 = <tag.uye<dlocal._for>>
    ref1.tag.soyad <local.soyisim>
    local.isim <strarg <ref1.name>>
    ref1.name <local.isim> <local.soyisim>
  endif
endfor

endif
return 1

Daha sonra d_aile_kontrol dialogumuzun, buttonları ve dhtmlgumpları olan bölmeye bunları ekleyelim.
(Tümünü verdim düzenli olsun diye)

[dialog d_aile_kontrolu]
160,0
nomove

src.ctag.siralama = <dargv[0]>
page 0
resizepic 20 50 5120 250 200
resizepic 30 60 3000 230 180
dhtmlgump 40 70 210 25 1 0 <def.bfont_dred><link.tag0.soyad> Aile Panosu <def.bfont_black>(<dtag0.uyeler>/<eval <def.maxuye>>)
button 65 110 4005 4007 0 2 0
dhtmlgump 100 110 90 25 1 0 Üyeleri Yönet
button 65 140 4005 4006 1 0 902
dhtmlgump 100 140 90 25 1 0 Yeni Üye Al
button 65 170 4005 4006 1 0 904
dhtmlgump 100 170 90 25 1 0 Aileyi Dağıt
button 65 200 4005 4006 1 0 905
dhtmlgump 100 200 90 25 1 0 İsim değiştir

Kolay gelsin ^^'
adaşım çalışır galiba :D bir sorun göremedim
[plevel 1]
ac

[function ac]
if !strcmpi('<src.tag.soyad>','')
  src.sysmessage @1153 bir aileniz yok?
else
	IF !(STRMATCH('<ARGS>','')
		SERV.ALLCLIENTS acThick <SRC.TAG.SOYAD>,<SRC.UID>,<ARGS>
	ENDIF
endif

[function acThick]
if  !(<isgm>) && !strcmpi('<ARGV[0]>','<tag.soyad>')
	FOR DONGU 2 <EVAL <DARGV> - 1>
		IF (<DLOCAL.DONGU> == 2)
			LOCAL.TOTALSTRING = <ARGV[<DLOCAL.DONGU>]>
		ELSE
			LOCAL.TOTALSTRING = <LOCAL.TOTALSTRING>,<ARGV[<DLOCAL.DONGU>]>
		ENDIF
	ENDFOR
       SYSMESSAGE @1153 [Aile Chat] <UID.<ARGV[1]>.NAME> : <LOCAL.TOTALSTRING>
endif

Bizde böyle yaparız slotherecim bu şekilde çalışır. ARGTXT dialoglarla uğraşıyordum ordan geçmiş ARGV olucaktı ^^'

Bu konu Ultio tarafından düzenlendi(2009-07-30 20:50, 14 yıl önce)
Master
59.2997
Bu şekilde yaptığınla benim yaptığım arasında pek performans farkı olmuyor. :) Ayriyetten tüm aktif oyunculara komut gönderip, gerekli sorgu ve döngü ile girilen değerleri süzmek yerine üstte verdiğim şekilde tek bir döngü ile çözülmesi performans açısından daha mantıklı. Tabi bir alternatif isteyen onu da kullanabilir.

Ha illa kodları uzatmaya niyetliyim diyorsan şöyle bir şeyler de yapabiliriz özel olarak ancak dediğim gibi gereksiz olacaktır. :)

[function ac]
if !strcmpi('<src.tag.soyad>','')
  src.sysmessage @1153 bir aileniz yok?
else
  for 0 <eval (<serv.accounts>) -1>
    if (<serv.account.<dlocal._for>>)
      for x 0 <eval (<serv.account.<dlocal._for>.chars>) -1>
	    if (<serv.account.<dlocal._for>.char.<dlocal.x>.isonline>) && !strcmpi('<serv.account.<dlocal._for>.char.<dlocal.x>.tag.soyad>','')
		  ref1 = <serv.account.<dlocal._for>.char.<dlocal.x>>
	      local.soyad <strarg <serv.account.<dlocal._for>.char.<dlocal.x>.name>>
		  if strcmpi('<src.tag.soyad>','<local.soyad>')
		    ref1.sysmessage @1153 [Aile Chat] <src.name>: <args>
		  endif
		endif
      endfor
	endif
  endfor
endif
return 1
uzatma gökberk kodları falan :asik2
uzat gökberk uzat :D
er yada geç mysql ide kabullenicez :)
valla rahat ayarlansın diye sqlsiz yapılmış öyle duydum
Slothere : Bu şekilde yaptığınla benim yaptığım arasında pek performans farkı olmuyor. :) Ayriyetten tüm aktif oyunculara komut gönderip, gerekli sorgu ve döngü ile girilen değerleri süzmek yerine üstte verdiğim şekilde tek bir döngü ile çözülmesi performans açısından daha mantıklı. Tabi bir alternatif isteyen onu da kullanabilir.

Ha illa kodları uzatmaya niyetliyim diyorsan şöyle bir şeyler de yapabiliriz özel olarak ancak dediğim gibi gereksiz olacaktır. :)

[function ac]
if !strcmpi('<src.tag.soyad>','')
  src.sysmessage @1153 bir aileniz yok?
else
  for 0 <eval (<serv.accounts>) -1>
    if (<serv.account.<dlocal._for>>)
      for x 0 <eval (<serv.account.<dlocal._for>.chars>) -1>
	    if (<serv.account.<dlocal._for>.char.<dlocal.x>.isonline>) && !strcmpi('<serv.account.<dlocal._for>.char.<dlocal.x>.tag.soyad>','')
		  ref1 = <serv.account.<dlocal._for>.char.<dlocal.x>>
	      local.soyad <strarg <serv.account.<dlocal._for>.char.<dlocal.x>.name>>
		  if strcmpi('<src.tag.soyad>','<local.soyad>')
		    ref1.sysmessage @1153 [Aile Chat] <src.name>: <args>
		  endif
		endif
      endfor
	endif
  endfor
endif
return 1

Bu şekilde yaptığın zamanda döngü account sayısına göre dönücek mesela 65000 account varsa 65000 kere mi dönmesi mantıklı yoksa aktif 55 oyuncu varsa okadarmı dönmesi mantıklı?
sence aktif accountmu fazladır aktif oyuncumu ? şimdi düşünmeden yazdığın çok açık

65000 account varsa en az 2 den 130000 aktif player var demektir...

edit: yada ben yanlış anladım :))
ortada dönen laflara göre forplayers forclients kalıplaro allclients den daha çok performans kaybına neden oluyomuş bundan yola çıkarak allclients kullanın :D
buda benden olsun bi yorumda

[plevel 1]
ac

[function ac]
if !strcmpi('<src.tag.soyad>','')
  src.sysmessage @1153 bir aileniz yok?
else
  forclients 6144
    if (<isplayer>) && !(<isgm>) && !strcmpi('<src.tag.soyad>','<tag.soyad>')
      sysmessage @1153 [Aile Chat] <src.name>: <args>
    endif
  endfor
endif

yerine "forclients <serv.clients>" boşuna döngü yapmasını engellemezmi?
Her seferinde tekrar indexliyor. Allclients ise zaten hali hazır aktif oyuncuları indexinde tuttuğu için %100 lük bi performans artışı sağlıyor.
yep 55i den bu yana öle
Gökberkin yöntemini tercih ederdim ben olsam. fakat ondan daha da güzel bir yöntem var. geliyor yolda :)



Üye Ol veya Giriş Yap

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