Scores Ranking System what rates Elo for winner and loser

By SexIsBadToTheBone on Jul 03, 2013

as title says, u can use this script to input wins and loss for lot of players and then it calculate an Elo number for the players.
how it works :

first players need to !register this put the nickname in the hashtable and creates all entries for gametype, at first ofc its all empty

when u won a game u type !won (gametype) nickname(s), game types are duel, ffa with up to 7 players and teamer(22team, 33team,44team)
up to 8 players.
e.g. !won duel losernick
!won 33team winnernick2 winnernick3 losernick1 losernick2 losernick2
!won ffa losernick1 losernick2 up to losernick6

when this is done one of a loser has to !confirm and the results are being calculated and stored

there is a !top10 (gametype) comando, shows u the top10 of players by gametype rated by Elo number

!rank (gametype) (nickname shows u the rank of a certain player
!report put the written stuff in logfile

dont know if there is a need for anyone. its designed for civ4 gamelobby but maybe there are other channels related to games...

;
; http://mircboard.net/index.php
;
;Author SexisBadToTheBone, with help from IRC  channels : Gummibaer, Flobe, Liath, Alex  ( Central.irc.de )  , Jay2k1, Vliedel  ( Quakenet) and jagged ( Freenode ) thank u help out when i was stucked
;
;date Juli the 3rd 2013
;Verison : 0.9
;
;die hashtabelle folgt folgender logic
;0 0 1500 0 0 1500 0 0 1500 0 0 0
;1gibt gewonne duel spiele an, 2 verlorene duel spiele, 3 gib den elo wert fur duel an
;4gibt gewonne ffa spiele an, 5 verlorene ffa spiele, 6 den elo wert fur ffa
;7gibt gewonne team spiele an, 8 verlorene team spiele, 9 den elo wert fur teamspiele
;10, 11 und 12 fur evtl zukunfige verwendung
;--------------------------------------------------------------------------------------------------
;the script stores won and lost games. also it calculate a elo rating for the gametype duel, ffa and teamer
;commandos: ......
; !register : put nickname in the hashtable
; !won : Syntax : !won gametype nickname(s), on 2v2teamer the inputer and the 2nd nick is stored to winner section the 3rd and 4th nickname is loser and stored so all parameter just delimeted by a space character. on 3v3 teamer inputer 2nd and 3rd nick counted to winner teamer 4th 5th and 6th nick stored to loser how it will work for 4v4?
; !confirm : here just the loser confirm his loss, its enough one of the losers confirm e.g in ffa or teamer
; !top10 : syntax : !top10 gametype..... !top10 duel, !top10 ffa, !top10 teamer - shows top 10 of gametype
; !rank : syntax: !rank gametype nickname - shows rank of a certain nickname rated by elo
; !report stores waht ever was said in logfile with date day time
;u might need create for logfile the textfile logforscores.txt manually

on *:START:{
  hmake -s jiggle 10
  echo -s table created
  hload -s jiggle jiggle.txt
  echo-s table loaded
}

on *:EXIT:{
  hsave -os jiggle jiggle.txt
}

;here we have all elo equations for different gametypes begin

alias BerechneEloDuel  {

  var %RBWindDuelNickElo-Old = $gettok($hget(jiggle,%winduelnick),3,32)
  var %RALostDuelNickElo-Old = $gettok($hget(jiggle,%lostduelnick),3,32)
  ;zählen der gespielten Spiele zur berechnung des k-faktors unter 30
  var %gameamountb = $calc($gettok($hget(jiggle,%winduelnick),1,32) + ($gettok($hget(jiggle,%winduelnick),2,32)))

  if ( %gameamountb <= 30 ) {
  var %kfactorb = 30 }
  elseif ( %RBWindDuelNickElo-Old >= 2400 ) {
  var %kfactorb = 10 }
  else { var %kfactorb = 15 }
  ;zählen der gespielten Spiele zur berechnung des k-faktors unter 30
  var %gameamounta = $calc($gettok($hget(jiggle,%lostduelnick),1,32) + ($gettok($hget(jiggle,%lostduelnick),2,32)))

  if ( %gameamounta <= 30 ) {
  var %kfactora = 30 }
  elseif ( %RALostDuelNickElo-Old >= 2400 ) {
  var %kfactora = 10 }
  else { var %kfactora = 15 }

  var %EaOddsa = $calc(1/(1 + 10^$calc((%RBWindDuelNickElo-Old - %RALostDuelNickElo-Old) / 400)))
  var %EaOddsb = $calc(1/(1 + 10^$calc((%RALostDuelNickElo-Old - %RBWindDuelNickElo-Old) / 400)))
  var %RBWindDuelNickElo-New = $calc(%RBWindDuelNickElo-Old + (%kfactorb *(1-  %EaOddsb)))
  var %RALostDuelNickElo-New = $calc(%RALostDuelNickElo-Old + (%kfactora * (0 - %EaOddsa)))
  return $round(%RBWindDuelNickElo-New,0) $round(%RALostDuelNickElo-New,0)
}

alias BerechneEloFFA-2  {
  var %RBWinffaNickElo-Old = $gettok($hget(jiggle,%winffanick),6,32)
  var %RALostffaNickElo-Old1 = $gettok($hget(jiggle,%lostffanick1),6,32)
  var %RALostffaNickElo-Old2 = $gettok($hget(jiggle,%lostffanick2),6,32)
  var %RALostffaNickElo-Old3 = $gettok($hget(jiggle,%lostffanick3),6,32)
  var %RALostffaNickElo-Old4 = $gettok($hget(jiggle,%lostffanick4),6,32)
  var %RALostffaNickElo-Old5 = $gettok($hget(jiggle,%lostffanick5),6,32)
  var %RALostffaNickElo-Old6 = $gettok($hget(jiggle,%lostffanick6),6,32)

  ;zählen der gespielten Spiele zur berechnung des k-faktorsb unter 30
  var %gameamountb = $calc(($gettok($hget(jiggle,%lostffanick1),4,32) + ($gettok($hget(jiggle,%lostffanick1),5,32)) + ($gettok($hget(jiggle,%lostffanick2),4,32)) + ($gettok($hget(jiggle,%lostffanick2),5,32)) + ($gettok($hget(jiggle,%lostffanick3),4,32)) + ($gettok($hget(jiggle,%lostffanick3),5,32)) + ($gettok($hget(jiggle,%lostffanick4),4,32)) + ($gettok($hget(jiggle,%lostffanick4),5,32)) + ($gettok($hget(jiggle,%lostffanick5),4,32)) + ($gettok($hget(jiggle,%lostffanick5),5,32)) + ($gettok($hget(jiggle,%lostffanick6),4,32)) + ($gettok($hget(jiggle,%lostffanick6),5,32)))  / %playeramount)

  if ( %gameamountb <= 30 ) {
  var %kfactorb = 30 }
  elseif ( %RBWinffaNickElo-Old >= 2400 ) {
  var %kfactorb = 10 }
  else { var %kfactorb = 15 }

  ;zählen der gespielten Spiele zur berechnung des k-faktorsa unter spileranzahl/playeramount
  var %gameamounta = $calc($gettok($hget(jiggle,%winffanick),4,32) + ($gettok($hget(jiggle,%winffanick),5,32)))

  if ( %gameamounta <= 30 ) {
  var %kfactora = 30 }
  elseif ( %RALostffaNickElo-Old1 >= 2400 ) {
  var %kfactora = 10 }
  else { var %kfactora = 15 }

  var %EaOddsA = $calc(1/(1 + 10^$calc((%RBWinffaNickElo-Old - ((%RALostffaNickElo-Old1 + %RALostffaNickElo-Old2 + %RALostffaNickElo-Old3 + %RALostffaNickElo-Old4 + %RALostffaNickElo-Old5 + %RALostffaNickElo-Old6) /%playeramount)) / 400)))
  var %EaOddsB = $calc(1/(1 + 10^$calc((((%RALostffaNickElo-Old1 + %RALostffaNickElo-Old2 + %RALostffaNickElo-Old3 + %RALostffaNickElo-Old4 + %RALostffaNickElo-Old5 + %RALostffaNickElo-Old6)/%playeramount) - %RBWinffaNickElo-Old ) / 400)))

  var %RBWinffaNickElo-New = $calc(%RBWinffaNickElo-Old + (%kfactorb * ( 1- %EaOddsB)))
  var %RALostffaNickElo-New1 = $calc(%RALostffaNickElo-Old1 + (%kfactora * (0 - %EaOddsA)))
  var %RALostffaNickElo-New2 = $calc(%RALostffaNickElo-Old2 + (%kfactora * (0 - %EaOddsA)))
  var %RALostffaNickElo-New3 = $calc(%RALostffaNickElo-Old3 + (%kfactora * (0 - %EaOddsA)))
  var %RALostffaNickElo-New4 = $calc(%RALostffaNickElo-Old4 + (%kfactora * (0 - %EaOddsA)))
  var %RALostffaNickElo-New5 = $calc(%RALostffaNickElo-Old5 + (%kfactora * (0 - %EaOddsA)))
  var %RALostffaNickElo-New6 = $calc(%RALostffaNickElo-Old6 + (%kfactora * (0 - %EaOddsA)))
  return $round(%RBWinffaNickElo-New,0) $round(%RALostffaNickElo-New1,0) $round(%RALostffaNickElo-New2,0) $round(%RALostffaNickElo-New3,0) $round(%RALostffaNickElo-New4,0) $round(%RALostffaNickElo-New5,0) $round(%RALostffaNickElo-New6,0)
}

alias BerechneElo22team  {

  var %RBWinTeamNickElo-Old1 = $gettok($hget(jiggle,%winteamnick1),9,32)
  var %RBWinTeamNickElo-Old2 = $gettok($hget(jiggle,%winteamnick2),9,32)
  var %RALostTeamNickElo-Old1 = $gettok($hget(jiggle,%lostteamnick1),9,32)
  var %RALostTeamNickElo-Old2 = $gettok($hget(jiggle,%lostteamnick2),9,32)
  ;zählen der gespielten Spiele zur berechnung des k-faktors unter 60, 60 weil zwei spiler antreten und nicht nur einer. haben beide spieler 30 spiele absolviert sinds insgesamt 60
  var %gameamountb = $calc($gettok($hget(jiggle,%winteamnick1),7,32) + ($gettok($hget(jiggle,%winteamnick1),8,32)) + ($gettok($hget(jiggle,%winteamnick2),7,32)) + ($gettok($hget(jiggle,%winteamnick2),8,32)))
  ;zählen der gespielten Spiele zur berechnung des k-faktors unter 60, 60 weil zwei spiler antreten und nicht nur einer. haben beide spieler 30 spiele absolviert sinds insgesamt 60

  if ( %gameamountb <= 60 ) {
  var %kfactorb = 30 }
  elseif ( $calc(%RBWinTeamNickElo-Old1 + %RBWinTeamNickElo-Old2)  >= 4800 ) {
  var %kfactorb = 10 }
  else { var %kfactorb = 15 }

  ;zählen der gespielten Spiele zur berechnung des k-faktors unter 60, 60 weil zwei spiler antreten und nicht nur einer. haben beide spieler 30 spiele absolviert sinds insgesamt 60
  var %gameamounta = $calc($gettok($hget(jiggle,%lostteamnick1),7,32) + ($gettok($hget(jiggle,%lostteamnick1),8,32)) + ($gettok($hget(jiggle,%lostteamnick2),7,32)) + ($gettok($hget(jiggle,%lostteamnick2),8,32)))

  if ( %gameamounta <= 60 ) {
  var %kfactora = 30 }
  elseif ( $calc(%RALostTeamNickElo-Old1 + %RALostTeamNickElo-Old2)  >= 4800 ) {
  var %kfactora = 10 }
  else { var %kfactora = 15 }

  var %EaOddsa = $calc(1/(1 + 10^$calc(((%RBWinTeamNickElo-Old1 + %RBWinTeamNickElo-Old2) - (%RALostTeamNickElo-Old1 + %RALostTeamNickElo-Old2)) / 400)))
  var %EaOddsb = $calc(1/(1 + 10^$calc(((%RALostTeamNickElo-Old1 + %RALostTeamNickElo-Old2) - (%RBWinTeamNickElo-Old1 + %RBWinTeamNickElo-Old2)) / 400)))
  var %RBWindTeamNickElo-New1 = $calc(%RBWinTeamNickElo-Old1 + (%kfactorb * (1 - %EaOddsb)))
  var %RBWindTeamNickElo-New2 = $calc(%RBWinTeamNickElo-Old2 + (%kfactorb * (1 - %EaOddsb)))
  var %RALostTeamNickElo-New1 = $calc(%RALostTeamNickElo-Old1 + (%kfactora * (0 - %EaOddsa)))
  var %RALostTeamNickElo-New2 = $calc(%RALostTeamNickElo-Old2 + (%kfactora * (0 - %EaOddsa)))
  return $round(%RBWindTeamNickElo-New1,0) $round(%RBWindTeamNickElo-New2,0) $round(%RALostTeamNickElo-New1,0) $round(%RALostTeamNickElo-New2,0)
}

alias BerechneElo33team  {

  var %RBWinTeamNickElo-Old1 = $gettok($hget(jiggle,%winteamnick1),9,32)
  var %RBWinTeamNickElo-Old2 = $gettok($hget(jiggle,%winteamnick2),9,32)
  var %RBWinTeamNickElo-Old3 = $gettok($hget(jiggle,%winteamnick3),9,32)
  var %RALostTeamNickElo-Old1 = $gettok($hget(jiggle,%lostteamnick1),9,32)
  var %RALostTeamNickElo-Old2 = $gettok($hget(jiggle,%lostteamnick2),9,32)
  var %RALostTeamNickElo-Old3 = $gettok($hget(jiggle,%lostteamnick3),9,32)
  ;zählen der gespielten Spiele zur berechnung des k-faktors unter 90, 90 weil drei spiler antreten und nicht nur einer. haben drei spieler 30 spiele absolviert sinds insgesamt 90
  var %gameamountb = $calc($gettok($hget(jiggle,%winteamnick1),7,32) + ($gettok($hget(jiggle,%winteamnick1),8,32)) + ($gettok($hget(jiggle,%winteamnick2),7,32)) + ($gettok($hget(jiggle,%winteamnick2),8,32)) + ($gettok($hget(jiggle,%winteamnick3),7,32)) + ($gettok($hget(jiggle,%winteamnick3),8,32)))

  if ( %gameamountb <= 90 ) {
  var %kfactorb = 30 }
  elseif ( $calc(%RBWinTeamNickElo-Old1 + %RBWinTeamNickElo-Old2 + %RBWinTeamNickElo-Old3)  >= 7200 ) {
  var %kfactorb = 10 }
  else { var %kfactorb = 15 }

  ;zählen der gespielten Spiele zur berechnung des k-faktors unter 90, 90 weil drei spiler antreten und nicht nur einer. haben drei spieler 30 spiele absolviert sinds insgesamt 90
  var %gameamounta = $calc($gettok($hget(jiggle,%winteamnick1),7,32) + ($gettok($hget(jiggle,%winteamnick1),8,32)) + ($gettok($hget(jiggle,%winteamnick2),7,32)) + ($gettok($hget(jiggle,%winteamnick2),8,32)) + ($gettok($hget(jiggle,%winteamnick3),7,32)) + ($gettok($hget(jiggle,%winteamnick3),8,32)))

  if ( %gameamounta <= 90 ) {
  var %kfactora = 30 }
  elseif ( $calc(%RALostTeamNickElo-Old1 + %RALostTeamNickElo-Old2 + %RALostTeamNickElo-Old3)  >= 7200 ) {
  var %kfactora = 10 }
  else { var %kfactora = 15 }

  var %EaOddsa = $calc(1/(1 + 10^$calc(((%RBWinTeamNickElo-Old1 + %RBWinTeamNickElo-Old2 + %RBWinTeamNickElo-Old3) - (%RALostTeamNickElo-Old1 + %RALostTeamNickElo-Old2 + %RALostTeamNickElo-Old3)) / 400)))
  var %EaOddsb = $calc(1/(1 + 10^$calc(((%RALostTeamNickElo-Old1 + %RALostTeamNickElo-Old2 + %RALostTeamNickElo-Old3) - (%RBWinTeamNickElo-Old1 + %RBWinTeamNickElo-Old2 + %RBWinTeamNickElo-Old3)) / 400)))
  var %RBWindTeamNickElo-New1 = $calc(%RBWinTeamNickElo-Old1 + (%kfactorb * (1 - %EaOddsb)))
  var %RBWindTeamNickElo-New2 = $calc(%RBWinTeamNickElo-Old2 + (%kfactorb * (1 - %EaOddsb)))
  var %RBWindTeamNickElo-New3 = $calc(%RBWinTeamNickElo-Old3 + (%kfactorb * (1 - %EaOddsb)))
  var %RALostTeamNickElo-New1 = $calc(%RALostTeamNickElo-Old1 + (%kfactora * (0 - %EaOddsa)))
  var %RALostTeamNickElo-New2 = $calc(%RALostTeamNickElo-Old2 + (%kfactora * (0 - %EaOddsa)))
  var %RALostTeamNickElo-New3 = $calc(%RALostTeamNickElo-Old3 + (%kfactora * (0 - %EaOddsa)))
  return $round(%RBWindTeamNickElo-New1,0) $round(%RBWindTeamNickElo-New2,0) $round(%RBWindTeamNickElo-New3,0) $round(%RALostTeamNickElo-New1,0) $round(%RALostTeamNickElo-New2,0) $round(%RALostTeamNickElo-New3,0)
}

alias BerechneElo44team  {

  var %RBWinTeamNickElo-Old1 = $gettok($hget(jiggle,%winteamnick1),9,32)
  var %RBWinTeamNickElo-Old2 = $gettok($hget(jiggle,%winteamnick2),9,32)
  var %RBWinTeamNickElo-Old3 = $gettok($hget(jiggle,%winteamnick3),9,32)
  var %RBWinTeamNickElo-Old4 = $gettok($hget(jiggle,%winteamnick4),9,32)
  var %RALostTeamNickElo-Old1 = $gettok($hget(jiggle,%lostteamnick1),9,32)
  var %RALostTeamNickElo-Old2 = $gettok($hget(jiggle,%lostteamnick2),9,32)
  var %RALostTeamNickElo-Old3 = $gettok($hget(jiggle,%lostteamnick3),9,32)
  var %RALostTeamNickElo-Old4 = $gettok($hget(jiggle,%lostteamnick4),9,32)
  ;zählen der gespielten Spiele zur berechnung des k-faktors unter 120, 120 weil vier spiler antreten und nicht nur einer. haben vieri spieler 30 spiele absolviert sinds insgesamt 120
  var %gameamountb = $calc($gettok($hget(jiggle,%winteamnick1),7,32) + ($gettok($hget(jiggle,%winteamnick1),8,32)) + ($gettok($hget(jiggle,%winteamnick2),7,32)) + ($gettok($hget(jiggle,%winteamnick2),8,32)) + ($gettok($hget(jiggle,%winteamnick3),7,32)) + ($gettok($hget(jiggle,%winteamnick3),8,32)) + ($gettok($hget(jiggle,%winteamnick4),7,32)) + ($gettok($hget(jiggle,%winteamnick4),8,32)))

  if ( %gameamountb <= 120 ) {
  var %kfactorb = 30 }
  elseif ( $calc(%RBWinTeamNickElo-Old1 + %RBWinTeamNickElo-Old2 + %RBWinTeamNickElo-Old3 + %RBWinTeamNickElo-Old4)  >= 9600 ) {
  var %kfactorb = 10 }
  else { var %kfactorb = 15 }

  ;zählen der gespielten Spiele zur berechnung des k-faktors unter 120, 120 weil vier spiler antreten und nicht nur einer. haben vieri spieler 30 spiele absolviert sinds insgesamt 120
  var %gameamounta = $calc($gettok($hget(jiggle,%winteamnick1),7,32) + ($gettok($hget(jiggle,%winteamnick1),8,32)) + ($gettok($hget(jiggle,%winteamnick2),7,32)) + ($gettok($hget(jiggle,%winteamnick2),8,32)) + ($gettok($hget(jiggle,%winteamnick3),7,32)) + ($gettok($hget(jiggle,%winteamnick3),8,32)) + ($gettok($hget(jiggle,%winteamnick4),7,32)) + ($gettok($hget(jiggle,%winteamnick4),8,32)))

  if ( %gameamounta <= 120 ) {
  var %kfactora = 30 }
  elseif ( $calc(%RALostTeamNickElo-Old1 + %RALostTeamNickElo-Old2 + %RALostTeamNickElo-Old3 + %RALostTeamNickElo-Old4)  >= 9600 ) {
  var %kfactora = 10 }
  else { var %kfactora = 15 }

  var %EaOddsa = $calc(1/(1 + 10^$calc(((%RBWinTeamNickElo-Old1 + %RBWinTeamNickElo-Old2 + %RBWinTeamNickElo-Old3 + %RBWinTeamNickElo-Old4) - (%RALostTeamNickElo-Old1 + %RALostTeamNickElo-Old2 + %RALostTeamNickElo-Old3 + %RALostTeamNickElo-Old4)) / 400)))
  var %EaOddsb = $calc(1/(1 + 10^$calc(((%RALostTeamNickElo-Old1 + %RALostTeamNickElo-Old2 + %RALostTeamNickElo-Old3 + %RALostTeamNickElo-Old4) - (%RBWinTeamNickElo-Old1 + %RBWinTeamNickElo-Old2 + %RBWinTeamNickElo-Old3 + %RBWinTeamNickElo-Old4)) / 400)))

  var %RBWindTeamNickElo-New1 = $calc(%RBWinTeamNickElo-Old1 + (%kfactorb * (1 - %EaOddsb)))
  var %RBWindTeamNickElo-New2 = $calc(%RBWinTeamNickElo-Old2 + (%kfactorb * (1 - %EaOddsb)))
  var %RBWindTeamNickElo-New3 = $calc(%RBWinTeamNickElo-Old3 + (%kfactorb * (1 - %EaOddsb)))
  var %RBWindTeamNickElo-New4 = $calc(%RBWinTeamNickElo-Old4 + (%kfactorb * (1 - %EaOddsb)))
  var %RALostTeamNickElo-New1 = $calc(%RALostTeamNickElo-Old1 + (%kfactora * (0 - %EaOddsa)))
  var %RALostTeamNickElo-New2 = $calc(%RALostTeamNickElo-Old2 + (%kfactora * (0 - %EaOddsa)))
  var %RALostTeamNickElo-New3 = $calc(%RALostTeamNickElo-Old3 + (%kfactora * (0 - %EaOddsa)))
  var %RALostTeamNickElo-New4 = $calc(%RALostTeamNickElo-Old4 + (%kfactora * (0 - %EaOddsa)))
  return $round(%RBWindTeamNickElo-New1,0) $round(%RBWindTeamNickElo-New2,0) $round(%RBWindTeamNickElo-New3,0) $round(%RBWindTeamNickElo-New4,0) $round(%RALostTeamNickElo-New1,0) $round(%RALostTeamNickElo-New2,0) $round(%RALostTeamNickElo-New3,0) $round(%RALostTeamNickElo-New4,0)
}
;here we have all elo equations for different gametypes end

on *:TEXT:!register:#:{
  if (!$hget(jiggle,$remove($nick,-tk))) {
    hadd -s jiggle $remove($nick,-tk) 0 0 1500 0 0 1500 0 0 1500 0 0 0 
    msg $chan Thanks for registering, $remove($nick,-tk)
    write -a logforscores.txt $fulldate :: Register :: $remove($nick,-tk)
  }
  else {
    msg $chan You are already registered, $remove($nick,-tk)
    echo -ag hashtable entry for $remove($nick,-tk) $+ : $hget(jiggle,$remove($nick,-tk))
  }
  hsave -os jiggle jiggle.txt
}

;§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§

on *:TEXT:!won*:#:{  
  if ($timer(1).reps > 0) {      
  msg $chan Please wait 20 sec. Procedure in progress... }
  else { 
    ;FFA Section Won Begin--------------------------------------------------------%
    if ($2 == ffa) && ($hget(jiggle,$remove($nick,-tk))) && ($hget(jiggle,$3)) && (($hget(jiggle,$4)) || ($4 == $null)) && (($hget(jiggle,$5)) || ($5 == $null)) && (($hget(jiggle,$6)) || ($6 == $null)) && (($hget(jiggle,$7)) || ($7 == $null)) && (($hget(jiggle,$8)) || ($8 == $null)) && ($3 != $remove($nick,-tk)) && ($4 != $remove($nick,-tk)) && ($5 != $remove($nick,-tk)) && ($6 != $remove($nick,-tk)) && ($7 != $remove($nick,-tk)) && ($8 != $remove($nick,-tk)) { 
      set -u20 %winffanick $remove($nick,-tk) 
      set -u20 %lostffanick1 $3
      set -u20 %playeramount $calc($0 - 2)
      if ($4 != $null) { set -u20 %lostffanick2 $4 }
      else { var %slot2 = 2 }
      if ($5 != $null) { set -u20 %lostffanick3 $5 }
      else { var %slot3 = 3 }
      if ($6 != $null) { set -u20 %lostffanick4 $6 }
      else { var %slot4 = 4 }
      if ($7 != $null) { set -u20 %lostffanick5 $7 }
      else { var %slot5 = 5 }
      if ($8 != $null) { set -u20 %lostffanick6 $8 }
      else { var %slot6 = 6 }
      set -u20 %gametypeffa $2
      msg $chan Did %winffanick won vs u $2 %lostffanick1 %lostffanick2 %lostffanick3 %lostffanick4 %lostffanick5 %lostffanick6 ? - Confirm within 20 seconds by typing " !confirm "
    timer1 20 1 echo -s timer running }
    ;FFA Section Won End---------------------------------------------------------%
    ;Duell Section Won Begin-----------------------------------------------------%
    elseif ($2 == duel) && ($3 != $remove($nick,-tk)) && ($hget(jiggle,$3)) && ($hget(jiggle,$remove($nick,-tk))) { 
      set -u20 %winduelnick $remove($nick,-tk)
      set -u20 %lostduelnick $3
      set -u20 %gametypeduel $2
      msg $chan Did %winduelnick won vs u in $2 %lostduelnick ? Confirm within 20 seconds by typing " !confirm " 
    timer1 20 1 echo -s timer running } 
    ;Duell Section Won End-------------------------------------------------------%
    ;Teamer 2v2  Section Won Begin----------------------------------------------------------------------------%
    elseif ($2 == 22team) && ($hget(jiggle,$remove($nick,-tk))) && ($3 != $remove($nick,-tk)) && ($4 != $remove($nick,-tk)) && ($5 != $remove($nick,-tk)) && ($hget(jiggle,$3)) && ($hget(jiggle,$4)) && ($hget(jiggle,$5)) {
      set -u20 %winteamnick1 $remove($nick,-tk)
      set -u20 %winteamnick2 $3
      set -u20 %lostteamnick1 $4
      set -u20 %lostteamnick2 $5 
      set -u20 %gametype22team $2
      msg $chan Did Team %winteamnick1 + %winteamnick2 won vs u %lostteamnick1 + %lostteamnick2 ? One of u have to type !confirm
    timer1 20 1 echo -s timer running }
    ;Teamer 2v2  Section Won End------------------------------------------------------------------------------%
    ;Teamer 3v3  Section Won Begin----------------------------------------------------------------------------%
    elseif ($2 == 33team) && ($3 != $remove($nick,-tk)) && ($4 != $remove($nick,-tk)) && ($5 != $remove($nick,-tk)) && ($6 != $remove($nick,-tk)) && ($7 != $remove($nick,-tk)) && ($3 != $4) && ($3 != $5) && ($3 != $6) && ($3 != $7) && ($4 != $5) && ($4 != $6) && ($4 != $7) && ($5 != $6) && ($5 != $7) && ($6 != $7) && ($hget(jiggle,$remove($nick,-tk))) && ($hget(jiggle,$3)) && ($hget(jiggle,$4)) && ($hget(jiggle,$5)) && ($hget(jiggle,$6)) && ($hget(jiggle,$7)) {
      set -u20 %winteamnick1 $remove($nick,-tk)
      set -u20 %winteamnick2 $3
      set -u20 %winteamnick3 $4
      set -u20 %lostteamnick1 $5
      set -u20 %lostteamnick2 $6 
      set -u20 %lostteamnick3 $7 
      set -u20 %gametype33team $2
      msg $chan Did Team %winteamnick1 + %winteamnick2 + %winteamnick3 won vs u %lostteamnick1 + %lostteamnick2 + %lostteamnick3  ? One of u have to type !confirm
    timer1 20 1 echo -s timer running }
    ;Teamer 3v3  Section Won End------------------------------------------------------------------------------%
    ;Teamer 4v4  Section Won Begin----------------------------------------------------------------------------%
    elseif ($2 == 44team) && ($3 != $remove($nick,-tk)) && ($4 != $remove($nick,-tk)) && ($5 != $remove($nick,-tk)) && ($6 != $remove($nick,-tk)) && ($7 != $remove($nick,-tk)) && ($8 != $remove($nick,-tk)) && ($9 != $remove($nick,-tk)) && ($3 != $4) && ($3 != $5) && ($3 != $6) && ($3 != $7) && ($3 != $8) && ($3 != $9) && ($4 != $5) && ($4 != $6) && ($4 != $7) && ($4 != $8) && ($4 != $9) && ($5 != $6) && ($5 != $7) && ($5 != $8) && ($5 != $9) && ($6 != $7) && ($6 != $8) && ($6 != $9) && ($7 != $8) && ($7 != $9) && ($8 != $9) && ($hget(jiggle,$remove($nick,-tk))) && ($hget(jiggle,$3)) && ($hget(jiggle,$4)) && ($hget(jiggle,$5)) && ($hget(jiggle,$6)) &&  ($hget(jiggle,$7)) && ($hget(jiggle,$8)) && ($hget(jiggle,$9)) {
      set -u20 %winteamnick1 $remove($nick,-tk)
      set -u20 %winteamnick2 $3
      set -u20 %winteamnick3 $4
      set -u20 %winteamnick4 $5
      set -u20 %lostteamnick1 $6
      set -u20 %lostteamnick2 $7
      set -u20 %lostteamnick3 $8
      set -u20 %lostteamnick4 $9 
      set -u20 %gametype44team $2
      msg $chan  Did Team %winteamnick1 + %winteamnick2 + %winteamnick3 + %winteamnick4 won vs u %lostteamnick1 + %lostteamnick2 + %lostteamnick3 + %lostteamnick4 ? One of u have to type !confirm
    timer1 20 1 echo -s timer running }
    ;Teamer 5v5  Section Won Begin----------------------------------------------------------------------------%
    elseif ($2 == 55team) {
    msg $chan teamer 5v5 is under construction }
    ;Teamer Section End-----------------------------------------------------------%
    else {
    msg $chan no GameType - $2 - Check spelling - Unregistered Player? }
  }
}

;§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§
;§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§

on *:TEXT:!confirm:#:{
  ;Duel Section Confirm Begin-----------------------------------------------------%
  ;Bedingung prüfen auf berechtigten Zugriff gleichzeitig ausschliessen das selber "confirmed" wird und gametype
  if (%lostduelnick == $remove($nick,-tk)) && ((duel == %gametypeduel) && (%winduelnick != $remove($nick,-tk))) {
    if ($timer(2).reps > 0) {      
    msg $chan Please wait 20 sec. Procedure in progress... }
    else { 
      ;zugreifen auf Alias und Werte von $BerechneEloDuel in variable %retelo zuweisen
      var %retelo = $BerechneEloDuel(%winduelnick,%lostduelnick)

      ;abspeichern des alias BerechneEloDuel in Haschtable fur gewinner und verlierer mittles $gettok(%retelo,x,y)
      hadd jiggle %winduelnick $puttok($hget(jiggle,%winduelnick),$gettok(%retelo,1,32),3,32)
      hadd jiggle %lostduelnick $puttok($hget(jiggle,%lostduelnick),$gettok(%retelo,2,32),3,32)

      ;hinzufugen der zahler fur gewinner
      ;add to winner beginn-----------------------------------%
      var %counter = $calc($gettok($hget(jiggle,%winduelnick),1,32) + 1)
      hadd jiggle %winduelnick $puttok($hget(jiggle,%winduelnick),%counter,1,32)
      var %msgaddwinner =  %winduelnick  u won already %counter duel games :: Elo: $gettok(%retelo,1,32)
      ;add to winner end--------------------------------------%

      ;hinzufugen des zahlers fur verlierer
      ;add to loser begin-------------------------------------%
      var %counter1 = $calc($gettok($hget(jiggle,%lostduelnick),2,32) + 1)
      hadd jiggle %lostduelnick $puttok($hget(jiggle,%lostduelnick),%counter1,2,32)
      var %msgaddloser =  %lostduelnick its ur %counter duel game u lost :: Elo : $gettok(%retelo,2,32)
      ;abspeichern in hashtable
      hsave -os jiggle jiggle.txt
      ;add to loser end---------------------------------------%
      msg $chan %msgaddwinner
      msg $chan %msgaddloser
      write -a logforscores.txt $fulldate :: Confirmed :: %msgaddwinner :: %msgaddloser
  timer2 20 1 echo -s timer running  } }
  ;Duel Section Confirm End-------------------------------------------------------%

  ;FFA Section Confirm Begin------------------------------------------------------%
  elseif ((%gametypeffa == ffa) && ((%lostffanick1 == $remove($nick,-tk)) || ((%lostffanick2 == $remove($nick,-tk)) || (%lostffanick2 == $null)) || ((%lostffanick3 == $remove($nick,-tk)) || (%lostffanick3 == $null)) || ((%lostffanick4 == $remove($nick,-tk)) || (%lostffanick4 == $null)) || ((%lostffanick5 == $remove($nick,-tk)) || (%lostffanick5 == $null)) || ((%lostffanick6 == $remove($nick,-tk)) || (%lostffanick6 == $null)))) { 
    if ($timer(2).reps > 0) {      
    msg $chan Please wait 20 sec. Procedure in progress... }
    else { 
      ;zugreifen auf Alias und Werte von $BerechneEloFFA-2 in variable %retelo zuweisen
      var %retelo = $BerechneEloFFA-2(%winffanick,%lostffanick1,%lostffanick2,%lostffanick3,%lostffanick4,%lostffanick5,%lostffanick6)

      ;abspeichern des alias BerechneEloDuel in Haschtable fur gewinner und verlierer mittles $gettok(%retelo,x,y)
      hadd jiggle %winffanick $puttok($hget(jiggle,%winffanick),$gettok(%retelo,1,32),6,32)

      ;add to winner beginn----Punkte-------------------------------%
      var %counter = $calc($gettok($hget(jiggle,%winffanick),4,32) + 1)
      hadd jiggle %winffanick $puttok($hget(jiggle,%winffanick),%counter,4,32)
      hsave -os jiggle jiggle.txt
      var %msgaddwinner =  %winffanick u won already %counter ffa games :: Elo: $gettok(%retelo,1,32)
      ;add to winner end-------Punkte-------------------------------%

      ;add to loser1 begin-----Punkte-------------------------------%
      var %counter1 = $calc($gettok($hget(jiggle,%lostffanick1),5,32) + 1)
      hadd jiggle %lostffanick1 $puttok($hget(jiggle,%lostffanick1),%counter1,5,32)
      hadd jiggle %lostffanick1 $puttok($hget(jiggle,%lostffanick1),$gettok(%retelo,2,32),6,32)
      hsave -os jiggle jiggle.txt
      var %msgaddloser1 = %lostffanick1 its ur %counter1 lost ffa game :: Elo : $gettok(%retelo,2,32)
      ;add to loser1 end--------Punkte------------------------------%

      ;add to loser2 begin------------------------------------%
      if (%lostffanick2 != $null) {
        var %counter2 = $calc($gettok($hget(jiggle,%lostffanick2),5,32) + 1)
        hadd jiggle %lostffanick2 $puttok($hget(jiggle,%lostffanick2),%counter2,5,32)
        hadd jiggle %lostffanick2 $puttok($hget(jiggle,%lostffanick2),$gettok(%retelo,3,32),6,32)
        hsave -os jiggle jiggle.txt
        var %msgaddloser2 = %lostffanick2 its ur %counter2 lost ffa game :: Elo: $gettok(%retelo,3,32)
      }
      else { var %noentry = noentry }
      ;add to loser2 end--------------------------------------%

      ;add to loser3 begin------------------------------------%
      if (%lostffanick3 != $null) {
        var %counter3 = $calc($gettok($hget(jiggle,%lostffanick3),5,32) + 1)
        hadd jiggle %lostffanick3 $puttok($hget(jiggle,%lostffanick3),%counter3,5,32)
        hadd jiggle %lostffanick3 $puttok($hget(jiggle,%lostffanick3),$gettok(%retelo,4,32),6,32)
        hsave -os jiggle jiggle.txt
        var %msgaddloser3 = %lostffanick3 its ur %counter3 lost ffa game :: Elo: $gettok(%retelo,4,32)
      }
      else { var %noentry = noentry }
      ;add to loser3 end--------------------------------------%

      ;add to loser4 begin------------------------------------%
      if (%lostffanick4 != $null) {
        var %counter4 = $calc($gettok($hget(jiggle,%lostffanick4),5,32) + 1)
        hadd jiggle %lostffanick4 $puttok($hget(jiggle,%lostffanick4),%counter4,5,32)
        hadd jiggle %lostffanick4 $puttok($hget(jiggle,%lostffanick4),$gettok(%retelo,5,32),6,32)
        hsave -os jiggle jiggle.txt
        var %msgaddloser4 = %lostffanick4 its ur %counter4 lost ffa game ::Elo: $gettok(%retelo,5,32)
      }
      else { var %noentry = noentry }
      ;add to loser5 end--------------------------------------%

      ;add to loser5 begin------------------------------------%
      if (%lostffanick5 != $null) {
        var %counter5 = $calc($gettok($hget(jiggle,%lostffanick5),5,32) + 1)
        hadd jiggle %lostffanick5 $puttok($hget(jiggle,%lostffanick5),%counter5,5,32)
        hadd jiggle %lostffanick5 $puttok($hget(jiggle,%lostffanick5),$gettok(%retelo,6,32),6,32)
        hsave -os jiggle jiggle.txt
        var %msgaddloser5 = %lostffanick5 its ur %counter5 lost ffa game :: Elo: $gettok(%retelo,6,32)
      }
      else { var %noentry = noentry }
      ;add to loser5 end--------------------------------------%

      ;add to loser6 begin------------------------------------%
      if (%lostffanick6 != $null) {
        var %counter6 = $calc($gettok($hget(jiggle,%lostffanick6),5,32) + 1)
        hadd jiggle %lostffanick6 $puttok($hget(jiggle,%lostffanick6),%counter6,5,32)
        hadd jiggle %lostffanick6 $puttok($hget(jiggle,%lostffanick6),$gettok(%retelo,7,32),6,32)
        hsave -os jiggle jiggle.txt
        var %msgaddloser6 = %lostffanick5 its ur %counter6 lost ffa game :: Elo: $gettok(%retelo,7,32)
      }
      else { var %noentry = noentry }
      ;add to loser6 end--------------------------------------%
      msg $chan %msgaddwinner
      msg $chan %msgaddloser1 %msgaddloser2 %msgaddloser3 %msgaddloser4 %msgaddloser5 %msgaddloser6
    write -a logforscores.txt $fulldate :: Confirmed :: %msgaddwinner :: %msgaddloser1 :: %msgaddloser2 :: %msgaddloser3 :: %msgaddloser4 :: %msgaddloser5 :: %msgaddloser6  }
  timer2 20 1 echo -s timer running  } 
  ;FFA Section Confirm End--------------------------------------------------------%

  ;22team Section Confirm Begin---------------------------------------------------%
  elseif (((%lostteamnick1 == $remove($nick,-tk)) || (%lostteamnick2 == $remove($nick,-tk)))  && (22team == %gametype22team)) {
    if ($timer(2).reps > 0) {      
    msg $chan Please wait 20 sec. Procedure in progress... }
    else { 
      ;zugreifen auf Alias und Werte von $BerechneElo22team in variable %retelo zuweisen
      var %retelo = $BerechneElo22team(%winteamnick1,%winteamnick2,%lostteamnick1,%lostteamnick2)

      ;abspeichern des alias $BerechneElo22team in Haschtable fur gewinner und verlierer mittles $gettok(%retelo,x,y)
      hadd jiggle %winteamnick1 $puttok($hget(jiggle,%winteamnick1),$gettok(%retelo,1,32),9,32)
      hadd jiggle %winteamnick2 $puttok($hget(jiggle,%winteamnick2),$gettok(%retelo,2,32),9,32)
      hadd jiggle %lostteamnick1 $puttok($hget(jiggle,%lostteamnick1),$gettok(%retelo,3,32),9,32)
      hadd jiggle %lostteamnick2 $puttok($hget(jiggle,%lostteamnick2),$gettok(%retelo,4,32),9,32)

      ;add to winner1 beginn-----------------------------------%
      var %counter1 = $calc($gettok($hget(jiggle,%winteamnick1),7,32) + 1)
      hadd jiggle %winteamnick1 $puttok($hget(jiggle,%winteamnick1),%counter1,7,32)
      var %msgaddwinner1 = %winteamnick1 won already %counter1 Teamers :: Elo : $gettok(%retelo,1,32)
      ;add to winner1 end--------------------------------------%
      ;add to winner2 beginn-----------------------------------%
      var %counter2 = $calc($gettok($hget(jiggle,%winteamnick2),7,32) + 1)
      hadd jiggle %winteamnick2 $puttok($hget(jiggle,%winteamnick2),%counter2,7,32)
      var %msgaddwinner2 = %winteamnick2 won already %counter2 Teamers :: Elo : $gettok(%retelo,2,32)
      ;add to winner2 end--------------------------------------%
      ;add to loser1 begin------------------------------------%
      var %counter3 = $calc($gettok($hget(jiggle,%lostteamnick1),8,32) + 1)
      hadd jiggle %lostteamnick1 $puttok($hget(jiggle,%lostteamnick1),%counter3,8,32)
      var %msgaddloser1 = %lostteamnick1 lost %counter3 teamers Elo : $gettok(%retelo,3,32)
      ;add to loser1 end--------------------------------------%
      ;add to loser2 begin------------------------------------%
      var %counter4 = $calc($gettok($hget(jiggle,%lostteamnick2),8,32) + 1)
      hadd jiggle %lostteamnick2 $puttok($hget(jiggle,%lostteamnick2),%counter4,8,32)
      var %msgaddloser2 = %lostteamnick2 lost %counter4 teamers ::Elo : $gettok(%retelo,4,32)
      hsave -os jiggle jiggle.txt
      ;add to loser2 end--------------------------------------% 
      msg $chan %msgaddwinner1 %msgaddwinner2 
      msg $chan %msgaddloser1 %msgaddloser2
      write -a logforscores.txt $fulldate :: Confirmed :: %msgaddwinner1 ::  %msgaddwinner2  :: %msgaddloser1 :: %msgaddloser2
      ;22team Section Confirm End-----------------------------------------------------%
    timer2 20 1 echo -s timer running  } 
  }
  ;33team Section Confirm Begin-----------------------------------------------------%
  elseif (33team == %gametype33team) && ((%lostteamnick1 == $remove($nick,-tk)) || (%lostteamnick2 == $remove($nick,-tk)) || (%lostteamnick3 == $remove($nick,-tk))) { 
    if ($timer(2).reps > 0) {      
    msg $chan Please wait 20 sec. Procedure in progress... }
    else { 
      ;zugreifen auf Alias und Werte von $BerechneElo33team in variable %retelo zuweisen
      var %retelo = $BerechneElo33team(%winteamnick1,%winteamnick2,%winteamnick3,%lostteamnick1,%lostteamnick2,%lostteamnick3)

      ;abspeichern des alias $BerechneElo33team in Haschtable fur gewinner und verlierer mittles $gettok(%retelo,x,y)
      hadd jiggle %winteamnick1 $puttok($hget(jiggle,%winteamnick1),$gettok(%retelo,1,32),9,32)
      hadd jiggle %winteamnick2 $puttok($hget(jiggle,%winteamnick2),$gettok(%retelo,2,32),9,32)
      hadd jiggle %winteamnick3 $puttok($hget(jiggle,%winteamnick3),$gettok(%retelo,3,32),9,32)
      hadd jiggle %lostteamnick1 $puttok($hget(jiggle,%lostteamnick1),$gettok(%retelo,4,32),9,32)
      hadd jiggle %lostteamnick2 $puttok($hget(jiggle,%lostteamnick2),$gettok(%retelo,5,32),9,32)
      hadd jiggle %lostteamnick3 $puttok($hget(jiggle,%lostteamnick3),$gettok(%retelo,6,32),9,32)

      ;add to winner1 beginn-----------------------------------%
      var %counter1 = $calc($gettok($hget(jiggle,%winteamnick1),7,32) + 1)
      hadd jiggle %winteamnick1 $puttok($hget(jiggle,%winteamnick1),%counter1,7,32)
      var %msgaddwinner1 = %winteamnick1 u won already %counter1 teamers :: Elo : $gettok(%retelo,1,32)
      ;add to winner1 end--------------------------------------%
      ;add to winner2 beginn-----------------------------------%
      var %counter2 = $calc($gettok($hget(jiggle,%winteamnick2),7,32) + 1)
      hadd jiggle %winteamnick2 $puttok($hget(jiggle,%winteamnick2),%counter2,7,32)
      var %msgaddwinner2 = %winteamnick2 u won already %counter2 teamers :: Elo : $gettok(%retelo,2,32)
      ;add to winner2 end--------------------------------------%
      ;add to winner3 beginn-----------------------------------%
      var %counter3 = $calc($gettok($hget(jiggle,%winteamnick3),7,32) + 1)
      hadd jiggle %winteamnick3 $puttok($hget(jiggle,%winteamnick3),%counter3,7,32)
      var %msgaddwinner3 = %winteamnick3 u won already %counter3 teamers :: Elo : $gettok(%retelo,3,32)
      ;add to winner3 end--------------------------------------%
      ;add to loser1 begin------------------------------------%
      var %counter4 = $calc($gettok($hget(jiggle,%lostteamnick1),8,32) + 1)
      hadd jiggle %lostteamnick1 $puttok($hget(jiggle,%lostteamnick1),%counter4,8,32)
      var %msgaddloser1 = %lostteamnick1 u lost %counter4 teamers :: Elo : $gettok(%retelo,4,32)
      ;add to loser1 end--------------------------------------%
      ;add to loser2 begin------------------------------------%
      var %counter5 = $calc($gettok($hget(jiggle,%lostteamnick2),8,32) + 1)
      hadd jiggle %lostteamnick2 $puttok($hget(jiggle,%lostteamnick2),%counter5,8,32)
      var %msgaddloser2 = %lostteamnick2 u lost %counter5 teamers :: Elo : $gettok(%retelo,5,32)
      ;add to loser2 end--------------------------------------%
      ;add to loser3 begin------------------------------------%
      var %counter6 = $calc($gettok($hget(jiggle,%lostteamnick3),8,32) + 1)
      hadd jiggle %lostteamnick3 $puttok($hget(jiggle,%lostteamnick3),%counter6,8,32)
      var %msgaddloser3 = %lostteamnick3 u lost %counter6 teamers :: Elo : $gettok(%retelo,6,32)
      hsave -os jiggle jiggle.txt
      ;add to loser3 end--------------------------------------% 
      msg $chan %msgaddwinner1 %msgaddwinner2 %msgaddwinner3 
      msg $chan %msgaddloser1 %msgaddloser2 %msgaddloser3
      write -a logforscores.txt $fulldate :: Confirmed :: %msgaddwinner1 :: %msgaddwinner2 :: %msgaddwinner3 :: %msgaddloser1 :: %msgaddloser2 :: %msgaddloser3
      ;33team Section Confirm End-----------------------------------------------------%
    timer2 20 1 echo -s timer running  } 
  }
  ;44team Section Confirm Begin---------------------------------------------------%
  elseif (44team == %gametype44team) && ((%lostteamnick1 == $remove($nick,-tk)) || (%lostteamnick2 == $remove($nick,-tk)) || (%lostteamnick3 == $remove($nick,-tk)) || (%lostteamnick4 == $remove($nick,-tk))) { 
    if ($timer(2).reps > 0) {      
    msg $chan Please wait 20 sec. Procedure in progress... }
    else { 
      ;zugreifen auf Alias und Werte von $BerechneElo22team in variable %retelo zuweisen
      var %retelo = $BerechneElo44team(%winteamnick1,%winteamnick2,%winteamnick3,%winteamnick4,%lostteamnick1,%lostteamnick2,%lostteamnick3,%lostteamnick4)

      ;abspeichern des alias $BerechneElo22team in Haschtable fur gewinner und verlierer mittles $gettok(%retelo,x,y)
      hadd jiggle %winteamnick1 $puttok($hget(jiggle,%winteamnick1),$gettok(%retelo,1,32),9,32)
      hadd jiggle %winteamnick2 $puttok($hget(jiggle,%winteamnick2),$gettok(%retelo,2,32),9,32)
      hadd jiggle %winteamnick3 $puttok($hget(jiggle,%winteamnick3),$gettok(%retelo,3,32),9,32)
      hadd jiggle %winteamnick4 $puttok($hget(jiggle,%winteamnick4),$gettok(%retelo,4,32),9,32)
      hadd jiggle %lostteamnick1 $puttok($hget(jiggle,%lostteamnick1),$gettok(%retelo,5,32),9,32)
      hadd jiggle %lostteamnick2 $puttok($hget(jiggle,%lostteamnick2),$gettok(%retelo,6,32),9,32)
      hadd jiggle %lostteamnick3 $puttok($hget(jiggle,%lostteamnick3),$gettok(%retelo,7,32),9,32)
      hadd jiggle %lostteamnick4 $puttok($hget(jiggle,%lostteamnick4),$gettok(%retelo,8,32),9,32)

      ;add to winner1 beginn-----------------------------------%
      var %counter1 = $calc($gettok($hget(jiggle,%winteamnick1),7,32) + 1)
      hadd jiggle %winteamnick1 $puttok($hget(jiggle,%winteamnick1),%counter1,7,32)
      var %msgaddwinner1 = %winteamnick1 u won already %counter1 teamers :: Elo : $gettok(%retelo,1,32)
      ;add to winner1 end--------------------------------------%
      ;add to winner2 beginn-----------------------------------%
      var %counter2 = $calc($gettok($hget(jiggle,%winteamnick2),7,32) + 1)
      hadd jiggle %winteamnick2 $puttok($hget(jiggle,%winteamnick2),%counter2,7,32)
      var %msgaddwinner2 = %winteamnick2 u won already %counter2 teamers :: Elo : $gettok(%retelo,2,32)
      ;add to winner2 end--------------------------------------%
      ;add to winner3 beginn-----------------------------------%
      var %counter3 = $calc($gettok($hget(jiggle,%winteamnick3),7,32) + 1)
      hadd jiggle %winteamnick3 $puttok($hget(jiggle,%winteamnick3),%counter3,7,32)
      var %msgaddwinner3 = %winteamnick3 u won already %counter3 teamers :: Elo : $gettok(%retelo,3,32)
      ;add to winner3 end--------------------------------------%
      ;add to winner4 beginn-----------------------------------%
      var %counter4 = $calc($gettok($hget(jiggle,%winteamnick4),7,32) + 1)
      hadd jiggle %winteamnick4 $puttok($hget(jiggle,%winteamnick4),%counter4,7,32)
      var %msgaddwinner4 = %winteamnick4 u won already %counter4 teamers :: Elo : $gettok(%retelo,4,32)
      ;add to winner4 end--------------------------------------%
      ;add to loser1 begin------------------------------------%
      var %counter5 = $calc($gettok($hget(jiggle,%lostteamnick1),8,32) + 1)
      hadd jiggle %lostteamnick1 $puttok($hget(jiggle,%lostteamnick1),%counter5,8,32)
      var %msgaddloser1 = %lostteamnick1 u lost %counter5 teamers :: Elo : $gettok(%retelo,5,32)
      ;add to loser1 end--------------------------------------%
      ;add to loser2 begin------------------------------------%
      var %counter6 = $calc($gettok($hget(jiggle,%lostteamnick2),8,32) + 1)
      hadd jiggle %lostteamnick2 $puttok($hget(jiggle,%lostteamnick2),%counter6,8,32)
      var %msgaddloser2 = %lostteamnick2 u lost %counter5 teamers ::  Elo : $gettok(%retelo,6,32)
      ;add to loser2 end--------------------------------------%
      ;add to loser3 begin------------------------------------%
      var %counter7 = $calc($gettok($hget(jiggle,%lostteamnick3),8,32) + 1)
      hadd jiggle %lostteamnick3 $puttok($hget(jiggle,%lostteamnick3),%counter7,8,32)
      var %msgaddloser3 = %lostteamnick3 u lost %counter7 teamers :: Elo : $gettok(%retelo,7,32)
      ;add to loser4 begin------------------------------------%
      var %counter8 = $calc($gettok($hget(jiggle,%lostteamnick4),8,32) + 1)
      hadd jiggle %lostteamnick4 $puttok($hget(jiggle,%lostteamnick4),%counter8,8,32)
      var %msgaddloser4 = %lostteamnick4 u lost %counter8 teamers :: Elo : $gettok(%retelo,8,32)
      hsave -os jiggle jiggle.txt
      ;add to loser4 end--------------------------------------%
      msg $chan %msgaddwinner1 %msgaddwinner2 %msgaddwinner3 %msgaddwinner4
      msg $chan %msgaddloser1 %msgaddloser2 %msgaddloser3 %msgaddloser4
      write -a logforscores.txt $fulldate :: Confirmed :: %msgaddwinner1 :: %msgaddwinner2 :: %msgaddwinner3 ::  %msgaddwinner4 :: %msgaddloser1 :: %msgaddloser2 :: %msgaddloser3 :: %msgaddloser4
      ;44team Section Confirm End-----------------------------------------------------%
    timer2 20 1 echo -s timer running  } 
  }
  else { msg $chan No permission $remove($nick,-tk) or nothing to confirm }
}

;§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§

; if type !top10 + gametype it shows the top 10 players rated by Elo
on *:TEXT:!top10*:#:{
  if ( $2 == duel ) {
    var %entries = $hget(jiggle, 0).item
    var %i = 1
    window -sh @bohne
    while ( %i <= %entries ) {  var %alldata = $hget(jiggle,%i).data 
      var %partialdata = $base($gettok(%alldata,3,32),10,10,4) $gettok(%alldata,1,32) $gettok(%alldata,2,32) $round($calc(($gettok(%alldata,1,32)) / ($calc(($gettok(%alldata,1,32)) + ($gettok(%alldata,2,32)))) * 100 ),0) $hget(jiggle,%i).item 
      aline @bohne %partialdata
      inc %i 
    }
    var %total = $line(@bohne,0)
    var %t = %total
    var %k = 0
    while ( %k <= 9 ) {
      var %scores $line(@bohne,%t) | dec %t | inc %k
    msg $chan %k = $gettok(%scores,5,32) : Elo= $gettok(%scores,1,32) :  Wins = $gettok(%scores,2,32) : Loss = $gettok(%scores,3,32) : % = $gettok(%scores,4,32) }
    msg $chan EntireEntries $line(@bohne,0)
    window -c @bohne
  }
  elseif ( $2 == ffa ) {
    var %entries = $hget(jiggle, 0).item
    var %i = 1
    window -s @bohne
    while ( %i <= %entries ) {  var %alldata = $hget(jiggle,%i).data 
      var %partialdata = $base($gettok(%alldata,6,32),10,10,4) $gettok(%alldata,4,32) $gettok(%alldata,5,32) $round($calc(($gettok(%alldata,4,32)) / ($calc(($gettok(%alldata,4,32)) + ($gettok(%alldata,5,32)))) * 100 ),0) $hget(jiggle,%i).item 
      aline @bohne %partialdata
      inc %i 
    }
    var %total = $line(@bohne,0)
    var %t = %total
    var %k = 0
    while ( %k <= 9 ) {
      var %scores $line(@bohne,%t) | dec %t | inc %k
    msg $chan %k = $gettok(%scores,5,32) : Elo= $gettok(%scores,1,32) :  Wins = $gettok(%scores,2,32) : Loss = $gettok(%scores,3,32) : % = $gettok(%scores,4,32) }
    msg $chan EntireEntries $line(@bohne,0)
    window -c @bohne
  }
  elseif ( $2 == teamer ) {
    var %entries = $hget(jiggle, 0).item
    var %i = 1
    window -s @bohne
    while ( %i <= %entries ) {  var %alldata = $hget(jiggle,%i).data 
      var %partialdata = $base($gettok(%alldata,9,32),10,10,4) $gettok(%alldata,7,32) $gettok(%alldata,8,32) $round($calc(($gettok(%alldata,7,32)) / ($calc(($gettok(%alldata,7,32)) + ($gettok(%alldata,8,32)))) * 100 ),0) $hget(jiggle,%i).item 
      aline @bohne %partialdata
      inc %i 
    }
    var %total = $line(@bohne,0)
    var %t = %total
    var %k = 0
    while ( %k <= 9 ) {
      var %scores $line(@bohne,%t) | dec %t | inc %k
    msg $chan %k = $gettok(%scores,5,32) : Elo= $gettok(%scores,1,32) :  Wins = $gettok(%scores,2,32) : Loss = $gettok(%scores,3,32) : % = $gettok(%scores,4,32) }
    msg $chan EntireEntries $line(@bohne,0)
    window -c @bohne
  }
  else { msg $chan To see the Top 10 of duel ffa or teamer type : " !top10 duel " !top10 ffa " !top10 teamer " }
}

; syntax !rank gametype nickname
on *:TEXT:!rank*:#:{
  if ( $2 == duel ) {
    var %entries = $hget(jiggle, 0).item
    var %i = 1
    window -sh @bohne
    while ( %i <= %entries ) {  var %alldata = $hget(jiggle,%i).data 
      var %partialdata = $base($gettok(%alldata,3,32),10,10,4) $gettok(%alldata,1,32) $gettok(%alldata,2,32) $round($calc(($gettok(%alldata,1,32)) / ($calc(($gettok(%alldata,1,32)) + ($gettok(%alldata,2,32)))) * 100 ),0) $hget(jiggle,%i).item 
      aline @bohne %partialdata
    inc %i  }
    window -h @kraut
    var %total = $line(@bohne,0)
    var %t = %total
    var %k = 0
    while ( %k < %total ) {
      var %scores = $line(@bohne,%t) | dec %t | inc %k
    aline @kraut %k = $gettok(%scores,5,32) : Elo= $gettok(%scores,1,32) :  Wins = $gettok(%scores,2,32) : Loss = $gettok(%scores,3,32) : % = $gettok(%scores,4,32) }
    msg $chan EntireEntries $line(@bohne,0)
    msg $chan $fline(@kraut,* $3 *,1).text 
    window -c @bohne
  window -c @kraut }
  elseif ( $2 == ffa ) {
    var %entries = $hget(jiggle, 0).item
    var %i = 1
    window -sh @bohne
    while ( %i <= %entries ) {  var %alldata = $hget(jiggle,%i).data 
      var %partialdata = $base($gettok(%alldata,6,32),10,10,4) $gettok(%alldata,4,32) $gettok(%alldata,5,32) $round($calc(($gettok(%alldata,4,32)) / ($calc(($gettok(%alldata,4,32)) + ($gettok(%alldata,5,32)))) * 100 ),0) $hget(jiggle,%i).item 
      aline @bohne %partialdata
    inc %i }
    window -h @kraut
    var %total = $line(@bohne,0)
    var %t = %total
    var %k = 0
    while ( %k < %total ) {
      var %scores = $line(@bohne,%t) | dec %t | inc %k
    aline @kraut %k = $gettok(%scores,5,32) : Elo= $gettok(%scores,1,32) :  Wins = $gettok(%scores,2,32) : Loss = $gettok(%scores,3,32) : % = $gettok(%scores,4,32) }
    msg $chan EntireEntries $line(@bohne,0)
    msg $chan $fline(@kraut,* $3 *,1).text 
    window -c @bohne
  window -c @kraut }
  elseif ( $2 == teamer ) {
    var %entries = $hget(jiggle, 0).item
    var %i = 1
    window -sh @bohne
    while ( %i <= %entries ) {  var %alldata = $hget(jiggle,%i).data 
      var %partialdata = $base($gettok(%alldata,9,32),10,10,4) $gettok(%alldata,7,32) $gettok(%alldata,8,32) $round($calc(($gettok(%alldata,7,32)) / ($calc(($gettok(%alldata,7,32)) + ($gettok(%alldata,8,32)))) * 100 ),0) $hget(jiggle,%i).item 
      aline @bohne %partialdata
    inc %i  }
    window -h @kraut
    var %total = $line(@bohne,0)
    var %t = %total
    var %k = 0
    while ( %k < %total ) {
      var %scores = $line(@bohne,%t) | dec %t | inc %k
    aline @kraut %k = $gettok(%scores,5,32) : Elo= $gettok(%scores,1,32) :  Wins = $gettok(%scores,2,32) : Loss = $gettok(%scores,3,32) : % = $gettok(%scores,4,32) }
    msg $chan EntireEntries $line(@bohne,0)
    msg $chan $fline(@kraut,* $3 *,1).text 
    window -c @bohne
  window -c @kraut }
  else { msg $chan To see a rank of a certain player type !rank duel or ffa or teamer and last parameter the nickname } 
}

on *:TEXT:!report*:#:{
  write -a logforscores.txt $fulldate $2- 
  msg $chan $2- :: Is Noticed
}

Comments

Sign in to comment.
Cuddletauren   -  Jan 25, 2014

I would have the need, but this isn't really ELO is it? Is this is a civ4 ranking system? If you're interested in blizzard games, their MMR system would have saved me so much scrolling, and is so much simpler, yet fair, and applies to some of the most popular games out there, that's based on my assumption that this it not actually ELO?

SexIsBadToTheBone  -  Feb 06, 2014

the scriptcode calculate the results with this formula found on this website : http://de.wikipedia.org/wiki/Elo-Zahl or http://en.wikipedia.org/wiki/Elo_rating_system
only thing whats missing is the draw situation so all oponnents gets a "half" point, is not implemented.
the script is designed for the need of civilization 4 but the formula is normally used in chess. for simplification (the script follows not the official fide http://de.wikipedia.org/wiki/FIDE rules ) there are no "classes", all player starts with same amount of point so unfortunally u have a valide result first after abouts 30th till 50th games. there are some more accommodations in this script to simplify it but in basic it rates the strength of players that is the request of ELO

Sign in to comment

Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.