Ir para conteúdo

gabrielzika

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Obrigado
    gabrielzika recebeu reputação de koyotestark em How to fix NPC msg sending to Default chat   
    @henkas
     
    replaces this
     


     
  2. Gostei
    gabrielzika recebeu reputação de Doidodepeda em Slot System   
    @Gabrielk 
     
    Action:
     


     
    CreatureScript
     


     
  3. Curtir
    gabrielzika recebeu reputação de amoxicilina em (Resolvido)NPC Que troca storage por itens   
    @amoxicilina
    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 config = {         item1 = 12400, item2 = 12400, item3 = 12400, item4 = 12400, count1 = 5, count2 = 5, count3 = 5, count4 = 10,        level = 300,    -- Level que precisara para viajar sto = 99952,    -- Storage não mecher  tempo = 172800, -- tempo que vai durar a storage quest = 444454, -- quest necessaria... } if msgcontains(msg, 'mission') then     if (getPlayerStorageValue(cid, config.sto) <= os.time()) then        if getPlayerStorageValue(cid, config.quest) >= 1 then         if getPlayerItemCount(cid, config.item1) >= config.count1 and getPlayerItemCount(cid, config.item2) >= config.count2 and getPlayerItemCount(cid, config.item3) >= config.count3 and getPlayerItemCount(cid, config.item4) >= config.count4 then             selfSay('Claro, você foi para a próxima missão. Boa sorte.', cid)             setPlayerStorageValue(cid, config.sto, os.time()+config.tempo)             doPlayerRemoveItem(cid, config.item1, config.count1)             doPlayerRemoveItem(cid, config.item2, config.count2)             doPlayerRemoveItem(cid, config.item3, config.count3)             doPlayerRemoveItem(cid, config.item4, config.count4)         else             selfSay('Traga-me os 25 protective charm para poder treinar comigo por dois dias.', cid)         end     else             selfSay("voce nao completou a quest do vilarejo dos orc ao south da cidade, complete-a e e mostre-me que voce e realmente um guerreiro promissor.", cid)         end     else             selfSay('Você Ja fez essa missão!' , cid)     return true     end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())  
    xml
     
    <?xml version="1.0" encoding="UTF-8"?> <npc name="NomeDoNpc" script="NomeDoArquivo.lua" walkinterval="0" floorchange="0"> <health now="150" max="150"/> <look type="589" head="20" body="100" legs="50" feet="99" corpse="2212"/>] <parameters> <parameter key="message_greet" value="Parabens, voce provou-me que e um guerreiro promissor. Se quiser continuar diga {mission}."/> </parameters> </npc>  
  4. Gostei
    gabrielzika recebeu reputação de Salazar Slytherin em Criação de Quest,Tile que mata o play se pisa nele   
    @louco3626
     vc criou o arquivo neste local?? data/movements/scripts
    tem como enviar prints?
     
  5. Gostei
    gabrielzika recebeu reputação de Salazar Slytherin em Criação de Quest,Tile que mata o play se pisa nele   
    @louco3626
     
    https://hastebin.com/gulokatovi.rb
  6. Gostei
    gabrielzika recebeu reputação de Salazar Slytherin em Criação de Quest,Tile que mata o play se pisa nele   
    @louco3626 Ve se é isso(não testei):
     
    Em data/movements/scripts/ crie um arquivo chamado: tileEvent.lua
     
    local config = { actions = {1200, 1300}, -- Certo, Errado tiles = {1200, 1300}, -- tile normal, tile diferente } function onStepIn(cid) if isPlayer(cid) and not isPlayerGhost(cid) then -- Certo local pos = getCreaturePosition(cid) if getTileInfo(pos).actionid == config.actions[1] then if getTileItemById(pos, config.tiles[1]).uid ~= 0 then doTransformItem(getTileItemById(pos, config.tiles[1]).uid, config.tiles[2]) end end end if isPlayer(cid) and not isPlayerGhost(cid) then -- Errado local valor = getCreatureHealth(cid) local pos = getCreaturePosition(cid) if getTileInfo(pos).actionid == config.actions[2] then if getTileItemById(pos, config.tiles[1]).uid ~= 0 or getTileItemById(pos, config.tiles[2]).uid ~= 0 then doCreatureAddHealth(cid, -valor) end end end return true end Tag:
     
    <movevent type="StepIn" actionid="1200;1300" event="script" value="tileEvent.lua"/>  
     
  7. Curtir
    gabrielzika deu reputação a Cat em Como faço um spoiler?   
    [ spoiler ] mensagem [ / spoiler ]
     
    Tudo junto.
  8. Curtir
    gabrielzika deu reputação a Gengo em Player Info OTPokemon   
    [OTClient] Health Player Info OTPokemon
     
    Eae galerinha do TibiaKing, hoje venho trazer mais uma contribuição para a comunidade, um módulo indêntico ao do OtPokemon.
    Mesmo que seja simples a instalação, tem sempre aquele que não sabe onde deve colocar o módulo, peço então que tenha paciência quanto a esse simples tutorial, aos demais aqueles que já sabem, peço que ao menos leia a Observações do módulo.
     
         1º Faça o download do módulo.
     
        2º Extraia o módulo para a pasta do seu otClient em /modules ficando assim:
     
     
    Feito o passo 1 e 2 creio que já estará funcionando, isto se você fez tudo certinho.
     
    •Observações do módulo•
     
    Demonstrativo do módulo no jogo.

  9. Gostei
    gabrielzika recebeu reputação de Salazar Slytherin em Criação de Quest,Tile que mata o play se pisa nele   
    @louco3626
     
    local config = { actions = {10130, 10131}, -- Certo, Errado tiles = {407, 406}, -- tile normal, tile diferente } function onStepIn(cid) if isPlayer(cid) and not isPlayerGhost(cid) then -- Certo local pos = getCreaturePosition(cid) if getTileInfo(pos).actionid == config.actions[1] then if getTileItemById(pos, config.tiles[1]).uid ~= 0 then doTransformItem(getTileItemById(pos, config.tiles[1]).uid, config.tiles[2]) end end end if isPlayer(cid) and not isPlayerGhost(cid) then -- Errado local valor = getCreatureHealth(cid) local pos = getCreaturePosition(cid) if getTileInfo(pos).actionid == config.actions[2] then if getTileItemById(pos, config.tiles[1]).uid ~= 0 or getTileItemById(pos, config.tiles[2]).uid ~= 0 then doCreatureAddHealth(cid, -valor) end end end return true end  
    <movevent type="StepIn" actionid="10130;10131" event="script" value="tileEvent.lua"/>  
    Nos tiles que estão em azul ai na sua print, tu coloca a Action: 10130 e no Resto em volta tu poem 10131
  10. Obrigado
    gabrielzika recebeu reputação de Pifafa em (Resolvido)Script de Anuncio   
    @Pifafa
     
    Cria um arquivo chamado anuncio.lua em data/talkactions/scripts e cola isso dentro:
    local config = { storage = 19400, -- storage em que será salvo o tempo cor = "green", -- de acordo com o constant.lua da lib tempo = 60, -- em segundos itemid = 2159, --item que sera removido price = 1, -- quantidade de item que sera removido level = 1000 -- level necessario para poder utilizar o comando. } function onSay(cid, words, param, channel) if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end if getPlayerLevel(cid) >= config.level then if getPlayerStorageValue(cid, config.storage) - os.time() <= 0 then if doPlayerRemoveItem(cid, config.itemid, config.price) then setPlayerStorageValue(cid, config.storage, os.time() + (config.tempo*1)) doBroadcastMessage(""..getCreatureName(cid).." [ANUNCIO]: "..param.."", config.cor) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Vc Falo Com Sucesso " ..config.tempo.. " second(s) espere.") else doPlayerSendCancel(cid, "Você precisa " ..config.price.. " Scarab Coins para falar novamente no Anuncio.") return true end else doPlayerSendCancel(cid, "Você Falo no Anuncio " ..(getPlayerStorageValue(cid, config.storage) - os.time()).. " seconds Espere.") return true end else doPlayerSendCancel(cid, "You have to be level " ..config.level.. " or more in order to use broadcast.") end end  
    Tag:
     
    <talkaction words="/anuncio" event="script" value="anuncio.lua"/>  
    Crédito pelo script: Kaleudd
  11. Curtir
    gabrielzika deu reputação a Snowsz em Creature Information Offset   
    Faz tempo que não posto nada, então deu vontade, tava brincando um pouco ai fiz esse sisteminha básico.
     
    • Gifs
     
    Nesse primeiro Gif, ao trocar a direção da Outfit, o nome e as barras de informações como Health, Mana, mudam de posição, isso é bom para ajustar as Outfits de acordo com o seu tamanho, como o Demon, ficar com as informações logo em cima da cabeça, ou Hydra, todos estão com o local padrão.

     
    Aqui era como as informações ficavam com essa Outfit originalmente, no padrão de sempre dos clients.

     
     
    Comparativo em imagem estática:
     
    Tibia Outfit antes e depois:

     
    Aqui estão algumas outfits que meu primo @Fae1z fez, apliquei o sistema de offset nelas, uma do Graves, uma do Ekko, ambos são personagens do game League of Legends, e uma baseada Uganda Knuckle:
     
    Ekko antes:

     
    Ekko depois:

     
    Graves antes e depois:

     
    Uganda Knuckle antes e depois:

     
    Aqui eu estava brincando de por as informações da Outfit de anão de modo drogado kkk.

     
     
    • Código
     
    Em Creature.h modifique nesta linha:
    void Creature::drawInformation(const Point& point, bool useGray, const Rect& parentRect, int drawFlags) Mude "const Point& point" para "Point& point".
    Ficando:
    void Creature::drawInformation(Point& point, bool useGray, const Rect& parentRect, int drawFlags)  
    Embaixo de:
     
    std::string getName() { return m_name; } Adicione:
     
    Point getInformationOffset() { return m_informationOffset; } void setInformationOffset(int x, int y) { m_informationOffset.x = x; m_informationOffset.y = y; }  
    Embaixo de:
    Position m_oldPosition; Adicione:
     
    Point m_informationOffset;  
     
    Agora, em Creature.cpp procure por:
    void Creature::drawInformation(const Point& point, bool useGray, const Rect& parentRect, int drawFlags) Mude "const Point& point" para "Point& point".
    Ficando:
    void Creature::drawInformation(Point& point, bool useGray, const Rect& parentRect, int drawFlags) Sim, isso está repetido, é assim mesmo, o processo é necessário em Creature.h e Creature.cpp, nessa função a variável point tem seu tipo alterado de Const para normal.
     
    Ainda em Creature.cpp procure por:
    if(!useGray) fillColor = m_informationColor; Pule duas linhas e adicione:
    point.x += m_informationOffset.x; point.y += m_informationOffset.y;  
    Agora, em Luafunctions.cpp procure por:
    g_lua.bindClassMemberFunction<Creature>("jump", &Creature::jump); Embaixo adicione:
    g_lua.bindClassMemberFunction<Creature>("setInformationOffset", &Creature::setInformationOffset); g_lua.bindClassMemberFunction<Creature>("getInformationOffset", &Creature::getInformationOffset);  
    A parte da source é só isso.
     
    Foi criada uma variável do tipo Point na classe Creature, que pode armazenar dois valores do tipo Int, sendo eles X & Y, assim detendo uma posição de offset, para ajustar a posição das informações(Health Bar, Mana Bar e Name) da criatura, essa variável é usada na função Creature::drawInformation, onde ocorre todo o desenho de informações das criaturas, lá o offset criado altera a posição de um Point usado como posição base das informações, alterando esse Point todo o resto segue aquela posição,  você pode setar o offset diretamente na criatura, as funções podem ser usadas tanto na source usando C++ quanto nos scripts usando Lua, em Lua o uso das funções é o seguinte:
     
    Essa função retorna uma tabela com X & Y, algo como "table = {x = 10, y = 20}", são as posições do offset.
    Creature:getInformationOffset() Exemplo de uso:
     
    local Offset = Creature:getInformationOffset() print(Offset.x) print(Offset.y) Isso vai printar no client_terminal do OTClient os valores de X & Y.
     
    Enquanto esta altera as posições usando os valores X & Y.
    Creature:setInformationOffset(x, y) Exemplo:
    Creature:setInformationOffset(10, -5)  
    Essa configuração de offset vai aumentar X em 10 Pixels e diminuir Y em 5 Pixels, no meu primeiro gif, na direção Sul do Char, eu usei X diminuindo 13 Pixels e Y diminuindo 8 Pixels, algo como isso:
    Creature:setInformationOffset(-13, -8)  
     
    Para tudo isso funcionar igual os gifs acima eu fiz um módulo especial, onde dependendo da Outfit e da direção que a criatura está olhando, ele vai alterar o offset de acordo.
     
    Para criar o módulo, siga estes passos:
     
    Na pasta do OTClient em modules/ crie uma pasta chamada game_creatureinformation, dentro crie um arquivo com o mesmo nome e a extensão .otmod, algo como "game_creatureinformation.otmod", o conteúdo do arquivo é este:
    Module name: game_creatureinformation description: Changes the position of the informations point to correctly draw names and creature bars. author: Snowsz website: tibiaking.com autoload: true reloadable: true sandboxed: true version: 1.0 scripts: [ game_creatureinformation ] @onLoad: init() @onUnload: terminate()  
    Crie um arquivo com o mesmo nome e a extensão .lua, algo como "game_creatureinformation.lua", o conteúdo do arquivo é este:
    --[[ Directions: North /\ East > South \/ West < Structure: [OutfitID] = { [Direction] = {x = OFFSETX, y = OFFSETY}, } ]] --Lista de offsets para cada Outfit. local OutfitOffsets = { [143] = { --Outfit do primeiro gif [North] = {x = -13, y = -8}, [East] = {x = -17, y = -8}, [South] = {x = -13, y = -8}, [West] = {x = -15, y = -8}, }, [160] = { --Outfit de anão com o nome full drogado. [North] = {x = 0, y = 0}, [East] = {x = 0, y = 0}, [South] = {x = -13, y = -80}, [West] = {x = 0, y = 0}, } } local function translateDir(dir) if dir == NorthEast or dir == SouthEast then return East elseif dir == NorthWest or dir == SouthWest then return West end return dir end local function getOutfitInformationOffset(outfit, dir) if OutfitOffsets[outfit] then return OutfitOffsets[outfit][translateDir(dir)] end return {x = 0, y = 0} end local function onCreatureAppear(creature) local Offset = getOutfitInformationOffset(creature:getOutfit().type, creature:getDirection()) creature:setInformationOffset(Offset.x, Offset.y) end local function onCreatureDirectionChange(creature, oldDirection, newDirection) local Offset = getOutfitInformationOffset(creature:getOutfit().type, newDirection) creature:setInformationOffset(Offset.x, Offset.y) end local function onCreatureOutfitChange(creature, newOutfit, oldOutfit) local Offset = getOutfitInformationOffset(newOutfit.type, creature:getDirection()) creature:setInformationOffset(Offset.x, Offset.y) end function init() connect(LocalPlayer, {onOutfitChange = onCreatureOutfitChange}) connect(Creature, { onAppear = onCreatureAppear, onDirectionChange = onCreatureDirectionChange, onOutfitChange = onCreatureOutfitChange }) end function terminate() disconnect(LocalPlayer, {onOutfitChange = onCreatureOutfitChange}) disconnect(Creature, { onAppear = onCreatureAppear, onDirectionChange = onCreatureDirectionChange, onOutfitChange = onCreatureOutfitChange }) end  
    A parte do módulo está finalizada, o que resta agora é configurar as Outfits na tabela com seus determinados Offsets, e não se preocupe, se a outfit não estiver configurada, ela vai seguir o padrão normal, o módulo só altera algo quando determinada Outfit está configurada.
     
    Para configurar o módulo é simples, basta seguir o padrão:
    [ID DA OUTFIT AQUI] = { [North] = {x = 0, y = 0}, [East] = {x = 0, y = 0}, [South] = {x = 0, y = 0}, [West] = {x = -0, y = 0}, }, Nos primeiros colchetes coloque o ID da sua Outfit para ter o offset modificado, os colchetes restantes são as direções, não é necessário mexer neles, dentro de cada índice da tabela tem os offsets X & Y, basta modificar o valor de acordo, sendo ele positivo ou negativo. NÃO SE ESQUEÇA DA VÍRGULA NO FINAL "},".
  12. Obrigado
    gabrielzika recebeu reputação de Theodorojose em isRiderOrFlyOrSurf In server   
    @Theodorojose exato.
  13. Gostei
    gabrielzika deu reputação a Kazuya9629 em Como Proteger Suas Sprite   
    Creditos Object Build Por Ter criado Programa
    ABRA PASTA Object Builder
     

    Abaixe Notepad++
    https://notepad-plus-plus.org/

    MODIFIQUE A Dat e Spr Por Um Numero gigante Para Que object Build Bug E Aparessa Signitude 0 ASSIM ELES NAO CONSEGUIRAO Abrir com object Buid So Voce Porque so voce tem o codigo

    Depois Que Salva O Arquivo Abra Object Build

    Vai Em Arquivo e COPILAR COMO

    PROCURE OQUE VOCE EDITOU

     
    FINALIZER  CONFIRMANDO PRONTO

     
  14. Curtir
    gabrielzika recebeu reputação de Altairjr em (Resolvido)Mudar Elemento dá Wand por Item   
    são realmente o mesmo id?
    <wand id="12655" level="8" mana="10" min="700" max="850" type="holy" event="function" value="default"> e
    <wand id="12665" range="8" lvl="8" mana="10" enabled="1" exhaustion="0" script="donatestaff.lua">  
    um tá 12655 e outro 12665 '-'
     
    comenta os ids de todas as wands certinho aqui pra mim colocar só para algumas especificas usarem o !wand
     
    e sobre cobrar, não está cobrando?? wtf kk tem o 
    doPlayerRemoveMoney(cid, config.price)  
  15. Curtir
    gabrielzika recebeu reputação de Altairjr em (Resolvido)Mudar Elemento dá Wand por Item   
    @Altairjr espero que seja isso(não testei plx)
     
    local combat_values = { ["none"] = -1, ["ice"] = 1, ["fire"] = 2, ["earth"] = 3, ["energy"] = 4, ["holy"] = 5, ["death"] = 6, } local config = { storage = 101010, time_storage = 101011, price = 1000000, delay = 0, wands = {12629, 12655, 12661, 12662, 12663, 12664, 12665}, msg = { help = "Use o comando exemplo: !wand holy Efeitos disponíveis: ice, fire, earth, energy, holy, death, e none para desabilitar. A troca para outro elemento custa 1kk.", invalid = "Por favor, digite um tipo valido.", changed = "O elemento da wand foi trocado para %s.", nomoney = "Você não possui dinheiro.", delayed = "Você precisa esperar para trocar o efeito.", } } -- /////////////////////Requerimentos///////////////////-- local req_text = "You cannot use this command." -- Mensagem caso nao possua o item --/////////////////////////////////////////////////////-- function onSay(cid, words, param) local param = param:lower() local value = combat_values[param] local wand_left = getPlayerSlotItem(cid, CONST_SLOT_LEFT) local wand_right = getPlayerSlotItem(cid, CONST_SLOT_RIGHT) if wand_left.uid > 0 or wand_right.uid > 0 then if isInArray(config.wands, wand_left.itemid) or isInArray(config.wands, wand_right.itemid) then if wand_left.uid > 0 and isInArray(config.wands, wand_left.itemid) and (param == "help" or param == "") then doShowTextDialog(cid, wand_left.itemid, string.format(config.msg.help, config.price)) return true elseif wand_right.uid > 0 and isInArray(config.wands, wand_right.itemid) and (param == "help" or param == "") then doShowTextDialog(cid, wand_right.itemid, string.format(config.msg.help, config.price)) return true end if not value then doPlayerSendCancel(cid, config.msg.invalid) return true end if getPlayerMoney(cid) < config.price then doPlayerSendCancel(cid, config.msg.nomoney) return true end if getPlayerMoney(cid) < config.price then doPlayerSendCancel(cid, config.msg.nomoney) return true end if getCreatureStorage(cid, config.time_storage) > os.time() then doPlayerSendCancel(cid, config.msg.delayed) return true end doCreatureSetStorage(cid, config.storage, value) doCreatureSetStorage(cid, config.time_storage, os.time() + config.delay) doPlayerRemoveMoney(cid, config.price) doPlayerSendCancel(cid, string.format(config.msg.changed, param)) else doPlayerSendCancel(cid, req_text) end else doPlayerSendCancel(cid, req_text) end return true end  
  16. Obrigado
    gabrielzika recebeu reputação de Altairjr em (Resolvido)Mudar Elemento dá Wand por Item   
    @Altairjr veja se funciona ai bro (não testei). Qualquer erro me manda aqui :d
     
    local combat_values = { ["none"] = -1, ["ice"] = 1, ["fire"] = 2, ["earth"] = 3, ["energy"] = 4, ["holy"] = 5, ["death"] = 6, } local config = { storage = 101010, time_storage = 101011, price = 1000000, delay = 0, msg = { help = "Use o comando exemplo: !wand holy Efeitos disponíveis: ice, fire, earth, energy, holy, death, e none para desabilitar. A troca para outro elemento custa 1kk.", invalid = "Por favor, digite um tipo valido.", changed = "O elemento da wand foi trocado para %s.", nomoney = "Você não possui dinheiro.", delayed = "Você precisa esperar para trocar o efeito.", } } -- /////////////////////Requerimentos///////////////////-- local req_text = "You cannot use this command." -- Mensagem caso nao possua o item --/////////////////////////////////////////////////////-- function onSay(cid, words, param) local param = param:lower() local value = combat_values[param] local wand_left = getPlayerSlotItem(cid, CONST_SLOT_LEFT) local wand_right = getPlayerSlotItem(cid, CONST_SLOT_RIGHT) if wand_left.uid > 0 or wand_right.uid > 0 then if wand_left.uid > 0 and (param == "help" or param == "") then doShowTextDialog(cid, wand_left.itemid, string.format(config.msg.help, config.price)) return true elseif wand_right.uid > 0 and (param == "help" or param == "") then doShowTextDialog(cid, wand_right.itemid, string.format(config.msg.help, config.price)) return true end if not value then doPlayerSendCancel(cid, config.msg.invalid) return true end if getPlayerMoney(cid) < config.price then doPlayerSendCancel(cid, config.msg.nomoney) return true end if getPlayerMoney(cid) < config.price then doPlayerSendCancel(cid, config.msg.nomoney) return true end if getCreatureStorage(cid, config.time_storage) + config.delay > os.time() then doPlayerSendCancel(cid, config.msg.delayed) return true end doCreatureSetStorage(cid, config.storage, value) doCreatureSetStorage(cid, config.time_storage, os.time()) doPlayerRemoveMoney(cid, config.price) doPlayerSendCancel(cid, string.format(config.msg.changed, param)) else doPlayerSendCancel(cid, req_text) end return true end  
  17. Curtir
    gabrielzika recebeu reputação de Altairjr em (Resolvido)Mudar Elemento dá Wand por Item   
    @Altairjr me explica direito que te ajudo sim bro
  18. Curtir
    gabrielzika recebeu reputação de thelifeofpbion em [Help Cliente OLD] Problema ao trocar Ip client 7.72   
    @joaopedrodepaiva agora é só baixar, abrir pelo notepad++ e substituir o
     
    11.111.111.11
     
    pelo seu IP
     
    obs: clique em substituir todos!
     
    tibia.exe
  19. Gostei
    gabrielzika recebeu reputação de KotZletY em Erro Script Evento Bag   
    @Pokemon X Ice
     
    Ve se é isso:
     
    local item_id = {2160, 2159, 2158} -- joga os id dos itens aqui local pos = {x = 1052, y = 1049, z = 7} -- position cp de saffron local chance = 50 -- chance de ganhar function onUse(cid, itemId, itemEx) if getGlobalStorageValue(cid, 12389) == 1 then else doTeleportThing(cid, pos) doPlayerSendCancel(cid, "[Evento Bag] esta fechado") return true end local valor = math.random(1, 100) if chance >= valor then local w = math.random (1,#item_id) doPlayerAddItem(cid, item_id[w]) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"[Win-Bag-Event]\nPremio: ["..getItemNameById(item_id[w]).."].") doTeleportThing(cid, pos) else doTeleportThing(cid, pos) doCreatureSay(cid, 'Falhou Meu Guerreiro', TALKTYPE_ORANGE_1) return true end end  
  20. Obrigado
    gabrielzika recebeu reputação de Thalles Vitor em Aparecer boost no nome do Pokémon   
    hideBoost = false não vai?
  21. Gostei
    gabrielzika recebeu reputação de Emooooo em colocar exausted aqui !   
    @Emooooo diz ai se é isso ?
    function onUse(cid, item, fromPos, itemEx, toPos) local rock1pos = {x=195, y=118, z=9, stackpos=1} -- Posição da Pedra local getrock1 = getThingfromPos(rock1pos) local UniID = 3331 -- UniqueID que vai ser adicionado na alavanca local rockID = 8740 -- ID da pedra local sec = 30 -- qnt em segundos para a pedra aparecer e a alavanca voltar if item.uid == UniID and item.itemid == 1945 and getrock1.itemid == rockID then doRemoveItem(getrock1.uid, 1) doTransformItem(item.uid, item.itemid+1) doSendMagicEffect(rock1pos, 2) addEvent( function() doCreateItem(rockID, 1, rock1pos) doTransformItem(item.uid, item.itemid-1) doSendMagicEffect(rock1pos, 13) end, sec * 1000) return true end return true end  
  22. Gostei
    gabrielzika recebeu reputação de Emooooo em colocar exausted aqui !   
    @Emooooo veja se funciona ai bro 
    function onUse(cid, item, toPosition) local rock1pos = {x=195, y=118, z=9, stackpos=1} -- Posição da Pedra local getrock1 = getThingfromPos(rock1pos) local UniID = 3331 -- UniqueID que vai ser adicionado na alavanca local rockID = 8740 -- ID da pedra local sto = 19270 -- storage do exhaust local time = 20 -- tempo em minutos if exhaustion.get(cid, sto) then seconds = math.floor(exhaustion.get(cid, sto)) return doPlayerSendCancel(cid, "Você tem que esperar "..seconds.." segundos para usar isso novamente.") end if item.uid == UniID and item.itemid == 1945 and getrock1.itemid == rockID then doRemoveItem(getrock1.uid, 1) doTransformItem(item.uid, item.itemid+1) doSendMagicEffect(rock1pos, 2) elseif item.uid == UniID and item.itemid == 1946 then doCreateItem(rockID, 1, rock1pos) doTransformItem(item.uid,item.itemid-1) doSendMagicEffect(rock1pos, 13) end exhaustion.set(cid, sto, 60 * time) return TRUE end  
  23. Obrigado
    gabrielzika recebeu reputação de igor lindo em (Resolvido)ERRO NA HORA DE COMPRAR ITEM NO SHOP!   
    @Wesley Alexandre2014 veja se o meu Shop funciona com Você!
     
    shop.lua
    function onThink(interval, lastExecution, thinkInterval)   local result = db.getResult("SELECT * FROM shop_history WHERE `processed` = 0;")   if(result:getID() ~= -1) then while(true) do cid = getCreatureByName(tostring(result:getDataString("player"))) product = tonumber(result:getDataInt("product")) itemr = db.getResult("SELECT * FROM shop_offer WHERE `id` = "..product..";") if isPlayer(cid) then local id = tonumber(itemr:getDataInt("item")) local tid = tonumber(result:getDataInt("id")) local count = tonumber(itemr:getDataInt("count")) local tipe = tonumber(itemr:getDataInt("type")) local productn = tostring(itemr:getDataString("name")) if isInArray({5,8},tipe) then if getPlayerFreeCap(cid) >= getItemWeightById(id, count) then if isContainer(getPlayerSlotItem(cid, 3).uid) then received = doAddContainerItem(getPlayerSlotItem(cid, 3).uid, id,count) if received then doPlayerSendTextMessage(cid,19, "You have received >> "..productn.." << from Shop.") db.executeQuery("UPDATE `shop_history` SET `processed`='1' WHERE id = " .. tid .. ";") else doPlayerSendTextMessage(cid,19, "Sorry, you don't have enough space on container to receive >> "..productn.." <<") end else doPlayerSendTextMessage(cid,19, "Sorry, you don't have a container to receive >> "..productn.." <<") end else doPlayerSendTextMessage(cid,19, "Sorry, you don't have enough capacity to receive >> "..productn.." << (You need: "..getItemWeightById(id, count).." Capacity)") end elseif isInArray({6,7},tipe) then if tipe == 6 then bcap = 8 bid = 1987 elseif tipe == 7 then bcap = 20 bid = 1988 end if isItemRune(id) then count = 1 end if getPlayerFreeCap(cid) >= (getItemWeightById(1987, 1) + getItemWeightById(id,count * bcap)) then local bag = doCreateItemEx(bid, 1) for i = 1,bcap do doAddContainerItem(bag, id, count) end received = doPlayerAddItemEx(getPlayerSlotItem(cid, 3).uid, bag) if received == RETURNVALUE_NOERROR then doPlayerSendTextMessage(cid,19, "You have received >> "..productn.." << from Shop.") db.executeQuery("UPDATE `shop_history` SET `processed`='1' WHERE id = " .. tid .. ";") else doPlayerSendTextMessage(cid,19, "Sorry, you don't have enough space to receive >> "..productn.." <<") end else doPlayerSendTextMessage(cid,19, "Sorry, you don't have enough capacity to receive >> "..productn.." << (You need: "..getItemWeightById(id, count).." Capacity)") end end end itemr:free() if not(result:next()) then break end end result:free() end return true end  
    xml
     
    <globalevent name="shop" interval="30" script="shop.lua"/>  
  24. Curtir
    gabrielzika recebeu reputação de Christinacsa em Por mensagem em Green   
    @Christinacsa
     
    doBroadcastMessage("[Castle Of Honor] Atenção! A guild "..getPlayerGuildName(cid).." está tentando dominar o castelo, preparem-se!", MESSAGE_INFO_DESCR)  
  25. Curtir
    gabrielzika recebeu reputação de DarkRed em (Resolvido)Fischer sem outfits   
    @DarkRed manda o seu script de fishing...

Informação Importante

Confirmação de Termo