/////////////////////////////////////////////////////////////////
// Scripter Name: Savadiv [Neran]
// Shard Name: -
//
// This file may be freely edited for personal use, but may not
// be distributed in whole or in part, in any format without
// express written permission from Savadiv.
/////////////////////////////////////////////////////////////////
[DEFNAME istatistik]
stone_pvp // istatistik taşının uid'i
[PLEVEL 7]
f_kaydol
f_istatistik_update
f_kaydolmusmu
f_istatistik_clear
[PLEVEL 1]
istatistik
////////////////////////////////////////////////////////////////
// f_kaydol <args>
// stone_pvp'ye, <args> içerikli yeni bir tag kaydeder.
// Böylelikle yeni oyuncular sıralamaya kaydedilebilir.
////////////////////////////////////////////////////////////////
[FUNCTION f_kaydol]
try uid.<def.stone_pvp>.tag.<eval <tag.toplam> + 1> = <args>
try uid.<def.stone_pvp>.tag.toplam += 1
////////////////////////////////////////////////////////////////
// f_istatistik_update <args>
// Sıralamada yükselen <args>'in yeni yerini bulup, eski
// yeri ile yeni yeri arasında kalanları aşağıya kaydırır.
// Puanı yükselen <args>'yi yeni yerine kaydeder.
////////////////////////////////////////////////////////////////
[FUNCTION f_istatistik_update]
for 1 <uid.<def.stone_pvp>.tag.toplam>
IF (<uid.<uid.<def.stone_pvp>.tag.<local._for>>.tag.pvpwin> == <eval <uid.<args>.tag.pvpwin> + 1>) && ((<uid.<uid.<def.stone_pvp>.tag.<eval <local._for> +1>>.tag.pvpwin> != <eval <uid.<args>.tag.pvpwin> + 1>)
local.new_nr = <eval <local._for> + 1>
ENDIF
endfor
for 1 <uid.<def.stone_pvp>.tag.toplam>
IF (<uid.<def.stone_pvp>.tag.<local._for>> == <args>)
local.old_nr = <eval <local._for>>
ENDIF
endfor
for <local.old_nr> <local.new_nr>
IF (<local._for> == <local.new_nr>)
try uid.<def.stone_pvp>.tag.<eval <local.new_nr>> == <args>
return 1
ENDIF
try uid.<def.stone_pvp>.tag.<eval <local._for>> = <uid.<def.stone_pvp>.tag.<eval <local._for> - 1>>
endfor
try uid.<args>.sysmessage @38 Siralamadaki yeni yeriniz: <eval <local.new_nr>>
////////////////////////////////////////////////////////////////
// f_kaydolmusmu <args>
// <args>'in kayıtlı olup olmadığına bakar. Kayıtlıysa 0,
// değilse 1 döndürür. Script içersinde örnek kullanım:
//
// Biri PVP'ye katılırken;
//
// IF (<f_kaydolmusmu <uid>>)
// f_kaydol <uid>
// ENDIF
//
// uid -> PVP'ye katılan kişi.
////////////////////////////////////////////////////////////////
[FUNCTION f_kaydolmusmu]
for 1 <uid.<stone_pvp>.tag.toplam>
IF (<uid.<def.stone_pvp>.tag.<local._for>> == <args>)
return 0
ELSE
return 1
ENDIF
endfor
////////////////////////////////////////////////////////////////
// f_istatistik_clear
// Bütün puanları sıfırlar.
////////////////////////////////////////////////////////////////
[FUNCTION f_istatistik_clear]
for 1 <uid.<def.stone_pvp>.tag.toplam>
try uid.<uid.<def.stone_pvp>.tag.<eval <local._for>>>.tag.pvpwin = 0
endfor
serv.allclients sysmessage @38 Butun pvp puanlari sifirlanmistir!
////////////////////////////////////////////////////////////////
// istatistik
// Oyuncuya sıralamadaki sırasını bildirir.
////////////////////////////////////////////////////////////////
[FUNCTION istatistik]
for 1 <uid.<stone_pvp>.tag.toplam>
IF (<uid.<def.stone_pvp>.tag.<local._for>> == <uid>)
sysmessage @38 Siralamada <eval <local._for>>. siradasiniz.
ELSE
sysmessage @38 Siralamada yer almiyorsunuz.
ENDIF
endfor
Bir ara biri için yazmış, elimde tutuyordum. Hiç test etmedim, çalışıyor mu bilmiyorum. Deneyip rapor verin, sorun varsa düzeltelim.
Sistem, PVP Puanlarını sıralamak için. Düello yapan herkes taşa kaydediliyor ve bu şekilde sıralanıyor. Menü eklenebilir...
Not: Sistemin tek görevi belli bir puanın istatistiğini yapmak. Üstteki scriptte bu puan
tag.pvpwin. Sistemin çalışması için bazı ekleri siz yapmanız gerekiyor; pvp taşına kaydetmek, puanları vermek, vs.