Ir para conteúdo
  • Cadastre-se

Anderson Sacani

Membro
  • Total de itens

    110
  • Registro em

  • Última visita

  • Dias Ganhos

    8

Tudo que Anderson Sacani postou

  1. São muitas informações, e tem tutoriais aqui no fórum que podem te ajudar, mas se precisar, posso te dar uma força. Me manda mensagem no privado.
  2. A função getPlayerDamageMultiplier não foi encontrada. Ela existe no teu servidor?
  3. No primeiro resultado ele ta tentando passar o valor 19876 para a key inexistente. Observa: (, 0, '19876') E to vendo mais possíveis problemas porque tem alguns casos que tem uma string no lugar de value, e não deveria. Deveira ser apenas INT. Pode mandar uma print da tabela global_storage para eu ver?
  4. Isso só acontece com o item custom ou acontece com qualquer outro item que tenha duração?
  5. Então faz o seguinte: No teu banco de dados procura por uma tabela com o nome de guilds ou player_guilds, algo assim. Nessa tabela me passa o nome de cada coluna existente. Não sei como está o seu banco de dados, mas estou considerando que existe a tabela "guilds" e dentro dela há as colunas "name" e "id": local function getGuildNameById(guildId) if type(guildId) ~= "number" or math.floor(guildId) ~= guildId then error("[getGuildNameById] O guildId precisa ser um numero inteiro.") end local query = db.getResult("SELECT `name` FROM `guilds` WHERE `id` = " .. guildI
  6. Só adicionar isso no arquivo de login.lua: local castleGuildId = getGlobalStorageValue(123123) local guildName = getGuildNameById(castleGuildId) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[CASTLE24H]\nGuilda dominante: " .. guildName) Minha dúvida é, será que teu servidor possui a função "getGuildNameById"? Faça o teste e me retorne porque se precisar, eu crio essa função.
  7. Boa tarde, eu estava de bobeira e criei uma magia com base em uma skill do Metin2. A magia se chama Sword Attack. Essa magia dá dano físico em uma pequena área à sua frente e também aplica o efeito de paralyze em seus inimigos. Essa magia possui um sistema de nível, então quanto maior o nível da magia, maior será o dano, maior será a probabilidade de paralizar o inimigo e maior será o gasto de mana. Testado hoje 17/11/2023 na versão mais atual do Canary Esse é o script: local config = { --[[ * addManaSpentSystem: In Metin2, there is no ma
  8. Sobre clonar os itens tu ta certo. Sempre que um jogador desloga os dados do personagem saem da memória e vão para o banco de dados. E sim, este procedimento está correto e sempre deverá ser dessa maneira por questões de performance. Ataques DDoS não fazem rollback, ou seja, não cracham o servidor, então não é um ataque DDoS. Sugiro começar a depurar tudo em algum arquivo de log para descobrir qual é a última ação antes do servidor crachar, fazendo isso tu vai saber como tão derrubando. E mais um detalhe, a pessoa que clona os itens certamente sabe como derrubar o
  9. std::stringstream ss; ss << (uint64_t)gainExp; std::string expText = "EXP: " + ss.str(); g_game.addAnimatedText(getPosition(), (uint8_t)color, expText); }
  10. Já leu o nome do método? onGainSharedExperience; Tente fazer modificações também em onGainExperience; void Creature::onGainExperience(double& gainExp, bool fromMonster, bool multiplied) { if(gainExp <= 0) return; if(master) { gainExp = gainExp / 2; master->onGainExperience(gainExp, fromMonster, multiplied); } else if(!multiplied) gainExp *= g_config.getDouble(ConfigManager::RATE_EXPERIENCE); int16_t color = g_config.getNumber(ConfigManager::EXPERIENCE_COLOR); if(color < 0) color = random_range(0, 255); std::stringstream ss; ss << "Exp: "
  11. Eu faria um contador utilizando a function onKill dessa maneira: function onKill(cid, target, lastHit) if isMonster(target) then local monsterName = getCreatureName(target) if monsterName == "Altaboss" then local playerKills = getPlayerStorageValue(cid, 225463) if playerKills == -1 then playerKills = 0 end setPlayerStorageValue(cid, 225463, playerKills + 1) local globalKills = getGlobalStorageValue(316141) if globalKills == -1 then globalKills = 0 end
  12. Quer tirar a prova real se irá funcionar ou não? Ta aqui: function onDeath(creature, corpse, killer) local creatureName = getCreatureName(creature) print(creatureName .. " died.") if isSummon(creature) then print(creatureName .. " is a summon.") else print(creatureName .. " is not a summon.") end return true end Sempre faça depuração de um código quando há dúvidas. Registra esse script no summon e vai perceber que nenhum print aparecerá, porque ele não morre.
  13. Não vai funcionar porque summon não morre, não adianta... Pode ser o evento que for. O correto é alterar na source e fazer com que summon também morra.
  14. Eu só usaria o stopEvent caso não estivesse verificando a storage do player, nesse caso não há necessidade. E agora um detalhe muito importante: Sempre que usar addEvent com player, é bom criar condição para verificar se ele está online, caso contrário o servidor poderá crashar. local MAX_HEAL_LEVEL = 717217 local STORAGE_VALUE = 98910 local HEAL_INTERVAL = 4 * 1000 local HEAL_AMOUNT = 1000000000 local HEAL_TEXT = "|ROX|..." function doHealPlayer(cid) if not cid or not isPlayer(cid) then return true end if getPlayerStorageValue(cid, STORAGE_VALUE) == 1 then
  15. Refiz teu script: function onUse(cid, item, frompos, item2, topos) local dexsoftCoinId = 6535 if getPlayerItemCount(cid, dexsoftCoinId) < 1 then doPlayerSendCancel(cid, "Voce precisa de 1 DexSoft Coin para comprar!") return true end doPlayerRemoveItem(cid, dexsoftCoinId, 1) doPlayerAddItem(cid, 7881, 1) doSendMagicEffect(topos, 14) doBroadcastMessage("O jogador " .. getPlayerName(cid) .. " comprou donate axe", MESSAGE_STATUS_CONSOLE_BLUE) return true end
  16. Eu faria o seguinte para não precisar mexer em C++: Aumentaria a vida dele para o dobro, e quando ele estiver com metade da vida, usaria a magia para explodir, sacrificando-se e dando dano aos monstros.
  17. Nunca vai funcionar. Observem: A função se chama onDeath, e como sabemos, os summons não morrem, mas desaparecem, ou seja, são removidos. Para corrigir isto, somente em C++, ou então pensar em outra solução.
  18. Muito estranho, pois, já era pra ter funcionado em alguma das versões anteriores. Uma última tentativa: local position = { x = 33295, y = 32779, z = 7 } local ladder_id = 419 function onUse(cid, item, fromPosition, itemEx, toPosition) local tile = getTileItemById(position, ladder_id) if tile then doRemoveItem(tile.uid, 1) doSendMagicEffect(position, CONST_ME_POFF) else doCreateItem(ladder_id, 1, position) doSendMagicEffect(position, CONST_ME_MAGIC_BLUE) addEvent(function() local tile = getTileItemById(position, ladder_i
  19. Só para eu entender. Pergunta 1: Quando tu aperta pela primeira vez ele já remove o piso ou cria uma escada? Pergunta 2: Se tu apertar de novo, a escada é removida junto com o piso ou somente o piso? Acredito que deve ser problema com stapos. Teste agora: local position = { x = 33295, y = 32779, z = 7, stackpos = 1 } local ladder_id = 419 function onUse(cid, item, fromPosition, itemEx, toPosition) local ladderItem = getThingfromPos(position) if ladderItem.itemid == ladder_id then doRemoveItem(ladderItem.uid, 1) doSendMagicEffect(position, CONST_ME_POFF)
  20. Testa agora: local position = { x = 33295, y = 32779, z = 7 } local ladder_id = 419 function onUse(cid, item, fromPosition, itemEx, toPosition) local ladderItem = getThingfromPos(position) if ladderItem.itemid == ladder_id then doRemoveItem(ladderItem.uid, 1) doSendMagicEffect(position, CONST_ME_POFF) else doCreateItem(ladder_id, 1, position) doSendMagicEffect(position, CONST_ME_MAGIC_BLUE) addEvent(function() local ladderItem = getThingfromPos
  21. Recentemente to postando bastante revscripts, entao no início do tópico eu coloco [Revscripts] manualmente mesmo, então sugiro colocar [Canary] no início.
  22. O problema provavelmente é porque não está passando o local em que será reproduzido o efeito mágico. No caso tem que ser assim: doSendMagicEffect(positions[i].pos, CONST_ME_POFF) O parâmetro que coloquei "positions[i].pos" retorna a posição criada dentro da variável positions, e como o efeito foi colocado dentro de uma estrutura de repetição, servirá para qualquer outra posição que adicionar após o primeiro índice. -- EditeD by: Yuri -- Passagem Secreta BOSS: Sunfyre the Golden local positions = { [1] = { pos = { x = 33295, y = 32779, z = 7 }, id = 419, toid =
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo