Hesabına erişemeyen eski üyeler Discord üzerinden yardım alabilir.



arkadaslar ıtemhavale dıe bı script war bir sey harıc her sey calısıyor size scripti koyucam sorun olan yeri duzeltırsenız cok sevınırım server acıcam sıstemlerdekı bugları sizlerin yardımıyla duzeltmeye calısıyorum.Uzunca gozgezdirmenize gerek yok sorun en altta toplampara functionunda orası eksık yazılmıs duzeltecek olan varsa sevinirim.Sımdıden saolun



[plevel 1]
hesapno
havaleyap

[function hesapno]
src.sysmessage @58,,1 Hesap Nonuz: <src.uid>
return 1

[function havaleyap]
dialogclose d_havale
dialog d_havale


[dialog d_havale]
120,301
PAGE 0
noclose
nomove
resizepic 0 0 5120 520 180
resizepic 93 66 3000 120 25
resizepic 357 66 5120 120 25

dtextentry 97 70 105 105 1153 1
dtextentry 361 70 105 105 1153 2

dtext 10 10 024 <serv.name> havale sistemine hos geldiniz
dtext 10 30 024 Lutfen havale bilgilerini giriniz
dtext 17 68 024 Hesap no:
dtext 237 68 024 Havale miktari:
dtext 145 120 024 Havale et
dtext 339 120 024 Iptal et

button 305 119 4017 4019 1 0 0
button 110 120 4020 4022 1 0 1


[dialog d_havale button]
on=0
src.sysmessage @026 Havale yapmaktan vazgectiniz...

on=1
if (strmatch('<argtxt[1]>',''))
src.sysmessage @58,,1 Lutfen parayi yollayacaginiz kisinin hesap nosunu yaziniz...
return 1
elseif (strmatch('<argtxt[2]>',''))
src.sysmessage @58,,1 Lutfen bir havale miktari giriniz.
return 1
elseif ((strlen(<argtxt[1]>)) > 12) || ((strlen(<argtxt[1]>)) < 4)
src.sysmessage @58,,1 Hesap nosu en fazla 12, en az 4  karakter olabilir.
return 1
elseif ((strlen(<argtxt[2]>)) > 6)  || ((strlen(<argtxt[2]>)) < 5)
src.sysmessage @58,,1 Havale miktari en fazla 6, en az 5 haneli olabilir.
return 1
elseif (<IsNum <ARGTXT[2]>>==0)
src.sysmessage @58,,1 Havale miktarina sadece rakam girebilirsiniz.
return 1
elseif (<uid.<ARGTXT[1]>> == 00) || !(<uid.<ARGTXT[1]>.isplayer>)
src.sysmessage @58,,1 Boyle bir hesap no bulunmamaktadir.
return 1
elseif (<ARGTXT[1]> == <src.uid>)
src.sysmessage @58,,1 Kendi kendinize havale yapamazsiniz
return 1
endif
src.ctag.hesapnosu <argtxt[1]>
src.ctag.havalemiktar <eval <argtxt[2]>>
src.dialogclose d_havaleyi_sor
src.dialog d_havaleyi_sor
return 1

[dialog d_havaleyi_sor]
200,180
page 0
noclose
nomove
resizepic 0 0 5120 310 170
resizepic 12 10 3000 290 150

dtext 20 20 1153 <uid.<src.ctag.hesapnosu>.name> isimli kisiye,
dtext 20 40 1153 <eval <src.ctag.havalemiktar>> gp gondermek istiyormusunuz?
dtext 20 130 025 Havale ucreti 5k dir.

dtext 55 91 048 Evet
dtext 155 91 025 Hayir

button 20 89 4020 4022 1 0 1
button 120 89 4017 4019 1 0 0

[dialog d_havaleyi_sor button]
on=0
src.sysmessage @48,1,1,1 Havale islemleri iptal edilmistir...

on=1
if (<src.toplampara> < <eval (<src.ctag.havalemiktar>+5000)>)
src.sysmessage @58,,1 <eval (<src.ctag.havalemiktar>+5000)> gpniz yok.(5 k havale parasidir)
return 1
endif
src.parayikes <eval <src.ctag.havalemiktar>+5000>
src.sysmessage @58,,1 <eval <src.ctag.havalemiktar>> gp, <uid.<src.ctag.hesapnosu>.name> isimli kisiye gonderilmistir.
try uid.<src.ctag.hesapnosu>.parayiyolla <eval <src.ctag.havalemiktar>>
try uid.<src.ctag.hesapnosu>.sysmessage @58,,1 <src.name> isimli kisi size <eval <src.ctag.havalemiktar>> gp havale etmistir.Paraniz bankanizdadir.
return 1



[FUNCTION parayikes]
IF (<toplampara> < <ARGN1>)
RETURN 1
ENDIF
LOCAL.AMOUNT=<ARGN1>
WHILE (<LOCAL.AMOUNT>)
IF (0<FINDLAYER.21.FINDID.i_gold>)
LOCAL.GOLD=<FINDLAYER.21.FINDID.i_gold.amount>
IF (<EVAL <LOCAL.AMOUNT>-<LOCAL.GOLD>> < 0)
FINDLAYER.21.FINDID.i_gold.AMOUNT -= <LOCAL.AMOUNT>
LOCAL.AMOUNT=0
ELSE
FINDLAYER.21.FINDID.i_gold.remove
LOCAL.AMOUNT -= <LOCAL.GOLD>
ENDIF
ELIF (0<FINDLAYER.29.FINDID.i_gold>)
LOCAL.GOLD=<FINDLAYER.29.FINDID.i_gold.amount>
IF (<EVAL <LOCAL.AMOUNT>-<LOCAL.GOLD>> < 0)
FINDLAYER.29.FINDID.i_gold.AMOUNT -= <LOCAL.AMOUNT>
LOCAL.AMOUNT=0
ELSE
FINDLAYER.29.FINDID.i_gold.remove
LOCAL.AMOUNT -= <LOCAL.GOLD>
ENDIF
ENDIF
ENDWHILE
UPDATE

[function toplampara]
RETURN <eval <rescount <def.cmoney>>+<findlayer.29.rescount <def.cmoney>>>



[FUNCTION parayiyolla]
IF (<ARGS> > 0)
   serv.newitem i_gold
     IF (<ARGS> > 65000)
      new.amount=65000
      new.cont <uid.<src.ctag.hesapnosu>.findlayer.29.uid>
      parayiyolla <eval <ARGS>-<NEW.AMOUNT>>
     ELSE
      new.amount=<ARGS>
      new.cont <uid.<src.ctag.hesapnosu>.findlayer.29.uid>
    ENDIF
ENDIF


Bu konu Slothere tarafından düzenlendi(2009-06-15 18:12, 14 yıl önce)
code icine alırmısın

nese böyle yapabilirsin o kısmı:

[function toplampara]
RETURN <eval (<src.rescount.i_gold>+<src.findlayer.29.rescount.i_gold>)>


Bu konu Aldarson[EMRE] tarafından düzenlendi(2009-06-15 13:20, 14 yıl önce)
Orayı parantez içine almak hiç bişi ifade etmez.
Novice
-0.500001
@DC-Game
Bircok Dilde Parantezlere Dikkat Edilir Bunu El Alıskanlıgı Yaparsan Sphere Script Dısındaki Dillerde Sıkıtı Cekebilirsin..
Olmadı

[function toplampara]
RETURN <eval (<src.rescount.i_gold>+<src.findlayer.29.rescount.i_gold>)>

ekledım fakat olmadı nası yapıcam ya bılen yokmu ???
Sorun sanırım toplam parayı göstermiyor.
Ancak bu script'i yazan kişi çok eski ultima sever Nemesis'di ve birçok kullananlar oldu benim arkadaşlarımda dahil olmak üzere bir sorun yaşamadık. Ayrıca script'te bir hatada yok yani toplam para fonksiyonuda gayet normal çalışıyor.
:con
Nowanka : @DC-Game
Bircok Dilde Parantezlere Dikkat Edilir Bunu El Alıskanlıgı Yaparsan Sphere Script Dısındaki Dillerde Sıkıtı Cekebilirsin..

Tekrar söylüyorum orayı parantez içine almak hiç bişi ifade etmez. Ayrıca script dışında da dilleri biliyorum bana akıl vermene gerek yok teşekkürler (: C# 'deki parantez olayı { oluyor yalnız delphide de hiç kullanmadım parantez.
Novice
-0.500001
Tamam Akıl Vermiyim Ama En Basitinden Asp Veya Asp.Net de Code Editorun Olmadıgı Zaman Parantez Olayını Gorursun
Olur görürüm.

@ogz77
[function toplampara]
RETURN <eval <src.rescount.i_gold>+<src.findlayer.layer_bankbox.rescount.i_gold>>

şeklinde dene ama burdaki amacı anlamadım naptırmak istediğini sölersen daha rahat yardımcı olabilirim.
sphereserver.net' te kullanılan allgold olayı var hocam onu diyor arkadaş galiba?

[function toplamgold]
local.player=<eval <rescount i_gold>+<findlayer.29.rescount i_gold>>
local.tmp=<obj>
var.gold_house=0
obj=<uid>
FORCHARMEMORYTYPE 0100
IF (<LINK.TYPE>==t_multi) || (<LINK.TYPE>==t_ship)
LINK.TOTALGOLD_HOUSE
ENDIF
ENDFOR
LOCAL.GOLD_HOUSE=<VAR.GOLD_HOUSE>
VAR.GOLD_HOUSE=
OBJ=<LOCAL.TMP>
RETURN <EVAL <LOCAL.PLAYER>+<LOCAL.GOLD_HOUSE>>
src.gold yapınca olmuyomu ben anlıyamadım :D
@DC-Game evet birşeye yaramıyor o zaman sölemenede gerek yok yani ben biraz daha süslü olsun diye yaptım belki :)
Tamam sen süslemeye devam et :)
Saolun arkadaslar oldu.Yalnız bir script daha var item transfer scripti ondada baska bi sorun var sanırım




[plevel 1]
itemaktar

[function itemaktar]
dialogclose d_char_list
dialog d_char_list

[dialog d_char_list]
230,130
PAGE 0
resizepic 0 0 5120 310 280
resizepic 12 10 3000 290 260
dtext 20 20 1153 <serv.name> item transfer menusu
dtext 20 50 1153 Hangi karaktere item aktarilacak?
for 0 <eval <account.chars>-1>
dtext 65 <eval (<dlocal._for>*30)+90> 025 <account.char.<dlocal._for>.name>
endfor
for 1 <account.chars>
button 30 <eval (<dlocal._for>*30)+60> 4020 4022 1 0 <dlocal._for>
endfor

[dialog d_char_list button]
on=0
sysmessage @58,,1 Item aktarmaktan vazgectiniz.. 

on=1 5
if (<src.account.char.<eval <argn>-1>.uid> == <src.uid>)
src.sysmessage @58,,1 Bagli oldugunuz karakterinize item yollayamazsiniz...
return 1
endif
try ctag.<src.account.name><eval <argn>-1> <src.account.char.<eval <argn>-1>.uid>
targetf item_at <eval <argn>-1>
src.sysmessage @58,,1 hangi itemi aticaksiniz?

buraya kdr sorun yok fakat brda sonra cıkan targeti herhangı bir itemın uzerıne getirip tıkladıgımda sadece item yoluyabilirsiniz diyor ordaki 
if !(<obj.isitem>) bu kodu isitem'i  isnpc olarak degıstırdım yıne olmadı bunada bi yardımcı olursanız cok sevınıerım saygılarımla...



[function item_at]
obj=<argo>
if !(<obj.isitem>)
src.sysmessage @58,,1 Sadece item yollayabilirsiniz...
return 1
endif
if (<src.findlayer.29.uid> == <obj.cont.uid>)
obj.cont <uid.<ctag.<account.name><argn>>.findlayer.29.uid>
update
src.sysmessage @58,,1 Tebrikler, <account.char.<argn>.name>'e <obj.amount> adet <obj.name> yolladiniz...
else
src.sysmessage @58,,1 Sadece bankanizdaki itemleri yollayabilirsiniz..
return 1
endif

// scriptleri kod içersine alınız.

Bu konu Slothere tarafından düzenlendi(2009-06-15 18:11, 14 yıl önce)
Arkadaşlar o iki kod da bana ait.Item transferde zaten bir sorun yok.Ama havale için ben oraya def.cmoney defnamesini koymayı unutmuşum :)

Kodun tamamı aşağıdadır;

// By Michaell
[plevel 1]
hesapno
havaleyap

[function hesapno]
src.sysmessage @1153 Hesap Nonuz: <src.uid>
return 1

[function havaleyap]
dialogclose d_havale
dialog d_havale


[dialog d_havale]
120,301
PAGE 0
noclose
nomove
resizepic 0 0 5120 520 180
resizepic 93 66 3000 120 25
resizepic 357 66 3000 120 25

dtextentry 97 70 105 105 1153 1
dtextentry 361 70 105 105 1153 2

dtext 10 10 024 <serv.name> havale sistemine hos geldiniz
dtext 10 30 024 Lutfen havale bilgilerini giriniz
dtext 17 68 024 Hesap no:
dtext 237 68 024 Havale miktari:
dtext 145 120 024 Havale et
dtext 339 120 024 Iptal et

button 305 119 4017 4019 1 0 0
button 110 120 4020 4022 1 0 1


[dialog d_havale button]
on=0
src.sysmessage @026 Havale yapmaktan vazgectiniz...

on=1
if (strmatch('<argtxt[1]>',''))
src.sysmessage @1153 Lutfen parayi yollayacaginiz kisinin hesap nosunu yaziniz...
return 1
elseif (strmatch('<argtxt[2]>',''))
src.sysmessage @1153 Lutfen bir havale miktari giriniz.
return 1
elseif ((strlen(<argtxt[1]>)) > 12) || ((strlen(<argtxt[1]>)) < 4)
src.sysmessage @1153 Hesap nosu en fazla 12, en az 4  karakter olabilir.
return 1
elseif ((strlen(<argtxt[2]>)) > 6)  || ((strlen(<argtxt[2]>)) < 5)
src.sysmessage @1153 Havale miktari en fazla 6, en az 5 haneli olabilir.
return 1
elseif (<IsNum <ARGTXT[2]>>==0)
src.sysmessage @1153 Havale miktarina sadece rakam girebilirsiniz.
return 1
elseif (<uid.<ARGTXT[1]>> == 00) || !(<uid.<ARGTXT[1]>.isplayer>)
src.sysmessage @1153 Boyle bir hesap no bulunmamaktadir.
return 1
elseif (<ARGTXT[1]> == <src.uid>)
src.sysmessage @1153 Kendi kendinize havale yapamazsiniz
return 1
endif
src.ctag.hesapnosu <argtxt[1]>
src.ctag.havalemiktar <eval <argtxt[2]>>
src.dialogclose d_havaleyi_sor
src.dialog d_havaleyi_sor
return 1

[dialog d_havaleyi_sor]
200,180
page 0
noclose
nomove
resizepic 0 0 5120 310 170
resizepic 12 10 3000 290 150

dtext 20 20 1153 <uid.<src.ctag.hesapnosu>.name> isimli kisiye,
dtext 20 40 1153 <eval <src.ctag.havalemiktar>> gp gondermek istiyormusunuz?
dtext 20 130 025 Havale ucreti 5k dir.

dtext 55 91 048 Evet
dtext 155 91 025 Hayir

button 20 89 4020 4022 1 0 1
button 120 89 4017 4019 1 0 0

[dialog d_havaleyi_sor button]
on=0
src.sysmessage @026 Havale islemleri iptal edilmistir...

on=1
if (<src.toplampara> < <eval (<src.ctag.havalemiktar>+5000)>)
src.sysmessage @1153 <eval (<src.ctag.havalemiktar>+5000)> gpniz yok.(5 k havale parasidir)
return 1
endif
src.parayikes <eval <src.ctag.havalemiktar>+5000>
src.sysmessage @1153 <eval <src.ctag.havalemiktar>> gp, <uid.<src.ctag.hesapnosu>.name> isimli kisiye gonderilmistir.
try uid.<src.ctag.hesapnosu>.parayiyolla <eval <src.ctag.havalemiktar>>
try uid.<src.ctag.hesapnosu>.sysmessage @1153 <src.name> isimli kisi size <eval <src.ctag.havalemiktar>> gp havale etmistir.Paraniz bankanizdadir.
return 1



[FUNCTION parayikes]
IF (<toplampara> < <ARGN1>)
RETURN 1
ENDIF
LOCAL.AMOUNT=<ARGN1>
WHILE (<LOCAL.AMOUNT>)
IF (0<FINDLAYER.21.FINDID.i_gold>)
LOCAL.GOLD=<FINDLAYER.21.FINDID.i_gold.amount>
IF (<EVAL <LOCAL.AMOUNT>-<LOCAL.GOLD>> < 0)
FINDLAYER.21.FINDID.i_gold.AMOUNT -= <LOCAL.AMOUNT>
LOCAL.AMOUNT=0
ELSE
FINDLAYER.21.FINDID.i_gold.remove
LOCAL.AMOUNT -= <LOCAL.GOLD>
ENDIF
ELIF (0<FINDLAYER.29.FINDID.i_gold>)
LOCAL.GOLD=<FINDLAYER.29.FINDID.i_gold.amount>
IF (<EVAL <LOCAL.AMOUNT>-<LOCAL.GOLD>> < 0)
FINDLAYER.29.FINDID.i_gold.AMOUNT -= <LOCAL.AMOUNT>
LOCAL.AMOUNT=0
ELSE
FINDLAYER.29.FINDID.i_gold.remove
LOCAL.AMOUNT -= <LOCAL.GOLD>
ENDIF
ENDIF
ENDWHILE
UPDATE

[function toplampara]
RETURN <eval <rescount <def.cmoney>>+<findlayer.29.rescount <def.cmoney>>>

[FUNCTION parayiyolla]
IF (<ARGS> > 0)
   serv.newitem i_gold
     IF (<ARGS> > 65000)
      new.amount=65000
      new.cont <uid.<src.ctag.hesapnosu>.findlayer.29.uid>
      parayiyolla <eval <ARGS>-<NEW.AMOUNT>>
     ELSE
      new.amount=<ARGS>
      new.cont <uid.<src.ctag.hesapnosu>.findlayer.29.uid>
    ENDIF
ENDIF

[DEFNAME havale]
cmoney i_gold



Üye Ol veya Giriş Yap

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