Hesabına erişemeyen eski üyeler Discord üzerinden yardım alabilir.
arkadaşlar elimde bi ticaret sistemi var onu kurcalıyorum ama bir türlü ticaretin nasıl bitirileceğini bulamadım function ları delik deşik ettim ama gözden kaçırdığım yada eksik bişey var yardımcı olursanız sevinirim...

[DEFNAME merchantlar]
// Eklenen Merchant'ların UID'leri buraya yazılcak.
MERCHANT_BRITAIN 0f69
MERCHANT_YEW 01164
MERCHANT_TRINSIC
MERCHANT_SKARABRAE 01175
MERCHANT_MOONGLOW 01163
MERCHANT_MAGINCIA
MERCHANT_MINOC

[CHARDEF c_merchant]
NAME Merchant
ID c_man
AVERSIONS=t_TRAP,t_eerie_stuff
DESIRES=i_gold,e_notoriety
CAN MT_NONMOVER

ON=@Create
FLAGS |= statf_conjured
FLAGS |= statf_invul
STR=100
DEX=100
INT=100
ITEMNEWBIE=i_robe
COLOR=07ad

ON=@NPCSeeNewPlayer
IF (<SRC.ISEVENT.e_ticaret>)
   IF (<UID> == <SRC.FINDID.i_ticaret_sozlesmesi.TAG0.TESLIM_EDILECEK_UID>)
      SAY @,,1 Hic gelmeyeceksin sanmistim, <SRC.NAME>.
   ENDIF
ELSE
   SAY @,,1 <SRC.NAME>, Ticaret yapacak guvenilir adamlar ariyorum.
ENDIF

ON=@DClick
IF (<SRC.ISEVENT.e_ticaret>)
   IF (<UID> == <SRC.FINDID.i_ticaret_sozlesmesi.TAG0.TESLIM_EDILECEK_UID>)
      SRC.SYSMESSAGE @,,1 Ticaret sözleşmesini seçin.
      TARGETF _deedisec
   ELSE
      SRC.SYSMESSAGE @,,1 Zaten bir ticaret sozlesmesi yapmissiniz.
   ENDIF
ELSEIF (<DISTANCE> < 5)
   IF (<SRC.TAG0.NO_TASK_TILL> > <SERV.TIME>)
      SRC.SYSMESSAGE @,,1 <EVAL (<SRC.TAG0.NO_TASK_TILL> - <SERV.TIME>) / 600> dakika boyunca yeni sozlesme yapamazsiniz.
   ELSE
      TAG.NO_TASK_TILL=
      SDIALOG d_ticaret
   ENDIF
ENDIF
RETURN 1

ON=@GetHit
RETURN 1

[FUNCTION merchantsetup]
IF (STRMATCH(<REGION.NAME>,Britain)
   TAG.SEHIR1=Moonglow
   TAG.SEHIR2=Magincia
   TAG.ITEM1.1=i_shirt_plain
   TAG.ITEM1.2=i_tunic
   TAG.ITEM2.1=i_hat_wizards
   TAG.ITEM2.2=i_robe
   TAG.MAXITEM1=2000
   TAG.MAXITEM2=5000
   TAG.KERVAN1=0
   TAG.KERVAN2=0
   TAG.ZORLUK1=3
   TAG.ZORLUK2=3
   TAG.PACK_HAYVAN_LIMITI1=1000
   TAG.PACK_HAYVAN_LIMITI2=2500
ELSEIF (STRMATCH(<REGION.NAME>,Yew)
   TAG.SEHIR1=SkaraBrae
   TAG.SEHIR2=Moonglow
   TAG.ITEM1.1=i_log
   TAG.ITEM1.2=
   TAG.ITEM2.1=i_hides_cut
   TAG.ITEM2.2=
   TAG.MAXITEM1=15000
   TAG.MAXITEM2=20000
   TAG.KERVAN1=0
   TAG.KERVAN2=0
   TAG.ZORLUK1=2
   TAG.ZORLUK2=7
   TAG.PACK_HAYVAN_LIMITI1=3000
   TAG.PACK_HAYVAN_LIMITI2=5000
ELSEIF (STRMATCH(<REGION.NAME>,Trinsic)
   TAG.SEHIR1=SkaraBrae
   TAG.SEHIR2=Yew
   TAG.ITEM1.1=i_bow
   TAG.ITEM1.2=i_crossbow
   TAG.ITEM2.1=i_arrow
   TAG.ITEM2.2=i_xbolt
   TAG.MAXITEM1=5000
   TAG.MAXITEM2=20000
   TAG.KERVAN1=1
   TAG.KERVAN2=1
   TAG.ZORLUK1=4
   TAG.ZORLUK2=5
   TAG.PACK_HAYVAN_LIMITI1=1250
   TAG.PACK_HAYVAN_LIMITI2=5000
ELSEIF (STRMATCH(<REGION.NAME>,Skara Brae)
   TAG.SEHIR1=Yew
   TAG.SEHIR2=Minoc
   TAG.ITEM1.1=i_fish_cut_raw
   TAG.ITEM1.2=
   TAG.ITEM2.1=i_fish_cut_cooked
   TAG.ITEM2.2=
   TAG.MAXITEM1=8000
   TAG.MAXITEM2=6000
   TAG.KERVAN1=0
   TAG.KERVAN2=1
   TAG.ZORLUK1=2
   TAG.ZORLUK2=6
   TAG.PACK_HAYVAN_LIMITI1=2000
   TAG.PACK_HAYVAN_LIMITI2=2000
ELSEIF (STRMATCH(<REGION.NAME>,Moonglow)
   TAG.SEHIR1=Magincia
   TAG.SEHIR2=Trinsic
   TAG.ITEM1.1=i_potion_heal
   TAG.ITEM1.2=i_potion_cure
   TAG.ITEM2.1=i_potion_heal
   TAG.ITEM2.2=i_potion_cure
   TAG.MAXITEM1=4000
   TAG.MAXITEM2=6000
   TAG.KERVAN1=0
   TAG.KERVAN2=0
   TAG.ZORLUK1=1
   TAG.ZORLUK2=3
   TAG.PACK_HAYVAN_LIMITI1=2000
   TAG.PACK_HAYVAN_LIMITI2=2000
ELSEIF (STRMATCH(<REGION.NAME>,Magincia)
   TAG.SEHIR1=Britain
   TAG.SEHIR2=Minoc
   TAG.ITEM1.1=i_bracelet_gold
   TAG.ITEM1.2=i_earrings_gold
   TAG.ITEM2.1=i_scroll_night_sight
   TAG.ITEM2.2=i_scroll_bless
   TAG.MAXITEM1=5000
   TAG.MAXITEM2=5000
   TAG.KERVAN1=0
   TAG.KERVAN2=0
   TAG.ZORLUK1=3
   TAG.ZORLUK2=4
   TAG.PACK_HAYVAN_LIMITI1=2500
   TAG.PACK_HAYVAN_LIMITI2=2500
ELSEIF (STRMATCH(<REGION.NAME>,Minoc)
   TAG.SEHIR1=Britain
   TAG.SEHIR2=Trinsic
   TAG.ITEM1.1=i_platemail_chest
   TAG.ITEM1.2=i_shield_round_metal
   TAG.ITEM2.1=i_ingot_iron
   TAG.ITEM2.2=i_scimitar
   TAG.MAXITEM1=750
   TAG.MAXITEM2=20000
   TAG.KERVAN1=1
   TAG.KERVAN2=1
   TAG.ZORLUK1=5
   TAG.ZORLUK2=5
   TAG.PACK_HAYVAN_LIMITI1=250
   TAG.PACK_HAYVAN_LIMITI2=5000
ENDIF

[DIALOG d_ticaret]
100,100
resizepic 0 0 5120 400 240
checkertrans 10 10 380 220

dhtmlgump 30 30 340 70 1 1 Merhaba <SRC.NAME>. Ben ticaretle hayatını kazanan birisiyim. <TAG.SEHIR1> <QVAL (<ISEMPTY <TAG.SEHIR2>>) ? :ve <TAG.SEHIR2> >şehirlerine teslimat yapıyorum. Ancak bir kuryeye ihtiyacım var. Evet dersen bu işten ikimiz de kârlı çıkabiliriz. Senden güvence olarak 50.000gp alacağım. Teslimatı gerçekleştirdiğinde bu paranın bir kısmını geri alacaksın. Ne dersin?

button 30 118 4006 4005 1 0 1
dtext 65 120 1153 Evet, <TAG.SEHIR1> şehrine teslimat yapmak istiyorum.
IF !(<ISEMPTY <TAG.SEHIR2>>)
   button 30 143 4006 4005 1 0 2
   dtext 65 145 1153 Evet, <TAG.SEHIR2> şehrine teslimat yapmak istiyorum.
ENDIF
button 30 168 4006 4005 1 0 0
dtext 65 170 1153 Hayır

[DIALOG d_ticaret BUTTON]
ON=1
IF (<SRC.RESTEST 50000 i_gold>)
   SERV.NEWITEM i_ticaret_sozlesmesi
   SRC.BOUNCE <NEW>
   NEW.TIMERF <EVAL 10*60*60>,TRIGGER @Timer
   NEW.TAG.TESLIM_EDILECEK_UID=<DEF.MERCHANT_<TAG.SEHIR1>>
   NEW.TAG.TESLIM_EDILECEK_ITEM1=<TAG.ITEM1.1>
   NEW.TAG.TESLIM_EDILECEK_ITEM2=<TAG.ITEM1.2>
   NEW.TAG.MAXITEM <TAG.MAXITEM1>
   NEW.TAG.KERVAN <TAG.KERVAN1>
   NEW.TAG.ZORLUK <TAG.ZORLUK1>
   SRC.TAG.HAYVAN_ESYA_LIMITI <TAG.PACK_HAYVAN_LIMITI1>
   SRC.EVENTS +e_ticaret
   SRC.TAG.NO_TASK_TILL <EVAL <SERV.TIME> + (10*60*60)>
   SRC.SYSMESSAGE @,,1 <TAG.SEHIR1> şehrine <SERV.ITEMDEF.<TAG.ITEM1.1>.NAME><QVAL (<ISEMPTY <TAG.ITEM1.2>>) ? : ve <SERV.ITEMDEF.<TAG.ITEM1.2>.NAME> >götürmek için, 10 saatiniz var.
   SRC.CONSUME 50000 i_gold
ELSE
   SRC.SYSMESSAGE @,,1 Çantanızda 50k altın yok.
ENDIF

ON=2
IF (<SRC.RESTEST 50000 i_gold>)
   SERV.NEWITEM i_ticaret_sozlesmesi
   SRC.BOUNCE <NEW>
   NEW.TIMERF <EVAL 10*60*60>,TRIGGER @Timer
   NEW.TAG.TESLIM_EDILECEK_UID=<DEF.MERCHANT_<TAG.SEHIR2>>
   NEW.TAG.TESLIM_EDILECEK_ITEM1=<TAG.ITEM2.1>
   NEW.TAG.TESLIM_EDILECEK_ITEM2=<TAG.ITEM2.2>
   NEW.TAG.MAXITEM <TAG.MAXITEM2>
   NEW.TAG.KERVAN <TAG.KERVAN2>
   NEW.TAG.ZORLUK <TAG.ZORLUK2>
   SRC.TAG.HAYVAN_ESYA_LIMITI <TAG.PACK_HAYVAN_LIMITI2>
   SRC.EVENTS +e_ticaret
   SRC.TAG.NO_TASK_TILL <EVAL <SERV.TIME> + (10*60*60)>
   SRC.SYSMESSAGE @,,1 <TAG.SEHIR2> şehrine <SERV.ITEMDEF.<TAG.ITEM2.1>.NAME> ve <SERV.ITEMDEF.<TAG.ITEM2.2>.NAME> götürmek için, 10 saatiniz var.
   SRC.CONSUME 50000 i_gold
ELSE
   SRC.SYSMESSAGE @,,1 Çantanızda 50k altın yok.
ENDIF

[ITEMDEF i_ticaret_sozlesmesi]
ID i_deed
NAME Ticaret Sozlesmesi
TYPE t_eq_script

ON=@Create
COLOR 0455

On=@Timer
TOPOBJ.TAG.HAYVAN_ESYA_LIMITI=
IF (<TAG0.KERVAN>)
   FOR <TOPOBJ.TAG0.TICARET_PACK>
      REF2=<TOPOBJ.TAG.TICARET_PACK_<dLOCAL._FOR>>
      REF2.DEX=<REF2.TAG.DEX>
      REF2.TAG.DEX=
      REF2.EVENTS -e_ticaret_pack
      TOPOBJ.TAG.TICARET_PACK_<dLOCAL._FOR>=
   ENDFOR
ENDIF
TOPOBJ.SYSMESSAGE @,,1 Ticaret anlaşmanızın şartlarını yerine getiremediniz.
TOPOBJ.EVENTS -e_ticaret
REMOVE
RETURN 1

ON=@DClick
SDIALOG d_ticaret_sozlesmesi
RETURN 1

ON=@Click
MESSAGE [<EVAL (<TAG0.TESLIM_EDILECEK_AMOUNT1> + <TAG0.TESLIM_EDILECEK_AMOUNT2>)> item]

ON=@PickUp_Pack
RETURN 1

ON=@TargOn_Item
IF (<TAG0.KERVAN>) && !(<SRC.YETERLIPACKHAYVAN <EVAL (<TAG0.TESLIM_EDILECEK_AMOUNT1> + <TAG0.TESLIM_EDILECEK_AMOUNT2>) + <SRC.TARG.AMOUNT>>>)
   SRC.SYSMESSAGE @,,1 Bunu taşıyacak yeterli pack hayvanınız yok.
   RETURN 1
ELSE
   SRC.PACKLEREEVENTVER
ENDIF
IF (<EVAL (<TAG0.TESLIM_EDILECEK_AMOUNT1> + <TAG0.TESLIM_EDILECEK_AMOUNT2>) + <SRC.TARG.AMOUNT>> >= <TAG0.MAXITEM>)
   SRC.SYSMESSAGE @,,1 Daha fazla eşya taşıyamıyorsunuz.
   RETURN 1
ENDIF
IF (<SRC.TARG.TOPOBJ.UID> != <SRC>)
   SRC.SYSMESSAGE @,,1 Sadece üstünüzdeki eşyaları kullanabilirsiniz.
   RETURN 1
ENDIF
IF (<SRC.TARG.BASEID> == <TAG0.TESLIM_EDILECEK_ITEM1>)
   SRC.SYSMESSAGE @,,1 Anlaşmaya <SRC.TARG.AMOUNT> adet <SERV.ITEMDEF.<TAG0.TESLIM_EDILECEK_ITEM1>.NAME> eklediniz.
   TAG0.TESLIM_EDILECEK_AMOUNT1 += <SRC.TARG.AMOUNT>
   SRC.TARG.REMOVE
   TARGET
ELSEIF (<SRC.TARG.BASEID> == <TAG0.TESLIM_EDILECEK_ITEM2>)
   SRC.SYSMESSAGE @,,1 Anlaşmaya <SRC.TARG.AMOUNT> adet <SERV.ITEMDEF.<TAG0.TESLIM_EDILECEK_ITEM1>.NAME> eklediniz.
   TAG0.TESLIM_EDILECEK_AMOUNT2 += <SRC.TARG.AMOUNT>
   SRC.TARG.REMOVE
   TARGET
ELSE
   SRC.SYSMESSAGE @,,1 Bunu kullanamazsınız.
ENDIF
RETURN 1

[DIALOG d_ticaret_sozlesmesi]
100,100
resizepic 0 0 5120 200 150
checkertrans 10 10 180 130

dtext 30 30 1153 <SERV.ITEMDEF.<TAG0.TESLIM_EDILECEK_ITEM1>.NAME>: <dTAG0.TESLIM_EDILECEK_AMOUNT1>
IF !(<ISEMPTY <TAG.TESLIM_EDILECEK_ITEM2>>)
   dtext 30 50 1153 <SERV.ITEMDEF.<TAG0.TESLIM_EDILECEK_ITEM2>.NAME>: <dTAG0.TESLIM_EDILECEK_AMOUNT2>
ENDIF
dtext 30 70 1153 Eşya Limiti: <dTAG0.MAXITEM>

button 40 100 4006 4005 1 0 1
dtext 75 98 1153 Eşya Ekle

[DIALOG d_ticaret_sozlesmesi BUTTON]
ON=1
TARGET @,,1 Sözleşmeye dahil etmek istediğiniz eşyayı seçin.

[FUNCTION yeterlipackhayvan]
IF (<ARGN1> <= 50)
   RETURN 1
ENDIF
REF1=<UID>
FORCHARS
   IF (<ID> == c_horse_pack) || (<ID> == c_llama_pack)
      IF (<OWNER> == <REF1>)
         LOCAL.PACK_HAYVAN += 1
      ENDIF
   ENDIF
ENDFOR
IF (<EVAL (<LOCAL.PACK_HAYVAN> * <TAG0.HAYVAN_ESYA_LIMITI>) - 50> < <ARGN1>)
   RETURN 0
ELSE
   RETURN 1
ENDIF

[FUNCTION packlereeventver]
REF1=<UID>
FORCHARS
   IF (<ID> == c_horse_pack) || (<ID> == c_llama_pack)
      IF (<OWNER> == <REF1>)
         REF1.TAG0.TICARET_PACK += 1
         REF1.TAG.TICARET_PACK_<dREF1.TAG0.TICARET_PACK> <UID>
TAG.DEX <DEX>
DEX 10000
         EVENTS +e_ticaret_pack
      ENDIF
   ENDIF
ENDFOR

[EVENTS e_ticaret_pack]
ON=@Death
REF1=<OWNER>
SAYU <ACT.NAME>
IF (<ACT.ISPLAYER>)
   ACT.NEWGOLD 50000
ENDIF
FOR <TAG0.TICARET_PACK>
   REF2=<REF1.TAG0.TICARET_PACK_<dLOCAL._FOR>>
   REF2.DEX=<REF2.TAG0.DEX>
   REF2.TAG.DEX=
   REF2.EVENTS -e_ticaret_pack
   REF1.TAG.TICARET_PACK_<dLOCAL._FOR>=
ENDFOR
REF1.FINDID.i_ticaret_sozlesmesi.REMOVE
REF1.TAG.HAYVAN_ESYA_LIMITI=
REF1.EVENTS -e_ticaret

ON=@Click
MESSAGE @,,1 [Ticaret]

ON=@Attack
RETURN 1

[EVENTS e_ticaret]
ON=@Death
TAG.HAYVAN_ESYA_LIMITI=
IF (<ACT.ISPLAYER>)
   SRC.NEWGOLD 50000
ENDIF
FOR <TAG0.TICARET_PACK>
   REF2=<TAG.TICARET_PACK_<dLOCAL._FOR>>
   REF2.DEX=<REF2.TAG.DEX>
   REF2.TAG.DEX=
   REF2.EVENTS -e_ticaret_pack
   TAG.TICARET_PACK_<dLOCAL._FOR>=
ENDFOR
EVENTS -e_ticaret
FINDID.i_ticaret_sozlesmesi.REMOVE

ON=@Click
MESSAGE @,,1 [Ticaret]

ON=@ItemDClick
IF (<ACT.BASEID> == i_runebook)
   RETURN 1
ENDIF
// runebook gateleri moongateler vs. eklencek

ON=@ItemStep
IF (<ACT.BASEID> == i_moongate)
   RETURN 1
ENDIF
// runebook gateleri moongateler telepadler vs. eklencek

ON=@SpellCast
IF (<ARGN1> == 32) || (<ARGN1> == 52)
   RETURN 1
ENDIF

[FUNCTION _deedisec]
REF1=<ARGO>
IF (<REF1.BASEID> != i_ticaret_sozlesmesi)
   RETURN 1
ENDIF
IF (<ARGO.TAG0.KERVAN>)
   FOR <SRC.TAG0.TICARET_PACK>
      REF2=<SRC.TAG.TICARET_PACK_<dLOCAL._FOR>>
      IF (<REF2.DISTANCE> > 10)
         SRC.SYSMESSAGE @,,1 Pack hayvanlarınız yakında değil.
RETURN 1
      ENDIF
   ENDFOR
ENDIF
SRC.NEWGOLD <EVAL ((<SERV.ITEMDEF.<REF1.TAG0.TESLIM_EDILECEK_ITEM1>.VALUE> * <REF1.TAG0.TESLIM_EDILECEK_AMOUNT1>) + (<SERV.ITEMDEF.<REF1.TAG0.TESLIM_EDILECEK_ITEM2>.VALUE> * <REF1.TAG0.TESLIM_EDILECEK_AMOUNT2>) * <REF1.TAG0.ZORLUK>) + 40000>
SRC.SYSMESSAGE @,,1 Ticaret sonucu <EVAL (<SERV.ITEMDEF.<REF1.TAG0.TESLIM_EDILECEK_ITEM1>.VALUE> * <REF1.TAG0.TESLIM_EDILECEK_AMOUNT1>) + (<SERV.ITEMDEF.<REF1.TAG0.TESLIM_EDILECEK_ITEM2>.VALUE> * <REF1.TAG0.TESLIM_EDILECEK_AMOUNT2>) * <REF1.TAG0.ZORLUK>>gp kazandınız. Ayrıca sözleşmeniz gereği 40.000gp daha aldınız.
REF1.REMOVE
IF (<ARGO.TAG0.KERVAN>)
   FOR <SRC.TAG0.TICARET_PACK>
      REF2=<SRC.TAG.TICARET_PACK_<dLOCAL._FOR>>
      REF2.DEX=<REF2.TAG.DEX>
      REF2.TAG.DEX=
      REF2.EVENTS -e_ticaret_pack
      SRC.TAG.TICARET_PACK_<dLOCAL._FOR>=
   ENDFOR
ENDIF
SRC.EVENTS -e_ticaret

Üye Ol veya Giriş Yap

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