UO-Dev Arama



ctf sistemidir

Yazar :: aldarson
Tarih :: 26-06-2010 17:46
Karakter Boyut ::

Paylaş :: Paylaş




Kod:
[DEFNAME CTF]
CTF_ENTER_GOLD "25000"
CTF_ENTER_GO_RED "5676,1000,45"
CTF_ENTER_GO_BLUE "5785,843,45"
CTF_WINNER_POINT "5"
CTF_FINISH_MOREP "5710,867"
CTF_FLAG_MOREP_RED "5676,1004,50"
CTF_FLAG_MOREP_BLUE "5788,844,50"
CTF_WINNER_ADD_GOLD "300000"

[ITEMDEF I_MOONGATE_CTF]
ID I_MOONGATE_RED
NAME Capture The Flag
TYPE T_MOONGATE

ON=@CREATE
COLOR=0495
ATTR=ATTR_STATIC
MOREX=30
MOREY=0
TAG0.TEAM_RED=0
TAG0.TEAM_BLUE=0
VAR0.MOONGATE_UID=<UID>

ON=@CLICK
MSG_OK [Katılım:<DMOREY>/<DMOREX>]
MSG_HATA [Kırmızı:<DTAG0.TEAM_RED>,Mavi:<DTAG0.TEAM_BLUE>]
IF (<VAR0.TEAM_RED> > <VAR0.TEAM_BLUE>)
MSG_HATA [Öndeki takım:Kırmızılar]
ELSEIF (<VAR0.TEAM_RED>==<VAR0.TEAM_BLUE>)
MSG_HATA [Durum eşit]
ELSE
MSG_HATA [Öndeki takım:Maviler]
ENDIF
RETURN 1

ON=@DCLICK
IF (<SRC.F_FLAGS_CHECK>)
SRC.SYS_HATA Bu durumda iken yarışmaya katılamazsınız.
ELSEIF (<SRC.F_CANSEELOS <UID>>)
SRC.SYS_HATA Moongateye ulaşamıyorsunuz.
ELSEIF (<SRC.GOLD> < <DDEF.CTF_ENTER_GOLD>)
SRC.SYS_HATA Bu yarışmaya katılmak için en az <DDEF.CTF_ENTER_GOLD> altınınız olmalıdır.
ELSEIF (<SRC.ISEVENT.E_CTF>)
SRC.GO <DEF.CTF_ENTER_GO_<SRC.TAG.TEAM>>
ELSEIF (<DMOREY> >= <DMOREX>)
SRC.SYS_HATA Yarışmaya katılım bitmiştir.
ELSEIF (<SRC.FINDLAYER(25)>) || (<SRC.CHECKANIMAL>)
SRC.SYS_HATA Altınızda veya etrafınızda size ait bir binek varken yarışmaya katılamazsınız.
ELSEIF (<SRC.HITS> < <SRC.MAXHITS>) || (<SRC.FLAGS>&STATF_POISONED)
SRC.SYS_HATA Hitpointiniz az veya poison etkisi altındasınız.
ELSE
IF (<DTAG0.TEAM_RED> >= <DTAG0.TEAM_BLUE>)
SRC.TAG.TEAM=Blue
ELSE
SRC.TAG.TEAM=Red
ENDIF
IF (<SRC.FINDID.I_STUCK_ICE>)
SRC.FINDID.I_STUCK_ICE.TAG0.GIDILECEK <DEF.CTF_ENTER_GO_<SRC.TAG.TEAM>>
ENDIF
IF (<SRC.ISEVENT.F_RECALL>)
SRC.FCANCEL 1
ENDIF
TAG0.TEAM_<SRC.TAG.TEAM> ++
MOREY ++
TAG0.UID_<DMOREY>==<SRC>
SRC.GO <DEF.CTF_ENTER_GO_<SRC.TAG.TEAM>>
SRC.EVENTS +E_CTF
SRC.TAG0.KILLS=0
SRC.TAG0.DEATHS=0
SRC.TAG0.POINT_DIALOG=1
SRC.PACK_TO_BANK
SRC.GOLD -=<DDEF.CTF_ENTER_GOLD>
ENDIF
RETURN 1

ON=@STEP
IF (<SRC.ISPLAYER>)
SRC.SYS_HATA Yarışmaya katılmak için çift tıklayınız.
ENDIF
RETURN 1

[EVENTS E_CTF]
ON=@CLICK
MESSAGE @<QVAL STRMATCH("<TAG.TEAM>","RED")?020,,1:05,,1> [Takım:<F_TEAM <TAG.TEAM>>]
MSG_OK [Kills:<DTAG0.KILLS>,Deaths:<DTAG0.DEATHS>]

ON=@LOGOUT
REF3=<VAR0.MOONGATE_UID>
REF3.MOREY --
REF3.TAG0.TEAM_<SRC.TAG.TEAM> --
IF (<REF3.DMOREY>==0)
RETURN 1
ELSE
FOR <REF3.DMOREY>
IF (<REF3.TAG0.UID_<DLOCAL._FOR>> == <SRC>)
REF3.TAG0.UID_<DLOCAL._FOR>
ENDIF
REF3.TAG0.UID_<DLOCAL._FOR>=<REF3.TAG0.UID_<DLOCAL._FOR>>
ENDIF
ENDFOR
SRC.F_FINISH

ON=@ATTACK
IF (<F_CTF_ISFRIEND <SRC>>)
SYS_HATA Takım arkadaşına bunu yapamazsın.
RETURN 1
ENDIF

ON=@HITTRY
IF (<F_CTF_ISFRIEND <ACT>>)
SYS_HATA Takım arkadaşına bunu yapamazsın.
RETURN 1
ENDIF

ON=@HIT
IF (<F_CTF_ISFRIEND <SRC>>)
SYS_HATA Takım arkadaşına bunu yapamazsın.
RETURN 1
ENDIF

ON=@GETHIT
IF (<UID>!=<SRC>) && (<F_CTF_ISFRIEND <SRC>>)
SYS_HATA Takım arkadaşına bunu yapamazsın.
RETURN 1
ENDIF

ON=@SPELLCAST
IF (<SERV.SPELL.<DARGN1>.FLAGS>&SPELLFLAG_SUMMON)
SRC.SYS_HATA Yarışmada bunu kullanamazsınız.
SRC.F_FIZZLE
RETURN 1
ELSEIF (<UID>!=<SRC>) && (<F_CTF_ISFRIEND <SRC.ACT>>) && (<SERV.SPELL.<DARGN1>.FLAGS>&SPELLFLAG_HARM)
SRC.SYS_HATA Takım arkadaşınıza bu büyüyü atamazsınız.
SRC.F_FIZZLE
RETURN 1
ELSEIF !(<F_CTF_ISFRIEND <SRC.ACT>>) && (<SERV.SPELL.<DARGN1>.FLAGS>&SPELLFLAG_GOOD)
SRC.SYS_HATA Düşmanına bu büyüyü atamazsın.
SRC.F_FIZZLE
RETURN 1
ENDIF

ON=@DEATHCORPSE
REF3=<ARGO.MORE2>
REF3.STONE 1
REF3.TIMERF 4,SPELLEFFECT S_RESURRECTION,1000,<UID>
REF3.TIMERF 5,STONE 0
REF3.TIMERF 6,GO <DEF.CTF_ENTER_GO_<TAG.TEAM>>
LOCAL.ITEM=<QVAL STRMATCH("<REF3.TAG.TEAM>","RED")?I_CTF_RED:I_CTF_BLUE>
IF (<LOCAL.ITEM>==I_CTF_RED)
LOCAL.GIDECEK=<DEF.CTF_FLAG_MOREP_BLUE>
ELSEIF (<LOCAL.ITEM>==I_CTF_BLUE)
LOCAL.GIDECEK=<DEF.CTF_FLAG_MOREP_RED>
ENDIF
FOR 0 <EVAL (<ARGO.RESCOUNT>)-1>
IF (<ARGO.FINDCONT(<DLOCAL._FOR>).ID>==<LOCAL.ITEM>)
TRY UID.<ARGO.FINDCONT(<DLOCAL._FOR>).REMOVE
ENDFOR
SERV.NEWITEM <LOCAL.ITEM>
NEW.P <ARGO.P>
SERV.B @1153,,1 CTF:<REF3.NAME>[<F_TEAM <REF3.TAG.TEAM>> Takım] <REF3.TAG0.KILLER> tarafından öldürüldü.
SERV.B @1153,,1 CTF:<SRC.NAME>[<F_TEAM <SRC.TAG.TEAM>> Takım]öldüğü için bayrak eski yerine döndü...
ENDIF

ON=@ITEMSTEP
REF1=<ACT.UID>
REF2=<VAR0.MOONGATE_UID>
LOCAL.ITEM=<QVAL STRMATCH("<SRC.TAG.TEAM>","RED")?I_CTF_RED:I_CTF_BLUE>
LOCAL.ITEM2=<QVAL STRMATCH("<SRC.TAG.TEAM>","RED")?I_CTF_BLUE:I_CTF_RED>

IF (<REF1.BASEID>==<LOCAL.ITEM>)
REF1.BOUNCE=<SRC>
SERV.B @1153,,1 CTF:<SRC.NAME>[<F_TEAM <SRC.TAG.TEAM>> Takım] isimli oyuncu <REF1.NAME>'ı kaptı...
ENDIF

IF (<SRC.FINDID.<LOCAL.ITEM>>) && (<REF1.BASEID>==<LOCAL.ITEM2>)
VAR0.ROUND ++
VAR0.TEAM_<SRC.TAG.TEAM> ++
SERV.B @1153,,1 CTF:<DVAR0.ROUND>.turu <F_TEAM <SRC.TAG.TEAM>>[<SRC.TAG.TEAM>] takım kazandı...
SRC.GO <DEF.CTF_ENTER_GO_<SRC.TAG.TEAM>>
SRC.FINDID.<LOCAL.ITEM>.REMOVE

SERV.NEWITEM <LOCAL.ITEM>
NEW.P <QVAL STRMATCH("<SRC.TAG.TEAM>","RED")?<DEF.CTF_FLAG_MOREP_BLUE>:<DEF.CTF_FLAG_MOREP_RED>>
ENDIF

IF (<DVAR0.TEAM_RED>==<DDEF.CTF_WINNER_POINT>)
F_WINNER_TEAM=RED
ELSEIF (<DVAR0.TEAM_BLUE>==<DDEF.CTF_WINNER_POINT>)
F_WINNER_TEAM=BLUE
ENDIF

ON=@SKILLGAIN
RETURN 1

ON=@MOUNT
RETURN 1

ON=@HUNGER
RETURN 1

ON=@FAMECHANGE
RETURN 1

ON=@KARMACHANGE
RETURN 1

ON=@ITEMDCLICK
IF (<ACT>!=<SRC.FINDLAYER(21)>) && (<ACT.BASEID>==I_FRUNEBOOK)  || STRMATCH("<ACT.TAG.TEAM>","") || !STRMATCH("<ACT.TAG.TEAM>","<SRC.TAG.TEAM>")
SRC.SYS_HATA Bunu siz kullanamazsınız.
RETURN 1
ENDIF

ON=@ITEMEQUIPTEST
IF STRMATCH("<ACT.TAG.TEAM>","") || !STRMATCH("<ACT.TAG.TEAM>","<SRC.TAG.TEAM>")
SRC.SYS_HATA Bunu siz kullanamazsınız.
RETURN 1
ENDIF

ON=@USERWARMODE
IF (<SRC.TAG0.POINT_DIALOG>)
SRC.F_RESENDIALOG D_CTF_SKOR
ENDIF

[ITEMDEF I_CTF_BLUE]
ID 01577
NAME Mavi Bayrak
TYPE=T_CTF_ITEM

ON=@CREATE
COLOR = 05
ATTR = ATTR_STATIC|ATTR_MOVE_NEVER
TAG.TEAM=Blue

[ITEMDEF I_CTF_RED]
ID 01577
NAME Kırmızı Bayrak
TYPE=T_CTF_ITEM

ON=@CREATE
COLOR = 020
ATTR = ATTR_STATIC|ATTR_MOVE_NEVER
TAG.TEAM=Red

[FUNCTION f_winner_team]
REF1=<VAR0.MOONGATE_UID>
VAR0.TEAM_RED=
VAR0.TEAM_BLUE=
VAR0.ROUND=
<QVAL STRMATCH("<ARGS>","BLUE")?LOCAL.KAZANAN Blue:LOCAL.KAZANAN Red>
VAR.CAPTURE_FLAG=<LOCAL.KAZANAN> takım
SERV.B @1153,,1 CTF:Yarışmayı <LOCAL.KAZANAN>[<F_TEAM <LOCAL.KAZANAN>>] takım kazanmıştır.
SERV.B @1153,,1 Kendilerini tebrik ederiz.
FOR <REF1.DMOREY>
REF3=<REF1.TAG0.UID_<DLOCAL._FOR>>
IF STRMATCH("<REF3.TAG.TEAM>","<LOCAL.KAZANAN>")
REF3.F_FINISH
REF3.GOLD +=<DDEF.CTF_WINNER_ADD_GOLD>
REF3.SYS_OK Ödülünüz bankanıza aktarılmıştır.
ELSE
REF3.F_FINISH
ENDIF
IF !(<REF3.ISONLINE>)
REF3.NOTICE 'Capture The Flag' yarışmasını <LOCAL.KAZANAN>[<F_TEAM <LOCAL.KAZANAN>>] takım kazanmıştır.
ENDIF
ENDFOR
REF1.TIMERF 1,REMOVE

[FUNCTION f_ctf_isfriend]
IF STRMATCH("<TAG.TEAM>","<UID.<ARGS>.TAG.TEAM>")
RETURN 1
ENDIF
RETURN 0

[FUNCTION f_team]
RETURN <QVAL STRMATCH("<ARGS>","Blue")?Mavi:Kırmızı>

[FUNCTION f_finish]
TAG0.TEAM=
TAG0.KILLS=
TAG0.DEATHS=
TAG0.POINT_DIALOG=
EVENTS -E_CTF
F_UNEQUIP_PACK
FINDLAYER(21).REMOVE
GO <DEF.CTF_FINISH_MOREP>

[FUNCTION ctf]
SRC.TAG0.POINT_DIALOG=1
SRC.SYS_OK Puan gösterme dialogu aktif edildi.
SRC.SYS_OK Kullanmak için war/peace yapınız.

[DIALOG D_CTF_SKOR]
100,100
NOMOVE
REF1=<VAR0.MOONGATE_UID>

RESIZEPIC 0 0 02422 300 250
DHTMLGUMP 70 16 999 20 0 0 <DEF.BFONT_RED>Capture The Flag Etkinliği
BUTTON 35 229 <DEF.BUTTONID_1> 1 0 1
DHTMLGUMP 55 229 999 20 0 0 Bu menü birdaha açılmasın.

LOCAL.PAGE=1
LOCAL.PLAYER=0

PAGE 1
FOR <REF1.DMOREY>
REF4=<REF1.TAG0.UID_<DLOCAL._FOR>>
IF (<DLOCAL.PLAYER> >8)
DLOCAL.PLAYER=0
BUTTON 150 230 <DEF.BUTTONID_1> 0 <eval (<DLOCAL.PAGE>)+1> 1
DLOCAL.PAGE +=1
PAGE <DLOCAL.PAGE>
BUTTON 150 230 <DEF.BUTTONID_1> 0 <eval (<DLOCAL.PAGE>)-1> 1
ENDIF
DHTMLGUMP 40 <EVAL (<LOCAL.PLAYER>*20)+50> 999 20 0 0 <REF4.NAME>[<F_TEAM <REF4.TAG.TEAM>>]Kills:<REF4.DTAG0.KILLS>,Deaths:<REF4.DTAG0.DEATHS>
LOCAL.PLAYER ++
ENDFOR

[DIALOG D_CTF_SKOR BUTTON]
ON=1
SRC.TAG0.POINT_DIALOG=
SRC.SYS_OK Bu dialog bir daha açılmayacak tekrar aktif etmek için '.ctf' yazınız.

Yorumlar

1.   Gönderen Xearth   27-06-2010 11:55    

güzel iş çıkartmışsın eline sağlık.

2.   Gönderen aldarson   27-06-2010 12:01    

birkaç ay önce yazdığım bir scriptti pek stabil olduğu söylenemez dahada düzenlenip iyi bir hale gelebilir

3.   Gönderen Xearth   27-06-2010 15:13    

işlevi görüyor ise sorun yok

4.   Gönderen tugi31   18-08-2010 15:31    

bn ekledım scp yı oyunda .add i_moongate_ctf yazdım : Oyle Bır komut yok dıyor :S

Oylamalar

Oylama::
Üyelerin oylama ortalaması (10 dışında) : Henüz Oylanmamış   
Oylar: 0

Keywords:


Sayfa açılma süresi 0.115 saniye
SQL toplam zamanı: 0.054 saniye - SQL sorgusu: 20 - Ortalama SQL zamanı: 0.00272 saniye