library BoardSystem initializer init needs AbilityPreload
globals
//Board Variables
private constant string TITLE = "|c00AAAAFFStars|r - Clan Leader Experience"
private constant real TIME = 12.
constant integer XP_ASSIMILATION = 100//Alien xp: assimilation + 100
constant integer XP_TRADE = 2//Merchant xp: trade +2 per traject, research + 10
constant integer XP_RESEARCH = 10
constant integer XP_INVASION = 100//Military: invasion + 100, research + 10
constant integer XP_STEAL = 10//Pirate xp: merchant unit steal + 10,merchant attack + 1
constant integer XP_ATTACK = 1
constant integer XP_DEATH = 5//Terrorist xp: death + 5
leaderboard Board
//Ranks Variables
integer RankMax
integer array RankReq [50]
string array RankName [50]
string array PlayerRankName [12]
integer array PlayerRankInteger [12]
constant integer RANKDUMMYID = 'o012'
constant integer RANKSPEED = 'S001'
constant integer RANKDAMAGE = 'A00A'
unit array RankDummy [12]
endglobals
private function SetRanksVariables takes nothing returns nothing
local integer i = 0
set RankReq[i]= 0
set RankName[i]="Unknown"
// ***
set i = i + 1
set RankReq[i]= 100
set RankName[i]="Stowaway"
// ***
set i = i + 1
set RankReq[i]= 1000
set RankName[i]="Passenger"
// ***
set i = i + 1
set RankReq[i]= 2000
set RankName[i]="Crew Member"
// ***
set i = i + 1
set RankReq[i]= 3000
set RankName[i]="Petty Officer Third Class"
// ***
set i = i + 1
set RankReq[i]= 4000
set RankName[i]="Petty Officer Second Class"
// ***
set i = i + 1
set RankReq[i]= 6000
set RankName[i]="Petty Officer First Class"
// ***
set i = i + 1
set RankReq[i]= 8000
set RankName[i]="Chief Petty Officer"
// ***
set i = i + 1
set RankReq[i]= 10000
set RankName[i]="Senior Chief Petty Officer"
// ***
set i = i + 1
set RankReq[i]= 12000
set RankName[i]="Master Chief Petty Officer"
// ***
set i = i + 1
set RankReq[i]= 14000
set RankName[i]="Fleet Master Chief Petty Officer"
// ***
set i = i + 1
set RankReq[i]= 16000
set RankName[i]="Master Chief Petty Officer of the Navy"
// ***
set i = i + 1
set RankReq[i]= 18000
set RankName[i]="Midshipman"
// ***
set i = i + 1
set RankReq[i]= 20000
set RankName[i]="Ensign"
// ***
set i = i + 1
set RankReq[i]= 25000
set RankName[i]="Junior GradeLieutenant"
// ***
set i = i + 1
set RankReq[i]= 30000
set RankName[i]="Lieutenant"
// ***
set i = i + 1
set RankReq[i]= 35000
set RankName[i]="Lieutenant Commander"
// ***
set i = i + 1
set RankReq[i]= 40000
set RankName[i]="Commander"
// ***
set i = i + 1
set RankReq[i]= 50000
set RankName[i]="Squad Commander"
// ***
set i = i + 1
set RankReq[i]= 60000
set RankName[i]="Fleet Commander"
// ***
set i = i + 1
set RankReq[i]= 70000
set RankName[i]="Captain"
// ***
set i = i + 1
set RankReq[i]= 80000
set RankName[i]="Squad Captain"
// ***
set i = i + 1
set RankReq[i]= 90000
set RankName[i]="Fleet Captain"
// ***
set i = i + 1
set RankReq[i]= 100000
set RankName[i]="Major"
// ***
set i = i + 1
set RankReq[i]= 120000
set RankName[i]="Colonel"
// ***
set i = i + 1
set RankReq[i]= 140000
set RankName[i]="General"
// ***
set i = i + 1
set RankReq[i]= 160000
set RankName[i]="Fleet General"
// ***
set i = i + 1
set RankReq[i]= 180000
set RankName[i]="Commodore"
// ***
set i = i + 1
set RankReq[i]= 200000
set RankName[i]="Rear Admiral"
// ***
set i = i + 1
set RankReq[i]= 250000
set RankName[i]="Vice Admiral"
// ***
set i = i + 1
set RankReq[i]= 300000
set RankName[i]="Admiral"
// ***
set i = i + 1
set RankReq[i]= 350000
set RankName[i]="Fleet Admiral"
// ***
set i = i + 1
set RankReq[i]= 400000
set RankName[i]="System Leader"
// ***
set i = i + 1
set RankReq[i]= 450000
set RankName[i]="Sector Leader"
// ***
set i = i + 1
set RankReq[i]= 500000
set RankName[i]="Cluster Leader"
// ***
set i = i + 1
set RankReq[i]= 550000
set RankName[i]="Galaxy Leader"
// ***
set i = i + 1
set RankReq[i]= 600000
set RankName[i]="Star Cluster Leader"
// ***
set i = i + 1
set RankReq[i]= 650000
set RankName[i]="Secretary"
// ***
set i = i + 1
set RankReq[i]= 700000
set RankName[i]="Adviser"
// ***
set i = i + 1
set RankReq[i]= 800000
set RankName[i]="High Adviser"
// ***
set i = i + 1
set RankReq[i]= 900000
set RankName[i]="Minister"
// ***
set i = i + 1
set RankReq[i]= 1000000
set RankName[i]="Prime Minister"
// ***
set i = i + 1
set RankReq[i]= 1500000
set RankName[i]="Imperator"
// ***
set RankMax = i
endfunction
function UpdateRank takes player whichPlayer,integer whichXp returns nothing
local integer i = GetPlayerId(whichPlayer)
local integer j = 0
set PlayerRankInteger[i]=PlayerRankInteger[i]+whichXp
loop
exitwhen j > RankMax
if PlayerRankInteger[i]>= RankReq[j] and PlayerRankInteger[i]<RankReq[j+1] then
set PlayerRankName[i] = RankName[j]
if PlayerRankInteger[i]==1 then
call UnitAddAbility(RankDummy[i],RANKSPEED)
call UnitAddAbility(RankDummy[i],RANKDAMAGE)
elseif PlayerRankInteger[i]>1 then
call SetUnitAbilityLevel(RankDummy[i],RANKSPEED,j)
call SetUnitAbilityLevel(RankDummy[i],RANKDAMAGE,j)
endif
call SetPlayerHandicap(whichPlayer,1.00+(j/100))
endif
set j = j + 1
endloop
call LeaderboardSetItemLabel(Board,LeaderboardGetPlayerIndex(Board,whichPlayer),PlayerRankName[i]+" "+GetPlayerName(whichPlayer))
call LeaderboardSetItemValue(Board,LeaderboardGetPlayerIndex(Board,whichPlayer),PlayerRankInteger[i])
call LeaderboardSortItemsBJ(Board,bj_SORTTYPE_SORTBYVALUE,false)
endfunction
private function Initialize takes nothing returns boolean
local integer i = 0
set Board = CreateLeaderboardBJ(bj_FORCE_ALL_PLAYERS, TITLE )
loop
exitwhen i > MAXPLAYER
if GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING then
call LeaderboardAddItemBJ( Player(i),Board,PlayerRankName[i]+" "+GetPlayerName(Player(i)), 0 )
call LeaderboardSetItemStyle(Board,LeaderboardGetPlayerIndex(Board,Player(i)),true,true,false)
endif
set i = i + 1
endloop
return false
endfunction
private function init takes nothing returns nothing
local trigger t = CreateTrigger()
local integer i = 0
call SetRanksVariables()
call AbilityPreload(RANKSPEED)
call AbilityPreload(RANKDAMAGE)
loop
exitwhen i > MAXPLAYER
set PlayerRankName[i] = RankName[0]
set PlayerRankInteger[i] = 0
set i = i + 1
endloop
call TriggerRegisterTimerEventSingle(t,TIME)
call TriggerAddCondition(t,Condition(function Initialize))
endfunction
endlibrary |