mirror of
				https://github.com/OTCv8/otclientv8.git
				synced 2025-10-31 10:56:24 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			149 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			149 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| unjustifiedPointsWindow = nil
 | |
| unjustifiedPointsButton = nil
 | |
| contentsPanel = nil
 | |
| 
 | |
| openPvpSituationsLabel = nil
 | |
| currentSkullWidget = nil
 | |
| skullTimeLabel = nil
 | |
| 
 | |
| dayProgressBar = nil
 | |
| weekProgressBar = nil
 | |
| monthProgressBar = nil
 | |
| 
 | |
| daySkullWidget = nil
 | |
| weekSkullWidget = nil
 | |
| monthSkullWidget = nil
 | |
| 
 | |
| function init()
 | |
|   connect(g_game, { onGameStart = online,
 | |
|                     onUnjustifiedPointsChange = onUnjustifiedPointsChange,
 | |
|                     onOpenPvpSituationsChange = onOpenPvpSituationsChange })
 | |
|   connect(LocalPlayer, { onSkullChange = onSkullChange } )
 | |
| 
 | |
|   unjustifiedPointsButton = modules.client_topmenu.addRightGameToggleButton('unjustifiedPointsButton',
 | |
|     tr('Unjustified Points'), '/images/topbuttons/unjustifiedpoints', toggle)
 | |
|   unjustifiedPointsButton:setOn(true)
 | |
|   unjustifiedPointsButton:hide()
 | |
| 
 | |
|   unjustifiedPointsWindow = g_ui.loadUI('unjustifiedpoints', modules.game_interface.getRightPanel())
 | |
|   unjustifiedPointsWindow:disableResize()
 | |
|   unjustifiedPointsWindow:setup()
 | |
| 
 | |
|   contentsPanel = unjustifiedPointsWindow:getChildById('contentsPanel')
 | |
| 
 | |
|   openPvpSituationsLabel = contentsPanel:getChildById('openPvpSituationsLabel')
 | |
|   currentSkullWidget = contentsPanel:getChildById('currentSkullWidget')
 | |
|   skullTimeLabel = contentsPanel:getChildById('skullTimeLabel')
 | |
| 
 | |
|   dayProgressBar = contentsPanel:getChildById('dayProgressBar')
 | |
|   weekProgressBar = contentsPanel:getChildById('weekProgressBar')
 | |
|   monthProgressBar = contentsPanel:getChildById('monthProgressBar')
 | |
|   daySkullWidget = contentsPanel:getChildById('daySkullWidget')
 | |
|   weekSkullWidget = contentsPanel:getChildById('weekSkullWidget')
 | |
|   monthSkullWidget = contentsPanel:getChildById('monthSkullWidget')
 | |
| 
 | |
|   if g_game.isOnline() then
 | |
|     online()
 | |
|   end
 | |
| end
 | |
| 
 | |
| function terminate()
 | |
|   disconnect(g_game, { onGameStart = online,
 | |
|                        onUnjustifiedPointsChange = onUnjustifiedPointsChange,
 | |
|                        onOpenPvpSituationsChange = onOpenPvpSituationsChange })
 | |
|   disconnect(LocalPlayer, { onSkullChange = onSkullChange } )
 | |
| 
 | |
|   unjustifiedPointsWindow:destroy()
 | |
|   unjustifiedPointsButton:destroy()
 | |
| end
 | |
| 
 | |
| function onMiniWindowClose()
 | |
|   unjustifiedPointsButton:setOn(false)
 | |
| end
 | |
| 
 | |
| function toggle()
 | |
|   if unjustifiedPointsButton:isOn() then
 | |
|     unjustifiedPointsWindow:close()
 | |
|     unjustifiedPointsButton:setOn(false)
 | |
|   else
 | |
|     unjustifiedPointsWindow:open()
 | |
|     unjustifiedPointsButton:setOn(true)
 | |
|   end
 | |
| end
 | |
| 
 | |
| function online()
 | |
|   if g_game.getFeature(GameUnjustifiedPoints) then
 | |
|     unjustifiedPointsButton:show()
 | |
|   else
 | |
|     unjustifiedPointsButton:hide()
 | |
|     unjustifiedPointsWindow:close()
 | |
|   end
 | |
| 
 | |
|   refresh()
 | |
| end
 | |
| 
 | |
| function refresh()
 | |
|   local localPlayer = g_game.getLocalPlayer()
 | |
| 
 | |
|   local unjustifiedPoints = g_game.getUnjustifiedPoints()
 | |
|   onUnjustifiedPointsChange(unjustifiedPoints)
 | |
| 
 | |
|   onSkullChange(localPlayer, localPlayer:getSkull())
 | |
|   onOpenPvpSituationsChange(g_game.getOpenPvpSituations())
 | |
| end
 | |
| 
 | |
| function onSkullChange(localPlayer, skull)
 | |
|   if not localPlayer:isLocalPlayer() then return end
 | |
| 
 | |
|   if skull == SkullRed or skull == SkullBlack then
 | |
|     currentSkullWidget:setIcon(getSkullImagePath(skull))
 | |
|     currentSkullWidget:setTooltip('Remaining skull time')
 | |
|   else
 | |
|     currentSkullWidget:setIcon('')
 | |
|     currentSkullWidget:setTooltip('You have no skull')
 | |
|   end
 | |
| 
 | |
|   daySkullWidget:setIcon(getSkullImagePath(getNextSkullId(skull)))
 | |
|   weekSkullWidget:setIcon(getSkullImagePath(getNextSkullId(skull)))
 | |
|   monthSkullWidget:setIcon(getSkullImagePath(getNextSkullId(skull)))
 | |
| end
 | |
| 
 | |
| function onOpenPvpSituationsChange(amount)
 | |
|   openPvpSituationsLabel:setText(amount)
 | |
| end
 | |
| 
 | |
| local function getColorByKills(kills)
 | |
|   if kills < 2 then
 | |
|     return 'red'
 | |
|   elseif kills < 3 then
 | |
|     return 'yellow'
 | |
|   end
 | |
| 
 | |
|   return 'green'
 | |
| end
 | |
| 
 | |
| function onUnjustifiedPointsChange(unjustifiedPoints)
 | |
|   if unjustifiedPoints.skullTime == 0 then
 | |
|     skullTimeLabel:setText('No skull')
 | |
|     skullTimeLabel:setTooltip('You have no skull')
 | |
|   else
 | |
|     skullTimeLabel:setText(unjustifiedPoints.skullTime .. ' days')
 | |
|     skullTimeLabel:setTooltip('Remaining skull time')
 | |
|   end
 | |
| 
 | |
|   dayProgressBar:setValue(unjustifiedPoints.killsDay, 0, 100)
 | |
|   dayProgressBar:setBackgroundColor(getColorByKills(unjustifiedPoints.killsDayRemaining))
 | |
|   dayProgressBar:setTooltip(string.format('Unjustified points gained during the last 24 hours.\n%i kill%s left.', unjustifiedPoints.killsDayRemaining, (unjustifiedPoints.killsDayRemaining == 1 and '' or 's')))
 | |
|   dayProgressBar:setText(string.format('%i kill%s left',  unjustifiedPoints.killsDayRemaining, (unjustifiedPoints.killsDayRemaining == 1 and '' or 's')))
 | |
| 
 | |
|   weekProgressBar:setValue(unjustifiedPoints.killsWeek, 0, 100)
 | |
|   weekProgressBar:setBackgroundColor(getColorByKills(unjustifiedPoints.killsWeekRemaining))
 | |
|   weekProgressBar:setTooltip(string.format('Unjustified points gained during the last 7 days.\n%i kill%s left.', unjustifiedPoints.killsWeekRemaining, (unjustifiedPoints.killsWeekRemaining == 1 and '' or 's')))
 | |
|   weekProgressBar:setText(string.format('%i kill%s left',  unjustifiedPoints.killsWeekRemaining, (unjustifiedPoints.killsWeekRemaining == 1 and '' or 's')))
 | |
| 
 | |
|   monthProgressBar:setValue(unjustifiedPoints.killsMonth, 0, 100)
 | |
|   monthProgressBar:setBackgroundColor(getColorByKills(unjustifiedPoints.killsMonthRemaining))
 | |
|   monthProgressBar:setTooltip(string.format('Unjustified points gained during the last 30 days.\n%i kill%s left.', unjustifiedPoints.killsMonthRemaining, (unjustifiedPoints.killsMonthRemaining == 1 and '' or 's')))
 | |
|   monthProgressBar:setText(string.format('%i kill%s left',  unjustifiedPoints.killsMonthRemaining, (unjustifiedPoints.killsMonthRemaining == 1 and '' or 's')))
 | |
| end
 | 
