From The Mana World
(Add remaining functions our eA supports)
(add more detail, clean up, etc)
Line 6: Line 6:


Login
Login
*Login(...)
*Login(username, password)
*ChangeEmail(...)
*Logout() (TMWServ protocol detail?)
*ChangePassword(...)
*ChangeEmail(email)
*ChangePassword(username, oldPassword, newPassword)
*ChooseServer(serverId)
*ChooseServer(serverId)
*Register(username, password, email)
*Unregister(username, password)


Char
Char
*Connect(...)
*Connect() (eAthena protocol detail)
*ChooseChar(number)
*ChooseChar(number)
*NewChar(...)
*NewChar(name, gender, hairstyle, hair color) (more info can be done by calling the needed dialog and having it call a back end specific function)
*DeleteChar(number, ...)
*DeleteChar(number) (conformation, which is technically needed by eAthena, can be done here using a dialog that calls a back end specific function)


Chat
Chat
*Connect(...)?
*Connect() (TMWServ protocol detail)
*Logout() (TMWServ protocol detail)
*Talk(text)
*Talk(text)
*Me(text)
*Me(text)
*Msg(recipient, text)
*PrivateMsg(recipient, text)
*ChannelList()
*EnterChannel(channelId, password)
*QuitChannel(channelId)
*SendToChannel(channelId, text)
*UserList(channelName)
*SetChannelTopic(channelId, text)
*SetUserMode(channelId, name, mode)
*KickUser(channelId, name)


Map
Map
*Connect(...)
*Connect()
*MapLoaded(mapName?)
*MapLoaded() (eAthena protocol detail?)
*ClientPing(time)
*ClientPing(time) (eAthena protocol detail?)
*Who()
*Who()
*Quit()
*Quit()
Line 32: Line 44:
Being
Being
*Attack(beingId)
*Attack(beingId)
*CharNameRequest - eAthena netcode detail (not public)
*CharNameRequest(beingId) (eAthena protocol detail)


Player
Player
Line 41: Line 53:
*IncStat(statId)
*IncStat(statId)
*DecStat(statId)
*DecStat(statId)
*SendLetter(recipient, text)
*PickUp(floorItemId)
*PickUp(floorItemId)
*SetDirection(direction)
*SetDirection(direction)
Line 54: Line 65:
*UnEquipItem(Item)
*UnEquipItem(Item)
*UseItem(Item)
*UseItem(Item)
*Drop(slotNum, ammount)
*Drop(slotNum, amount)
*Split(slotNum, ammount)
*Split(slotNum, amount)
*OpenStorage()
*CloseStorage()
*ChangeCart(...)
*MoveItem(source, slotId, amount, destination) (handles item movement between inventory, storage, cart, ...)


NPC
NPC
Line 64: Line 79:
*IntegerInput(npcId, value)
*IntegerInput(npcId, value)
*StringIntput(npcId, value)
*StringIntput(npcId, value)
*SendLetter(npcId, recipient, text)


Shop
Shop
Line 97: Line 113:
*Kick(playerId)
*Kick(playerId)
*Chat(text)
*Chat(text)
*PartyMembers()
*Options(...)
*Options(...)
*Message(...)
*Message(...)
Line 108: Line 125:
*Kick(playerId)
*Kick(playerId)
*Chat(text)
*Chat(text)
*ChangeMemberPosition(...)
*MemberList(guildId)
*ChangeMemberPosition(guildId, ...)
*RequestAlliance(guildid, ...)
*RequestAlliance(guildid, ...)
*RequestAllianceReply(response, ...)
*RequestAllianceReply(guildId, response, ...)
*EndAlliance(guildid, ...)
*EndAlliance(guildid, ...)
Storage
*Open()
*Close()
*Store(slotId, ammount)
*Retrieve(slotId, ammount)
*StoreCart(slotId, ammount)
*RetrieveCart(slotId, ammount)
"Cart"
*Put(slotId, ammount)
*Remove(slotId, ammount)
*Change(...)


Admin/GM
Admin/GM

Revision as of 15:08, 29 March 2009

This is my plan for centralizing the net code under the merged client.

First, TMWServ's Net namespace needs to be changed (I vote for TMWserv as the new name). Then a new Net namespace would be created to store references to the specific network back-end needed.

Here are the functions the generic back end needs (organized by type)

Login

  • Login(username, password)
  • Logout() (TMWServ protocol detail?)
  • ChangeEmail(email)
  • ChangePassword(username, oldPassword, newPassword)
  • ChooseServer(serverId)
  • Register(username, password, email)
  • Unregister(username, password)

Char

  • Connect() (eAthena protocol detail)
  • ChooseChar(number)
  • NewChar(name, gender, hairstyle, hair color) (more info can be done by calling the needed dialog and having it call a back end specific function)
  • DeleteChar(number) (conformation, which is technically needed by eAthena, can be done here using a dialog that calls a back end specific function)

Chat

  • Connect() (TMWServ protocol detail)
  • Logout() (TMWServ protocol detail)
  • Talk(text)
  • Me(text)
  • PrivateMsg(recipient, text)
  • ChannelList()
  • EnterChannel(channelId, password)
  • QuitChannel(channelId)
  • SendToChannel(channelId, text)
  • UserList(channelName)
  • SetChannelTopic(channelId, text)
  • SetUserMode(channelId, name, mode)
  • KickUser(channelId, name)

Map

  • Connect()
  • MapLoaded() (eAthena protocol detail?)
  • ClientPing(time) (eAthena protocol detail?)
  • Who()
  • Quit()

Being

  • Attack(beingId)
  • CharNameRequest(beingId) (eAthena protocol detail)

Player

  • (anything?)

LocalPlayer

  • Emote(emoteId)
  • IncStat(statId)
  • DecStat(statId)
  • PickUp(floorItemId)
  • SetDirection(direction)
  • SetDestination(x, y, direction)
  • Sit()
  • Respawn()
  • IgnorePlayer(playerID, ignore)
  • IgnoreAll(ignore)

Inventory

  • EquipItem(Item)
  • UnEquipItem(Item)
  • UseItem(Item)
  • Drop(slotNum, amount)
  • Split(slotNum, amount)
  • OpenStorage()
  • CloseStorage()
  • ChangeCart(...)
  • MoveItem(source, slotId, amount, destination) (handles item movement between inventory, storage, cart, ...)

NPC

  • Talk(npcId)
  • NextDialog(npcId)
  • CloseDialog(npcId)
  • ListInput(npcId, value)
  • IntegerInput(npcId, value)
  • StringIntput(npcId, value)
  • SendLetter(npcId, recipient, text)

Shop

  • Start(beingId)
  • Buy(beingId)
  • Sell(beingId)
  • BuyItem(beingId, itemId, ammount)
  • SellItem(beingId, itemId, ammount)
  • End(beingId)

Skill

  • Up(skillId)
  • Use(skillId, level, target)
  • Use(skillId, level, x, y)
  • Use(skillId, map)

Trade

  • Request(beingId)
  • Respond(accept)
  • AddItem(slotNum, ammount)
  • RemoveItem(slotNum, ammount)
  • SetMoney(ammount)
  • Confirm() (eAthena trade complete)
  • Finish() (eAthena trade OK)
  • Cancel()

Party

  • Create()
  • Join(partyId)
  • Invite(playerId)
  • InviteResponse(requestId?, response)
  • Leave()
  • Kick(playerId)
  • Chat(text)
  • PartyMembers()
  • Options(...)
  • Message(...)

Guild

  • Create()
  • Join(guildId)
  • Invite(playerId)
  • InviteResponse(requestId?, response)
  • Leave()
  • Kick(playerId)
  • Chat(text)
  • MemberList(guildId)
  • ChangeMemberPosition(guildId, ...)
  • RequestAlliance(guildid, ...)
  • RequestAllianceReply(guildId, response, ...)
  • EndAlliance(guildid, ...)

Admin/GM

  • Announce(text)
  • LocalAnnounce(text)
  • Hide(hide)
  • Kick(id)
  • Kick(name)
  • Ban(id)
  • Ban(name)
  • MutePlayer(playerId, type, limit)
  • ResetPlayer(...)
  • WarpToPlayer(...)
  • RecallPlayer(...)
  • SpawnMonster(...)
  • CreateItem(...)
  • ...
  • GMCommand(...)?

Unsorted eAthena (names from parse function names)

  • RemoveOption
  • GuildCheckMaster
  • GuildRequestInfo
  • GuildRequestEmblem
  • GuildChangeEmplem
  • GuildBreak
  • GuildChangePositionInfo
  • GuildChangeNotice
  • ItemIdentify
  • UseCard
  • InsertCard
  • GuildOpposition
  • SolveCharName
  • AutoSpell
  • GMReqNoChatCount
  • sn_doridori
  • CreateParty2?
  • sn_explosionspirits