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