Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

@success ile wall engeli


TheRaskol

Öne çıkan mesajlar

Merhaba arkadaşlar,

Bir şey danışmak sitedim sizlere.Aslında yaptığım sistem çalışıyor fakat sanki biraz server'ı aksar gibime geldi.
Daha kısaltılabilir mi diye görüşlerinizi almak istiyorum.

Aşağıdaki sistem atılan duvarın içeri girmemesini sağlıyor.

wall success bölümü


[Spell 24]
DEFNAME=s_wall_of_stone
NAME=Wall of Stone
SOUND=snd_SPELL_WALL_OF_STONE
RUNES=ISY
CAST_TIME=3.0
RESOURCES=i_reag_blood_moss,i_reag_garlic
RUNE_ITEM=i_rune_WALL_OF_STONE
SCROLL_ITEM=i_scroll_WALL_OF_STONE
FLAGS=SPELLFLAG_TARG_XYZ | SPELLFLAG_FIELD | SPELLFLAG_HARM
EFFECT_ID=0
EFFECT=0
DURATION=1*20.0 //,1*45.0
MANAUSE=9
SKILLREQ=MAGERY 30.0
INTERRUPT=100.0,100.0

on=@success
serv.newitem i_fieldkontrol
serv.new.p <targp>

local.targx <targp.x>
local.targy <targp.y>

for x 1 4
local.targx += 1
serv.newitem i_fieldkontrol
serv.new.p <dlocal.targx>,<dlocal.targy>
endfor

local.targx <targp.x>
local.targy <targp.y>

for x 1 4
local.targy += 1
serv.newitem i_fieldkontrol
serv.new.p <dlocal.targx>,<dlocal.targy>
endfor

local.targx <targp.x>
local.targy <targp.y>

for x 1 4
local.targx -= 1
serv.newitem i_fieldkontrol
serv.new.p <dlocal.targx>,<dlocal.targy>
endfor

local.targx <targp.x>
local.targy <targp.y>

for x 1 4
local.targy -= 1
serv.newitem i_fieldkontrol
serv.new.p <dlocal.targx>,<dlocal.targy>
endfor



i_fieldkontrol


[itemdef i_fieldkontrol]
id i_gold
baseid i_fieldkontrol
type t_normal
name field kontrol

on=@create
attr attr_invis
timer 0

on=@timer
forchars 0
if (<findid.i_rune_paralyze>)
flags <flags>|statf_freeze
endif
endfor

foritems 0
if (<type> == t_spell) && (<region.isevent.r_house_private>) || (<region.isevent.r_house_public>)
remove
endif
endfor

remove
return 1



Yorumlarınız için teşekkür ederim.
Link to comment
Sosyal ağlarda paylaş

önce inceleyelim

wall yaratıldıgında target daki lokasyona bir item koyuyorsun ve 1 er adımlık mesafelerle yatay ve dikey olarak da bu itemden 4 er tane daha koyuyorsun (kasan kısım buralar olabilir)

itemin yaptıgı iş belli zaten en yakın karakteri ve itemi kontrol ediyor. kapının üstüne gelen wall u silerken %50 sansla siler durumda olması lazım bu scriptte. (sanırım)

şimdi soruna gelirsek kasmaması için aklıma gelen yöntem
1. bu kontrol itemini tek seferde 8 tane koymak ve bunların lokasyonlarını düzenlemek olabilir. (döngüden iyidir)

2. tek item kullanıp itemin timer scripti oynarsın.
toplamda 8 kez calismasını saglarsın ve her seferde sadece lokasyonu değişir.

bunlar ne kadar mümkün emin değilim ama bence sphere'de de yapılamicak bişey yoktur :)
Link to comment
Sosyal ağlarda paylaş

  • 5 hafta sonra ...
Tcpip said:
önce inceleyelim

wall yaratıldıgında target daki lokasyona bir item koyuyorsun ve 1 er adımlık mesafelerle yatay ve dikey olarak da bu itemden 4 er tane daha koyuyorsun (kasan kısım buralar olabilir)

itemin yaptıgı iş belli zaten en yakın karakteri ve itemi kontrol ediyor. kapının üstüne gelen wall u silerken %50 sansla siler durumda olması lazım bu scriptte. (sanırım)

şimdi soruna gelirsek kasmaması için aklıma gelen yöntem
1. bu kontrol itemini tek seferde 8 tane koymak ve bunların lokasyonlarını düzenlemek olabilir. (döngüden iyidir)

2. tek item kullanıp itemin timer scripti oynarsın.
toplamda 8 kez calismasını saglarsın ve her seferde sadece lokasyonu değişir.

bunlar ne kadar mümkün emin değilim ama bence sphere'de de yapılamicak bişey yoktur :)


her seferde lokasyonu değişir derken, birini kontrol ettirip removelayıp aynı itemi ardindan sagina gecirtmekten bahsediyosun sanırım.
Link to comment
Sosyal ağlarda paylaş

script said:
for x 1 4
local.targx += 1
serv.newitem i_fieldkontrol
serv.new.p ,
endfor

local.targx
local.targy

for x 1 4
local.targy += 1
serv.newitem i_fieldkontrol
serv.new.p ,
endfor

local.targx
local.targy

for x 1 4
local.targx -= 1
serv.newitem i_fieldkontrol
serv.new.p ,
endfor

local.targx
local.targy

for x 1 4
local.targy -= 1
serv.newitem i_fieldkontrol
serv.new.p ,
endfor


baksana burda nie aynı seyi bi kaç kere yazdın ? ne anlama geliyor anlamadım da : ?
Link to comment
Sosyal ağlarda paylaş

Merhaba;
Uzun zaman olmuştu uo yu bırakalı. Google arama yaparken aa bide baktım paticik tekrar açılmış girmesek olmaz girince direk UO scripting =) aramıza hoş geldin...

Şey gedi aklıma 4 item ekleyip 4 tane for döngüsü yerine bi item ekle ortaya 4 kare kontrol etsin daha az kasar bence...
Link to comment
Sosyal ağlarda paylaş

bir büyüyü engelliceksek neden successi kullanıp cast time boyunca oyuncuyu bekletiyoruz?

bence @start triggerı altına script etsek daha iyi olur :)

on=@start
SERV.NEWITEM=i_gold
NEW.ATTR=attr_invis|attr_decay
NEW.P=
IF ()
src.sysmessage @0845,1,1 Seçtiğiniz bölgede field büyüsü kullanamazsınız.
src.f_fizzle
src.action -1
new.remove
return 1
endif
new.remove

bide function yazalım fieldyasakmi diye, ordada foritems yaptiralim, ev istiyosan ev baseidsi veya şehir sınırlarında kullandırtmak istemiyosan bi tane dandirik bi item yap invis olan, onu gereken yerlere koy, onu da check ettir, yallah :)

[function fieldyasakmi]
foritems 3
if (==i_field_yasaklayici_dude) // buraya veya operatörüyle diğerlerini de ekle
return 1
endif
endfor
return 0

falan filan :p
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...