Oncelikle Tesekkur Ederim Yardımın İcin. Guard Sorunu Ve Pack Mount Bugunu Düzelttim. Login İle ilglili Login Triggeri ve Fonksiyon Scpsini Ekliyorum.
*** Ayrı Bir Sıkıntım Daha Var Yeni Bir Konu Açmayayım Şimdi..
Hazine haritalarım ile ilgili bir sıkıntım var. Haritayı aramaktan vazgeçemiyorum. Açıkcası Dclick ile iptal degilde Scripttede Gordugunuz üzere bir dialog pencerem var Ordaki Dialog penceresi haritayı Direkt olarak sildiriyor. Silmesi yerine iptal etmesini istiyorum. Yardımcı Olabilirseniz Sevinirim
Kod:
[itemdef i_kara_hazine_harita]
DEFNAME=i_kara_hazine_harita
NAME=Hazine haritası (Kara)
ID=i_map_rolled
TYPE=T_SCRIPT
FLIP=1
VALUE=30
WEIGHT=0.0
ON=@Create
TAG0.DURUM=Çözülmemiş,0,0
COLOR=07A1
ON=@DESTROY
REF1 <F_ARRAY <TAG0.DURUM>,3>
REF2=<REF1.TAG0.KONTROL>
IF (<CONT>)
IF (<REF1>)
IF (<REF2>)
REF2.REMOVE
ENDIF
REF1.ARROWQUEST
REF1.TAG0.KONTROL=
REF1.TAG0.KARA_HAZINE=
ENDIF
ENDIF
on=@click
REF1 <F_ARRAY <TAG0.DURUM>,3>
REF2=<REF1.TAG0.KONTROL>
IF (<REF2>)
MSG_BEYAZ (<REF2.REGION.NAME> - <REF2.P>)
ENDIF
MSG_KIRMIZI [<F_ARRAY <TAG0.DURUM>,1>]
MSG_BEYAZ <name>
return 1
on=@dclick
REF1 <F_ARRAY <TAG0.DURUM>,3>
REF2=<REF1.TAG0.KONTROL>
IF !(<SRC.ISINPACK <UID>>)
SRC.SYS_KIRMIZI <DEF.UNPACKMSG>
return 1
elseif !(<src.cartography> >= 99.9)
src.sys_kirmizi Haritayı okumak için 99.9 Cartography becerisine sahip olmalısınız.
return 1
elseif !(<src.findid.i_shovel>)
src.sys_kirmizi Yanınızda kürek (shovel) bulunmuyor.
RETURN 1
elseif (<src.tag0.kara_hazine>)
if (<tag0.p>)
ref3=<uid>
foritems 10
if (<baseid> == i_kara_hazine_kontrol)
if !(<tag0.bulan> == <src.uid>)
src.sys_kirmizi Bu hazineyi siz bulmamışsınız.
return 1
endif
endif
if (<baseid> == i_kara_hazine_kontrol)
if (<tag0.bulan> == <src>)
REF1 <SRC.TARG.TAG0.HARITA_SAHIP>
SERV.NEWNPC C_KARA_HAZINE_SAHIBI
NEW.P <P>
NEW.HOME <P>
NEW.FIX
NEW.HOMEDIST {3 5}
NEW.EVENTS +E_KARA_HAZINE_SAHIBI
NEW.EVENTS -E_KARA_HAZINE_KORUMA
NEW.TAG0.HARITA_SAHIP <REF1>
LOCAL.SAHIP <NEW.UID>
LOCAL.LEVEL <R1,2>
LOCAL.COUNT <ARRAYCOUNT <DEF.LEVEL_<DLOCAL.LEVEL>>>
DORAND 3
NEW.EMOTE Kim benim hazineme göz dikti!
NEW.EMOTE Hazineme el sürmeye cesaret edende kim?
NEW.EMOTE Seni pişman edeceğim.
NEW.EMOTE <NEW.NAME> ile baş edemezsin.
NEW.EMOTE Demek hazinemi ele geçirmek istiyorsun <SRC.NAME>.
ENDDO
FOR 1 <R4,7>
//SERV.NEWNPC <f_Array <def.level_<R1,2>>,<R1,33>>
SERV.NEWNPC <F_ARRAY <DEF.LEVEL_<DLOCAL.LEVEL>>,<R1,<DLOCAL.COUNT>>>
NEW.P <P>
NEW.TAG0.SAHIBI <LOCAL.SAHIP>
NEW.HOME <P>
NEW.FIX
NEW.HOMEDIST {3 5}
NEW.EVENTS +E_KARA_HAZINE_KORUMA
SERV.NEWITEM i_npcfix,1,<new>
ENDFOR
REF3.TAG0.DURUM Çözülmüş-Bulunmuş,1,<src>
SRC.EMOTE Hazineyi bulur
SRC.ARROWQUEST
REMOVE
return 1
endif
endif
endfor
src.sys_kirmizi Şu an başka bir hazine haritası ile meşgulsün. Bu hazine <REF1.region.name> civarında biliniyor.
endif
src.f_dialog d_kara_harita
//SRC.ARROWQUEST <TAG0.P>
//SRC.SYS_BEYAZ Hazine <serv.map(<TAG0.P>).region.name> [<TAG0.P>] civarında biliniyor.
return 1
endif
if (<F_ARRAY <TAG0.DURUM>,2> == 1)
if !(<F_ARRAY <TAG0.DURUM>,3> == <src.uid>)
src.sys_kirmizi Bu harita <UID.<F_ARRAY <TAG0.DURUM>,3>.NAME> tarafından çözülmüş.
remove
return 1
ELSE
SRC.SYS_KIRMIZI Dikkat hazineyi bulmak için 2 saatiniz var.
SRC.ARROWQUEST <TAG0.P>
SRC.SYS_BEYAZ Hazine <serv.map(<TAG0.P>).region.name> [<TAG0.P>] civarında biliniyor.
return 1
endif
endif
SRC.TAG0.KARA_HAZINE <UID>
SRC.F_RANDOM_HAZINE_KARA
SRC.EMOTE Haritayı okur
DISPID=i_MAP
UPDATE
RETURN 1
[dialog d_kara_harita]
<DEF.DIALOGSTARTPOSITION>
MAIN 0,0,260,65
TBUTTON_K 20,20,1,Hazineyi bulamadım. Haritayı sil!
[dialog d_kara_harita button]
on=1
REF1=<SRC.TAG0.KARA_HAZINE>
REF2=<SRC.TAG0.KONTROL>
IF (<REF1>)
REF1.REMOVE
ENDIF
IF (<REF2>)
REF2.REMOVE
ENDIF
SRC.SYS_KIRMIZI Harita silindi!
Kod:
[PLEVEL 7]
f_onaccount_login
f_onaccount_delete
f_onaccount_create
f_onchar_create
f_onchar_delete
f_onserver_start
f_onserver_timer
f_onserver_save
f_onserver_save_ok
f_onserver_save_fail
f_onserver_save_finished
f_onserver_exit
f_onserver_blockip
f_onserver_itemcreate
f_onserver_charcreate
[FUNCTION f_onaccount_delete]
[function f_onaccount_create]
IF (STRMATCH(*.*,<ARGS>))
SERV.LOG Hatali hesap adi ! [<args>]
RETURN 1
ENDIF
[FUNCTION f_onaccount_login]
FOR 0 <EVAL (<serv.account.<args>.chars> -1)>
obj <serv.account.<args>.char.<dLOCAL._FOR>.UID>>
if (<obj.account.plevel> > 1)
obj.EVENTS +e_Yetkili
OBJ.EVENTS -e_oyuncu
obj.events +e_general
endif
if (<obj.account.plevel> <= 1)
obj.EVENTS +e_Oyuncu
obj.EVENTS -e_Yetkili
obj.events +e_general
endif
ENDFOR
[FUNCTION f_onserver_timer]
IF (<VAR0.SAVE_TIME> <= 0)
SERV.SAVE
ENDIF
VAR0.SAVE_TIME --
IF (<DEF.SPAWNS_CONFIG> == 1)
local.spawn1 <f_array <var0.spawnb1>,2>
local.spawn2 <f_array <var0.spawnb2>,2>
local.spawn3 <f_array <var0.spawnb3>,2>
if (<var0.spawnb1>)
if (strmatch('<strsub 11 5 <serv.rtime>>','<qval (<dlocal.spawn1> < 10)?0<dlocal.spawn1>:<dlocal.spawn1>>:00')
f_spawnla_binek <f_array <var0.spawnb1>,1>
var0.spawnb1 <f_array <var0.spawnb1>,1>,<f_array <var0.spawnb1>,2>,044
endif
endif
if (<var0.spawnb2>)
if (strmatch('<strsub 11 5 <serv.rtime>>','<qval (<dlocal.spawn2> < 10)?0<dlocal.spawn2>:<dlocal.spawn2>>:00')
f_spawnla_binek <f_array <var0.spawnb2>,1>
var0.spawnb2 <f_array <var0.spawnb2>,1>,<f_array <var0.spawnb2>,2>,044
endif
endif
if (<var0.spawnb3>)
if (strmatch('<strsub 11 5 <serv.rtime>>','<qval (<dlocal.spawn3> < 10)?0<dlocal.spawn3>:<dlocal.spawn3>>:00')
f_spawnla_binek <f_array <var0.spawnb3>,1>
var0.spawnb3 <f_array <var0.spawnb3>,1>,<f_array <var0.spawnb3>,2>,044
endif
endif
endif
if (strmatch('<strsub 11 5 <serv.rtime>>','17:00')
SERV.ALLCLIENTS ETKINLIK_DUYURU Otomatik Etkinlik (Saat : <strsub 11 5 <serv.rtime>>) ;
DORAND 3
F_OTOMATIK_ETKINLIK 2
F_OTOMATIK_ETKINLIK 4
F_OTOMATIK_ETKINLIK 8
ENDDO
ENDIF
IF (STRMATCH('Pazar','<serv.day>')) && (strmatch('<strsub 11 5 <serv.rtime>>','21:00')
IF !(<VAR0.CHAMPION>)
F_SPAWNLA_CHAMPION
ENDIF
ENDIF
if (strmatch('<strsub 11 5 <serv.rtime>>','23:59')
VAR0.HASAT_ZAMANI <F_ARRAY <DEF.MAHSULLER>,<R1,14>>
serv.log Hasat : <F_ARRAY <DEF.MAHSULLER>,<R1,14>>
gundem_clear
//gundemupdate [Diğer] Günsonu!
IF (<DEF.SPAWNS_CONFIG> == 1)
f_spawn_Refresh
f_eski_spawnlari_sil
endif
LOCAL.OLDOBJ <OBJ.UID>
OBJ <DEF0.SERVUID>
OBJ.MAKEBACKUP
OBJ <DLOCAL.OLDOBJ>
endif
if (strmatch('<strsub 11 5 <serv.rtime>>','19:30')
var0.gece=1
var0.gunduz=
endif
if (strmatch('<strsub 11 5 <serv.rtime>>','06:30')
var0.gunduz=1
var0.gece=
endif
// This function is called after client have created a new char.
// SRC --> char being created // karakter
// ARGN1 --> flags // flag
// ARGN2 --> profession chosen // meslek
// ARGN3 --> race (1=human, 2=elf, 3=gargoyle) // ırk
// ARGS --> account name // hesap
// ARGO --> the client creating the character // oluşan karakter
[FUNCTION f_onchar_create]
IF !(<ARGN3> == 1)
SRC.COLOR colors_skin
SRC.OSKIN <SRC.COLOR>
SRC.UPDATE
ENDIF
ARGN3=1
//SRC.F_ADD_HISTORY Karakteriniz olusturuldu.
src.account.tag0.plevel=1
SRC.ACCOUNT.TAG0.EXTRAGOLD=1
SRC.GOLD 0
SRC.GOLD +=<QVAL (<SRC.ACCOUNT.CHARS> == 1)?<DDEF.FIRSTSTARTMONEY>:<ddef.startmoney>>
//SRC.TITLE Yeni Oyuncu
//src.str 50
//src.dex 50
//src.int 50
//src.fullstats
SRC.TAG.BODY_DEFAULT_COLOR=<src.color>
SRC.TAG.HAIR_DEFAULT_COLOR=<src.findlayer(layer_hair).color>
SRC.TAG.BEARD_DEFAULT_COLOR=<src.findlayer(layer_beard).color>
//SRC.FINDLAYER(LAYER_HAIR).REMOVE
//SRC.FINDLAYER(LAYER_BEARD).REMOVE
src.tag0.regionshow=1
src.tag0.msgshow=1
serv.newitem i_scissors,1,<src>
new.attr 04
serv.newitem i_Dagger,1,<src>
new.attr 04
serv.newitem i_spellbook
new.bounce
new.addcircle 4,1
new.attr 04
serv.newitem i_pet_horse_brown_dk,1,<src>
new.attr 04
serv.newitem random_boots,1,<src>
new.attr |= attr_newbie
src.findlayer.1.unequip
src.findlayer.2.unequip
forcont <src.findlayer.21>
contp 142,121
endfor
src.logla Yeni karakter olusmustur.
src.name <STRARG <STRTOUPPER(<STRSUB 0 1 <SRC.NAME>>)><STRTOLOWER(<STRSUB 1 16 <SRC.NAME>>)>>
SRC.TIMERF 0,gundemupdate [Diğer] <src.name> isimli oyuncu aramiza katilmistir.
SRC.TIMERF 0,<qval (<src.account.plevel> == 1)?serv.allclients SISTEM_DUYURU <src.name> aramıza katılmıştır. Kendisine başarılar dileriz.:src.hazirla>
if !(<src.account.tag0.ortak_banka>)
serv.newitem i_ortak_kasa,1,<src.findlayer.29>
new.contp 118,105
NEW.TAG0.NOSALE=1
src.account.tag0.ortak_Banka <new.uid>
endif
[FUNCTION f_onchar_delete]
logla Karakter sildi.
SRC.remove_invalid_houses
gundemupdate [Diğer] <name> isimli karakter silinmistir.
//LIST.HISTORY_<SRC.UID>.CLEAR
LIST.gonderen_<SRC.UID>.CLEAR
LIST.M_<SRC.UID>_MESAJ.CLEAR
LIST.SPEECH_<SRC.UID>.CLEAR
IF (<account.chars> < 2)
account.tag0.ortak_banka=
endif
[FUNCTION f_onserver_exit]
[FUNCTION f_onserver_blockip]
[FUNCTION f_onserver_start]
FOR 1 6
VAR0.SLOT<DLOCAL._FOR>=
ENDIF
VAR0.SAVE_TIME <serv.saveperiod>
db.connect
if (<db.connected>)
serv.log ##MySQL Baglantisi BASARILI !
else
serv.log #MySQL Baglantisi BASARISIZ !
endif
db.close
forinstances C_CHAMPION
var0.champion <uid>
endfor
[FUNCTION f_onserver_save_ok]
IF (<SERV.STAFF> > 0)
FOR 0 <EVAL <LIST.GM.COUNT>-1>
REF1=<LIST.GM.<DLOCAL._FOR>>
ENDFOR
ELSE
ENDIF
[FUNCTION f_onserver_save_fail]
[FUNCTION f_onserver_save]
VAR0.SAVE_TIME <serv.saveperiod>
enler_update_global
//IF (<VAR0.MAPBUG> == 1)
//Serv.load scripts/maps/Map0/sphere_map0.scp
//Serv.load scripts/maps/Map2/sphere_map2.scp
//Serv.load scripts/maps/Map3/sphere_map3.scp
//Serv.load scripts/maps/Map4/sphere_map4.scp
//Serv.resync
//ENDIF
//LOCAL.KAYIT <SYSSPAWN C:/Sphere/Kayit.bat -r -t 120>
db.connect
if <db.connected>
db.query "SELECT kadi, nomd5, isim, soyisim, email, gizli_soru, gizli_cevap, pin_k FROM kayit_sistemi_lethal WHERE nomd5 != '0'";
if <ddb.row.numrows>
while (!<isempty <db.row.<dlocal._while>.kadi>>)
serv.account add <db.row.<dlocal._while>.kadi>
serv.account <db.row.<dlocal._while>.kadi> password <db.row.<dlocal._while>.nomd5>
serv.account.<db.row.<dlocal._while>.kadi>.tag0.plevel=1
serv.account.<db.row.<dlocal._while>.kadi>.tag0.kayit_isim <db.row.<dlocal._while>.isim>
serv.account.<db.row.<dlocal._while>.kadi>.tag0.kayit_soyisim <db.row.<dlocal._while>.soyisim>
serv.account.<db.row.<dlocal._while>.kadi>.tag0.kayit_email <db.row.<dlocal._while>.email>
serv.account.<db.row.<dlocal._while>.kadi>.tag0.kayit_gsoru <db.row.<dlocal._while>.gizli_soru>
serv.account.<db.row.<dlocal._while>.kadi>.tag0.kayit_gcevap <db.row.<dlocal._while>.gizli_cevap>
local.pin <db.row.<dlocal._while>.pin_k>
serv.account.<db.row.<dlocal._while>.kadi>.tag0.kayit_pin <db.row.<dlocal._while>.pin_k>
db.execute "UPDATE kayit_sistemi_lethal SET nomd5 = '0' WHERE kadi = '<db.row.<dlocal._while>.kadi>'";
serv.log Hesap : <db.row.<dlocal._while>.kadi> eklendi.
endwhile
endif
db.query "SELECT kadi,yenisifre FROM kayit_sistemi_lethal WHERE yenisifre != '0'";
if <ddb.row.numrows>
while (!<isempty <db.row.<dlocal._while>.kadi>>)
serv.account <db.row.<dlocal._while>.kadi> password <db.row.<dlocal._while>.yenisifre>
serv.log Hesap : <db.row.<dlocal._while>.kadi> sifresi degistirildi.
db.execute "UPDATE kayit_sistemi_lethal SET yenisifre = '0' WHERE kadi='<db.row.<dlocal._while>.kadi>'";
FOR 0 <EVAL <SERV.ACCOUNT.<db.row.<dlocal._while>.kadi>.CHARS>-1>
REF1=<SERV.ACCOUNT.<db.row.<dlocal._while>.kadi>.CHAR.<dLOCAL._FOR>.UID>
IF (<REF1.ISONLINE>)
REF1.TAG0.PINGIRDI=
REF1.SYS_KIRMIZI Şifreniz güncellendi!
ENDIF
endwhile
endif
db.query "SELECT kadi,yenipin FROM kayit_sistemi_lethal WHERE yenipin != '0'";
if <ddb.row.numrows>
while (!<isempty <db.row.<dlocal._while>.kadi>>)
serv.log Hesap : <db.row.<dlocal._while>.kadi> pin degistirildi. <db.row.<dlocal._while>.yenipin>
serv.account <db.row.<dlocal._while>.kadi> tag0.kayit_pin <db.row.<dlocal._while>.yenipin>
db.execute "UPDATE kayit_sistemi_lethal SET yenipin = '0' WHERE kadi='<db.row.<dlocal._while>.kadi>'";
FOR 0 <EVAL <SERV.ACCOUNT.<db.row.<dlocal._while>.kadi>.CHARS>-1>
REF1=<SERV.ACCOUNT.<db.row.<dlocal._while>.kadi>.CHAR.<dLOCAL._FOR>.UID>
IF (<REF1.ISONLINE>)
REF1.TAG0.PINGIRDI=
REF1.SYS_KIRMIZI Pin kodunuz güncellendi! Oyun içinde tekrar pin girişi yapmanız gerekebilir.
ENDIF
ENDFOR
endwhile
endif
endif
db.close
[FUNCTION f_onserver_save_finished]
//GUNDEMUPDATE <serv.name> dosyalari yedeklendi! Yedekleme <args> saniye surdu.
serv.b @07ad,1 YEDEKLEME BITTI !
serv.b @07ad,1 YEDEKLEME <args> SANIYE SURDU.
VAR0.SAVE_LAST <args>,<serv.zaman>
VAR0.SAVE_TIME <serv.saveperiod>
Kod:
[FUNCTION ACCOUNTCHECK]
IF (<ACCOUNT.PLEVEL> >= 2)
EVENTS +E_YETKILI
EVENTS -E_OYUNCU
ACCOUNT.TAG0.PLEVEL <ACCOUNT.PLEVEL>
//SKILLCLASS E_YETKILI
ELSE
EVENTS +E_OYUNCU
EVENTS -E_YETKILI
ACCOUNT.TAG0.PLEVEL=1
//SKILLCLASS E_OYUNCU
ENDIF
[SCROLL LOGIN]
ThugLife UO - Guncellemeler
KEYIFLI VAKIT GECIRMENIZ DILEGI ILE...
[FUNCTION F_GENERAL_LOGOUT]
serv.allclients f_adminmenu_refresh
FINDID.I_RUNE_INCOGNITO.REMOVE
ACCOUNTCHECK
endif
serv.allclients f_yetkili_minimize_refresh
ELSEIF (<ISDEATH>)
TIMERF 1,FINDTYPE.T_EQ_CLIENT_LINGER.TIMER 5
ELSEIF (<region.guarded> == 1)
TIMERF 1,FINDTYPE.T_EQ_CLIENT_LINGER.TIMER 30
ELSEIF (<region.safe> == 1)
TIMERF 1,FINDTYPE.T_EQ_CLIENT_LINGER.TIMER 30
ENDIF
[FUNCTION F_GENERAL_LOGIN]
IF (<MAP> > 0)
GO <F_ARRAY <DEF.MOONGATE_SOSARIA>,<R1,8>>
ENDIF
modmaxweight 200
IF (<F_ARRAY <VAR0.NOTICE>,1> == 1)
TAG.NOTICE=<F_ARRAY <VAR0.NOTICE>,2>
EVENTS +e_notice
ENDIF
serv.allclients f_adminmenu_refresh
dspeech +spk_player
dspeech +spk_player_other
dspeech +spk_player_no
dspeech +spk_player_kufur
EVENTS +E_GENERAL
FINDID.I_RUNE_INCOGNITO.REMOVE
ACCOUNTCHECK
serv.allclients f_yetkili_minimize_refresh
ENDIF