Synopsis
This is a TCP client which can connect to Wakfu game servers and interact with them. By default it contains a set of messages and routines to perform authentication and some other basic tasks. It uses the actor pattern and integrates with the Akka framework.
Code example
Market reading actor:
def receive = {
case ServerList(servers, _) =>
sender() ! ServerChoice(servers.find(_.name == "Nox").get)
case CharacterList(characters) =>
sender() ! CharacterChoice(characters.find(_.name == "Derp").get)
case ConnectedToWorld() =>
sender() ! wrap(InteractiveElementActionMessage(12224, 12))
case MarketConsultResultMessage(sales, count) =>
sender() ! wrap(MarketConsultRequestMessage(Array.empty, -1, -1, -1, -1, 10.toShort, lowestMode = false))
become(receiveAndAsk(sales.toList, 10))
}
def receiveAndAsk(entries: List[MarketEntry], start: Int): Receive = {
case MarketConsultResultMessage(sales, count) =>
val next = start + 10
if (next >= count)
handleData(entries ::: sales.toList)
else {
sender() ! wrap(MarketConsultRequestMessage(Array.empty, -1, -1, -1, -1, next.toShort, lowestMode = false))
become(receiveAndAsk(entries ::: sales.toList, next))
}
}
def handleData(data: List[MarketEntry]) = {
// do stuff with data and quit
sender() ! LogOut
}
Running
To use it you need sbt and scala compiler.
The easiest way to check it out is to clone this repository,
provide necessary configuration in example/src/main/resources/application.conf
and run sbt example/run