Ir para conteúdo

Sofft

Artesão
  • Total de itens

    137
  • Registro em

  • Última visita

Tudo que Sofft postou

  1. Sofft

    Trade Com X Storage

    @Vodkart agora não está verificando o cap do player, vai comprando e caindo no chão, e não funciona "buy with backpacks", não estou reclamando, desse jeito está otimo, só estou notificando, ok?
  2. Sofft

    Trade Com X Storage

    @Vodkart, items agrupáveis estão comprando ao quadrado. Ex: compro 2 worms, recebo 4, compro 3 recebo 9.
  3. Distro: TFS 9.63 Olá Xtibianos, Pedido: Quero Criar um NPC que dê TRADE apenas com players que terminaram X Quest. Tentativa: No meu Ot 8.60 funciona perfeitamente esse modelo abaixo: if (getPlayerStorageValue(cid, storage) < 16 and msgcontains(msg, "trade")) then npcHandler:say("You are not able to negotiate with me, help me every day and then you can do it.", cid) elseif (getPlayerStorageValue(cid, storage) >= 16 and msgcontains(msg, "trade")) then local items = { {name="platinum amulet", id=2171, buy=0, sell=2500}, {name="ring of the sky", id=2123, buy=0, sell=3000}, {name="ruby necklace", id=2133, buy=0, sell=2000}, {name="scarab amulet", id=2135, buy=0, sell=200}, {name="silver brooch", id=2134, buy=0, sell=150}, {name="terra amulet", id=7887, buy=0, sell=1500}, {name="doll", id=2110, buy=0, sell=200}, {name="light shovel", id=5710, buy=0, sell=300}, {name="pirate voodo doll", id=5810, buy=0, sell=50}, {name="voodo doll", id=3955, buy=0, sell=400} } openShopWindow(cid, items, function(cid, itemid, subType, amount, ignoreCap, inBackpacks) customCallbackOnBuy(cid, itemid, subType, amount, ignoreCap, inBackpacks, items) end, function(cid, itemid, subType, amount, ignoreCap, inBackpacks) customCallbackOnSell(cid, itemid, subType, amount, ignoreCap, inBackpacks, items) end ) npcHandler:say("Of course, just browse through my wares.", cid) end Erro: Quando eu uso esse script no 9.63 não é possível comprar items que não são agrupáveis, e o seguinte erro é exibido no console: [Error - NpcScript Interface] (Unknown script file) Description: data/lib/050-function.lua:447: bad argument #2 to 'error' (number expected, got string) stack traceback: [C]: in function 'error' data/lib/050-function.lua:447: in function 'customCallbackOnBuy' data/npc/scripts/al dee.lua:50: in function <data/npc/scripts/al dee.lua:49> O que eu realmente quero: Ficaria muito grato se alguém conseguisse "consertar" essa função para mim, se não der por favor postem outras soluções. Material Necessário: function customCallbackOnBuy: function customCallbackOnBuy(cid, itemid, subType, amount, ignoreCap, inBackpacks, shopWindow) local shopItem, npcHandler = nil, NpcHandler for _, item in ipairs(shopWindow) do if not item.subType then item.subType = (isItemFluidContainer(item.id) == TRUE or isItemStackable(item.id) == TRUE) and 0 or 1 end if(item.id == itemid and (item.subType == subType)) then shopItem = item break end end if(shopItem == nil) then error("[shopModule.onBuy]", "Item not found on shopItems list") return false end if(shopItem.buy < 0) then error("[shopModule.onSell]", "Attempt to purchase an item which is only sellable") return false end local backpack, totalCost = 1988, amount * shopItem.buy if(inBackpacks) then totalCost = isItemStackable(itemid) == TRUE and totalCost + 20 or totalCost + (math.max(1, math.floor(amount / getContainerCapById(backpack))) * 20) end if(getPlayerMoney(cid) < totalCost) then doPlayerSendCancel(cid, npcHandler:parseMessage(npcHandler:getMessage(MESSAGE_NEEDMONEY), {[TAG_PLAYERNAME] = getPlayerName(cid), [TAG_ITEMCOUNT] = amount, [TAG_TOTALCOST] = totalCost, [TAG_ITEMNAME] = shopItem.name})) return false end local subType = shopItem.subType or isItemFluidContainer(itemid) == TRUE and 0 or 1 local a, b = doNpcSellItem(cid, itemid, amount, subType, ignoreCap, inBackpacks, backpack) if(a < amount) then local msgId = MESSAGE_NEEDMORESPACE if(a == 0) then msgId = MESSAGE_NEEDSPACE end doPlayerSendCancel(cid, npcHandler:parseMessage(npcHandler:getMessage(msgId), {[TAG_PLAYERNAME] = getPlayerName(cid), [TAG_ITEMCOUNT] = amount, [TAG_TOTALCOST] = totalCost, [TAG_ITEMNAME] = shopItem.name, [TAG_ITEMCOUNT] = a})) if(a > 0) then doPlayerRemoveMoney(cid, ((a * shopItem.buy) + (b * 20))) return true end return false end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, npcHandler:parseMessage(npcHandler:getMessage(MESSAGE_BOUGHT), {[TAG_PLAYERNAME] = getPlayerName(cid), [TAG_ITEMCOUNT] = amount, [TAG_TOTALCOST] = totalCost, [TAG_ITEMNAME] = shopItem.name})) doPlayerRemoveMoney(cid, totalCost) return true end
  4. @Overllord, esse NPC verifica os items que o player ta usando, no caso ele vê se o player está usando pirateSet, e se estiver deixa ele entrar na porta, para instalar esse NPC no seu servidor vai em data/npc e copia um arquivo xml la e renomeia para vulturenose.xml e ai só seguir la em cima /\. Depois no mapEditor importa o NPC e poe ele no mapa. @Skymagnum, sim! não sou bom com arrays, mais estou aprendendo.=/
  5. @Guilherme Souza, se você não tivesse postado isso, com certeza ele falaria, kkk
  6. @Newtonnotwen, kkkkkkkkkkkkkkkkkkkkkkkkkk onde você quer chegar cara???? Sua linha de raciocínio: PostX: minha opinião é X...blablabla PostY: minha opinião é Y...blablalbalbla PostNewtonnotwen: PosX ta errado blablalblalbla, postY tambem está errado blablablalbal, eu sou um gênio! Quem é você pra dizer quem está errado quem está certo ?? você é ridículo cara na moral (todos do fórum acha isso), ultimo post que gasto com vc.
  7. cara na moral, se você se acha tão superior, o que está fazendo aqui discutindo com "idiotas"? você deveria estar em um congresso de intelectuais, expondo suas teorias para o mundo, não perdendo seu tempo aqui.
  8. A lista completa de alterações pode ser encontrada em doc / changelog. Este lançamento vem com suporte para o protocolo de 9.60/9.61, uma série de correções de bugs, otimizações, duas falhas potenciais consertadas e melhorias de código. Novos recursos são anti house trashing, novos equipamentos, novas montarias, novos itens e muito mais! Microsoft Visual C + + Redistributable Package 2010 é necessário para executar o servidor: 32-bit redistributable package download 64-bit redistributable package download Download The Forgotten Server 0.2.14: theforgottenserver-v0.2.14-win32console.7z (3.32 MB, 35 views) theforgottenserver-v0.2.14-win32gui.7z (3.41 MB, 23 views) theforgottenserver-v0.2.14-win64console.7z (3.58 MB, 16 views) theforgottenserver-v0.2.14-win64gui.7z (3.71 MB, 20 views) Source code: Subversion client: svn://svn.otland.net/public/forgottenserver/tags/0.2.14/ Browse: [forgottenserver] Index of /tags/0.2.14 Créditos: Em primeiro lugar, os créditos vai para os seguintes programadores do servidor base OpenTibia: acidgame, jiddo, mips_act, nfries88, otserv_simone, primer13r,Remere, shivoc, smygflik, lanche, tliffrag e wrzasq. O restante dos créditos vai para a equipe do Forgotten Server (TFS): Talaturen, Kornholijo, Elf e Dalkon.
  9. eu não sei se é possível reabilitar esse cara em específico, mas existe probabilidade.
  10. @Newtonnotwen, lol, fala comigo? se for eu li sim, tudo que você postou, e concordo com você (em partes). Você não sabe o que é errado até alguém te dizer, e você acreditar. (O que a maioria das religiões fazem.) Homem bomba acha que vai pro paraíso se morrer. Alguém falou pra ele e ele acreditou.
  11. Você pode reabilitar um cara que rouba macarrão no supermercado, sem estudo e sem oportunidades na vida, agora reabilitar um cara com ideais e com todo tipo de informação não. Reabilitar um cara com ideais é a mesma coisa que ir em uma igreja evangélica e dizer que Deus não existe.
  12. Matar é errado perante a ética, perante a igreja e perante a constituição nacional. Se você não acredita e/ou não quer seguir as 3, matar não é errado.
  13. kkkk, mano OPEN TIBIA agora é só um nome, se quiser vai ter que comprar um. Triste realidade.
  14. mapa full só com talaturem, ele já tem até a areá nova dos gnomos, só que ele cobra caro d+ ele cobra 2000 USD por um sistema, por uma mapa completo uns 8000 USD.
  15. no global tira o paralyze na hora só que o char fica lento enquanto não andar pro próximo sqm. EDIT--- @LuckOake, funcionou! rep+
  16. Xtibianos, quase nenhum tópico que posto aqui tem uma resposta definitiva, tomara que esse seja diferente. Meu problema: Isso acontece na maioria dos servidores open tibia atuais. Quando o player está com paralyze e usa exura, esse paralyze não sai, a menos que o player esteja parado, isso incomoda muito os players, e atrapalham a fluidez do jogo. Estudando a spell vejo que tem a função "setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)" retirando o paralyze, mas isso só acontece, como já citei acima, quando o player esta parado. Se alguém puder compartilhar uma solução, ficarei muito grato. Script da minha spell (exura): local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) setHealingFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 1.5, 2) function onCastSpell(cid, var) return doCombat(cid, combat, var) end
  17. Fala Xtibianos, a algum tempo venho fazendo um Global, realmente completo, não esses que estão em todos os tópicos. Já está boa parte completo, porem uma das coisas que mais levam tempo são os NPCs, e de vez em quando irei postar um NPC completo aqui para vocês. Dessa vez o NPC é o: , parte da Meriana Quest, vou postar ele por ser um NPC facil de se fazer. Vulturenose.xml <?xml version="1.0" encoding="UTF-8"?> <npc name="Vulturenose" script="data/npc/scripts/Vulturenose.lua" walkinterval="0" floorchange="0"> <health now="100" max="100"/> <look type="96" head="0" body="0" legs="0" feet="0" addons="0"/> <parameters> <parameter key="message_greet" value="Hrrrrm."/> <parameter key="message_farewell" value="Get lost."/> <parameter key="module_keywords" value="1" /> <parameter key="keywords" value="pirate;mission;klaus" /> <parameter key="keyword_reply1" value="We are marauders of the seas surrounding the Shattered Isles. Our only motive is greed and wealth primary purpose is to win in any way possible!" /> <parameter key="keyword_reply2" value="I've heard that {Klaus} wants someone to do a task for him." /> <parameter key="keyword_reply3" value="Klaus is the owner of this tavern" /> </parameters> </npc> Vulturenose.lua 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) -- NPC Vulturenose feito por Getulio Paixão (Off) -- Inicio NPC Vulturenose local meriana = 123477 -- Storage Meriana Quest local door = 15056 -- Storage da porta local hat = 6096 local armor = 6095 local legs = 5918 local boots = 5462 local on_hat = (getPlayerSlotItem(cid, 1).itemid == hat) local on_armor = (getPlayerSlotItem(cid, 4).itemid == armor) local on_legs = (getPlayerSlotItem(cid, 7).itemid == legs) local on_boots = (getPlayerSlotItem(cid, 8).itemid == boots) -----------------------------------------MERIANA QUEST------------------------------------------- -- Confirindo Pirate Set e entrando na porta if (getPlayerStorageValue(cid, meriana) == 13) then if (msgcontains(msg, 'enter') and getPlayerStorageValue(cid, door) <= 0) then if ((on_hat == TRUE) and (on_armor == TRUE) and (on_legs == TRUE) and(on_boots == TRUE)) then npcHandler:say("Hey, I rarely see a dashing pirate like you! Get in, matey!", cid) setPlayerStorageValue(cid,door,1) doPlayerSendTextMessage(cid, 22, "Your questlog has been updated.") talk_state = 0 else npcHandler:say("You're trying to trick me? intruder!, you're not dressed as a pirate!", cid) talk_state = 0 end elseif (msgcontains(msg, 'enter') and getPlayerStorageValue(cid, door) >= 1) then npcHandler:say("Of course you can enter.", cid) talk_state = 0 end end -----------------------------------------FIM------------------------------------------- if(npcHandler.focus ~= cid) then return false end -- Final NPC Vulturenose -- NPC Vulturenose feito por Getulio Paixão (Off) return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Desculpem a indentação, mas o fórum que está bagunçando. E pra quem quizer usar a função getPlayerSlotItem(cid, slot) em outro script: getPlayerSlotItem(cid, slot) - Checa que item tem no slot do player (1-cabeca, 2- amuleto, 3- backpack, 4-armadura, 5-mao direita, 6-mao esquerda, 7-pernas, 8- botas, 9-anel, 10 slot da torcha).
  18. obrigado, duvida sanada, obrigado pela ajuda de todos. Só que o método do @brun123, na verdade não vai atualizar a variável, então isso só vai funcionar se set+1 == get_sto+1
  19. Sofft

    Treinamento Offline

    foi mal pela seção errada, e obrigado por mover.
  20. Sofft

    Island

    @tiagolemoos, crítica construtiva: Simples... se for Baiak tá ótimo, mas para criar um RPG ta simples ainda.
  21. http://www.xtibia.com/forum/topic/126485-crystal-server-854-v-015/
  22. Desse jeito você fez a mesma coisa que eu, setou outro valor na variável. Ai toda vez antes de um print vou ter que usar isso: if doCreatureSetStorage(cid, storage, ret + 1) then ret = getCreatureStorage(cid, storage) end sendo assim é melhor utilizar só: ret = getCreatureStorage(cid, storage) pois se o valor da variável alterar imprime o novo valor, se a variável mantiver, o valor continua o mesmo.
  23. Mano, kkk, ta faltando tabelas no seu Database, só isso. tente achar um Schemas para 9.53, o Crystal server tem elas completinhas.
  24. Já procurei em diversos manuais de .lua, mas não encontrei nada a respeito, como aqui no Xtibia tem alguns caras muito bons em .lua, estou pedindo ajuda. Problema: quero atualizar um valor de uma variável durante a execução do script, vou dar um exemplo bem simples aqui. function onUse(cid, item, fromPosition, itemEx, toPosition) local sto = 999999999 local get_sto = getPlayerStorageValue(cid, sto) doPlayerSendTextMessage(cid, 22, get_sto) setPlayerStorageValue(cid,sto,get_sto + 1) doPlayerSendTextMessage(cid, 22, get_sto) return true end O resultado desse script é que imprime na tela:"1,1", ou "2,2", e o que eu queria era que imprimisse "1,2" ou "2,3", por exemplo. sei resolver isso de 2 maneiras, mas nenhuma é do jeito que eu queria. 1 - ao invés de usar "get_sto", usar "getPlayerStorageValue(cid, sto)" direto no script. 2 - colocar outro "local get_sto = getPlayerStorageValue(cid, sto)" antes do segundo print. Eu quero atualizar a variável "get_sto" sem setar outro valor para ela, e não quero usar "getPlayerStorageValue(cid, sto)", parece bobeira mas esse script de exemplo é um script bobo, estou fazendo NPC's muito complexos. Por favor postem TODAS as possibilidades, por favor.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...