Z tej całej pracy nad swoimi serwerem w wolnych chwilach rozluźniam się pisząc bota do najnowszej Tibii w C++. Ma ktoś propozycje, co bot ma mieć? Aktualnie wprowadziłem język skryptowy LUA i można sobie zaprogramować już łażenie między lokacjami, później zrobię możliwość atakowania w skrypcie danego celu.
Bot NIE MA TRYBU GRAFICZNEGO, całość jest w konsoli, a bot jest całkowicie obsługiwany przez skrypt LUA w pliku scripts.lua.
Funkcje LUA, które ma "bot" na dzień dzisiejszy:
getUid() -> player.id
getLevel() -> player.level
getHealth() -> player.hp
getMaxHealth() -> player.maxhp
getMana() -> player.mp
getMaxMana() -> player.maxmp
getPosX() -> player.x
getPosY() -> player.y
getPosZ() -> player.z
getAttackedCreature() -> player.attackedcreature
getBattleList()
doSay(word) -> player.say(text)
doAttack(creatureId) -> player.attack(creatureId)
useItem(itemid, x, y, z) -> player.use(itemid, x, y, z)
useItemOn(itemid, x, y, z, tileid) -> player.useEx(itemid, x, y, z, tileid)
executeGoto(x, y, z) -> player.goto(x, y, z)
executeLogout() -> player.logout()
getLevel() -> player.level
getHealth() -> player.hp
getMaxHealth() -> player.maxhp
getMana() -> player.mp
getMaxMana() -> player.maxmp
getPosX() -> player.x
getPosY() -> player.y
getPosZ() -> player.z
getAttackedCreature() -> player.attackedcreature
getBattleList()
doSay(word) -> player.say(text)
doAttack(creatureId) -> player.attack(creatureId)
useItem(itemid, x, y, z) -> player.use(itemid, x, y, z)
useItemOn(itemid, x, y, z, tileid) -> player.useEx(itemid, x, y, z, tileid)
executeGoto(x, y, z) -> player.goto(x, y, z)
executeLogout() -> player.logout()


Taki o, możliwy skrypt, który wyświetla listę istot widocznych w battle list tak jak widać na screenach (będzie później przydatne do wybrania atakowanego celu w skrypcie cavebota):
Kod :
local lista = getBattleList()
for n = 1, #lista do
if(lista[n].visible > 0 and lista[n].z == getPosZ())then
print("HP: " ..lista[n].hp.. "% Nick: " ..lista[n].name.. " (" ..lista[n].x.. ", " ..lista[n].y.. ", " ..lista[n].z.. ")")
end
end
Kod :
if(getPosX() == 96 and getPosY() == 233)then
executeGoto(97, 233, 7)
elseif(getPosX() == 97 and getPosY() == 233)then
executeGoto(97, 234, 7)
elseif(getPosX() == 97 and getPosY() == 234)then
executeGoto(96, 234, 7)
elseif(getPosX() == 96 and getPosY() == 234)then
executeGoto(96, 233, 7)
end
Zakładki