Jump to content

zmovirzynski

Campones
  • Posts

    10
  • Joined

  • Last visited

  • Days Won

    2

zmovirzynski last won the day on November 13 2023

zmovirzynski had the most liked content!

About zmovirzynski

Perfil

  • Gênero
    Masculino

Informações

  • Char no Tibia
    Nest
  • Forma que conheci o xTibia
    Otservs
  • Sou
    Programador

Recent Profile Visitors

221 profile views

zmovirzynski's Achievements

  1. Amigo, você não tem um backup da base? Talvez seja mais fácil você pegar o backup e a base atual e usar o Beyond Compare e verificar as diferenças de arquivos e desfazer as alterações e então alterar novamente da forma que deseja.
  2. local txt = "Ex: %s matou o mostro [bazir] [%d] vezes" function onUse(cid, item, fromPosition, itemEx, toPosition) local player = Player(cid) local playerName = player:getName() local kills = player:getStorageValue(Storage.KillsToBazir) if kills < 0 then kills = 0 end local message = string.format(txt, playerName, kills) player:sendTextMessage(MESSAGE_INFO_DESCR, message) return true end Certifique-se de adaptar o script de acordo com a estrutura e as variáveis específicas do seu server. Além disso, certifique-se de que o armazenamento Storage.KillsToBazir seja atualizado sempre que o jogador matar o monstro "bazir" no jogo, é o principal.
  3. 1. Verifique as configurações: Abra o arquivo D:\xampp\htdocs\system\load.database.php na linha 13 e verifique como a configuração mysqlHost está sendo acessada. 2. Certifique-se de que o arquivo de configuração esteja correto: Verifique se você tem um arquivo de configuração que defina as configurações do banco de dados, incluindo mysqlHost. Esse arquivo geralmente contém um array associativo com as configurações do banco de dados. 3. Verifique a ortografia: Certifique-se de que a chave esteja escrita corretamente, respeitando letras maiúsculas e minúsculas. mysqlHost é diferente de mysqlhost ou mysqlHost. 4. Carregue o arquivo de configuração: Verifique se o arquivo de configuração está sendo incluído ou carregado corretamente no arquivo D:\xampp\htdocs\system\load.database.php. Exemplo de como carregar um arquivo de configuração em PHP: $config = include('config.php'); // Substitua 'config.php' pelo nome do seu arquivo de configuração. Caso nada disso resolva ou ocorra algum erro, estou a disposição.
  4. Opa, Isso acontece porque eu deixei player genérico, desculpa, você deve atribuir ao seu getPlayerIp(pid), igual está no seu código
  5. local config = { monster = {"Boss"}, -- nome dos monstros, separados por vírgulas. items = { {itemID = 9693, chance = 10}, -- item [1] -- 10% de chance {itemID = 9971, chance = 5}, -- item [2] -- 5% de chance -- Adicione o resto dos itens aqui }, effect = 27, -- efeito ao matar o monstro. } function onKill(cid, target) if isInArray(config.monster, getCreatureName(target)) then local player = Player(cid) if player then local droppedItem = false for _, itemData in ipairs(config.items) do if math.random(100) <= itemData.chance then player:addItem(itemData.itemID, 1) droppedItem = true break -- Se um item cair, saia do loop. end end if droppedItem then doBroadcastMessage("O Boss morreu e você obteve um item!", MESSAGE_STATUS_WARNING) else doBroadcastMessage("O Boss morreu, mas você não obteve nenhum item.", MESSAGE_STATUS_WARNING) end doSendMagicEffect(getThingPos(cid), config.effect) end end return true end (Não esqueça de adicionar os outros itens) Neste código, reorganizei a estrutura de configuração para incluir uma tabela chamada items, onde cada item tem um itemID e uma chance em porcentagem de ser dropado. O loop for verifica cada item na tabela items e, com base na chance, decide se o item deve ser dado ao jogador. Se um item é concedido, o loop é interrompido para garantir que o jogador receba apenas um item, mesmo que vários itens na lista tenham uma chance de drop.
  6. Bom dia, Testa isso: function onUse(cid, item, frompos, item2, topos) local store = 23562 -- storage que salva o delay local delay = 10 -- tempo em segundos de delay (agora 10 segundos) local storage = 23563 local cidade = getPlayerTown(cid) local pos = getTownTemplePosition(cidade) if getPlayerStorageValue(cid, store) - os.time() >= 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, string.format("Aguarde %.2f minutos para usar novamente.", (getPlayerStorageValue(cid, store) - os.time()) / 60)) return true end if getCreatureCondition(cid, CONDITION_INFIGHT) then doPlayerSendCancel(cid, 'Você não pode teleportar se estiver em uma batalha.') return true } doPlayerSendCancel(cid, "Teleportando!") doSendMagicEffect(getPlayerPosition(cid), 1004) -- Animacao de efeito (alterei para 1004) addEvent(function() doTeleportThing(cid, pos) if getPlayerStorageValue(cid, 84929) >= 1 then -- torneio viktor setPlayerStorageValue(cid, 84929, -1) end doRegainSpeed(cid) end, delay * 1000) -- O atraso é em milissegundos, por isso multiplicamos por 1000 para 10 segundos. doPlayerRemoveItem(cid, 2458, 1) setPlayerStorageValue(cid, store, os.time() + delay) return true end Utilizei a função addEvent para agendar a execução da função doTeleportThing após o atraso de 10 segundos, e executei a animação de efeito imediatamente após a mensagem de "Teleportando". Certifique-se de que o valor passado para doSendMagicEffect seja o correto para a animação que você deseja. Certifique-se também de que sua implementação do doSendMagicEffect funcione corretamente com o valor 1004. Outro detalhe, o teleportando está no doPlayerSendCancel mesmo? Achei o nome meio estranho para o que faz.
  7. Boa tarde, Para criar basta acessar o local admin do MySQL do Xampp pelo navegador, PORÉM, eu verificaria onde são utilizadas as news do site e comentária para não chamar essa tabela, talvez seja algo no site que você nem vai utilizar por enquanto (Acredito que sejam as notícias do servidor quando entra no site). Porém se você não sabe a estrutura da tabela vai ser um tiro no escuro ficar criando campo por campo até funcionar. CREATE TABLE news ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, content TEXT NOT NULL, author VARCHAR(100), publication_date DATE ); Neste exemplo: A tabela news tem cinco colunas: id, title, content, author, e publication_date. A coluna id é definida como uma chave primária autoincrementável, o que significa que ela terá um valor exclusivo para cada registro e será incrementada automaticamente. As colunas title e content são definidas como VARCHAR e TEXT, respectivamente, para armazenar o título e o conteúdo das notícias. A coluna author é definida como VARCHAR para armazenar o autor da notícia. A coluna publication_date é definida como DATE para armazenar a data de publicação da notícia.
  8. Boa tarde, Parece que na hora que ele tenta buscar o valor de resets para comparar, está dando erro. (Variável cid), tomei a liberdade de organizar o código da linha 95 a 123: function resetPlayer(cid, description) local resets = getResets(cid) local newResets = resets + 1 if newResets < 0 then newResets = 0 end setPlayerStorageValue(cid, config.storage, newResets) if description then db.executeQuery("UPDATE `players` SET `description` = ' [Reset " .. newResets .. "]' WHERE `id` = " .. config.resetStatus.player) else db.executeQuery("UPDATE `players` SET `description` = '' WHERE `id` = " .. config.resetStatus.player) end doRemoveCreature(cid) -- Reset player's level and experience to initial values db.executeQuery("UPDATE `players` SET `level` = " .. config.resetStatus.lvlreset .. ", `experience` = 0 WHERE `id` = " .. config.resetStatus.player) end function teleportAndReset(cid) resetPlayer(cid, true) -- true indicates to update the player's description doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) return TRUE end function resetAndKeepLook(cid) resetPlayer(cid, false) -- false indicates not to update the player's description return TRUE end function getResets(cid) local resets = getPlayerStorageValue(cid, config.storage) return math.max(0, resets) end Nesse código revisado, as funções resetPlayer, teleportAndReset, e resetAndKeepLook foram criadas para realizar as operações de reset de forma mais organizada. A função resetPlayer realiza a atualização dos resets no armazenamento, a atualização da descrição do jogador e o teletransporte para o templo. As outras duas funções chamam resetPlayer com diferentes configurações. Certifique-se de chamar a função apropriada com base nas condições do jogo.
  9. Boa tarde, Parece que o valor guild_id está vinculado a outra tabela. 1. Certifique-se de que o valor que você está tentando inserir na coluna "guild_id" da tabela "guild_ranks" corresponda a um valor existente na tabela referenciada. Em outras palavras, o valor de "guild_id" deve estar presente na tabela de guilds (ou qualquer tabela que seja referenciada por "guild_id"). 2. Verifique se a chave estrangeira (foreign key) foi definida corretamente na tabela "guild_ranks" e que ela está apontando para a tabela e coluna corretas na qual a chave estrangeira deve ser verificada.
  10. Boa tarde, Na chamada da função "getDirectionToWalk" pode estar passando os parâmetros errados, ou a função está escrita errada ou a função pode não existir no seu arquivo .lua, verifique estes pontos. Se ela está em outro arquivo, verifique se importou corretamente, se ela for gerada dinamicamente, garanta que está sendo gerada antes de ser chamada.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...