Tudo que L3K0T postou
-
(Resolvido)[EXP-FOOD] Com os IDs ai em baixo
Teste o script que mandei acima.
-
(Resolvido)[EXP-FOOD] Com os IDs ai em baixo
function onUse(cid, item, fromPosition, itemEx, toPosition) local foodExp = { [6542] = 5000, [6543] = 10000, [6544] = 15000, [6545] = 20000, [2328] = 25000, [6541] = 30000, [12599] = 40000, [8300] = 50000, } local expGain = foodExp[item.itemid] or 0 -- Pega a quantidade de exp correspondente à comida, ou 0 se não existir if expGain > 0 then doPlayerAddExp(cid, expGain) doRemoveItem(item.uid, 1) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_SOUND_YELLOW) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string.format("Você comeu %s e recebeu %d de experiência!", getItemName(item.itemid), expGain)) -- Adiciona um efeito aleatório estilo Baiak local baiakEffects = {CONST_ME_ENERGYAREA, CONST_ME_FIREAREA, CONST_ME_POISONAREA, CONST_ME_EXPLOSIONAREA} local effect = baiakEffects[math.random(#baiakEffects)] doSendMagicEffect(getCreaturePosition(cid), effect) -- Remove o efeito depois de 3 segundos addEvent(doSendMagicEffect, 3000, getCreaturePosition(cid), CONST_ME_NONE) end return true end
-
(Resolvido)[EXP-FOOD] Com os IDs ai em baixo
Então eu não testei, vc testou, come o angu e se não deu certo, tente assim sem os ids function onUse(cid, item, fromPosition, itemEx, toPosition) local expMin = 1000 -- EXP mínima que será adicionada local expMax = 5000 -- EXP máxima que será adicionada local expGain = math.random(expMin, expMax) -- Calcula a EXP a ser adicionada de forma aleatória if item:isFood() then doPlayerAddExp(cid, expGain) -- Adiciona a EXP ao jogador doRemoveItem(item.uid, 1) -- Remove a comida do inventário do jogador doSendMagicEffect(getCreaturePosition(cid), CONST_ME_SOUND_YELLOW) -- Emite um efeito sonoro ao comer a comida doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string.format("Você comeu %s e recebeu %d de experiência!", item:getName(), expGain)) -- Exibe uma mensagem para o jogador informando a EXP ganha end return true end tem esse tbm que fiz, realmente te mandei o errado, estou desse ontem sem dormir o código abaixo completinho. function onUse(cid, item, fromPosition, itemEx, toPosition) local foodExp = { [6542] = 5000, [6543] = 10000, [6544] = 15000, [6545] = 20000, [2328] = 25000, [6541] = 30000, [12599] = 40000, [8300] = 50000, } local expGain = foodExp[item.itemid] or 0 -- Pega a quantidade de exp correspondente à comida, ou 0 se não existir if expGain > 0 then doPlayerAddExp(cid, expGain) doRemoveItem(item.uid, 1) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_SOUND_YELLOW) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string.format("Você comeu %s e recebeu %d de experiência!", getItemName(item.itemid), expGain)) -- Adiciona um efeito aleatório estilo Baiak local baiakEffects = {CONST_ME_ENERGYAREA, CONST_ME_FIREAREA, CONST_ME_POISONAREA, CONST_ME_EXPLOSIONAREA} local effect = baiakEffects[math.random(#baiakEffects)] doSendMagicEffect(getCreaturePosition(cid), effect) -- Remove o efeito depois de 3 segundos addEvent(doSendMagicEffect, 3000, getCreaturePosition(cid), CONST_ME_NONE) end return true end
-
(Resolvido)[EXP-FOOD] Com os IDs ai em baixo
<action itemid="6542" event="script" value="scriptxp.lua"/> adiciona esse id dentro do script tbm porque cada comida é um tipo de exp. scriptxp.lua pra todas comidas e coloque tbm as outras comida no script. Se Não conseguir use esse sem as comida dentro do script action, adicione em todas comidas que vao dar exp. function onUse(cid, item, fromPosition, itemEx, toPosition) local expMin = 1000 -- EXP mínima que será adicionada local expMax = 5000 -- EXP máxima que será adicionada local expGain = math.random(expMin, expMax) -- Calcula a EXP a ser adicionada de forma aleatória if item:isFood() then doPlayerAddExp(cid, expGain) -- Adiciona a EXP ao jogador doRemoveItem(item.uid, 1) -- Remove a comida do inventário do jogador doSendMagicEffect(getCreaturePosition(cid), CONST_ME_SOUND_YELLOW) -- Emite um efeito sonoro ao comer a comida doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string.format("Você comeu %s e recebeu %d de experiência!", item:getName(), expGain)) -- Exibe uma mensagem para o jogador informando a EXP ganha end return true end
-
(Resolvido)[EXP-FOOD] Com os IDs ai em baixo
Fiz essa base pra vc, só alterar os ids das comidas e exp. local L3K0T_SIGNATURE = "Script by L3K0T" function onUse(cid, item, fromPosition, itemEx, toPosition) local foodIds = {2666, 2667, 2668, 2669, 2670, 2671, 2672, 2673, 2674, 2675} -- IDs das comidas que irão dar EXP local expMin = 1000 -- EXP mínima que será adicionada local expMax = 5000 -- EXP máxima que será adicionada local expGain = math.random(expMin, expMax) -- Calcula a EXP a ser adicionada de forma aleatória for _, id in ipairs(foodIds) do if item.itemid == id then doPlayerAddExp(cid, expGain) -- Adiciona a EXP ao jogador doRemoveItem(item.uid, 1) -- Remove a comida do inventário do jogador doSendMagicEffect(getCreaturePosition(cid), CONST_ME_SOUND_YELLOW) -- Emite um efeito sonoro ao comer a comida doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string.format("Você comeu %s e recebeu %d de experiência!", getItemName(item.itemid), expGain)) -- Exibe uma mensagem para o jogador informando a EXP ganha break end end return true end print(L3K0T_SIGNATURE)
-
EXP Stages por storage
Não testei tente local STORAGE_EXP_DIFF = 123456 -- substitua pelo valor da storage que você deseja verificar function calculateExp(player, oldLevel, newLevel) local levelDiff = newLevel - oldLevel local baseExp = 1000 -- substitua este valor pelo valor base de experiência que você deseja usar -- Calcula a experiência com base no nível atual do jogador e o nível que ele está avançando local expGain = math.floor(baseExp * (1 + (player:getLevel() / 100)) * levelDiff) return expGain end function onAdvance(player, skill, oldLevel, newLevel) local storageValue = player:getStorageValue(STORAGE_EXP_DIFF) if storageValue == 0 then -- Se o player não tiver a storage, use a exp definida por script local expGain = calculateExp(player, oldLevel, newLevel) player:addExperience(expGain) else -- Se o player tiver a storage, use a exp definida no STAGES.xml local expTable = getExperienceStage(newLevel) local expGain = expTable[skill] player:addExperience(expGain) end end Script versão otimizada abaixo local STORAGE_EXP_DIFF = 123456 -- substitua pelo valor da storage que você deseja verificar local function calculateExp(player, oldLevel, newLevel) local levelDiff = newLevel - oldLevel local baseExp = 1000 -- substitua este valor pelo valor base de experiência que você deseja usar -- Calcula a experiência com base no nível atual do jogador e o nível que ele está avançando return math.floor(baseExp * (1 + (player:getLevel() / 100)) * levelDiff) end function onAdvance(player, skill, oldLevel, newLevel) local expGain = 0 if player:getStorageValue(STORAGE_EXP_DIFF) == 0 then -- Se o player não tiver a storage, use a exp definida por script expGain = calculateExp(player, oldLevel, newLevel) else -- Se o player tiver a storage, use a exp definida no STAGES.xml local expTable = getExperienceStage(newLevel) expGain = expTable[skill] end player:addExperience(expGain) end
-
(Resolvido)Erro creature event.throw
Troque todos onTimer para onTime remova o R do final.
-
(Resolvido)[EXP-FOOD] Com os IDs ai em baixo
Não entendi oque você quer, explique bem o seu pedido de scripts ou suporte, como você quer o EXP que ao comer da EXP aleatoria ou fixa? De até quanto de exp? Etc... explique
-
(Resolvido)posição da spell
De nada era script não otimizado
-
[Script Troca de vocação]
Não testei mais deve te ajudar em algo só configurar a vocação. function onSay(player, words, param) local playerVocation = player:getVocation() local newVocation = VocationType[13] -- 13 é o ID da nova vocação criada if player:getLevel() < 8 then player:sendCancelMessage("You need to be at least level 8 to change vocations.") return false end if playerVocation == newVocation then player:sendCancelMessage("You are already in this vocation.") return false end local cost = 10000 -- o custo para mudar de vocação if not player:removeMoney(cost) then player:sendCancelMessage("You need " .. cost .. " gold coins to change vocations.") return false end player:setVocation(newVocation) player:addHealth(player:getMaxHealth()) player:addMana(player:getMaxMana()) player:setMaxStorage(378378, 0) -- Define todos os skills para o valor inicial da nova vocação for skill = SKILL_FIST, SKILL_FISHING do player:setSkillLevel(skill, newVocation:getSkillBaseLevel(skill)) end -- Define o magic level para o valor inicial da nova vocação player:setMagicLevel(newVocation:getMagicLevel()) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) player:sendTextMessage(MESSAGE_INFO_DESCR, "You are now a " .. newVocation:getName() .. ".") return false end
-
(Resolvido)posição da spell
Não testei local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_HITCOLOR, COLOR_LIGHTGREEN) setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 494) -- adiciona o efeito 494 setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -250.0, 0, -275.0, 0) local function onCastSpell1(parameters) local targetPos = getCreaturePosition(parameters.target) if targetPos then doSendMagicEffect(targetPos, 494) -- exibe o efeito 494 na posição do alvo doCombat(parameters.cid, parameters.combat1, positionToVariant(targetPos)) end end function onCastSpell(cid, var) local parameters = { cid = cid, var = var, combat1 = combat1, target = getCreatureTarget(cid) } addEvent(onCastSpell1, 0, parameters) return true end Versão otimizada: local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_HITCOLOR, COLOR_LIGHTGREEN) setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 494) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -250, 0, -275, 0) function onCastSpell(cid, var) local target = getCreatureTarget(cid) if not target then return false end local targetPos = getCreaturePosition(target) if not targetPos then return false end doSendMagicEffect(targetPos, 494) doCombat(cid, combat1, positionToVariant(targetPos)) return true end
-
Muitos player no mesmo SQM Stack debugando o cliente
Resolva na source, procure const.h e altere #define MAX_STACK_POS 10 Para #define MAX_STACK_POS 20
-
(Resolvido)(Resolvido)scripts não reconhecem item ID's acima do id 20000
Se você estiver usando o OTServ 8.54 e estiver enfrentando problemas para reconhecer itens com IDs acima de 20000, isso pode ser devido a algumas limitações de versão. Algumas versões mais antigas do Tibia (como a versão 8.54) e OTServ podem ter limitações na quantidade de IDs de itens que podem ser reconhecidos. Essas limitações podem resultar em scripts que não reconhecem itens com IDs acima de 20000. Para resolver esse problema, você pode tentar atualizar para uma versão mais recente do Tibia ou OTServ. Versões mais recentes geralmente têm suporte para mais IDs de itens e, portanto, não devem ter esse problema.
-
[AJUDA] ERROR ITEM EDITOR
Esse erro geralmente ocorre quando a versão do cliente do jogo que você está usando é incompatível com a versão do OTB (Outfit Color System) que você está tentando usar. Para resolver esse problema, você precisa usar um cliente compatível com a versão do OTB que está sendo usada no servidor. Por exemplo, se o servidor estiver usando a versão 19 do OTB, você precisará usar um cliente 8.60 compatível com essa versão. Você pode encontrar o cliente compatível no site do Tibia, ou em outros sites de downloads de clientes de Tibia. Certifique-se de baixar e usar um cliente compatível com a versão do OTB do servidor que você está tentando acessar.
-
tfs0.4.0.0 bugo distro
Esse erro geralmente ocorre quando há um problema na leitura do arquivo "items.otb" pelo servidor. O arquivo "items.otb" contém informações sobre todos os itens no jogo, como seu nome, id, sprites, atributos, entre outros. Para corrigir esse erro, você pode tentar as seguintes soluções: Verifique se o arquivo "items.otb" está presente na pasta "data" do seu servidor. Se o arquivo estiver faltando, você precisará baixar um novo arquivo ou copiá-lo de outro servidor. Certifique-se de que o arquivo "items.otb" está no formato correto. O arquivo "items.otb" deve ser binário e não deve ser editado manualmente. Se você fez alguma edição manual no arquivo, pode ter corrompido o arquivo e é necessário restaurar o arquivo original. Verifique se o arquivo "items.otb" está sendo carregado corretamente pelo servidor. Verifique as configurações do seu servidor para garantir que ele esteja apontando para o caminho correto para o arquivo "items.otb". Verifique também se não há problemas de permissão no arquivo que possam impedir o servidor de lê-lo corretamente. Tente reconstruir o arquivo "items.otb" usando o "item editor" disponível no tk. Isso pode corrigir possíveis problemas no arquivo que podem estar causando o erro.
-
"Erro" 4294967295 ao tentar abrir item.otb
O erro "4294967295" geralmente ocorre quando o cliente do Tibia tenta abrir um arquivo .otb (que contém informações sobre os sprites dos itens no jogo) que não é compatível com a versão do cliente. Para corrigir esse erro, certifique-se de que o arquivo .otb que você está tentando abrir é compatível com a versão do cliente que você está usando. Verifique se o arquivo .otb é para a versão correta do cliente e se ele está localizado no diretório correto. Além disso, verifique se o arquivo .otb não está corrompido ou danificado.
-
Ajuda NPC
Não testei. 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 -- Configuração das opções de itens local options = { {itemId = 2160, count = 5}, -- Opção 1: 5 Crystal Coins {itemId = 8303, count = 1}, -- Opção 2: 1 Silver Rune Emblem {itemId = 2148, count = 1000} -- Opção 3: 1000 Gold Coins } -- Configuração da mensagem de cada opção local messages = { "Option 1: 5 Crystal Coins", "Option 2: 1 Silver Rune Emblem", "Option 3: 1000 Gold Coins" } function onGreet(cid) selfSay("Hello! What do you want to trade for?", cid) return true end function onTradeRequest(cid) local playerOptions = {} for i, option in ipairs(options) do if getPlayerItemCount(cid, option.itemId) >= option.count then table.insert(playerOptions, i) end end if #playerOptions == 0 then selfSay("You don't have enough items to trade for anything.", cid) return false end local message = "Choose one of these options:\n" for i, optionIndex in ipairs(playerOptions) do message = message .. messages[optionIndex] .. "\n" end npcHandler:say(message, cid) npcHandler.topic[cid] = 0 return true end function onTradeRequest(cid) local playerOptions = {} for i, option in ipairs(options) do if getPlayerItemCount(cid, option.itemId) >= option.count then table.insert(playerOptions, i) end end if #playerOptions == 0 then selfSay("You don't have enough items to trade for anything.", cid) return false end local message = "Choose one of these options:\n" for i, optionIndex in ipairs(playerOptions) do message = message .. messages[optionIndex] .. "\n" end npcHandler:say(message, cid) npcHandler.topic[cid] = 0 return true end function onTradeRequest(cid, target, item, count, ignoreCap, inBackpacks) if not npcHandler:isFocused(cid) then return false end local option = options[npcHandler.topic[cid]] local cost = option.count if getPlayerItemCount(cid, item) < count then selfSay("You don't have enough items to trade for this option.", cid) return false end if not doPlayerRemoveItem(cid, item, count) then selfSay("You don't have enough items to trade for this option.", cid) return false end if not doPlayerAddItem(cid, option.itemId, cost) then selfSay("You don't have enough space to receive the items for this option.", cid) return false end selfSay("Thank you for your trade!", cid) return true end npcHandler:setCallback(CALLBACK_GREET, onGreet) npcHandler:setCallback(CALLBACK_ONTRADEREQUEST, onTradeRequest) npcHandler:setCallback(CALLBACK_ONTRADE, onTrade) npcHandler:addModule(FocusModule:new())
-
Client da bug ao entra no TP
Esse problema pode ocorrer quando há uma incompatibilidade entre as novas sprites adicionadas e as posições de mapa (coordinates) dos teleportes (TPs) do servidor. Isso pode ocorrer porque as novas sprites adicionadas podem ter tamanhos diferentes das sprites originais do cliente, o que afetaria a precisão das coordenadas dos teleportes. Uma possível solução para este problema é verificar se as coordenadas dos teleportes estão corretas e atualizá-las se necessário. Você pode fazer isso usando o mapa do servidor e o editor de mapas do cliente, comparando as coordenadas dos teleportes no servidor com as coordenadas correspondentes no cliente. Outra solução possível seria verificar se as novas sprites adicionadas estão causando algum problema no cliente. Para fazer isso, você pode tentar remover as novas sprites e testar novamente os teleportes para ver se o problema persiste.
-
Criação de Loja dentro do Client
Script de loja com layout estilo PXG no otclient, podemos seguir os seguintes passos: Primeiro, crie um arquivo JavaScript chamado "store.js" e salve-o na pasta "modules" do seu projeto otclient. Dentro do arquivo "store.js", crie uma função para criar a janela de loja com o seguinte código: function createStoreWindow() { var storeWindow = new UIWindow({ title: 'Loja PXG', width: 500, height: 400, minWidth: 200, minHeight: 200, maximizable: true, minimizable: true }); storeWindow.setContents([ // Aqui você pode adicionar todos os elementos que deseja na sua janela de loja new UILabel({ text: 'Bem-vindo à Loja PXG!' }), new UIButton({ text: 'Comprar' }), new UIButton({ text: 'Vender' }), new UIList({ items: ['Pokebola', 'Potion', 'Revive'], onSelect: function(item) { // Aqui você pode adicionar um evento de clique para cada item da lista alert('Você selecionou: ' + item); } }) ]); return storeWindow; } Em seguida, crie uma função para abrir a janela de loja com o seguinte código: function openStore() { var storeWindow = createStoreWindow(); storeWindow.show(); } Agora, adicione um botão ou qualquer outro elemento que deseja na interface do seu otclient para chamar a função "openStore" quando for clicado: var storeButton = new UIButton({ text: 'Loja PXG', onClick: function() { openStore(); } }); // Adicione o botão à sua interface Finalmente, adicione o arquivo "store.js" ao seu arquivo "modules.js" para carregá-lo no seu otclient. otclient.modules = [ 'store.js']; Com esses passos, você terá uma janela de loja com um layout estilo PXG que pode ser aberta a partir do seu otclient quando o botão correspondente é clicado.
-
Criação do site: Erro ID: Error ID: #C-2 xampp
O erro #C-2 durante a instalação do Gesior Otserv geralmente é causado por um problema na configuração do banco de dados. Isso pode ser causado por várias razões, como permissões de usuário insuficientes ou problemas de conexão com o banco de dados. Aqui estão algumas soluções que você pode tentar para corrigir o problema: Verifique se o seu servidor MySQL está em execução e verifique as credenciais de login do banco de dados no arquivo config.php do Gesior Otserv. Certifique-se de que o nome de usuário e senha do banco de dados estejam corretos e tenham as permissões necessárias para criar tabelas e inserir dados. Certifique-se de que o MySQL esteja configurado para permitir conexões remotas se você estiver instalando o Gesior Otserv em um servidor diferente do servidor MySQL. Para fazer isso, você precisará editar o arquivo my.cnf no servidor MySQL e comentar a linha bind-address com um "#" no início. Em seguida, reinicie o servidor MySQL. Certifique-se de que o banco de dados que você está tentando usar existe e que você tem permissão para acessá-lo. Você pode verificar isso usando um cliente MySQL, como o MySQL Workbench ou o phpMyAdmin. Tente reiniciar o seu servidor web e o servidor MySQL para ver se isso resolve o problema. Se nenhuma dessas soluções funcionar, verifique se há mensagens de erro mais detalhadas no log de erros do servidor web ou no log de erros do MySQL. Essas mensagens podem ajudá-lo a identificar o problema específico que está causando o erro #C-2
-
(Resolvido)Lag Linux 18.04
A libstdc++.so.6 é uma biblioteca padrão do GNU C++ que é usada por muitos programas e sistemas operacionais Linux. É possível que algum programa esteja fazendo uso excessivo dessa biblioteca e causando problemas de desempenho no seu servidor. Aqui estão algumas coisas que você pode tentar para resolver o problema: Verifique se há processos que estão consumindo muita CPU ou memória no seu servidor. Você pode fazer isso usando o comando "top" no terminal do Linux. Ele irá mostrar todos os processos em execução, juntamente com o uso de CPU e memória. Se você encontrar algum processo que esteja usando muito CPU ou memória, tente matá-lo usando o comando "kill" no terminal. Verifique se há atualizações disponíveis para o seu sistema operacional e para os pacotes instalados no servidor. Atualizar o sistema pode corrigir problemas de desempenho relacionados a vulnerabilidades ou erros conhecidos. Tente reinstalar a biblioteca libstdc++.so.6 usando o gerenciador de pacotes do seu sistema operacional. Isso pode corrigir qualquer problema de corrupção na biblioteca. Verifique se o programa que está usando a biblioteca está configurado corretamente e não está usando mais recursos do que deveria. Verifique as configurações do programa e, se possível, ajuste-as para reduzir o uso de recursos. Considere adicionar mais recursos ao seu servidor, como CPU, memória ou armazenamento. Isso pode ajudar a lidar com cargas pesadas de trabalho e evitar problemas de desempenho. Se essas soluções não funcionarem, pode ser necessário investigar mais a fundo para determinar a causa raiz do problema. Para reinstalar a biblioteca libstdc++.so.6, você pode usar o gerenciador de pacotes do seu sistema operacional. No Ubuntu, você pode usar o seguinte comando no terminal: sudo apt-get install --reinstall libstdc++6 No CentOS ou Red Hat, você pode usar o seguinte comando no terminal: sudo yum reinstall libstdc++.so.6 Após reinstalar a biblioteca, reinicie o seu servidor para que as alterações entrem em vigor. Se a reinstalação da biblioteca não resolver o problema de desempenho, você pode tentar outras soluções mencionadas anteriormente
-
Limpar dados do BD
-- Faz login no MySQL -- Apaga todos os dados de todas as tabelas TRUNCATE TABLE accounts; TRUNCATE TABLE players; TRUNCATE TABLE player_items; TRUNCATE TABLE player_skills; TRUNCATE TABLE player_spells; TRUNCATE TABLE player_depotitems; TRUNCATE TABLE guilds; TRUNCATE TABLE guild_wars; TRUNCATE TABLE guild_ranks; TRUNCATE TABLE guild_membership; TRUNCATE TABLE houses; TRUNCATE TABLE tiles; TRUNCATE TABLE items;
- Fiz esse site de DBO pra um amigo meu
-
(Resolvido)Exausted em todas talkactions
tudo certo?
-
(Resolvido)Exausted em todas talkactions
e isso la no final doPlayerSetStorageValue(cid, config.storage, os.time() + config.exhaust)