-
Total de itens
512 -
Registro em
-
Última visita
-
Dias Ganhos
16
Tudo que brun123 postou
-
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
-
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
-
pedido Magia Muito Difícil (Acho Que Impossível)
pergunta respondeu ao PeidoDivino de brun123 em Scripts
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 -
pedido Magia Muito Difícil (Acho Que Impossível)
pergunta respondeu ao PeidoDivino de brun123 em Scripts
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? -
não via funcionar porque não existe função com nome "setSpecialDescription" na classe creature o jeito é fazer uma creaturescript onLook mesmo...
-
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
-
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
-
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
-
pode postar sim, e posta aí se puder
-
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
-
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
-
epaa, agora faz isso aqui então: muda essa linha: internal[getPlayerGUID(cid)] = nil por essa: internal[getPlayerGUID(player)] = nil
-
Tenta assim então:
-
dá algum erro? o player morre e como fica as respostas do npc?
-
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)
-
Tenta assim:
-
pedido Ganha Item A Party Que Tirar Mais Damage Do Monstro
pergunta respondeu ao dearthpoenix de brun123 em Scripts
Sim sim, confundi totalmente, já editei e arrumei -
tenta assim:
-
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
-
pedido Ganha Item A Party Que Tirar Mais Damage Do Monstro
pergunta respondeu ao dearthpoenix de brun123 em Scripts
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> -
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.