Ir para conteúdo
Banner com Efeitos

Vabrindox

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Curtir
    Vabrindox recebeu reputação de premii em [Pedido] Tile que pode passar com x item sem remover   
    function onStepIn(cid, item, position, fromPosition) local id,amount = 2160,1 if isPlayer(cid) and getPlayerItemCount(cid, id) < amount then doTeleportThing(cid, fromPosition, true) doPlayerSendTextMessage(cid, 25, "Voce so pode passar se tiver " .. amount .. " " .. getItemNameById(id) .. ".") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end return true end  
  2. Curtir
    Vabrindox deu reputação a Cat em OpenCoreMMO - Tibia 8.60 em C#!   
    O OpenCoreMMO é um emulador de servidor MMORPG gratuito e de código aberto escrito em C#.
    Baseia-se no forgotten server (OpenTibia).

     

     Para se conectar ao servidor, você pode usar OTClient ou OpenTibiaUnity para a versão 8.6.

     
    Lista de funcionalidades!
    Leitura da estrutura de arquivos OTB e OTBM Carregando OTBM Tile Area, Towns e Waypoints Carregando Áreas de Spawn LogIn e LogOut Player no jogo Todos os movimentos do jogador Conexão multijogador Spawn e Respawn Monsters Combate PvM Depot Bate-papos   -Guilds   -Canais Públicos   -Canais de pilhagem e morte Lista VIP Combate PvP Sistema NPC Lua Scripting C# Scripting  
     Tecnologias:
    C# .Net 5 Database support: InMemory, MySQL, SQL Server and SQLite Console Debug Logging XUnit Testing  
     
    Amostra:
    [spoiler]

    [/spoiler]
     
    Como rodar?
    Suporte para mysql e sqlite, para rodar em seu PC veja este guia rápido: 
    https://caioavidal.gitbook.io/opencoremmo/how-to-run

     
     
    Acompanhe o projeto em:
     Github:
    https://caioavidal.gitbook.io/opencoremmo/
    https://github.com/caioavidal/OpenCoreMMO
     
     Trello:
    https://trello.com/b/JnOJ9yn5/opencoremmo
     
     TibiaKing:
     
  3. Curtir
    Vabrindox recebeu reputação de Coul em [Pedido] Alguem pode me passar um codigo de npc que só conversa?   
    na pasta npc criar Historiador.xml ou entao outro nome de sua preferencia se for trocar tem que trocar no xml tbm, a msg inicial pode ser trocada aqui!
    <?xml version="1.0" encoding="UTF-8"?> <npc name="Historiador" script="historiador.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="128" head="17" body="54" legs="114" feet="0" addons="2"/> <parameters> <parameter key="message_greet" value="Ola Player voce gostaria de saber da {historia}?"/> </parameters> </npc> em scripts criar historiador.lua
    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) -- By Vabrindox if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'historia') then -- By Vabrindox selfSay('Essa e a segunda msg que eu estou falando, para saber mais fale {Vabrindox}!', cid) talkState[talkUser] = 1 elseif talkState[talkUser] == 1 then if msgcontains(msg, 'vabrindox') then selfSay('O vabrindox faz scripts noobs para os noobs, haha!', cid) talkState[talkUser] = 0 end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())  
  4. Gostei
    Vabrindox recebeu reputação de neighbourhood em Como eu coloco essa Door no meu ot?   
    Qual tfs vc tá usando? Eu testei aqui e está 100% vc configurou as posições no script? E no remeres só troque o uniqueid que é a última opção e n actionid.
    local pos_frente = {x=99, y=122, z=7} local pos_atras = {x=99, y=124, z=7} local lvMin = 50 local horizontal = true local vertical = false
  5. Curtir
    Vabrindox recebeu reputação de Igorzerah em [Pedido] Tile que pode passar com x item sem remover   
    function onStepIn(cid, item, position, fromPosition) local id,amount = 2160,1 if isPlayer(cid) and getPlayerItemCount(cid, id) < amount then doTeleportThing(cid, fromPosition, true) doPlayerSendTextMessage(cid, 25, "Voce so pode passar se tiver " .. amount .. " " .. getItemNameById(id) .. ".") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end return true end  
  6. Obrigado
    Vabrindox recebeu reputação de caique889 em [Pedido] Tile que pode passar com x item sem remover   
    function onStepIn(cid, item, position, fromPosition) local id,amount = 2160,1 if isPlayer(cid) and getPlayerItemCount(cid, id) < amount then doTeleportThing(cid, fromPosition, true) doPlayerSendTextMessage(cid, 25, "Voce so pode passar se tiver " .. amount .. " " .. getItemNameById(id) .. ".") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end return true end  
  7. Obrigado
    Vabrindox recebeu reputação de Gnius em [AJUDA] Como baixar o EXP da pesca   
    Tenta isso ae e vê se da erro
     
    Tem esse link tbm caso n funcione:
     
  8. Curtir
    Vabrindox recebeu reputação de Igorzerah em [AJUDA] You cannot use this object.   
    O script carrega sem dar erro? Se sim o problema deve ser no próprio item, vc teria que editar ele pelo Item editor.
    Exemplo:
    http://prntscr.com/hd5uc4
  9. Curtir
    Tenta assim
    local trainerst = 456488 function helpTrainer(uid, pos) look = uid:getDirection() look = look < 3 and look + 1 or 0 uid:setDirection(look) doSendMagicEffect(pos, 12) if getPlayerFood(uid) < 100 then doPlayerFeed(uid, 100) doCreatureSay(uid, "+ Food", TALKTYPE_MONSTER) end addEvent(function() if isPlayer(uid) and getCreaturePosition(uid).x == pos.x and getCreaturePosition(uid).y == pos.y and getCreaturePosition(uid).z == pos.z then helpTrainer(uid, pos) end end, 1000) return true end function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) print("fiz") helpTrainer(cid, position) setPlayerStorageValue(cid,trainerst,1) return true end function onStepOut(cid) setPlayerStorageValue(cid,trainerst,-1) return true end  
  10. Curtir
    Vabrindox recebeu reputação de Igorzerah em Slot no Item   
    Não adianta pq vc só estaria fazendo um texto atoa sem poder puxar os atributos configurados ou então os slots, não tem nem o que adiantar.
  11. Curtir
    Se for sem item especifico para helmet, armor e etc, vc pode ir colocando por ex:
    and getPlayerSlotItem(cid, 1).itemid ~= 0 se o helmet for diferente de id 0 ele continua o script se não ele te teleporta de volta ao local anterior.
    if getPlayerSlotItem(cid, 2).itemid == id_item and getPlayerSlotItem(cid, 1).itemid ~= 0 and getPlayerSlotItem(cid, 4).itemid ~= 0 then e assim por diante, porem se for com item especifico vc vai precisar criar varias variaveis diferentes, por ex:
    local id_item2 = 2285 local id_item3 = 2345 e iria se aplicar assim:
    if getPlayerSlotItem(cid, 2).itemid == id_item and getPlayerSlotItem(cid, 1).itemid == id_item2 then teria que fazer de cada um tbm
  12. Curtir
    Vabrindox recebeu reputação de Igorzerah em os.time()   
    Ve se é isso que vc quer:
    local tempo = 10 local time = os.time() local storage = 17900 function CountDown(cid, segundos)-- By Vabrindox if segundos == 0 then return false else doPlayerSendCancel(cid, "Ainda restam: " .. segundos .." segundos.") doSendAnimatedText(getPlayerPosition(cid),'.' ..segundos.. '.',18) return addEvent(CountDown, 1000, cid, segundos-1) end end function onCastSpell(cid, var) local get_stg_value = getPlayerStorageValue(cid, storage) local segundos = getPlayerStorageValue(cid, storage) - time if get_stg_value <= time then setPlayerStorageValue(cid, storage, time + tempo) doPlayerSendTextMessage(cid, 27, "Usou") CountDown(cid, tempo) end end  
    @Edit melhorei o script pq tava meio feio antes
  13. Obrigado
    Se for sem item especifico para helmet, armor e etc, vc pode ir colocando por ex:
    and getPlayerSlotItem(cid, 1).itemid ~= 0 se o helmet for diferente de id 0 ele continua o script se não ele te teleporta de volta ao local anterior.
    if getPlayerSlotItem(cid, 2).itemid == id_item and getPlayerSlotItem(cid, 1).itemid ~= 0 and getPlayerSlotItem(cid, 4).itemid ~= 0 then e assim por diante, porem se for com item especifico vc vai precisar criar varias variaveis diferentes, por ex:
    local id_item2 = 2285 local id_item3 = 2345 e iria se aplicar assim:
    if getPlayerSlotItem(cid, 2).itemid == id_item and getPlayerSlotItem(cid, 1).itemid == id_item2 then teria que fazer de cada um tbm
  14. Obrigado
    Vabrindox recebeu reputação de Igorzerah em script de missão   
    Fiz um bem simples ve se resolve seu problema.
     
    O jogador precisa ir até o npc falar "missao" e ae depois é só ele ir caçar e matar a quantidade certa de bichos para ganhar item/exp automaticamente. E se ele for no npc o npc indica para ele que não pode mais fazer aquela "missao" novamente.
     
    creaturescripts.xml
    <event type="kill" name="kill_task" event="script" value="kill_task.lua"/> creaturescripts/login.lua
    Antes do return true la do final bota isso.
    registerCreatureEvent(cid, "kill_task") creaturescripts/scripts
    Cria um arquivo .lua com o nome "kill_task" e cola isso dentro.
    local Configs = { storage = 2427, monster = 'Rabbit', premio = 2160, qtd = 1, exp = 100, } function onKill(cid, target, lastHit) if isMonster(target) and getCreatureName(target) == Configs.monster then local get = getPlayerStorageValue(cid, Configs.storage) if get >=0 and get <=5 then setPlayerStorageValue(cid, Configs.storage, (get+1)) local gett = getPlayerStorageValue(cid, Configs.storage) doCreatureSay(cid, 'Voce matou '..gett..' Rabbits ate agora.', TALKTYPE_ORANGE_1) if gett == 5 then doPlayerAddItem(cid, Configs.premio, Configs.qtd) doPlayerAddExp(cid,Configs.exp) doCreatureSay(cid, 'Voce acabou a missao!.', TALKTYPE_ORANGE_1) setPlayerStorageValue(cid, Configs.storage, (gett+1)) end end end return true end Npc
    Na pasta npc crie um arquivo .xml com o nome "Task" e cole isso
    <?xml version="1.0" encoding="UTF-8"?> <npc name="Task" script="task.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="128" head="17" body="54" legs="114" feet="0" addons="2"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|, eu tenho uma missao para voce!"/> </parameters> </npc> Npc/scripts
    Crie um arquivo .lua com o nome "task" e cole isso
    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 local storage = 2427 local get = getPlayerStorageValue(cid, storage) if(msgcontains(msg, 'missao') and (get == -1)) then selfSay('Para ganhar o premio mate 5 Rabbits! Voce ira receber automaticamente.', cid) setPlayerStorageValue(cid, storage, 0) elseif get >=5 then selfSay('Voce acabou a missao de matar Rabbits!', cid) else selfSay('Voce precisa matar '..(5-get)..' Rabbits!', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())  
  15. Curtir
    Vabrindox recebeu reputação de Igorzerah em Slot no Item   
    O ideal é vc procurar um script desse encantamento aqui no tibia king ou em outro forum ae eu te ajudo na questão do look do item caso vc não encontre da maneira que vc quer.
     
    Procure no google "Slot System (tfs 1.1)" que vc vai encontrar o que vc quer pronto, só que vc precisa ter a versao 1.1 do tfs.
  16. Curtir
    Vabrindox recebeu reputação de Igorzerah em Alavanca que vende item   
    explica melhor isso ae pq não entendi, a pessoa vende 1 item e ganha 2 moedas ao puxar uma alavanca? o que seria essas quantidades junto com esses outros itens?
  17. Curtir
    Vabrindox recebeu reputação de Igorzerah em sistema de reset level voltando pro normal   
    Então eu nunca usei um sistema de reset de level mas creio que para vc fazer o que vc quer nesse caso ae do script que vc tava usando talvez armazenando a vida max do player em uma variável e dps fazer ele ir para o lv 8 e setar após o lv 8 a nova vida dele que é a que foi armazenada, assim ele ira para o lv 8 e vai ficar com o life que tava antes de resetar, mas nao sei se teria algum bug ao upar o lv 9 só testando msm.
  18. Curtir
    Vabrindox recebeu reputação de Igorzerah em Teleport Automatico   
    Acho que o erro ae é a virgula.
     
  19. Curtir
    Vabrindox recebeu reputação de Igorzerah em Movendo Window (Container)   
    Galera, eu tava querendo tirar esse lance do player mover as janelas para qualquer lugar, sejam elas backpack ou janelas de skill, itens, lista vip e etc, eu queria deixar igual ao client normal, ou seja, apenas no lado direito sendo impossível colocar a janela de backpack por exemplo em cima de um player.
     
    Tentei procurar por isso na source etc e n achei, me ajudem!
  20. Curtir
    Vabrindox recebeu reputação de Igorzerah em Como colocar mais de um pokémon no baú?   
    Modifiquei um script que achei na net mas não testei.
    local btype = "normal" local pokemon = "nome do poke" local pokemon2 = "nome do outro poke" local storage = 40009 function onUse(cid, item, frompos, item2, topos) if pokemon == "" or pokemon2 == "" then return true end if getPlayerStorageValue(cid, storage) <= 0 then addPokeToPlayer(cid, pokemon, 0, nil, btype) addPokeToPlayer(cid, pokemon2, 0, nil, btype) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Voce terminou a quest e pegou um "..pokemon.." e um "..pokemon2.." !!") doSendMagicEffect(getThingPos(cid), 29) doSendMagicEffect(getThingPos(cid), 27) doSendMagicEffect(getThingPos(cid), 29) setPlayerStorageValue(cid, storage, 1) else doPlayerSendCancel(cid, "Voce ja fez essa quest!") end return TRUE end  
  21. Curtir
    Vabrindox recebeu reputação de Igorzerah em 8.60 Error-CreatureScript Interface ME AJUDEM   
    O erro está dando somente quando vc mata esse bicho?
    Se for pelo que eu estou vendo existe um script no creaturescript que tem uma função que assim que vc mata-lo vai fazer algo.
    Se o script não é necessário para vc é só vc ir no creaturescripts.xml procurar e retirar, tirando isso só olhando melhor para saber do que se trata.
  22. Obrigado
    Vabrindox recebeu reputação de Igorzerah em Rank Reset   
    local displayoutput = {"Resets","Level","Magic Level","Fist Fighting","Club Fighting","Sword Fighting","Axe Fighting","Distance Fighting","Shielding"} local itemtype = {9969,9933,5896,8929,8932,7388,8849,8906,2580} local storage = 378378 -- valor da storage function onSay(cid, words, param) number = 1 param = string.lower(param) skilllist = "" command = TRUE if param == "reset" then display = 1 elseif param == "level" then display = 2 elseif param == "magic" then id = 1 display = 3 elseif param == "club" then id = 2 display = 4 elseif param == "sword" then id = 3 display = 5 elseif param == "axe" then id = 4 display = 6 elseif param == "distance" then id = 5 display = 7 elseif param == "shield" then id = 6 display = 8 else error = 'Highscore Commands:\n\n!rank reset\n!rank level\n!rank magic\n!rank fist\n!rank club\n!rank sword\n!rank axe\n!rank distance\n!rank shield\n' doShowTextDialog(cid, 5958, error) command = FALSE end if command ~= FALSE then if display == 1 then local player = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..storage.." ORDER BY cast(value as SIGNED) DESC;") if(player:getID() ~= -1) then while (true) do local name = getPlayerNameByGUID(player:getDataString("player_id")) local level = player:getDataInt("value") skilllist = skilllist.. "\n#"..string.format("%5s",number.." "..name.." - "..level) number = number + 1 if not(player:next()) then break end end player:free() end elseif display == 2 then local player = db.getResult("SELECT `name`, `level` FROM `players` WHERE group_id < '2' ORDER BY `level` DESC LIMIT 50;") if(player:getID() ~= -1) then while (true) do local name = player:getDataString("name") local level = player:getDataInt("level") skilllist = skilllist.. "\n#"..string.format("%5s",number.." "..name.." - "..level) number = number + 1 if not(player:next()) then break end end player:free() end elseif display == 3 then local player = db.getResult("SELECT `name`, `maglevel` FROM `players` WHERE group_id < '2' ORDER BY `maglevel` DESC LIMIT 50;") if(player:getID() ~= -1) then while (true) do local name = player:getDataString("name") local maglevel = player:getDataInt("maglevel") skilllist = skilllist.. "\n#"..string.format("%5s",number.." "..name.." - "..maglevel) if not(player:next()) then break end number = number + 1 end end player:free() else local skills = db.getResult("SELECT `player_id`, `value`, `skillid` FROM `player_skills` WHERE `skillid` = "..id.." ORDER BY `value` DESC;") while (true) do local GUID = skills:getDataInt("player_id") local value = skills:getDataInt("value") local skillid = skills:getDataInt("skillid") local player = db.getResult("SELECT `name` FROM `players` WHERE `id` = "..GUID.." and group_id < '2' ") if(player:getID() ~= -1) then local name = player:getDataString("name") skilllist = skilllist.. "\n#"..string.format("%5s",number.." "..name.." - "..value) number = number + 1 player:free() end if number > 50 then break end if not(skills:next()) then break end end skills:free() end dialog = ""..displayoutput[display].." Highscores: \n "..skilllist.."" doShowTextDialog(cid, itemtype[display], dialog) end end
  23. Obrigado
    Vabrindox recebeu reputação de Igorzerah em Alavanca que troca item por outros itens !   
    Quebrei a cabeça aqui e fiz um script para vc, o jogador vai colocar os 3 itens e vai receber no msm local o item configurado, qualquer outro item colocado a mais junto com os 3 itens em cima da bancada vai ser removido. E sim só funciona somente com os 3 itens configurados.
     
    Actions.xml
    Coloque sempre 1 ActionID diferente para cada alavanca que usar esse msm script, colocando eles agrupadamente na tag:
    <action actionid="3001;3002;3003" event="script" value="craft.lua"/> Scripts/craft.lua
    Crie um arquivo .lua chamado "craft" e cole o codigo:
    Aqui estão alguma explicações para vc configurar

        pos_bancada1 = {x=105,y=121,z=7}, --> posição da 1ª bancada só trocar o x,y e z e assim por diante no pos_bancada2 e 3
        item1_craft = {item1=2466, item2=2455,item3=2454,premio=2674, nome_do_item='Apple'}, --> Aqui está toda a informação do 1º item que vc quer fazer, o item1,item2,item3 são os ids dos 3 itens necessários para criar o "premio" que tbm é só trocar o id, e o nome do item vc tem que colocar dentro das ' ' isso ae é só para ficar legal msm haha, o resto e tudo a msm coisa é só trocar.
    function onUse(cid, item, fromPosition, itemEx, toPosition) local Configs = { pos_bancada1 = {x=105,y=121,z=7}, pos_bancada2 = {x=107,y=121,z=7}, pos_bancada3 = {x=109,y=121,z=7}, item1_craft = {item1=2466, item2=2455,item3=2454,premio=2674, nome_do_item='Apple'}, item2_craft = {item1=2643, item2=2642,item3=2641,premio=2640, nome_do_item='Soft Boots'}, item3_craft = {item1=2634, item2=2635,item3=2636,premio=2637, nome_do_item='Black King'}, } local Script = { stack1 = getItemStackpos(Configs.pos_bancada1,Configs.item1_craft.item1), stack2 = getItemStackpos(Configs.pos_bancada1,Configs.item1_craft.item2), stack3 = getItemStackpos(Configs.pos_bancada1,Configs.item1_craft.item3), stack4 = getItemStackpos(Configs.pos_bancada2,Configs.item2_craft.item1), stack5 = getItemStackpos(Configs.pos_bancada2,Configs.item2_craft.item2), stack6 = getItemStackpos(Configs.pos_bancada2,Configs.item2_craft.item3), stack7 = getItemStackpos(Configs.pos_bancada3,Configs.item3_craft.item1), stack8 = getItemStackpos(Configs.pos_bancada3,Configs.item3_craft.item2), stack9 = getItemStackpos(Configs.pos_bancada3,Configs.item3_craft.item3), } if Script.stack1 and Script.stack2 and Script.stack3 then doCleanTile(Configs.pos_bancada1) addEvent(doCreateItem, 100, Configs.item1_craft.premio, 1, Configs.pos_bancada1) doPlayerSendTextMessage(cid, 22, "Parabens, Voce Forjou "..Configs.item1_craft.nome_do_item.." .") doSendMagicEffect(Configs.pos_bancada1, NST_ME_FIREWORK_BLUE) doSendMagicEffect(Configs.pos_bancada1, CONST_ME_FIREWORK_YELLOW) doSendMagicEffect(Configs.pos_bancada1, CONST_ME_FIREWORK_RED) return true end if Script.stack4 and Script.stack5 and Script.stack6 then doCleanTile(Configs.pos_bancada2) addEvent(doCreateItem, 100, Configs.item2_craft.premio, 1, Configs.pos_bancada2) doPlayerSendTextMessage(cid, 22, "Parabens, Voce Forjou "..Configs.item2_craft.nome_do_item.." .") doSendMagicEffect(Configs.pos_bancada2, NST_ME_FIREWORK_BLUE) doSendMagicEffect(Configs.pos_bancada2, CONST_ME_FIREWORK_YELLOW) doSendMagicEffect(Configs.pos_bancada2, CONST_ME_FIREWORK_RED) return true end if Script.stack7 and Script.stack8 and Script.stack9 then doCleanTile(Configs.pos_bancada3) addEvent(doCreateItem, 100, Configs.item3_craft.premio, 1, Configs.pos_bancada3) doPlayerSendTextMessage(cid, 22, "Parabens, Voce Forjou "..Configs.item3_craft.nome_do_item.." .") doSendMagicEffect(Configs.pos_bancada3, NST_ME_FIREWORK_BLUE) doSendMagicEffect(Configs.pos_bancada3, CONST_ME_FIREWORK_YELLOW) doSendMagicEffect(Configs.pos_bancada3, CONST_ME_FIREWORK_RED) return true end doPlayerSendTextMessage(cid, 28, "Voce nao tem os 3 itens, para Craftar!") return true end function getItemStackpos(position, id) if getTileItemById(position, id).itemid == 0 then return nil end for i = 0, 255 do local pos = getThingFromPos({x=position.x, y=position.y, z=position.z, stackpos=i}) if pos.itemid == id then return i end end end  
     
     
     
     
    @Zzyzx 
    Ah foi mal eu botei tudo em 1 só bancada e vc queria de baixo da bancada de cada item né..erro meu, mas não vou arrumar agora não só amanha pq to sem tempo.
  24. Obrigado
    Vabrindox recebeu reputação de Ackerzin em Alavanca que troca item por outros itens !   
    Quebrei a cabeça aqui e fiz um script para vc, o jogador vai colocar os 3 itens e vai receber no msm local o item configurado, qualquer outro item colocado a mais junto com os 3 itens em cima da bancada vai ser removido. E sim só funciona somente com os 3 itens configurados.
     
    Actions.xml
    Coloque sempre 1 ActionID diferente para cada alavanca que usar esse msm script, colocando eles agrupadamente na tag:
    <action actionid="3001;3002;3003" event="script" value="craft.lua"/> Scripts/craft.lua
    Crie um arquivo .lua chamado "craft" e cole o codigo:
    Aqui estão alguma explicações para vc configurar

        pos_bancada1 = {x=105,y=121,z=7}, --> posição da 1ª bancada só trocar o x,y e z e assim por diante no pos_bancada2 e 3
        item1_craft = {item1=2466, item2=2455,item3=2454,premio=2674, nome_do_item='Apple'}, --> Aqui está toda a informação do 1º item que vc quer fazer, o item1,item2,item3 são os ids dos 3 itens necessários para criar o "premio" que tbm é só trocar o id, e o nome do item vc tem que colocar dentro das ' ' isso ae é só para ficar legal msm haha, o resto e tudo a msm coisa é só trocar.
    function onUse(cid, item, fromPosition, itemEx, toPosition) local Configs = { pos_bancada1 = {x=105,y=121,z=7}, pos_bancada2 = {x=107,y=121,z=7}, pos_bancada3 = {x=109,y=121,z=7}, item1_craft = {item1=2466, item2=2455,item3=2454,premio=2674, nome_do_item='Apple'}, item2_craft = {item1=2643, item2=2642,item3=2641,premio=2640, nome_do_item='Soft Boots'}, item3_craft = {item1=2634, item2=2635,item3=2636,premio=2637, nome_do_item='Black King'}, } local Script = { stack1 = getItemStackpos(Configs.pos_bancada1,Configs.item1_craft.item1), stack2 = getItemStackpos(Configs.pos_bancada1,Configs.item1_craft.item2), stack3 = getItemStackpos(Configs.pos_bancada1,Configs.item1_craft.item3), stack4 = getItemStackpos(Configs.pos_bancada2,Configs.item2_craft.item1), stack5 = getItemStackpos(Configs.pos_bancada2,Configs.item2_craft.item2), stack6 = getItemStackpos(Configs.pos_bancada2,Configs.item2_craft.item3), stack7 = getItemStackpos(Configs.pos_bancada3,Configs.item3_craft.item1), stack8 = getItemStackpos(Configs.pos_bancada3,Configs.item3_craft.item2), stack9 = getItemStackpos(Configs.pos_bancada3,Configs.item3_craft.item3), } if Script.stack1 and Script.stack2 and Script.stack3 then doCleanTile(Configs.pos_bancada1) addEvent(doCreateItem, 100, Configs.item1_craft.premio, 1, Configs.pos_bancada1) doPlayerSendTextMessage(cid, 22, "Parabens, Voce Forjou "..Configs.item1_craft.nome_do_item.." .") doSendMagicEffect(Configs.pos_bancada1, NST_ME_FIREWORK_BLUE) doSendMagicEffect(Configs.pos_bancada1, CONST_ME_FIREWORK_YELLOW) doSendMagicEffect(Configs.pos_bancada1, CONST_ME_FIREWORK_RED) return true end if Script.stack4 and Script.stack5 and Script.stack6 then doCleanTile(Configs.pos_bancada2) addEvent(doCreateItem, 100, Configs.item2_craft.premio, 1, Configs.pos_bancada2) doPlayerSendTextMessage(cid, 22, "Parabens, Voce Forjou "..Configs.item2_craft.nome_do_item.." .") doSendMagicEffect(Configs.pos_bancada2, NST_ME_FIREWORK_BLUE) doSendMagicEffect(Configs.pos_bancada2, CONST_ME_FIREWORK_YELLOW) doSendMagicEffect(Configs.pos_bancada2, CONST_ME_FIREWORK_RED) return true end if Script.stack7 and Script.stack8 and Script.stack9 then doCleanTile(Configs.pos_bancada3) addEvent(doCreateItem, 100, Configs.item3_craft.premio, 1, Configs.pos_bancada3) doPlayerSendTextMessage(cid, 22, "Parabens, Voce Forjou "..Configs.item3_craft.nome_do_item.." .") doSendMagicEffect(Configs.pos_bancada3, NST_ME_FIREWORK_BLUE) doSendMagicEffect(Configs.pos_bancada3, CONST_ME_FIREWORK_YELLOW) doSendMagicEffect(Configs.pos_bancada3, CONST_ME_FIREWORK_RED) return true end doPlayerSendTextMessage(cid, 28, "Voce nao tem os 3 itens, para Craftar!") return true end function getItemStackpos(position, id) if getTileItemById(position, id).itemid == 0 then return nil end for i = 0, 255 do local pos = getThingFromPos({x=position.x, y=position.y, z=position.z, stackpos=i}) if pos.itemid == id then return i end end end  
     
     
     
     
    @Zzyzx 
    Ah foi mal eu botei tudo em 1 só bancada e vc queria de baixo da bancada de cada item né..erro meu, mas não vou arrumar agora não só amanha pq to sem tempo.
  25. Obrigado
    Vabrindox recebeu reputação de luanluciano93 em script de missão   
    Fiz um bem simples ve se resolve seu problema.
     
    O jogador precisa ir até o npc falar "missao" e ae depois é só ele ir caçar e matar a quantidade certa de bichos para ganhar item/exp automaticamente. E se ele for no npc o npc indica para ele que não pode mais fazer aquela "missao" novamente.
     
    creaturescripts.xml
    <event type="kill" name="kill_task" event="script" value="kill_task.lua"/> creaturescripts/login.lua
    Antes do return true la do final bota isso.
    registerCreatureEvent(cid, "kill_task") creaturescripts/scripts
    Cria um arquivo .lua com o nome "kill_task" e cola isso dentro.
    local Configs = { storage = 2427, monster = 'Rabbit', premio = 2160, qtd = 1, exp = 100, } function onKill(cid, target, lastHit) if isMonster(target) and getCreatureName(target) == Configs.monster then local get = getPlayerStorageValue(cid, Configs.storage) if get >=0 and get <=5 then setPlayerStorageValue(cid, Configs.storage, (get+1)) local gett = getPlayerStorageValue(cid, Configs.storage) doCreatureSay(cid, 'Voce matou '..gett..' Rabbits ate agora.', TALKTYPE_ORANGE_1) if gett == 5 then doPlayerAddItem(cid, Configs.premio, Configs.qtd) doPlayerAddExp(cid,Configs.exp) doCreatureSay(cid, 'Voce acabou a missao!.', TALKTYPE_ORANGE_1) setPlayerStorageValue(cid, Configs.storage, (gett+1)) end end end return true end Npc
    Na pasta npc crie um arquivo .xml com o nome "Task" e cole isso
    <?xml version="1.0" encoding="UTF-8"?> <npc name="Task" script="task.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="128" head="17" body="54" legs="114" feet="0" addons="2"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|, eu tenho uma missao para voce!"/> </parameters> </npc> Npc/scripts
    Crie um arquivo .lua com o nome "task" e cole isso
    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 local storage = 2427 local get = getPlayerStorageValue(cid, storage) if(msgcontains(msg, 'missao') and (get == -1)) then selfSay('Para ganhar o premio mate 5 Rabbits! Voce ira receber automaticamente.', cid) setPlayerStorageValue(cid, storage, 0) elseif get >=5 then selfSay('Voce acabou a missao de matar Rabbits!', cid) else selfSay('Voce precisa matar '..(5-get)..' Rabbits!', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())  

Informação Importante

Confirmação de Termo