Few minor fixes here and there:

* Fixed miniwindow cancelling (sorry Summ! :D)
* Fixed pathFind to check floor change tiles
* Fixed buying/selling stackable items in pv < 860
* Added force walk to the first step of auto walking for open tibia
This commit is contained in:
BeniS 2013-01-18 18:27:29 +13:00
parent 6ad7269e5a
commit 1500c1d2f2
7 changed files with 38 additions and 14 deletions

View File

@ -29,8 +29,8 @@ function init()
g_ui.importStyle('styles/countwindow.otui')
connect(g_game, {
onGameStart = show,
onGameEnd = hide,
onGameStart = onGameStart,
onGameEnd = onGameEnd,
onLoginAdvice = onLoginAdvice
}, true)
@ -98,8 +98,8 @@ end
function terminate()
disconnect(g_game, {
onGameStart = show,
onGameEnd = hide,
onGameStart = onGameStart,
onGameEnd = onGameEnd,
onLoginAdvice = onLoginAdvice
})
@ -109,6 +109,19 @@ function terminate()
gameRootPanel:destroy()
end
function onGameStart()
show()
-- open tibia has delay in auto walking
if not g_game.isOfficialTibia() then
g_game.enableFeature(GameForceFirstAutoWalkStep)
end
end
function onGameEnd()
hide()
end
function show()
connect(g_app, { onClose = tryExit })
logoutButton:show()

View File

@ -85,13 +85,13 @@ function onGameEditText(id, itemId, maxLength, text, writter, time)
end
okButton.onClick = doneFunc
cancelButton.onClick = destroyWindows
cancelButton.onClick = destroy
if not writeable then
textWindow.onEnter = doneFunc
end
textWindow.onEscape = destroyWindows
textWindow.onEscape = destroy
table.insert(windows, textWindow)
end
@ -121,10 +121,10 @@ function onGameEditList(id, doorId, text)
end
okButton.onClick = doneFunc
cancelButton.onClick = destroyWindows
cancelButton.onClick = destroy
textWindow.onEnter = doneFunc
textWindow.onEscape = destroyWindows
textWindow.onEscape = destroy
table.insert(windows, textWindow)
end

View File

@ -77,6 +77,7 @@ GameBlueNpcNameColor = 33
GameDiagonalAnimatedText = 34
GameLoginPending = 35
GameNewSpeedLaw = 36
GameForceFirstAutoWalkStep = 37
TextColors = {
red = '#f55e5e', --'#c83200'

View File

@ -347,6 +347,7 @@ namespace Otc
GameDiagonalAnimatedText = 34,
GameLoginPending = 35,
GameNewSpeedLaw = 36,
GameForceFirstAutoWalkStep = 37,
// 51-100 reserved to be defined in lua
LastGameFeature = 101
};
@ -363,7 +364,8 @@ namespace Otc
PathFindAllowNullTiles = 1,
PathFindAllowCreatures = 2,
PathFindAllowNonPathable = 4,
PathFindAllowNonWalkable = 8
PathFindAllowNonWalkable = 8,
PathFindAllowChangeFloor = 16
};
enum AutomapFlags

View File

@ -619,13 +619,17 @@ void Game::autoWalk(std::vector<Otc::Direction> dirs)
if(isFollowing())
cancelFollow();
Otc::Direction direction = dirs.front();
auto it = dirs.begin();
Otc::Direction direction = *it;
if(m_localPlayer->canWalk(direction)) {
TilePtr toTile = g_map.getTile(m_localPlayer->getPosition().translatedToDirection(direction));
if(toTile && toTile->isWalkable() && !m_localPlayer->isAutoWalking()) {
m_localPlayer->preWalk(direction);
//forceWalk(direction);
//dirs.erase(it);
if(getFeature(Otc::GameForceFirstAutoWalkStep)) {
forceWalk(direction);
dirs.erase(it);
}
}
}

View File

@ -210,7 +210,9 @@ int Item::getSubType()
{
if(isSplash() || isFluidContainer())
return m_countOrSubType;
if(g_game.getProtocolVersion() >= 860)
return 0;
return 1;
}
int Item::getCount()

View File

@ -600,7 +600,7 @@ std::tuple<std::vector<Otc::Direction>, Otc::PathFindResult> Map::findPath(const
but it is breaking normal path finding.
*/
if(!(flags & Otc::PathFindAllowNullTiles) && !tile)
walkFactor = 2.0f;
walkFactor = 3.0f;
if(tile) {
if(!(flags & Otc::PathFindAllowCreatures) && tile->hasCreature())
continue;
@ -608,6 +608,8 @@ std::tuple<std::vector<Otc::Direction>, Otc::PathFindResult> Map::findPath(const
continue;
if(!(flags & Otc::PathFindAllowNonWalkable) && !tile->isWalkable())
continue;
if(!(flags & Otc::PathFindAllowChangeFloor) && tile->changesFloor())
continue;
}
}