Ir para conteúdo

brun123

Conde
  • Total de itens

    512
  • Registro em

  • Última visita

  • Dias Ganhos

    16

Tudo que brun123 postou

  1. brun123

    Boss+Drop

    o que aconteceu, deu algum erro?
  2. brun123

    Outfits

    são salvados na database ué, assim como qualquer outra coisa relacionado ao save do seu server (tudo fica na database) storages, global storages, guilds, players, itens dos players, itens nos depots dos players, skills, houses... e assim vai você pode baixar o sqlite editor para ter acesso a sua database
  3. brun123

    Boss+Drop

    vá em data/creaturesripts/scripts e crie um arquivo chamado floordrop.lua e coloque isso dentro: function onDeath(monster, corpse, killers) if not isContainer(corpse.uid) then return true end local directions = {NORTH, EAST, SOUTH, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST} local slotId, maxLoops = 0, getContainerSize(corpse.uid) * 2 repeat local lootItem = getContainerItem(corpse.uid, slotId).uid slotId = slotId + 1 if lootItem > 1 then local random = math.random(#directions) local newDir = directions[random] table.remove(directions, random) doTeleportThing(lootItem, getPosByDir(getThingPos(monster), newDir)) if #directions == 0 then directions = {NORTH, EAST, SOUTH, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST} end else break end until slotId >= maxLoops return true end agora, adicione essa tag em creaturescripts.xml (data/creaturescripts): <event type="death" name="DropItemsOnFloor" event="script" value="floordrop.lua"/> agora vá no XML do monstro que você quer que os itens dropem no chão, e adicione isso antes do último </monster>: <script> <event name="DropItemsOnFloor"/> </script> Não testado, quaisquer erros você tem que postar aqui você configura o loot do seu monstro normal pelo XML dele, quando o monstro morrer, todos os itens dentro do corpo dele vão ser retirados do corpo e vão para no chão
  4. como não sei a versão do seu server, talvez haja alguma função que não existe nele usado pelo script, então quaisquer erros no console, poste aqui, script: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA) local arr = {{1}, {1}, {1}, {1}, {1}, {1}, {2}} local area = createCombatArea(arr) setCombatArea(combat, area) function onTarget(cid, target) local distance = getDistanceBetween(getThingPos(cid), getThingPos(target)) distance = math.max(1, distance - 3) local min = distance * 300 - math.random(50) local max = min + math.random(getPlayerLevel(cid)) local teleportpos = getPosByDir(getThingPos(cid), getCreatureLookDir(cid), distance) doTeleportThing(target, teleportpos, false) doTargetCombatHealth(cid, target, COMBAT_PHYSICALDAMAGE, -min, -max, 255) end setCombatCallBack(combat, CALLBACK_PARAM_TARGETCREATURE, "onTarget") function onCastSpell(cid, var) return doCombat(cid, combat, var) end
  5. a magia vai tirar dano? o que acontece se o alvo estiver 1 sqm de distância do player, ele permanece no lugar ou vai pra trás do player?
  6. posta o xml do monstro e a tag que você tá usando no creature events
  7. cara, é só configurar a tabela no script e ir adicionando o <event> nos xml dos monstros que você configurou na tabela
  8. não via funcionar porque não existe função com nome "setSpecialDescription" na classe creature o jeito é fazer uma creaturescript onLook mesmo...
  9. não vai funcionar como esperado, mas vai funcionar sim: nessa expressão "getPlayerStorageValue(cid, m.stor-m.lost)", você vai estar pegando o valor da storage do player de key (m.stor - m.lost), no caso se ele matar um dragon, o storage 1234 vai ter o mesmo valor do storage 1231 do player... mas pior ainda, porque target é o UID da criatura que morreu, e você tá procurando numa tabela que só tem index de string, então não vai encontrar nada... e mesmo se encontrasse, quand oo player matasse um monstro que não está configurado na tabela, também vai dar erro, o correto seria algo assim: local monsters = { -- Nome do monstro, storage e quanto perderá ["dragon"] = {stor = 990, lose = 1}, ["demon"] = {stor = 991, lose = 1} } function onKill(cid, target) local m = monsters[getCreatureName(target):lower()] if not m then return true end setPlayerStorageValue(cid, m.stor, getPlayerStorageValue(cid, m.stor) - m.lose) return true end e eu ainda recomendo fazer por onDeath, e não por onKill, pois o onKill vai ser executado sempre que o player matar alguma coisa, e o onDeath é executado apenas quando o específico monstro morre, portanto roda menos vezes. o onKill roda várias vezes desnecessariamente. Sem falar que o onKill só consta o player que deu o último golpe no monstro, e o onDeath registra todos que participaram na morte do monstro, assim: local monsters = { -- Nome do monstro, storage e quanto perderá ["dragon"] = {stor = 990, lose = 1}, ["demon"] = {stor = 991, lose = 1} } function onDeath(monster, corpse, deathList) local m = monsters[getCreatureName(monster):lower()] if not m then return true end for _, cid in pairs (deathList) do if isCreature(cid) and isPlayer(cid) then setPlayerStorageValue(cid, m.stor, getPlayerStorageValue(cid, m.stor) - m.lose) end end return true end aí só precisaria adicionar a tag no creaturescripts.xml: <event type="death" name="StorageChangeOnDeath" event="script" value="NOME_DO_SCRIPT.lua"/> e adicionar esse código: <script> <event name="StorageChangeOnDeath"/> </script> antes do último </monster> no XML do monstro que vai mudar o storage de quem o matou
  10. Bom amigo, essa é a minha última tentativa... eu procurei saber um pouco mais de servidores 7.6 e não tinha true ou false, era só 0 ou 1, e qualquer nº em lua retorna true, talvez assim funcione: function onUse(cid, item, frompos, item2, topos) if item.uid == 3334 then local creature = doSummonCreature("demon", topos) if creature == 0 then doPlayerSendCancel(cid, "Não há espaço para sumonar o monstro.") return 1 end if doPlayerRemoveMoney(cid, 500) ~= 1 then doPlayerSendCancel(cid, "Você está sem gps.") doRemoveCreature(creature) return 1 end doSendMagicEffect(getThingPos(creature), 13) end return 1 end não sei se existe a função doRemoveCreature no seu server... talvez funcione, agora olha só, sempre que não der pra sumonar o monstro, vai aparecer essa mensagem no console avisando que o monstro não pôde ser criado
  11. servidor 7.6 é complicado, em servers mais recents as funções que criam monstros retornam o uid dele, bom amigo, como eu não sei se as funções são muito ou pouco diferenets dos servers mais atuais, eu vou precisar dar uma olhada no código fonte do seu server pra pensar em um jeito de fazer isso, mais especificamente o arquivo luascript.cpp... se você não tem o código fonte do seu server, pelo menos me diz em que distro ele é baseado, se é the forgotten server ou outro, enquanto isso, faz uma coisa pra mim: enche de stone (uma que não dê pra criar monstro em cima) e cerca a alavanca todinha, fazendo com que seja impossível criar o monstro e dê use na alavanca novamente pra ver o resultado, poste aqui depois o que apareceu no console
  12. Olha cara, então vamos fazer uma coisinha aqui só pra tentar descobrir onde é o erro... Use a script assim: function onUse(cid, item, frompos, item2, topos) if item.uid == 3334 then local creature = doSummonCreature("demon", topos) print("O UID do monstro sumonado é "..creature..".") if not isCreature(creature) then print("O monstro não pode ser sumonado - 'not isCreature' retornou true.") return true end if not doPlayerRemoveMoney(cid, 500) then print("Not doPlayerRemoveMoney retornou true.") doRemoveCreature(creature) return true end doSendMagicEffect(getThingPos(creature), 13) else doPlayerSendCancel(cid,"Você está sem gps.") end return 1 end Isso vai mostrar algumas mensagens no console do seu server, quero que você dê use 1 única vez na alavanca e mostre todas as mensagens que apareceram no console
  13. entendi o que você quer, é só substituir essa linha do script: var.pos = getThingPos(cid) por essa: --var.pos = getThingPos(cid)
  14. Use a spell assim: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 35) setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 6, 6, 8, 9) local arr = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 2, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } local area = createCombatArea(arr) setCombatArea(combat, area) local function doExecuteCombat(cid, var) if not isCreature(cid) then return true end var.pos = getThingPos(cid) doCombat(cid, combat, var) end function onCastSpell(cid, var) for times = 1, 10 do addEvent(doExecuteCombat, times * 1000, cid, var) end return true end
  15. epaa, agora faz isso aqui então: muda essa linha: internal[getPlayerGUID(cid)] = nil por essa: internal[getPlayerGUID(player)] = nil
  16. dá algum erro? o player morre e como fica as respostas do npc?
  17. epa, bora lá entao: muda essa linha: local guid, lvl = getPlayerGUID(cid), getPlayerStorageValue(cid, storage) para essa: local guid, lvl = getPlayerGUID(cid), math.max(getPlayerStorageValue(cid, storage), 1)
  18. Sim sim, confundi totalmente, já editei e arrumei
  19. Bom amigo, a função getAccountPoints(cid) está retornando uma boolean (ou true ou false) tenta assim: function onLogin(cid) local points = getAccountPoints(cid) or 0 doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your Account has " .. points .. " premium points.") return true end não precisa checar se é um player fazendo login, a menos que o seja possível no seu server que um dragon coloque a account e a password dele pra entrar no jogo
  20. Vamo lá, não testei... Cria um arquivo chamado boss script.lua em data/creaturescripts/scripts e coloque isso dentro: Abre o creaturescripts.xml e adicione essas duas tags: <event type="death" name="BossTriggerDeath" event="script" value="boss script.lua"/> <event type="statschange" name="BossRegisterDamage" event="script" value="boss script.lua"/> agora abra o XML do monstro que você quer que dê os itens, e antes do último "</monster>" adicione isso: <script> <event name="BossTriggerDeath"/> <event name="BossRegisterDamage"/> </script>
  21. opa, errei uma coisinha, é só substituir essa linha: local guid, level = getPlayerGUID(cid), getPlayerStorageValue(cid, storage) por essa: local guid, lvl = getPlayerGUID(cid), getPlayerStorageValue(cid, storage)
  • Quem Está Navegando   0 membros estão online

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