Ir para conteúdo

Holograma

Campones
  • Total de itens

    79
  • Registro em

  • Última visita

  • Dias Ganhos

    5

Holograma venceu a última vez em Abril 17

Holograma had the most liked content!

Sobre Holograma

Perfil

  • Gênero
    Masculino

Informações

  • Forma que conheci o xTibia
    Sites de Busca
  • Sou
    OT-Admin

Últimos Visitantes

1098 visualizações

Holograma's Achievements

  1. function sendMsgCountToItens(cid) local item1 = getPlayerStorageValue(cid, 251461):explode("|") -- Verificar se todos os itens foram entregues local allItemsDelivered = getPlayerItemCount(cid, item1[1]) >= tonumber(item1[3]) and getPlayerItemCount(cid, item1[2]) >= tonumber(item1[4]) and getPlayerItemCount(cid, item1[5]) >= tonumber(item1[7]) and getPlayerItemCount(cid, item1[6]) >= tonumber(item1[8]) -- Se todos os itens foram entregues, definir a mensagem como vazia e remover o valor de armazenamento if allItemsDelivered then setPlayerStorageValue(cid, 251461, -1) return false end -- Caso contrário, calcular os valores de contagem dos itens local valor1 = math.max(0, tonumber(item1[3]) - getPlayerItemCount(cid, item1[1])) local valor2 = math.max(0, tonumber(item1[4]) - getPlayerItemCount(cid, item1[2])) local valor3 = math.max(0, tonumber(item1[7]) - getPlayerItemCount(cid, item1[5])) local valor4 = math.max(0, tonumber(item1[8]) - getPlayerItemCount(cid, item1[6])) -- Enviar mensagem com a contagem dos itens que faltam selfSay("Ainda falta você me trazer os seguintes itens ["..valor1.."] "..getItemNameById(item1[1])..", ["..valor2.."] "..getItemNameById(item1[2])..", ["..valor3.."] "..getItemNameById(item1[5])..", ["..valor4.."] "..getItemNameById(item1[6])..".", cid) return true end
  2. Identifique o código responsável pelo efeito de Hypnosis ou Sleep e poste aqui pra correção
  3. -- Função para exibir o nome do local function displayLocationName(player, locationName) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você entrou em: " .. locationName) end -- Função para verificar a entrada em um local específico function checkLocationEntry(player) local playerPosition = player:getPosition() local locationName = getTileInfo(playerPosition.x, playerPosition.y, playerPosition.z).name displayLocationName(player, locationName) end -- Função para verificar a saída de um local específico function checkLocationExit(player) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você saiu do local.") end -- Evento de movimento do jogador function onPlayerMove(player, fromPosition, toPosition) local fromTile = Tile(fromPosition) local toTile = Tile(toPosition) if fromTile and toTile then local fromLocation = fromTile:getPosition() local toLocation = toTile:getPosition() -- Verifica se o jogador entrou em uma nova posição if fromLocation ~= toLocation then checkLocationEntry(player) end end end -- Registra o evento de movimento do jogador function onPlayerMoveEvent(event, player, fromPosition, toPosition) onPlayerMove(player, fromPosition, toPosition) end -- Registra o evento de movimento do jogador registerCreatureEvent(cid, "PlayerMove", "onPlayerMoveEvent") Neste exemplo: A função displayLocationName é responsável por exibir o nome do local para o jogador. Aqui, estamos enviando uma mensagem azul para o console do jogador informando o nome do local em que ele entrou. A função checkLocationEntry verifica se o jogador entrou em um local específico e chama a função displayLocationName para exibir o nome desse local. A função checkLocationExit pode ser usada para realizar ações quando o jogador sai de um local específico. O evento onPlayerMove é acionado sempre que o jogador se move de uma posição para outra. Aqui, verificamos se o jogador entrou em um novo local e chamamos a função checkLocationEntry para exibir o nome do local.
  4. O erro indica que está tentando criar uma textura com dimensões de 2158x1080, enquanto o tamanho máximo permitido para uma textura é 2048x2048. Redimensione a textura para que suas dimensões não excedam o limite máximo de 2048x2048. Você pode usar ferramentas de edição de imagem como o Photoshop, GIMP ou qualquer outra ferramenta de sua preferência para fazer isso.
  5. o erro está relacionado a uma tabela chamada 'nto.guilds_ggn' que não está sendo encontrada no banco de dados. CREATE TABLE nto.guilds_ggn ( id INT AUTO_INCREMENT PRIMARY KEY, nome VARCHAR(255), descricao TEXT, criado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
  6. ok, vamos lá 1.Erro no script youdead.lua: [16/04/2024 03:41:17] [Error - CreatureScript Interface] [16/04/2024 03:41:17] data/creaturescripts/scripts/youdead.lua:onPrepareDeath [16/04/2024 03:41:17] Description: [16/04/2024 03:41:18] (luaGetCreatureMaster) Creature not found [16/04/2024 03:41:18] [Error - CreatureScript Interface] [16/04/2024 03:41:18] data/creaturescripts/scripts/youdead.lua:onPrepareDeath [16/04/2024 03:41:19] Description: [16/04/2024 03:41:19] (luaGetCreatureName) Creature not found [16/04/2024 03:41:19] > Broadcasted message: "O Jogador Fogao [level: 699553] Acaba de Morrer Para false.". Parece que há uma tentativa de obter o nome da criatura que matou o jogador (lastHitKiller). No entanto, o sistema não conseguiu encontrar essa criatura. Isso pode acontecer se o jogador for morto por um evento ou condição do jogo em vez de uma criatura específica. Você pode precisar adicionar verificações adicionais para garantir que lastHitKiller seja uma criatura válida antes de tentar obter seu nome e mestre. 2.Erro no script deathchannel.lua: [16/04/2024 03:41:23] [Error - CreatureScript Interface] [16/04/2024 03:41:23] data/creaturescripts/scripts/deathchannel.lua:onDeath [16/04/2024 03:41:23] Description: [16/04/2024 03:41:24] data/creaturescripts/scripts/deathchannel.lua:7: attempt to perform arithmetic on a boolean value [16/04/2024 03:41:24] stack traceback: [16/04/2024 03:41:24] data/creaturescripts/scripts/deathchannel.lua:7: in function <data/creaturescripts/scripts/deathchannel.lua:5> Parece que há um erro na linha 7 do script deathchannel.lua, onde uma operação aritmética está sendo tentada em um valor booleano. Isso geralmente ocorre quando você tenta realizar uma operação matemática em uma variável que não contém um valor numérico. Você precisará verificar o código na linha 7 do deathchannel.lua e garantir que todas as variáveis estejam definidas corretamente antes de tentar realizar operações matemáticas. 3.Erro XML: XML: [16/04/2024 06:52:01] [Error - CreatureEvent::executeCombat] Call stack overflow. Parece que houve um estouro de pilha (stack overflow) em um evento de combate. Isso geralmente acontece quando há muitas chamadas recursivas ou aninhadas que excedem a capacidade da pilha de execução. Você precisará investigar o evento de combate especificado e verificar se há alguma lógica recursiva ou aninhada que precisa ser otimizada para evitar estouro de pilha. 1. Para o script youdead.lua, vamos adicionar verificações adicionais para garantir que lastHitKiller seja uma criatura válida antes de tentar obter seu nome e mestre. Também vamos corrigir a mensagem de broadcast para exibir o nome do jogador que matou corretamente. function onPrepareDeath(cid, lastHitKiller, mostDamageKiller) if isPlayer(cid) then if lastHitKiller and isCreature(lastHitKiller) then local killerName = getCreatureName(lastHitKiller) if not isPlayer(lastHitKiller) and not isPlayer(getCreatureMaster(lastHitKiller)) then doBroadcastMessage("O jogador " .. getCreatureName(cid) .. " [level: " .. getPlayerLevel(cid) .. "] acabou de morrer para " .. tostring(killerName) .. ".", MESSAGE_STATUS_CONSOLE_RED) end end end return true end 2.Para o script deathchannel.lua, vamos corrigir a operação aritmética na linha 7 para garantir que todas as variáveis estejam definidas corretamente antes de tentar realizar operações matemáticas. function onDeath(cid, corpse, deathList) local target = deathList[1] if target and isCreature(target) then local targetStorage = getCreatureStorage(target, storage) if targetStorage then doCreatureSetStorage(target, storage, targetStorage + 1) for _, pid in ipairs(getPlayersOnline()) do doPlayerSendChannelMessage(pid, '', info:format(getCreatureName(cid), getPlayerLevel(cid), getCreatureStorage(cid, storage), getPlayerSex(cid) == 1 and "o" or "a", isPlayer(target) and "player" or "monstro", getCreatureName(target), isPlayer(target) and " [Level: "..getPlayerLevel(target).."]." or "."), TALKTYPE_CHANNEL_O, 0xF) for _, frag in ipairs(frags) do if targetStorage == frag then doPlayerSendChannelMessage(pid, '', win:format(getCreatureName(target), frag, getCreatureName(cid)), TALKTYPE_CHANNEL_W, 0xF) end local cidStorage = getCreatureStorage(cid, storage) if cidStorage and cidStorage >= frag then doPlayerSendChannelMessage(pid, '', lose:format(getCreatureName(target), getCreatureName(cid), cidStorage + 1), TALKTYPE_CHANNEL_RN, 0xF) end end end doCreatureSetStorage(cid, storage, 0) return true end end return false end
  7. <?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Characters Market System" version="1.0" author="LuckOake" contact="none" enabled="yes"> ------------------------------------------------------------------------------------ <config name="market"><![CDATA[ price = 27112 owner = 27113 level = 30 -- Level min of character.-- min_price = 100 -- Price min of character-- max_price = 1000000 -- Price maximum of character-- function doTransferCharacter(cid, accId) return db.executeQuery("UPDATE `players` SET `account_id` = "..accId.." WHERE `id` = "..getPlayerGUIDByName(cid).."") end function doOfflinePlayerAddMoney(guid, money) return db.executeQuery("UPDATE `players` SET `balance` = `balance` + '"..money.."' WHERE `id` = '"..getPlayerGUIDByName(guid).."';") end function setOfflinePlayerStorageValue(name, key, value) local result = db.getResult("SELECT * FROM `player_storage` WHERE `player_id` = ".. getPlayerGUIDByName(name) .." AND `key` = ".. key ..";") if result:getID() == -1 then return db.executeQuery("INSERT INTO `player_storage` (`player_id`, `key`, `value`) VALUES (".. getPlayerGUIDByName(name) ..", ".. key ..", ".. value ..");") else result:free() return db.executeQuery("UPDATE `player_storage` SET `value` = ".. value .." WHERE `player_id` = ".. getPlayerGUIDByName(name) .." AND `key` = ".. key ..";") end end function getOfflinePlayerStorageValue(name, key) local result, ret = db.getResult("SELECT `value` FROM `player_storage` WHERE `player_id` = '".. getPlayerGUIDByName(name) .."' AND `key` = ".. key ..";") if result:getID() == -1 then return nil end ret = result:getDataInt("value") result:free() return ret end function getOfflinePlayerValue(name, value) local result, ret = db.getResult("SELECT `"..value.."` FROM `players` WHERE `id` = "..getPlayerGUIDByName(name)..";") ret = result:getDataInt(value) result:free() return ret end function isCharacterForSale(name) if not getOfflinePlayerStorageValue(name, "price") or getOfflinePlayerStorageValue(name, "price") < 1 then return false else return true end end ]]></config> ------------------------------------------------------------------------------------ <talkaction words="!character" event="buffer"><![CDATA[ domodlib('market') local t = string.explode(param, ",") if t[1] == "sell" then if not t[3] or not tonumber(t[3]) or t[4] or tonumber(t[2]) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Incorrect Params. Specify the character name and the price.") return true elseif getPlayerAccountId(cid) ~= getAccountIdByName(t[2]) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "This is not your character.") return true elseif isCharacterForSale(t[2]) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "This character is already for sale.") return true elseif getPlayerGUIDByName(t[2]) == getPlayerGUID(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You cannot sell yourself.") return true elseif getPlayerByName(t[2]) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "The character must be offline to be sold.") return true elseif getOfflinePlayerValue(t[2], "level") < level then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Your character can't be sold until it has level "..level..".") return true elseif tonumber(t[3]) < min_price then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Sorry, but the minimum price for selling a character is "..min_price..".") return true elseif tonumber(t[3]) > max_price then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Sorry, but the maximum price for selling a character is "..max_price..".") return true end setOfflinePlayerStorageValue(t[2], "price", t[3]) setOfflinePlayerStorageValue(t[2], "owner", getPlayerGUID(cid)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Your character "'..t[2]..'" is now for sale for the price of "'..t[3]..'" gold coins.') elseif t[1] == "buy" then if not t[2] then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Incorrect Params. Specify the character name.") return true elseif not playerExists(t[2]) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "This character doesn't exist.") return true elseif getPlayerAccountId(cid) == getAccountIdByName(t[2]) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You can't buy your own character.") return true elseif not isCharacterForSale(t[2]) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "This character is not for sale.") return true elseif not doPlayerRemoveMoney(cid, getOfflinePlayerStorageValue(t[2], "price")) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Not enough money. This character's price is "..getOfflinePlayerStorageValue(t[2], "price").." gold coins.") return true end if not getPlayerByGUID(getOfflinePlayerStorageValue(t[2], "owner")) then doOfflinePlayerAddMoney(getPlayerNameByGUID(getOfflinePlayerStorageValue(t[2], "owner")), getOfflinePlayerStorageValue(t[2], "price")) setOfflinePlayerStorageValue(getPlayerNameByGUID(getOfflinePlayerStorageValue(t[2], "owner")), 41792, getPlayerGUIDByName(t[2])) else doPlayerAddMoney(getPlayerByGUID(getOfflinePlayerStorageValue(t[2], "owner")), getOfflinePlayerStorageValue(t[2], "price")) doPlayerSendTextMessage(getPlayerByGUID(getOfflinePlayerStorageValue(t[2], "owner")), MESSAGE_STATUS_CONSOLE_BLUE, 'Your character "'..t[2]..'" has been sold for the price of '..getOfflinePlayerStorageValue(t[2], "price")..' gold coins.') end doTransferCharacter(t[2], getPlayerAccountId(cid)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'You bought the character "'..t[2]..'" for the price of '..getOfflinePlayerStorageValue(t[2], "price")..' gold coins.') setOfflinePlayerStorageValue(t[2], "owner", -1) setOfflinePlayerStorageValue(t[2], "price", -1) return true elseif t[1] == "remove" then if not t[2] then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Incorrect Params. Specify the character name.") return true elseif getPlayerAccountId(cid) ~= getAccountIdByName(t[2]) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "This is not your character.") return true elseif not isCharacterForSale(t[2]) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "This character is not for sale.") return true end setOfflinePlayerStorageValue(t[2], "price", -1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'You removed the character "'..t[2]..'" from the Characters Market.') return true elseif t[1] == "list" then local result = db.getResult("SELECT `name` FROM `players`") if result:getID() == -1 then return true end local msg = "Characters for Sale:\n\n" while true do local name = result:getDataString("name") if isCharacterForSale(name) then local sex = getOfflinePlayerValue(name, "sex") == 1 and "Male" or "Female" msg = ""..msg.." - ".. name .." (Level: "..getOfflinePlayerValue(name, "level").." / Vocation: "..getVocationInfo(getOfflinePlayerValue(name, "vocation")).name.." / Sex: "..sex.." / Owner: "..getPlayerNameByGUID(getOfflinePlayerStorageValue(name, "owner"))..") [Price: "..getOfflinePlayerStorageValue(name, "price").."] \n" end if not result:next() then break end end doPlayerPopupFYI(cid, msg) return true elseif not t[1] or t[1] ~= "buy" or t[1] ~= "sell" or t[1] ~= "remove" or t[1] ~= "list" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Incorrect params. You can only 'buy' or 'sell' a character, 'remove' it from the Characters Market or see the 'list' of characters for sale.") return true end return true ]]></talkaction> ------------------------------------------------------------------------------------ <event type="login" name="MarketLogin" event="script"><![CDATA[ function onLogin(cid) domodlib('market') if getPlayerStorageValue(cid, "price") > 0 then return false elseif getPlayerStorageValue(cid, 41792) ~= -1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You sold the character "..getPlayerNameByGUID(getPlayerStorageValue(cid, 41792))..". The money is in your bank account.") setPlayerStorageValue(cid, 41792, -1) end return true end ]]></event> </mod> Nesta correção, eu substituí os valores de price e owner nas chamadas de função getOfflinePlayerStorageValue dentro da função isCharacterForSale para que eles sejam passados como strings em vez de variáveis não declaradas. Isso deve resolver o erro de concatenação de valores nulos que você estava enfrentando.
  8. local outfit = {lookType = 3} local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local condition = createConditionObject(CONDITION_HASTE) setConditionParam(condition, CONDITION_PARAM_TICKS, 33000) -- 33 segundos de efeito de velocidade setConditionFormula(condition, 0.3, -24, 0.3, -24) setCombatCondition(combat, condition) function onCastSpell(cid, var) doCreatureChangeOutfit(cid, outfit) addEvent(resetOutfit, 33000, cid, outfit) -- Resetar a outfit após 33 segundos return doCombat(cid, combat, var) end function resetOutfit(cid, oldOutfit) doCreatureChangeOutfit(cid, oldOutfit) end
  9. parece que essas opções estão definidas no array $config['donate']['offers']. Vou ajudar você a remover essas entradas desse array. Aqui está a parte do código modificada: $valid_methods = array_diff($config['paymentsMethods'], [false]); $payment_id = 1; foreach ($valid_methods as $methodName => $status) { $showName = ""; switch ($methodName) { case "mercadoPago": $showName = "Mercado Pago"; break; case "transfer": $showName = "Bank Transfer"; break; case "picpay": $showName = "PicPay"; break; default: break; } $main_content .= ' <div class="PMCID_Icon_Container" id="PMCID_Icon_Container_' . $payment_id . '"> <div class="PMCID_Icon" id="PMCID_Icon_' . $payment_id . '" style="background-image:url(' . $layout_name . '/images//payment/pmcid_icon_normal.png);" onclick="ChangePMC(' . $payment_id . ');" onmouseover="MouseOverPMCID(' . $payment_id . ');" onmouseout="MouseOutPMCID(' . $payment_id . ');"> <div class="PermanentDeactivated PMCID_Deactivated_ByChoice" id="PMCID_NotAllowed_' . $payment_id . '" style="display: none;"> <span class="HelperDivIndicator" onmouseover="ActivateHelperDiv($(this), \'Payment Method Info:\', \'<p>The payment method is not allowed for the selected service!</p>\', \'\');" onmouseout="$(\'#HelperDivContainer\').hide();"> <div class="PMCID_Deactivated" style="background-image: url(' . $layout_name . '/images/payment/pmcid_deactivated.png);"></div> </span> </div> <div class="PMCID_Icon_Selected" id="PMCID_Icon_Selected_' . $payment_id . '"></div> <div class="PMCID_Icon_Over" id="PMCID_Icon_Over_' . $payment_id . '"></div> <span style="position: absolute; left: 125px; top: 53px; z-index: 99;"><span style="margin-left: 5px; position: absolute; margin-top: 2px;"><a href="../common/help.php?subtopic=Field_PaymentMethodCategory_Option_' . $payment_id . '_Comment" target="_blank"><span class="HelperDivIndicator" onmouseover="ActivateHelperDiv($(this), \'Information:\', \'This method is ' . ($showName == '' ? ucfirst($methodName) : ucfirst($showName)) . '.\', \'\');" onmouseout="$(\'#HelperDivContainer\').hide();"><img style="border:0px;" src="' . $layout_name . '/images/global/content/info.gif"></span></a></span></span> <img class="PMCID_CP_Icon" src="' . $layout_name . '/images/payment/' . strtolower($methodName) . '.gif"> <div class="PMCID_CP_Label"> <input type="radio" id="PMCID_' . $payment_id . '" name="PMCID" value="' . $payment_id . '" style="display: none;"> <label for="PMCID_' . $payment_id . '">' . ($showName == '' ? ucfirst($methodName) : ucfirst($showName)) . '</label> </div> </div> </div> '; $payment_id++; }
  10. function onUse(cid, item, frompos, item2, topos) if item.uid == 1624 then if getPlayerStorageValue(cid, 1624) == -1 then if getPlayerLevel(cid) >= 0 then local espacoSuficiente = true -- Adiciona as mochilas de ID 10518 ao inventário do jogador for i = 1, 42 do if not doPlayerAddItem(cid, 10518, 1) then espacoSuficiente = false break end end -- Se houver espaço suficiente, adiciona as moedas às mochilas if espacoSuficiente then for i = 1, 42 do local backpack = doCreateItemEx(10518, 1) if backpack ~= 0 then for j = 1, 100 do doAddContainerItem(backpack, 2159, 1000) end doPlayerAddItemEx(cid, backpack, false) else espacoSuficiente = false break end end -- Se tudo ocorreu bem, informa ao jogador que ele recebeu o prêmio if espacoSuficiente then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Parabéns! Você ganhou um prêmio.") setPlayerStorageValue(cid, 1624, 1) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem espaço suficiente para as mochilas.") end else -- Se o jogador não tiver espaço suficiente, envia uma mensagem em green doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Voce nao tem espaço suficiente.") end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa ser level 0 para usar.") end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você já pegou o bônus.") end end return true end
  11. function onUse(cid, item, fromPosition, itemEx, toPosition) if item.itemid == 1624 then if getPlayerStorageValue(cid, 1624) == -1 then if getPlayerLevel(cid) >= 717217 then local espacoSuficiente = true for i = 1, 42 do local backpack = doCreateItemEx(10518, 1) if backpack ~= 0 then for j = 1, 100 do doAddContainerItem(backpack, 2159, 1000) end if not doPlayerAddItemEx(cid, backpack, false) then espacoSuficiente = false doRemoveItem(backpack) break end else espacoSuficiente = false break end end if espacoSuficiente then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Parabéns! Você ganhou um prêmio.") setPlayerStorageValue(cid, 1624, 1) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem espaço suficiente para as mochilas.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa ser nível 717217 para usar.") end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você já recebeu o bônus.") end end return true end
  12. poderia falar qual erro aparece no console? function onUse(cid, item, frompos, item2, topos) if item.uid == 1624 then if getPlayerStorageValue(cid, 1624) == -1 then if getPlayerLevel(cid) >= 0 then -- Verifica se o jogador tem espaço suficiente no inventário para as mochilas local enoughSpace = true for i = 1, 42 do if not doPlayerAddItem(cid, 10518, 1) then enoughSpace = false break end end if enoughSpace then -- Adiciona 1000 moedas (ID 2159) dentro de uma mochila (ID 10518) e repete 42 vezes for i = 1, 42 do local backpack = doCreateItemEx(10518, 1) if backpack ~= 0 then for j = 1, 100 do doAddContainerItem(backpack, 2159, 1) end doPlayerAddItemEx(cid, backpack, false) else enoughSpace = false break end end end if enoughSpace then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Parabéns! Você ganhou um prêmio.") else -- Não há espaço suficiente, então cai no chão com dinheiro dentro local townID = 1 -- Altere isso para o ID da cidade desejada (1 para DexSoft) local tile = getTownTemplePosition(townID) local container = doCreateItemEx(10518, 1) for i = 1, 100 do doAddContainerItem(container, 2159, 1) end doTeleportThing(container, tile, false) doSendMagicEffect(tile, CONST_ME_TELEPORT) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tinha espaço suficiente, a mochila foi enviada para o depot.") end setPlayerStorageValue(cid, 1624, 1) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa ser level 0 para usar.") end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você já pegou o bônus.") end end return true end
  13. local lvldodge = 48903 local percent = 0.1 -- Porcentagem padrão de reflexão de dano local storageID = 10001 -- ID do storage para controlar a habilidade de reflexão function onStatsChange(cid, attacker, type, combat, value) if type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS and isCreature(attacker) then if (getPlayerStorageValue(cid, lvldodge) * 3) >= math.random(0, 1000) then local reflectValue = math.ceil(value * percent) doCreatureAddHealth(attacker, -reflectValue) doSendAnimatedText(getCreaturePos(cid), "Reflected!", 6) -- Incrementar o storage para indicar que a habilidade foi usada setPlayerStorageValue(cid, storageID, 1) return false end end return true end -- Adicionando o evento ao XML local eventXML = [=[<event type="statschange" name="ReflectStone" event="script" value="reflectStone.lua"/>]=] local file = io.open('data/creaturescripts/creaturescripts.xml', 'a') if file then file:write(eventXML) file:close() else print("Erro ao abrir o arquivo creaturescripts.xml") end -- Registro do evento no login.lua local loginScript = [=[registerCreatureEvent(cid, "ReflectStone")]=] local loginFile = io.open('data/creaturescripts/login.lua', 'a') if loginFile then loginFile:write(loginScript) loginFile:close() else print("Erro ao abrir o arquivo login.lua") end
  14. local ballcatch = { -- Definições das bolas de captura } function onUse(cid, item, frompos, item3, topos) local item2 = getTopCorpse(topos) if item2 == null then return true end local owner = getItemAttribute(item2.uid, "corpseowner") local pOwner = getPlayerByName(owner) if not pOwner or not isCreature(pOwner) or not isPlayer(pOwner) then doPlayerSendCancel(cid, "Erro: Jogador não encontrado.") return true end if getPlayerStorageValue(cid, 55006) >= 1 then doPlayerSendCancel(cid, "Você não pode capturar nenhum Pokémon enquanto estiver em um duelo.") return true end -- Restante do seu código aqui... return true end function getPlayerSorte() local ballS if math.random(1, 200) >= 199 then ballS = math.random(250, 450) else ballS = math.random(1, 35) end return ballS end function getPlayerSorteInNormal() local ballS if math.random(1, 100) >= 95 then ballS = math.random(250, 450) else ballS = math.random(1, 35) end return ballS end function getBallsRate(name, id) if pokes[name] then if isInArray(ballcatch[id].type, pokes[name].type) or isInArray(ballcatch[id].type, pokes[name].type2) or isInArray(ballcatch[id].pokes, name) then return 12 end end return 8 end vê se resolve, caso nao for o suficiente eu verifico o outro script
  15. Holograma

    Healing Machine

    O erro provavelmente ocorre porque a versão do seu servidor não suporta essa função diretamente. Tenta assim local itemID = 1234 -- ID do item no mapa que irá acionar a cura function onUse(cid, item, fromPosition, itemEx, toPosition) if itemEx.itemid == itemID then doCreatureAddHealth(cid, getCreatureMaxHealth(cid) - getCreatureHealth(cid)) -- Cura o jogador doCureStatus(cid, "all", true) -- Cura todos os status negativos do jogador doSendMagicEffect(getThingPos(cid), EFFECT_HEAL) -- Efeito de cura local backpack = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK) if backpack.itemid == 0 then return true end local bpItems = getItemsInContainer(backpack.uid) -- Correção aqui for _, item in ipairs(bpItems) do if isPokeball(item.itemid) then local creatureID = getItemAttribute(item.uid, "pokeid") if creatureID then doCreatureAddHealth(creatureID, getCreatureMaxHealth(creatureID) - getCreatureHealth(creatureID)) -- Cura o Pokémon doCureStatus(creatureID, "all", true) -- Cura todos os status negativos do Pokémon doSendMagicEffect(getThingPos(creatureID), EFFECT_HEAL) -- Efeito de cura end end end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Todos os seus Pokémon foram curados.") -- Mensagem de sucesso end return true end function isPokeball(itemid) -- Adicione aqui os itemids das pokébolas que deseja considerar local validPokeballIDs = {1, 2, 3, 4} -- Por exemplo, considere as pokébolas com IDs 1, 2, 3, 4 for _, id in ipairs(validPokeballIDs) do if itemid == id then return true end end return false end
  • Quem Está Navegando   0 membros estão online

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