addon to show walk ping

This commit is contained in:
Eduardo Bart 2012-01-09 04:46:44 -02:00
parent 81e378cc22
commit b00076bcb9
8 changed files with 56 additions and 14 deletions

2
TODO
View File

@ -101,3 +101,5 @@ attack while walking cancels the walk
if a spell is used while pressing arrows keys the walk is canceled and it doesnt starts walking again if a spell is used while pressing arrows keys the walk is canceled and it doesnt starts walking again
game map text message boxes is not displayed like tibia game map text message boxes is not displayed like tibia
name/shields doesnt follow the creature when walking on parcels name/shields doesnt follow the creature when walking on parcels
hotkeys wont work with caps lock
hotkeys works while windows are locked, it shouldnt

View File

@ -0,0 +1,27 @@
PingBar = {}
local pingLabel
-- public functions
function PingBar.init()
pingLabel = createWidget('UILabel', rootWidget:recursiveGetChildById('leftButtonsPanel'))
pingLabel:applyStyle({ ['anchors.left'] = 'prev.right',
['anchors.top'] = 'parent.top',
['margin-top'] = 12,
['margin-left'] = 10,
font = 'verdana-11px-rounded',
color = '#FE6500',
width = 120,
height = 16})
end
function PingBar.terminate()
pingLabel:destroy()
end
-- hooked events
local function onGamePingUpdate(ping)
pingLabel:setText('Walk Ping: ' .. ping .. ' ms')
end
connect(Game, { onWalkPingUpdate = onGamePingUpdate })

View File

@ -0,0 +1,15 @@
Module
name: pingbar
description: Show ping in game
author: OTClient team
website: https://github.com/edubart/otclient
autoLoad: true
autoLoadPriority: 1000
onLoad: |
require 'pingbar'
PingBar.init()
onUnload: |
PingBar.terminate()

View File

@ -5,7 +5,7 @@ Module
website: https://github.com/edubart/otclient website: https://github.com/edubart/otclient
autoLoad: true autoLoad: true
autoLoadPriority: 1000 autoLoadPriority: 200
onLoad: | onLoad: |
require 'terminal' require 'terminal'

View File

@ -66,11 +66,11 @@ TopPanel
anchors.top: parent.top anchors.top: parent.top
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
anchors.right: parent.right anchors.right: parent.right
width: 60 width: 70
FrameCounter FrameCounter
id: frameCounter id: frameCounter
anchors.top: parent.top anchors.top: parent.top
anchors.right: prev.left anchors.right: prev.left
margin-top: 8 margin-top: 8
margin-right: 12 margin-right: 5

View File

@ -12,7 +12,7 @@ local SpeakTypes = {
channelWhite = { color = '#FFFFFF' }, channelWhite = { color = '#FFFFFF' },
channelRed = { color = '#F55E5E' }, channelRed = { color = '#F55E5E' },
channelOrange = { color = '#FE6500' }, channelOrange = { color = '#FE6500' },
private = { color = '#FFFF00' }, private = { color = '#5FF7F7' },
playerToNpc = { color = '#9F9DFD' }, playerToNpc = { color = '#9F9DFD' },
broadcast = { color = '#F55E5E' }, broadcast = { color = '#F55E5E' },
privateRed = { color = '#F55E5E' } privateRed = { color = '#F55E5E' }

View File

@ -37,8 +37,7 @@ void Game::loginWorld(const std::string& account, const std::string& password, c
m_online = false; m_online = false;
m_dead = false; m_dead = false;
m_walkFeedback = true; m_walkFeedback = true;
m_ping = 0; m_walkPing = 0;
m_pingTimer.restart();
m_protocolGame = ProtocolGamePtr(new ProtocolGame); m_protocolGame = ProtocolGamePtr(new ProtocolGame);
m_protocolGame->login(account, password, worldHost, (uint16)worldPort, characterName); m_protocolGame->login(account, password, worldHost, (uint16)worldPort, characterName);
} }
@ -77,7 +76,6 @@ void Game::processConnectionError(const boost::system::error_code& error)
void Game::processLogin(const LocalPlayerPtr& localPlayer, int serverBeat) void Game::processLogin(const LocalPlayerPtr& localPlayer, int serverBeat)
{ {
updatePing();
m_localPlayer = localPlayer; m_localPlayer = localPlayer;
m_online = true; m_online = true;
m_serverBeat = serverBeat; m_serverBeat = serverBeat;
@ -148,7 +146,7 @@ void Game::processCreatureMove(const CreaturePtr& creature, const Position& oldP
creature->cancelWalk(); creature->cancelWalk();
} }
*/ */
if(!m_walkFeedback) { if(!m_walkFeedback && creature == m_localPlayer) {
updatePing(); updatePing();
m_walkFeedback = true; m_walkFeedback = true;
} }
@ -183,7 +181,7 @@ void Game::walk(Otc::Direction direction)
m_localPlayer->clientWalk(direction); m_localPlayer->clientWalk(direction);
// ping calculation restarts when the local players try to walk one tile // ping calculation restarts when the local players try to walk one tile
m_pingTimer.restart(); m_walkPingTimer.restart();
switch(direction) { switch(direction) {
case Otc::North: case Otc::North:
@ -388,6 +386,6 @@ bool Game::checkBotProtection()
void Game::updatePing() void Game::updatePing()
{ {
m_ping = m_pingTimer.ticksElapsed(); m_walkPing = m_walkPingTimer.ticksElapsed();
g_lua.callGlobalField("Game", "onPingUpdate", m_ping); g_lua.callGlobalField("Game", "onWalkPingUpdate", m_walkPing);
} }

View File

@ -83,7 +83,7 @@ public:
LocalPlayerPtr getLocalPlayer() { return m_localPlayer; } LocalPlayerPtr getLocalPlayer() { return m_localPlayer; }
ProtocolGamePtr getProtocolGame() { return m_protocolGame; } ProtocolGamePtr getProtocolGame() { return m_protocolGame; }
int getProtocolVersion() { return PROTOCOL; } int getProtocolVersion() { return PROTOCOL; }
int getPing() { return m_ping; } int getWalkPing() { return m_walkPing; }
private: private:
void updatePing(); void updatePing();
@ -93,8 +93,8 @@ private:
bool m_online; bool m_online;
bool m_dead; bool m_dead;
bool m_walkFeedback; bool m_walkFeedback;
Timer m_pingTimer; Timer m_walkPingTimer;
int m_ping; int m_walkPing;
int m_serverBeat; int m_serverBeat;
}; };