Master
59.2997
Merhaba arkadaşlar,

Önceki yazdığım scriptleri güncelleme furyasının yeni parçası olan Item Transfer sistemine hoş geldiniz. :) Geçen yıl haziran ayları gibi yayınladığım item transfer v1.0 ve v2.0'dan sonra bu gün itibari ile v3.0'ı yayınlıyorum.

Sistemi en verimli şekilde kullanabilmeniz için güncel bir Sphere 0.56b sürümü ile 4.x veya üzeri client platformuna sahip olmalısınız. 4.x platformununun ilk serilerindeki clientlerde eşya rengi konusunda problem yaşabilirsiniz.

Sistemden bazı resimler ve açıklama:

Basit bir işleyişi var sistemin. Hesabınız üzerindeki karakterler arası eşya transferini sağlıklı bir şekilde yapmanızı sağlar. Sistemin oyunculara kattığı bir artı olarak, oyunda aktif olduğu karakterden aktif olmayan karakterine eşya gönderme veya tam tersi aktif olmayan karakterinden aktif olan karakterine eşya transfer etmesini söyleyebiliriz.

Ayriyetten bankanızda bulunan ve içi dolu olan çantaların, yanlarındaki ufak buttonlara basak içlerindeki eşyaları normal olarak dialogda sıralatmanız mümkün.

Sistem örnek olarak anlatmak gerekirse; Slothere isimli karakteriniz ile oyundasınız, ancak Sloth isimli karakterinizin bankasından bir eşya aktarmanız gerekiyor. Oyundan çıkmadan aktif olan karakteriniz (slothere) ile .itemtransfer komutunu kullanıp karakterin karşısına gelecek dialogda Sloth isimli karakterinin sağında bulunan buttona basarak Sloth isimli karakterinin bankasındaki tüm eşyalara erişebilir, seçtiğiniz eşyayı kendi karakterinize birkaç hamlede aktarabilirsiniz.






[COMMENT transfer]
yazan: Slothere
tarih: 19-08-09
version: 056b+
------------------------

[DEFNAME Transfer_Buttons]
TRANSFER_Send_Button 		"0FAB 0FAD"
TRANSFER_Receive_Button		"0FAE 0FB0"
TRANSFER_Natural_Button		"4005 4007"
TRANSFER_Navigation_Button	"04B9 04BA"

[PLEVEL 1]
itemtransfer

[function itemtransfer]
IF (<SRC.FLAGS> & statf_dead|statf_freeze|statf_war)
  RETURN 1
ELSE
  CLEARCTAGS Transfer
  DIALOGCLOSE d_transfer_send
  DIALOGCLOSE d_transfer_end
  SDIALOG d_transfer
ENDIF

[DIALOG d_transfer]
0,0
nomove

RESIZEPIC 100 100 5054 320 210
ALPHABLACK 110 110 300 190
DTEXT 125 120 1152 Eşya aktarmak istediğiniz karakterinizi seçiniz.
DORIGIN 180 140
FOR 0 <EVAL (<ACCOUNT.CHARS> -1)>
  DTEXT +15 *20 <QVAL (<ACCOUNT.CHAR.<dLOCAL._FOR>.UID> == <SRC>)? 0845:1000> <ACCOUNT.CHAR.<dLOCAL._FOR>.NAME>
  IF (<ACCOUNT.CHAR.<dLOCAL._FOR>.UID> != <SRC>)
    BUTTON -55 *0 <DEF.TRANSFER_Send_Button> 1 0 <EVAL (<LOCAL._FOR> + 1)>
    BUTTON -25 *0 <DEF.TRANSFER_Receive_Button> 1 0 <EVAL (<LOCAL._FOR> + 6)>
  ENDIF
ENDFOR

[DIALOG d_transfer BUTTON]
ON = 1 5
SRC.CTAG.Transfer_Char = <ACCOUNT.CHAR.<EVAL (<ARGN> -1)>.UID>
SRC.CTAG.Transfer_Length = 0
SRC.CTAG.Transfer_Pack = <SRC.FINDLAYER(Layer_BankBox)>
SDIALOG d_transfer_send

ON = 6 10
REF1 = <ACCOUNT.CHAR.<EVAL (<ARGN> - 6)>.UID>
SRC.CTAG.Transfer_Char = <SRC>
SRC.CTAG.Transfer_Length = 0
SRC.CTAG.Transfer_Pack = <REF1.FINDLAYER(Layer_BankBox)>
SDIALOG d_transfer_send

[DIALOG d_transfer_send]
0,0
NOMOVE

RESIZEPIC 100 100 5054 300 300
ALPHABLACK 110 110 280 280
BUTTON 365 363 9903 9905 1 0 20001
BUTTON 115 363 9909 9911 1 0 20002
DORIGIN 190 100
REF2 = <SRC.CTAG.Transfer_Pack>
FOR <SRC.dCTAG0.Transfer_Length> <EVAL (<SRC.CTAG0.Transfer_Length> + 11)>
  IF (<REF2.FINDCONT.<dLOCAL._FOR>>)
    REF3 = <REF2.FINDCONT.<dLOCAL._FOR>>
    DTEXT +0 *20 1152 <QVAL (<REF3.AMOUNT> < 2) ? :<REF3.AMOUNT>> <REF3.NAME>
    BUTTON -45 *0 <DEF.TRANSFER_Natural_Button> 1 0 <EVAL (<LOCAL._FOR> + 1)>
    IF (<REF3.TYPE> == t_container)
      IF (<REF3.RESCOUNT> > 0)
        BUTTON -65 +5 <DEF.TRANSFER_Navigation_Button> 1 0 <EVAL (<LOCAL._FOR> + 10000)>
      ENDIF
    ENDIF
  ENDIF
ENDFOR

[DIALOG d_transfer_send BUTTON]
ON = 0
CLEARCTAGS Transfer

ON = 1 9999
REF66 = <SRC.CTAG.Transfer_Pack>
SRC.CTAG.Transfer_SendItem <REF66.FINDCONT.<EVAL (<ARGN> - 1)>.UID>
SRC.DIALOGCLOSE d_transfer_end
SDIALOG d_transfer_end

ON = 10000 20000
REF77 = <SRC.CTAG.Transfer_Pack>
SRC.CTAG.Transfer_Pack = <REF77.FINDCONT.<EVAL (<ARGN> - 10000)>.UID>
SRC.CTAG.Transfer_Length 0
SDIALOG d_transfer_send

ON = 20001
SRC.CTAG0.Transfer_Length +=12
SDIALOG d_transfer_send

ON = 20002
IF (<SRC.dCTAG0.Transfer_Length> > 0)
  SRC.CTAG.Transfer_Length -=12
ENDIF
SDIALOG d_transfer_send
  
[DIALOG d_transfer_end]
0,0

RESIZEPIC 100 100 5054 340 200
ALPHABLACK 110 110 320 180
IF (<SRC.CTAG0.Transfer_Char>)
  REF1 = <SRC.CTAG.Transfer_Char>
ELSE
  REF1 = <SRC>
ENDIF
REF2 = <SRC.CTAG0.Transfer_SendItem>
DHTMLGUMP 125 125 310 40 0 0 <DEF.BFONT_White>Bu eşyayı "<REF1.NAME>" isimli karakterinize aktarmak istediğinize emin misiniz?
RESIZEPIC 120 175 5054 65 65
TILEPICHUE 125 185 <REF2.DISPIDDEC> <REF2.dCOLOR>
DHTMLGUMP 200 185 220 45 0 0 <DEF.BFONT_LRed>Eşya: <DEF.BFONT_White><REF2.NAME><DEF.BR><DEF.BFONT_LRed>Adet: <DEF.BFONT_White><QVAL (<REF2.AMOUNT> < 2) ? -:<REF2.AMOUNT>>
BUTTON 125 250 <DEF.TRANSFER_Natural_Button> 1 0 1
DTEXT 160 250 1152 Gönder (Transfer Tutarı: 500 gp.)

[DIALOG d_transfer_end BUTTON]
ON = 0
CLEARCTAGS Transfer

ON = 1
REF1 = <SRC.CTAG0.Transfer_Char>
REF2 = <SRC.CTAG0.Transfer_SendItem>
IF !((<REF1>) || (<REF2>))
  SRC.SYSMESSAGE @,,1 Teknik bir hata oluştu.
ELSE
  IF (<SRC.GOLD> < 500)
    SRC.SYSMESSAGE @,,1 Transfer için yeterli altınınız bulunmuyor. (500 gp.)
  ELSE
    SRC.GOLD -=500
    REF2.CONT = <REF1.FINDLAYER(Layer_BankBox)>
    REF2.Update
    SRC.Update
    SRC.SYSMESSAGE @,,1 <REF2.NAME> isimli eşyanızı, <REF1.NAME> isimli karakterinize aktardınız.
  ENDIF
ENDIF
CLEARCTAGS Transfer
  
[EOF]

İşine yarayan birileri olursa ne mutlu bana :)

Bu konu Slothere tarafından düzenlendi(2009-08-20 01:59, 14 yıl önce)
Novice
-14.8
Eline sağlık
Master
59.2997
Arkadaşlar ufak bir bilgilendirme yapmak istiyorum. Scriptte bazı yerlerde CTAG.Length olarak belirtmişim ancak onların CTAG.Transfer_Length olarak güncellenmesi gerekli. Scriptte gerekli yerleri güncelledim, kullanıcak birisi varsa güncel halini kullanmalı.
Novice
-14.8
Slothere : Arkadaşlar ufak bir bilgilendirme yapmak istiyorum. Scriptte bazı yerlerde CTAG.Length olarak belirtmişim ancak onların CTAG.Transfer_Length olarak güncellenmesi gerekli. Scriptte gerekli yerleri güncelledim, kullanıcak birisi varsa güncel halini kullanmalı.

İtemleri asıl renkleriyle göstermek için sanıyorumki " tilepichue " kullandın ve yine sanıyorumki tilepichue sadece 4x ve üstü clientlerde çalışır hale geliyor?
Eline sağlık.
KadhraS :
Slothere : Arkadaşlar ufak bir bilgilendirme yapmak istiyorum. Scriptte bazı yerlerde CTAG.Length olarak belirtmişim ancak onların CTAG.Transfer_Length olarak güncellenmesi gerekli. Scriptte gerekli yerleri güncelledim, kullanıcak birisi varsa güncel halini kullanmalı.

İtemleri asıl renkleriyle göstermek için sanıyorumki " tilepichue " kullandın ve yine sanıyorumki tilepichue sadece 4x ve üstü clientlerde çalışır hale geliyor?

"Sistemi en verimli şekilde kullanabilmeniz için güncel bir Sphere 0.56b sürümü ile 4.x veya üzeri client platformuna sahip olmalısınız. 4.x platformununun ilk serilerindeki clientlerde eşya rengi konusunda problem yaşabilirsiniz."

yazıyı tamamen okumadan yorum yapmasaydın keşke =)
Ellerinize Sağlık
Eline sağlık gökberk.
Neophyte
-1.7
Eline sağlık çok güzel olmuş ama transfer karşılığı 500 gp alıyor sanırsam bazı bedavacılar kitaplığa falan koyarak aktarır ki böyle olaylarda 500 gp vermemek için 500 k gidebilir burdan da böyle sistemleri olan serverlardaki cimrilere seslenmiş oldum :D

Üye Ol veya Giriş Yap

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