• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!
  • 2026 staff recruitment is open! Check it out and consider applying!

TFS 1.X+ Soft Boots Repair Doesnt Work.

jo31

New Member
Joined
May 24, 2010
Messages
72
Reaction score
3
Location
Sweden
Twitch
Byrre_
YouTube
Byrre6969
This is how my bootmaker.lua looks like, The NPC takes my cash but doesnt repair my worn soft boots.... Can anyone help me?
TFS 1.3 PROTOCOL 10.98.




C++:
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function onCreatureAppear(cid)                npcHandler:onCreatureAppear(cid)
end
function onCreatureDisappear(cid)            npcHandler:onCreatureDisappear(cid)           
end
function onCreatureSay(cid, type, msg)            npcHandler:onCreatureSay(cid, type, msg)       
end
function onThink()                    npcHandler:onThink()                   
end

function creatureSayCallback(cid, type, msg)
    if(not npcHandler:isFocused(cid)) then
        return false
    end

    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

    if(msgcontains(msg, 'soft') or msgcontains(msg, 'boots')) then
        selfSay('Do you want to repair your worn soft boots for 200000 gold coins?', cid)
        talkState[talkUser] = 1
    elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
        if(getPlayerItemCount(cid, 6530) >= 1) then
            if(doPlayerRemoveMoney(cid, 200000)) then
                local item = getPlayerItemById(cid, true, 6530)
                doTransformItem(item.uid, 6132)
                selfSay('Here you are.', cid)
            else
                selfSay('Sorry, you don\'t have enough gold.', cid)
            end
        elseif(getPlayerItemCount(cid, 10021) >= 1) then
            if(doPlayerRemoveMoney(cid, 200000)) then
                local item = getPlayerItemById(cid, true, 10021)
                doTransformItem(item.uid, 6132)
                selfSay('Here you are.', cid)
            else
                selfSay('Sorry, you don\'t have enough gold.', cid)
            end
        else
            selfSay('Sorry, you don\'t have the item.', cid)
        end
        talkState[talkUser] = 0
    elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser])) then
        talkState[talkUser] = 0
        selfSay('Ok then.', cid)
    end

    return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
 
Solution
LUA:
local talkState = {}
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)

NpcSystem.parseParameters(npcHandler)
function onCreatureAppear(cid)         npcHandler:onCreatureAppear(cid)         end
function onCreatureDisappear(cid)      npcHandler:onCreatureDisappear(cid)      end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink()                     npcHandler:onThink()                     end

function creatureSayCallback(cid, type, msg)
    if(not npcHandler:isFocused(cid)) then return false end

    local SOFTBOOTS = {
        WORN  = 6530,
        WORN2 = 10021,
        NEW   = 6132,
    }
    local PRICE = 200000
    local QUERY = 'Do...
LUA:
local talkState = {}
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)

NpcSystem.parseParameters(npcHandler)
function onCreatureAppear(cid)         npcHandler:onCreatureAppear(cid)         end
function onCreatureDisappear(cid)      npcHandler:onCreatureDisappear(cid)      end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink()                     npcHandler:onThink()                     end

function creatureSayCallback(cid, type, msg)
    if(not npcHandler:isFocused(cid)) then return false end

    local SOFTBOOTS = {
        WORN  = 6530,
        WORN2 = 10021,
        NEW   = 6132,
    }
    local PRICE = 200000
    local QUERY = 'Do you want to repair your worn soft boots for '..PRICE..' gold coins?'
    local BARE  = "Sorry, you don't have the item."
    local POOR  = "Sorry, you don't have enough gold."
    local DONE  = 'Here you are.'
    local BYE   = 'Ok then.'

    local player = Player(cid)
    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

    if(msgcontains(msg, 'soft') or msgcontains(msg, 'boots')) then
        selfSay(QUERY, cid)
        talkState[talkUser] = 1
    elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
        local item = nil
        if(player:getItemCount(SOFTBOOTS.WORN) >= 1) then
            if(player:removeMoney(PRICE)) then
                item = player:getItemById(SOFTBOOTS.WORN, true)
                item:transform(SOFTBOOTS.NEW)
                selfSay(DONE, cid)
            else
                selfSay(POOR, cid)
            end
        elseif(player:getItemCount(SOFTBOOTS.WORN2) >= 1) then
            if(player:removeMoney(PRICE)) then
                item = player:getItemById(SOFTBOOTS.WORN2, true)
                item:transform(SOFTBOOTS.NEW)
                selfSay(DONE, cid)
            else
                selfSay(POOR, cid)
            end
        else
            selfSay(BARE, cid)
        end
        talkState[talkUser] = 0
    elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser])) then
        talkState[talkUser] = 0
        selfSay(BYE, cid)
    end

    return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Maybe your compat.lua doTransformItem code is wrong. See my sig.
Maybe your itemIDs are wrong? Easy to change now.
 
Solution
Back
Top