Histórico de Curtidas
-
gabrielzika recebeu reputação de koyotestark em How to fix NPC msg sending to Default chat@henkas
replaces this
-
gabrielzika recebeu reputação de Doidodepeda em Slot System@Gabrielk
Action:
CreatureScript
-
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>
-
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?
-
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
-
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"/>
-
gabrielzika deu reputação a Cat em Como faço um spoiler?[ spoiler ] mensagem [ / spoiler ]
Tudo junto.
-
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.
-
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
-
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
-
gabrielzika deu reputação a Snowsz em Creature Information OffsetFaz 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 "},".
-
gabrielzika recebeu reputação de Theodorojose em isRiderOrFlyOrSurf In server@Theodorojose exato.
-
gabrielzika deu reputação a Kazuya9629 em Como Proteger Suas SpriteCreditos 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
-
gabrielzika recebeu reputação de Altairjr em (Resolvido)Mudar Elemento dá Wand por Itemsã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)
-
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
-
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
-
gabrielzika recebeu reputação de Altairjr em (Resolvido)Mudar Elemento dá Wand por Item@Altairjr me explica direito que te ajudo sim bro
-
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
-
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
-
gabrielzika recebeu reputação de Thalles Vitor em Aparecer boost no nome do PokémonhideBoost = false não vai?
-
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
-
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
-
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"/>
-
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)
-
gabrielzika recebeu reputação de DarkRed em (Resolvido)Fischer sem outfits@DarkRed manda o seu script de fishing...