Postado Janeiro 22, 2018 7 anos Preciso de uma adaptação nessa script que está funcionando no meu servidor. Gostaria que o jogador só pudesse usar a bicicleta quando ela estivesse colocada no devido slot. Impedindo assim, do mesmo jogar o item fora enquanto está usando. Tipo o ride system. Aqui vai meu script de não mover item: function onMoveItem(cid, item, count, toContainer, fromContainer, fromPos, toPos) if not isCreature(cid) then return false end if isWatchingTv(cid) then return false end local name = getCreatureName(cid) local transform = false --- nao retirar item que estao no slot 8 e sao uniques if fromPos.x ~= 0 and toContainer.uid == 0 and fromContainer.uid == 0 and toPos.x == 65535 and getPlayerSlotItem(cid, 8).uid ~= 0 then doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL) return false end local itemID = item.itemid if itemID >= 14795 and itemID <= 14879 or pokeballs[getPokeballType(itemID)] and (itemID == pokeballs[getPokeballType(itemID)].use and (#getCreatureSummons(cid) > 0 or isRiderOrFlyOrSurf(cid))) then doPlayerSendCancel(cid, "Você não pode mover este item.") return false end if isFly(cid) and (getTileThingByPos(toPos).itemid == 460 or getTileThingByPos(toPos).itemid == 12171 or getTileThingByPos(toPos).itemid == 12172 or (toContainer.uid == 0 and getThingPos(cid).z ~= toPos.z)) then doPlayerSendDefaultCancel(cid, RETURNVALUE_CANNOTTHROW) return false end if isInArray({2589, 15446, 15447, 15448, 15449, 12355}, toContainer.itemid)then -- nao fazer nada no cp return true end local pos = toPos local items = getItemsfromPos(pos) for i = 1, #items do local name = getItemInfo(items[i].itemid).name if string.find(name, "fainted") or string.find(name, "defeated") then doSendMsg(cid, "Não pode jogar lá.") return false end end if isPokeball(item.itemid) and toPos.x == 65535 then if not getItemAttribute(item.uid, "unique") and getPlayerFreeCap(cid) > 1 then doTransformPokeballIcon(cid, item, count, toContainer, fromContainer, fromPos, toPos) end else if not getItemAttribute(item.uid, "unique") and not getItemAttribute(item.uid, "torneio") then doTransformPokeballIcon(cid, item, count, toContainer, fromContainer, fromPos, toPos) end end if isPokeball(item.itemid) or isContainer(item.uid) then if hasSqm(toPos) then if isContainer(item.uid) then local itens = getItensUniquesInContainer(item.uid) local sendMsg = false if #itens >= 1 then doSendMsg(cid, #itens.." item"..(#itens < 2 and "" or "s").." neste recipiente "..(#itens < 2 and "é exclusivo" or "são exclusivos")..". Você não pode joga-lo"..(#itens < 2 and "" or "s").." fora!") return false end else if getItemAttribute(item.uid, "unique") or getItemAttribute(item.uid, "torneio") then doSendMsg(cid, "Isso é um item exclusivo, você não pode joga-lo fora!") return false end end elseif isContainer(toContainer.uid) and (isPokeball(item.itemid) or isContainer(item.uid)) then if toContainer.itemid == getPlayerSlotItem(cid, 3).itemid then -- nao fazer nada na poke bag principal return true end if not isPosEqual(getThingPos(toContainer.uid), getThingPos(cid)) then if isContainer(item.uid) then local itens = getItensUniquesInContainer(item.uid) local sendMsg = false if #itens >= 1 then doSendMsg(cid, #itens.." item"..(#itens < 2 and "" or "s").." neste recipiente "..(#itens < 2 and "é exclusivo" or "são exclusivos")..". Você não pode joga-lo"..(#itens < 2 and "" or "s").." fora!") return false end else if getItemAttribute(item.uid, "unique") or getItemAttribute(item.uid, "torneio") then doSendMsg(cid, "Isso é um item exclusivo, você não pode joga-lo fora!") return false end end end end end return true end function getItemsfromPos(position, fromStackpos) local toret = { } -- table to return items position.stackpos = fromStackpos if position.stackpos == nil then position.stackpos = 1 -- default end while true do -- loop to catch the items and insert them in toret table local thing = getThingfromPos(position) if thing.itemid == 0 then -- thing doesn't exist, break the loop... break end if getWholeThing ~= nil and getWholeThing ~= 0 then -- if getWholeThing isn't nil and isn't 0 table.insert(toret,thing) else -- else, insert only item uid in toret table table.insert(toret,thing) end position.stackpos = position.stackpos + 1 -- get next item end return toret end
Postado Janeiro 22, 2018 7 anos bom a minha bike que fiz foi assim....... criei 2 sprite diferente no cliente com a configuração move na 1 e no move na 2 criei 2 ID = 2 itens pelo item editor. assim usando item 1 ele transforma no item 2 que não se mexe... para ficar perfeito eu coloquei uma função no login.lua quando relogar ele se transforma e voltar a roupa normal sobre o slot... você deve por a função no items.xml do seu server modo "FEET" outra coisa fazer uma verificação ao usar a bike que seria. if getPlayerSlotItem(cid, CONST_SLOT_RING).uid ~= item.uid then return doPlayerSendCancel(cid, "Voce precisa por a (BIKE) no lugar correto.") end Editado Janeiro 22, 2018 7 anos por L3K0T (veja o histórico de edições) Eu sou um entusiasta da programação apaixonado por ajudar a comunidade open source a crescer. Sempre em busca de novos desafios e oportunidades para contribuir com meu código. #OpenSource #Programação #Contribuição
Postado Janeiro 22, 2018 7 anos Autor @L3K0T Poderia me ajudar? Esse sistema é de suma importância para meu servidor! Eu entendi "por cima" como funciona.
Postado Janeiro 22, 2018 7 anos Solução 2 minutos atrás, tavarb disse: @L3K0T Poderia me ajudar? Esse sistema é de suma importância para meu servidor! Eu entendi "por cima" como funciona. adiciona isso no script da bike if getPlayerSlotItem(cid, CONST_SLOT_RING).uid ~= item.uid then return doPlayerSendCancel(cid, "Voce precisa por a (BIKE) no lugar correto.") end Eu sou um entusiasta da programação apaixonado por ajudar a comunidade open source a crescer. Sempre em busca de novos desafios e oportunidades para contribuir com meu código. #OpenSource #Programação #Contribuição
Postado Janeiro 22, 2018 7 anos Autor @L3K0T aparenta estar funcionando, mas o slot não é esse, onde acho no meu servidor? Acho que é no slot ammo 3 minutos atrás, tavarb disse: @L3K0T aparenta estar funcionando, mas o slot não é esse, onde acho no meu servidor? Acho que é no slot ammo Acertei, era nele mesmo, está funcionando perfeitamente! obrigado
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.