SphereCommunity
Rank out of Tags - Printable Version

+- SphereCommunity (https://forum.spherecommunity.net)
+-- Forum: Sphere 0.56d (/Forum-Sphere-0-56d)
+--- Forum: Script Help (/Forum-Script-Help)
+--- Thread: Rank out of Tags (/Thread-Rank-out-of-Tags)



Rank out of Tags - pinku - 10-25-2013 07:55 PM

Hey!

I would like some advice on how to make/start a rank board out of TAGS.

Just for an example, not a real one:

Code:
*Player kills a monster*
SRC.TAG.MONSTERKILL=(<EVAL <SRC.TAG.MONSTERKILL>> + 1)

How can I make a rank from all players listing the ones with the highest MONSTERKILL tag?

I'm seriously lost here.

Thanks everyone!


RE: Rank out of Tags - Mordaunt - 10-25-2013 08:41 PM

Take a look at this top player board by soulless http://forum.spherecommunity.net/sshare.php?download=249
There's all sorts in "Downloads" but it doesn't show up with a forum search


RE: Rank out of Tags - pinku - 10-26-2013 10:51 AM

First, thank you Mordaunt! Always helpful.
I tried editing, but it seems more complicated than I thought.

While it works smoothly with fame/kills/karma/etc, when I try to add my own argv/tag it doesn't work.

For example, the argv is fame, so it uses: ref2.fame... ok, that will work.

Or karma: ref2.karma... just fine too.

Now,
If I use "monsterkill", it uses: ref2.monsterkill... that won't work, cause sphere doesn't know that..

Can you or someone explain how I could turn monsterkill to be readable?

Thanks again everyone!


RE: Rank out of Tags - Rattlehead - 10-26-2013 02:54 PM

ref2.tag.monsterkill

remember tags arent something u can call by their name without prefixing it with 'tag'

karma, u can reference by src.karma, but if u want to reference a tag on src it has to be referenced like src.tag.monsterkill or <src.tag0.monsterkill>


RE: Rank out of Tags - xwerswoodx - 10-28-2013 08:02 AM

use mysql, insert table the values of tag and after you can sort it

http://www.phpeasystep.com/mysql/11.html


RE: Rank out of Tags - pinku - 11-05-2013 08:31 PM

@Mordaunt & Rattlehead:
It turns out this script only "ranks" the online players.. that wasn't exactly what I was looking for.. Sad
Is there another way?

@xwerswoodx
Isn't there a way out of MySQL? I do not intend to use it on my server.. Plus, I tend to have a lot of problems with it.. lol

I have more or less an idea, but it's one rank person, doesn't really help me out..

Code:
Player logins.
Checks if Player tag is higher than VAR Server Record.
If yes, set new server record... if not, nope.

But how could I extend it to let's say... 10 players?
If I make 9 other VARs using the same system, that won't work, since the highest player will set the record for all 10 VARs when he logins..

Ideas?

Thanks everyone!


RE: Rank out of Tags - RanXerox - 11-06-2013 10:16 AM

Use a LIST structure to store the data... not a set of VARs. Then sort the list however you want to before the dialog that displays it.

Here is an example function to sort a poker card hand that is stored in a LIST structure:

Code:
[FUNCTION f_Poker_SortCards]
//"
// Usage: f_Poker_SortCards CardArray
//
// Sorts an existing LIST object named CardArray, which is assumed to contain
// CardSymbols.  The sort order has highest ranked cards (Ace) first (suit is
// ignored.)
//"
IF (<ARGV>==0)
   f_pokerlog 1,"Poker_SortCards: needs a CardArray"
   RETURN 1
ENDIF
LOCAL.Input=<ARGS>
LOCAL.InputSize=<LIST.<LOCAL.Input>.COUNT>
IF (<LOCAL.InputSize> < 2)
   f_pokerlog 1,"Poker_SortCards: CardArray <LOCAL.Input> is too small to sort"
   RETURN 1
ENDIF
LOCAL.Swapped=1
WHILE (<dLOCAL.Swapped>==1)
   LOCAL.Swapped=0
   FOR LoopNumber 1 <EVAL <LOCAL.InputSize>-1>
      IF (<LOCAL.LoopNumber>)
         LOCAL.CardA="<STRSUB 1 2 <LIST.<LOCAL.Input>.<EVAL <LOCAL.LoopNumber>-1>>>"
         LOCAL.CardB="<STRSUB 1 2 <LIST.<LOCAL.Input>.<dLOCAL.LoopNumber>>>"
         IF (<f_Poker_RankCards <LOCAL.CardA>,<LOCAL.CardB>>==-1) //CardA ranks lower than CardB
            LIST.<LOCAL.Input>.<EVAL <LOCAL.LoopNumber>-1>=<LOCAL.CardB>
            LIST.<LOCAL.Input>.<dLOCAL.LoopNumber>=<LOCAL.CardA>
            LOCAL.Swapped=1
         ENDIF
      ENDIF
   ENDFOR
   LOCAL.InputSize=<EVAL <LOCAL.InputSize>-1>
ENDWHILE