Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Protocol 12.81 support #192

Merged
merged 6 commits into from Jan 28, 2022
Merged

Protocol 12.81 support #192

merged 6 commits into from Jan 28, 2022

Conversation

nekiro
Copy link
Collaborator

@nekiro nekiro commented Jan 4, 2022

Support for latest TFS version.

It should be backwards compatible, which means swapping to any version < 1281 should also work just fine.

This is not fully done yet.
For example item classes are not present in 1098 dat file, which means we can't check and parse them. (Items like sword, gonna bug out the client)

@nekiro nekiro changed the title 12.81 support Protocol 12.81 support Jan 6, 2022
@mehah
Copy link
Owner

mehah commented Jan 19, 2022

it would be interesting to put other packages, which were placed in this project I worked on,

https://github.com/opentibiabr/otclient

I just don't do it now, because I'm out of time.

@mehah
Copy link
Owner

mehah commented Jan 25, 2022

I did a quick test on the 10.98 protocol to see if there was any incompatibility and unfortunately this error occurred:
image

@mehah mehah merged commit c4345d1 into mehah:main Jan 28, 2022
@nekiro
Copy link
Collaborator Author

nekiro commented Jan 28, 2022

You can also add 1285 to supported versions and it will work just fine too. TFS is now at 12.85, but nothing changed in protocol packets with that version.

https://github.com/mehah/otclient/pull/192/files#diff-a6599a2aad626d52e23826844f82104e6a2d064253cbadb49bf2030702f7800fR58

@nekiro nekiro deleted the 12.81-support branch January 28, 2022 19:07
scopz added a commit that referenced this pull request Jan 30, 2022
scopz added a commit that referenced this pull request Jan 30, 2022
dudantas added a commit that referenced this pull request Nov 17, 2023
…m npcs to revscriptsys and rework on jiddo npc lib (#192)

Description:
NPCS converted to revscriptsys and removed the npcs xml
Changed jiddo lib to work with revscriptsys npcs, also making several improvements to the lib. And several other functions that have been improved or rework. We also removed all the code from the lib that parse/handle the npcs xml.

Module shop has been removed (a big improvement was made where the shop is now in npcType, more easily and is called directly from source).

Added back storage of npcs spawns in the world folder (there was also a reorganization, where npcs and monsters will be in separate files from now on, as it will be possible to see npcs on the map).

Several other modifications and adaptations to make compatibility possible.

Fix: opentibiabr/otservbr-global#2

NOTE: This commit will work directly with the pull opentibiabr/otservbr-global#1 from the otservbr-global repository.
After this commit, the OTServBR-Global will use the Canary Engine, there will no longer be source code in global.

NPCS Lib modifications:
Added new callbacks:
- onCloseChannel (CALLBACK_ON_CLOSE_CHANNEL)
- onMove (CALLBACK_ON_MOVE)
- FocusModule.tradeCallback
- NpcsEvent_t enum: NPCS_EVENT_PLAYER_CLOSE_CHANNEL

Lua functions:
- NpcHandler:getKeywordHandler()
- NpcHandler:getEventDelayedSay(playerId)
- NpcHandler:setEventDelayedSay(playerId, newEventDelayedSay)
- NpcHandler:getEventSay(playerId)
- NpcHandler:setEventSay(playerId, newEventSay)
- NpcHandler:getTalkStart(playerId)
- NpcHandler:setTalkStart(playerId, newTalkStart)
- NpcHandler:getTopic(playerId)
- NpcHandler:setTopic(playerId, newTopic)
- NpcHandler:checkInteraction(npc, player)
- NpcHandler:updateInteraction(npc, player)
- NpcHandler:setInteraction(npc, player)
- NpcHandler:removeInteraction(npc, player)
- NpcHandler:tradeRequest(npc, player, message)
- NpcHandler:onMove(npc, player, fromPosition, toPosition)
- NpcHandler:sendMessages(message, messageTable, npc, player, useDelay, delay)
- FocusModule:setTradeCallback(callback)
- Npc:sayWithDelay(npcId, text, messageType, delay, event, playerId)
- Npc:sendMessage(player, text)
- Npc:isMerchant()
- Npc:closeShopWindow(player)
- Npc:isInTalkRange(playerPosition)
- Npc:move(direction)
- Npc:turn(direction)
- Npc:follow(player)
- Npc:getId()
- Npc:sellItem(player, itemid, amount, <optional> subtype, <optional> actionid, <optional: default: 1> canDropOnMap)
- Npc:getDistanceTo(uid)
- NpcType:getSpeechBubble()
- NpcType:setSpeechBubble()
- Player:getItemIdByCid(itemId)
- Item:getClientId()
- LuaFunctionsLoader::getErrorDesc(ErrorCode_t code) new callback: LUA_ERROR_NPC_TYPE_NOT_FOUND

CPP functions:
- Npc::onPlayerCloseChannel(creature)
- Game::loadCustomMap(name)
- Iomap: loadMonstersCustom(map), loadNpcsCustom(map), loadHousesCustom(map)

Cpp definitions:
- ITEM_FILLED_BATH_TUBE, ITEM_SWORD_RING, ITEM_CLUB_RING, ITEM_DWARVEN_RING, ITEM_RING_HEALING, ITEM_STEALTH_RING, ITEM_TIME_RING, ITEM_PAIR_SOFT_BOOTS, ITEM_PAIR_SOFT_BOOTS_ACTIVATED, ITEM_DEATH_RING, ITEM_DEATH_RING_ACTIVATED, ITEM_PRISMATIC_RING, ITEM_PRISMATIC_RING_ACTIVATED.

Othes:
- Added bank system lib (bank_system.lua)
- TalkAction: /addmoney playername, moneycount

Modified callbacks:
- FROM: CALLBACK_CREATURE_APPEAR, TO: CALLBACK_ON_APPEAR
- FROM: CALLBACK_CREATURE_DISAPPEAR, TO: CALLBACK_ON_DISAPPEAR
- FROM: CALLBACK_CREATURE_SAY, TO: CALLBACK_ON_SAY
- FROM: CALLBACK_ONTHINK, TO: CALLBACK_ON_THINK
- FROM: CALLBACK_PLAYER_ENDTRADE, TO: CALLBACK_PLAYER_END_TRADE
- FROM: CALLBACK_PLAYER_CLOSECHANNEL, TO: CALLBACK_CLOSE_CHANNEL
- FROM: CALLBACK_ONADDFOCUS, TO: CALLBACK_SET_INTERACTION
- FROM: CALLBACK_ONRELEASEFOCUS, TO: CALLBACK_REMOVE_INTERACTION
- FROM: CALLBACK_ONTRADEREQUEST, TO: CALLBACK_ON_TRADE_REQUEST
- FROM: SHOP_TRADEREQUEST, TO: FOCUS_TRADE_MESSAGE

Modified functions:
- From: player:removeMoneyNpc(), to: player:removeMoneyBank(cost)
- From: NpcHandler.eventSay[focus] = nil, to: NpcHandler:setEventSay(playerId, nil)
- From: NpcHandler.eventDelayedSay[focus] = nil, to: NpcHandler:setEventDelayedSay(playerId, nil)
- From: NpcHandler.talkStart[focus] = nil, to: NpcHandler:setTalkStart(playerId, nil)
- From: NpcHandler.topic[focus] = nil, to: NpcHandler:setTopic(playerId, nil)
- From: NpcHandler:onCreatureAppear, to: NpcHandler:onAppear
- From: NpcHandler:onCreatureDisappear, to: NpcHandler:onDisappear
- From: NpcHandler:onCreatureAppear, to: NpcHandler:onAppear
- From: NpcHandler:onCreatureSay, to: NpcHandler:onSay
- From: NpcHandler:onPlayerCloseChannel, to: NpcHandler:onCloseChannel
- From: NpcHandler.topic[playerId] = topicId, to: NpcHandler:setTopic(playerId, topicId)
- From: NpcHandler.topic[playerId] == topicId, to: NpcHandler:getTopic(playerId) == topicId
- From: Charm:cancelMessage(), to: charm:messageCancel()
- From: Charm:logMsg(), to: Charm:messageServerLog()
- msgcontains(message, keyword) = It was refactored so that it identifies the entire string and does not read just one word, generating this issue: https://github.com/opentibiabr/otservbr-global/issues/2736

Removed callbacks:
- NpcHandler: focuses, idleTime, talkRadius, shopItems, MESSAGE_ONBUY, MESSAGE_BOUGHT, MESSAGE_SELL, MESSAGE_ONSELL, MESSAGE_SOLD, MESSAGE_IDLETIMEOUT
- Voice modules
- Shop module
- NpcSystem (It was used to parse XML npcs information)

Removed Lua functions:
- NpcHandler:isFocused
- NpcHandler:releaseFocus
- NpcHandler:onPlayerEndTrade
- NpcHandler:onSell
- doNpcSellItem
- doCreatureSayWithDelay
- doPlayerSellItem
- doPlayerBuyItemContainer
- doPlayerRemoveMoney
- getPlayerMoney
- closeShopWindow

Removed CPP functions:
- Npc:getCurrencyTrading()

Others modifications:
- Changed configkey = From: MAP_CUSTOM_ENABLED, to: TOGGLE_MAP_CUSTOM
- Fixed the load of the custom map, which is now directly in the source and works as a complement to the main map.
- Removed ConfigKey: MAP_CUSTOM_FILE and MAP_CUSTOM_SPAWN
- Some functions are capitalized to indicate that they are global functions, for example: MessageContains(), GetCount(), and others.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants