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

birbirine saldırının engellenmesi


thelegbra

Öne çıkan mesajlar

yine çok fazla sorulan birşeyi script edeyim dedim :)
hiç denemeden yazdım, kesin hatalar çıkacaktır, bu başlık altına yazarsanız düzeltirim :)

[spo1=script]//****************************************************************************
//SPHERE by : Menasoft 1997-2005
//www.sphereserver.com
// All SPHERE script files and formats are copyright Menasoft & Partners.
//****************************************************************************
//Paticik ScriptSharing
//www.paticik.com/scripts
// Bu dosya üzerinde ancak kişisel kullanım için değişiklik yapılabilir.
// Dosyanın belirli bir bölümü veya tamamı, dosyanın sahibinden
// izin alınmadan herhangi bir şekilde herhangi bir yerde yayınlanamaz.
//
// FILE AUTHOR: thelegbra (thelegbra at willow.gen.tr)
// FILE VERSION: 1.1
// FILE LAST UPDATED: Thursday, November 25th, 2005

VERSION=0.55R 4.0.2

// Kurulum:
// 1- Tüm scripti EOF markerına kadar kopyalayıp notepad içine yapıştırın.
// 2- Dosyayı .scp uzantısı ile sphere script klasörüne kaydedin.
// 3- Dosyayı konsoldan load dosyaadi.scp şeklinde yükleyin, veya sunucuyu yeniden başlatın.
// 4- spheretables.scp dosyanız içindeki oyuncu classlarındaki On=@Login triggerına aşağıdaki satırı ekleyin.
// EVENTS=e_attack_restricter
// 5- Artık sunucuya bağlanan her oyuncu e_attack_restricter eventine sahip olacaktır.
// 6- Aşağıdaki satırları, saldırıları nerelerde engellemek istediğinize göre değiştirebilirsiniz

[DEFNAME restricting_attacks]
// Kimseye fiziksel olarak saldırılamasın. (bu ayar önerilmez)
nophysicalattack_everyone 0 // 0 veya 1
// Yeşil gözüken kimseye fiziksel olarak saldırılamasın. (party / guild / faction)
nophysicalattack_green 0 // 0 veya 1
// Aynı guild factionındaki kimseye fiziksel olarak saldırılamasın. (order/order, chaos/chaos)
nophysicalattack_guild 0 // 0 veya 1
// Guard zone olan bölgede fiziksel olarak saldırı yapılamasın. (bu ayar önerilmez)
nophysicalattack_guardzone 0 // 0 veya 1
// İsmi aşağıdaki yer olan bölgede fiziksel olarak saldırılamasın.
//nophysicalattack_area Pazar Alani // Bölge adı

// Kimseye büyü ile saldırılamasın. (bu ayar önerilmez)
nobadmagic_everyone 0 // 0 veya 1
// Yeşil gözüken kimseye büyü ile olarak saldırılamasın. (party / guild / faction)
nobadmagic_green 0 // 0 veya 1
// Aynı guild factionındaki kimseye büyü ile saldırılamasın. (order/order, chaos/chaos)
nobadmagic_guild 0 // 0 veya 1
// Guard zone olan bölgede büyü ile saldırı yapılamasın. (bu ayar önerilmez)
nobadmagic_guardzone 0 // 0 veya 1
// İsmi aşağıdaki yer olan bölgede büyü ile saldırılamasın.
//nobadmagic_area Pazar Alani // Bölge adı

// Hata mesajları

// Hatayı sysmessage olarak ver.
warnwithsysmessage 0 // 0 veya 1
// Hatayı message olarak ver.
warnwithmessage 0 // 0 veya 1

youcannotattack_msg @0845,1,1 Size dost olarak gözüken oyunculara saldıramazsınız.
youcannotcast_msg @0845,1,1 Size dost durumunda olan oyunculara zarar veren büyü atamazsınız.

// ******** ne yaptığınızı bilmiyorsanız bu satırdan aşağısı üzerinde oynama yapmayın ********

[events e_attack_restricter]
on=@attack
if ()
local.noattack 1
elseif ()
if ()
local.noattack 1
endif
elseif !(>)
if (strmatch(,))
local.noattack 1
endif
elseif ()
if (0==2)
local.noattack 1
endif
elseif ()
if (==)
local.noattack 1
endif
endif

if ()
if ()
sysmessage
endif
if ()
message
endif
return 1
endif

on=@hittry
if ()
local.noattack 1
elseif ()
if ()
local.noattack 1
endif
elseif !(>)
if (strmatch(,))
local.noattack 1
endif
elseif ()
if (0==2)
local.noattack 1
endif
elseif ()
if (==)
local.noattack 1
endif
endif

if ()
if ()
sysmessage
endif
if ()
message
endif
return 1
endif

on=@spellcast
if (.flags>&SPELLFLAG_HARM)
if (0)
if ()
local.noattack 1
elseif ()
if ()
local.noattack 1
endif
elseif !(>)
if (strmatch(,))
local.noattack 1
endif
e
Link to comment
Sosyal ağlarda paylaş

bir kere denediysem senin gibi olayım :D meyve veren ağaç taşlanır tabi boşuna dememişler peh :)

serverda kullandığım bir script değil, bugün biri sorunca yapayım diye aklıma geldi, oturdum yazdım notepade yani? normalde denemeden script yazmam bir yere ama basit looplar olduğu için gerek yok diye düşündüm :)
[signature][hline]Legbra ::.. The interpreter øf gøds.
Only he can translate peøples prayers and transmit them tø the invisible pøwers.


[Bu mesaj thelegbra tarafından 19 Kasım 2005 03:13 tarihinde değiştirilmiştir]
Link to comment
Sosyal ağlarda paylaş

said:
Sharlock, 19 Kasım 2005 10:47 tarihinde demiş ki:
yeşil görününce birbirine ? partydede dalamayacak partyde olanlar genelde box yapiyor burda ? mesela party friend rengini değiştirirde adam kırmızı yaparsa :D nolcak birşey farkedermi

renk ile alakalı değil. "==2", aynı guildde olup olmadığına bakıyor. demekki guild ile party ve faction sistemleri aynı mantıkta işliyormuş :) party yapmanın amacı birbirleri üstünde skill kasmaksa, o opsiyonu aktif etmessin olur biter, zaten hepsi opsiyonel olarak çalışıyor.

bununla birlikte çok pratik script, paylaştığın için teşekkürler.

isempty, nobadmagic_area için kullanılmış. görevi nedir? anlayamadım.[signature][hline]is all that we see or seem
but a dream within a dream?

Edgar Allan Poe
Link to comment
Sosyal ağlarda paylaş

isempty'yi oradaki string definition için verdim. ismi pazar alani olan yerde saldiri olmasin istiyorsaniz satırın basindaki // işaretini kaldırıyorsunuz definition empty olmaktan cikiyor ve condition calisiyor. öyle yani :P

ha bu arada notogetflag guilddemi diye değil, sana yeşil mi gözüküyor diye bakıyor, bu guild sistemi olur, faction sistemi olur, party olur, başka birşey olur, kısacası yeşil gördüğün herşey. istemiyorsanız aktif etmezsiniz :)[signature][hline]Legbra ::.. The interpreter øf gøds.
Only he can translate peøples prayers and transmit them tø the invisible pøwers.
Link to comment
Sosyal ağlarda paylaş

strcmp ve strcmpi doğruysa 0, yanlışsa 1 döndürür. dolayısıyla;
said:
if (strcmpi(,))

değil
said:
if !(strcmpi(,))

olmalı ;)

birden fazla alan varsa, birden fazla alan için tanımlama yaparsın (nobadmagic_area1, nobadmagic_area2, gibi...) ve daha sonra if döngüsünde onları kontrol ettirirsin.[signature][hline]is all that we see or seem
but a dream within a dream?

Edgar Allan Poe
Link to comment
Sosyal ağlarda paylaş

önce [DEFNAME restricting_attacks] altına;

said:
nobadmagic_area1 britain
nobadmagic_area2 pazar alani
nobadmagic_area3 bla bla alani
nobadmagic_area4 oha hala mi alan lan?! alani
nobadmagic_area5 hadi bu da benden alani


sonra;

said:
elseif !(>)
if (strcmpi(,))
local.noattack 1
endif


bunu gördüğümüz her yeri şöyle yapıyoruz (ben isempty satırını kaldırdım, hata vereceğini sanmıyorum çünkü adı "hiçlik" olan (yani olmayan) yer adı yok. yine de legbra söyler doğru mu yanlış mı.. belki bir sebebi vardır.) ;

said:
elseif !(strcmpi(,)) || !(strcmpi(,)) || !(strcmpi(,)) || !(strcmpi(,)) || !(strcmpi(,))
local.noattack 1

böyle :)

bir de ben bu örneği şimdi nophysicalattack_area Pazar Alani üzerinde göstercektim ama bir baktım tanımlanmasına tanımlanmıştı event'te hiç kullanılmamış ki :)

ayrıca opsiyonel olması açısından güzel bir script olması ve yol gösterici olması dışında, bunu opsiyonel olarak kullanmak fazladan satır okutmak demek server'a ki bu her atak, vuruş denemesi ve büyü yapışta kullanılacak (her oyuncu için) bir event barındırıyor. onun yerine hangilerini kullanacaksanız scriptin içinden onları ayıklayıp event'te onları kullanmak daha iyi olur gibi gibiyim :D

[Bu mesaj Ractamainus tarafından 25 Kasım 2005 16:39 tarihinde değiştirilmiştir]
Link to comment
Sosyal ağlarda paylaş

scripti strmatch olarak değiştiriyorum, fakat bu yanlışı düzeltirken, scriptin ilk satırlarında yazdığı gibi scriptin belirli bir bölümünü değiştirip yayınlamak yerine problemi bildirmeniz daha doğru olurdu. amacınız kötü olmasa bile script eğer alınacaksa ilk ağızdan son version olarak alınması gerekir diye düşünüyorum.

eğer script içindeki döngüleri tek satırda && ve || operatörleri kullanarak kısa bir şekilde bitirmek yerine uzun uzun yazdıysam bu sphere yukarıdan aşağıya okurken eğer definiton sıfırsa hiç diğer şeyleri sorgulamayıp çabuk geçsin diye yazdım. ve eğer çok fazla resource kullandığını düşünüyorsanız sunucuda scripti aktif ve deaktif edip cpu usage istatistiklerini çıkarın, buyrun birlikte inceleyelim. ben o eventin ağırlık getireceğini düşünmüyorum yani :)[signature][hline]Legbra ::.. The interpreter øf gøds.
Only he can translate peøples prayers and transmit them tø the invisible pøwers.
Link to comment
Sosyal ağlarda paylaş

zaten script'in bulunduğu topic altına yazdığım için script'in kime ait olduğu, nasıl bir bütünün parçasına ait olduğuyla ilgili bir tanım yapmamanın sorun teşkil edeceğini düşünmemiştim ki ben "problem var, script çalışmıyor" diye yazmadım, "şöyle şöyle bir problem var, sorun şurdadır" dedim ki onuda ilgili parçacığı yazmadan net anlatamazdım. hatam varsa affola :)

event olayında çok iddialı değilim, ne kadar kasar/kasmaz bilemem yani ama bir gerçek var; vurmak, büyü yapmak, saldırmak bir server'da en çok tekrarlanacak harekettir (ki pek tabii küçük bir server'ı konuya dahil etmiyorum) ve bu tip trigger'lara minimum görev atamak, maximum performans demek olacaktır. örneğin her saldırıda tanıma uymasa bile tüm on=@attack triggerındaki tanımları kontrol edecektir. bunu if sorgusunu birden çok kullanarak, && veya || operatörlerini kullanmadan yapmak avantaj sağlar ama sadece bazı durumlarda ;)

bununla birlikte;
said:
bir de ben bu örneği şimdi nophysicalattack_area Pazar Alani üzerinde göstercektim ama bir baktım tanımlanmasına tanımlanmıştı event'te hiç kullanılmamış ki :)
[signature][hline]is all that we see or seem
but a dream within a dream?

Edgar Allan Poe
Link to comment
Sosyal ağlarda paylaş

×
  • Yeni Oluştur...