iyi geceler,

script bilmediğim için küçük bi yardım isteğinde bulunmaktayım.

argv[1] ile yani virgulden sonra gelen ilk değerin aynısından 3 tane varsa sysmessage gönderecek bir script arıyorum.
Tam olarak sorunu anlamadım örneklerle veya daha açıkca anlatır mısınız?
Novice
12.5
[function virgulayir]
src.sysmessage ilk deger: <argv[0]>
src.sysmessage ikinci deger: <argv[1]>
src.sysmessage ucuncu deger: <argv[2]>

Kullanımı

src.virgulayir basit,virgul,ayirma

Buradaki önemli olan args kullanımıdır.argv[x] değerleri args'tan bilgi çeker.

defname örneği verirsek;

[defname xx]
deneme basit,virgul,ayirma

[function virgulayir]
args=<def.deneme>
src.sysmessage ilk deger: <argv[0]>
src.sysmessage ikinci deger: <argv[1]>
src.sysmessage ucuncu deger: <argv[2]>

senin verdiğin soruna gidersek

[function test]
local.kontrol <argv[0]> // ilk terim
for 0 <dargv>
if strmatch("<local.kontrol>","<argv[<dlocal.for>]>")
local.x +=1
endif
endfor
if (<local.x> > 3)
src.sysmessage 4 tane aynı kelime kullandiniz: <local.kontrol>
endif


Bu konu Mortal tarafından düzenlendi(2013-02-01 14:14, 11 yıl önce)
ARGV[0] dan başlatırsan 2 kere kullanması yeter çünkü kelimeyi argv[0] da yakalar 1 den başlatman gerekir for döngüsünü.
Novice
12.5
Evet doğru söylüyorsun ama aslında 1 kereden başlatmaya gerek yok ikinci if sorgusunda local.x değerini 3'ten büyük yaparsak sorun düzelir.Cuma ezanı okurken 2dk içinde yazmaya çalışınca gözden kaçrmış olabileceğim başka şeylerde olabilir.Test edilirse yeniden gözden geçirebilirim.
şöyle anlatayım. olay tamamen argv[1] üzerinde. argv[0] da gelen başka bi değer var, o değer sabit onunla herhangi bi işim yok, ama argv[1] 'e gelen değer değişken bir değer. multi engeli için düşündüğüm bir sistemde bu yöntemi kullanıcam. yani ben bilgisayarımla oyuna girdiğimde gelen değer 12345 ise başka biri oyuna girdiğinde bu değer 54321 olur. doğal olarak ben multi açarsam "12345" değerinden birden fazla gideceği için orada bi sorgulatmaya ihtiyacım var. eğer argv[1] de gelen değerden aynısından 2 tane yada daha fazla varsa o pc üzerinde multi kullanımı var demektir. sorgulatmak istediğim kısım bu argv[1]'e gelen değerden aynısından 3 tane varsa sysmessage göndermesini istiyorum.
Farklı hesaplar üzerinden işlem yapacağın için bütün karakterlere tag vererek ya da var değeri kullanarak ortak bir kontrol yapılabilir.

Her karaktere tag verdiğini düşünürsek

oyuncu girişinde src.tag.blabla sabit,değişken // argv0 ile argv1

ve peşinden f_check <src.tag.blabla>

[function f_check]
local.blabla <argv[1]>
for 0 <eval <serv.clients>-1>
ref1 <serv.client.<dlocal._for>.uid>
args= <ref1.tag.blabla>
if <argv[1]>==<local.blabla> && <ref1.uid>!=<uid>
serv.log <ref1.name> de ne istiyorsan var işte
endif
endfor


gibi olabilir..
Silindi
Novice
0.7
For döngüsü sunucuyu kastıracağı için allclients kullanmak daha mantıklı olacaktır.

on=@userextcmd
src.ctag.argv1 <argv[1]>
serv.allclients f_kontrol <argv[1]>,<src.uid>

[function f_kontrol]
local.argv1 <ctag.argv1>
if !(<uid> == <argv[1]>)
if (strmatch('<local.argv1>','<argv[0]>'))
serv.log <uid> uidli kişi multi açtı. Bilgilerinize arz ederim.
endif
endif


Bu konu Rasmus tarafından düzenlendi(2013-02-01 16:40, 11 yıl önce)

Üye Ol veya Giriş Yap

Bu forum başlığına mesaj atmak istiyorsanız hemen üye olun veya giriş yapın.