Ir para conteúdo

Bodak Reborn

Membro
  • Registro em

  • Última visita

Tudo que Bodak Reborn postou

  1. Mas pra ele nascer nesse período de tempo, precisa de uma percentagem de chance e um tempo pro script ser executado. Exemplo: a cada 1 hora ter 25 % de chance de nascer o boss, ai só depois de 4 horas o script executar de novo, caso o boss nascer antes disso...
  2. Só é necessário o arquivo dos helds em actions. ;p
  3. actions/scripts nome_arquivo.lua local config = { storage = 65013, item = {2160, 2145, 2159}, -- IDs dos itens. qnt = {5, 3, 8}, -- quantidade de cada item, respectivamente. Ou seja, serão 5 itens de ID 2160, 3 de ID 2145 e 8 de ID 2159. newPos = {x = 1560, y = 1321, z = 7}, -- posição para onde o jogador será teleportado ao dar use no baú. effect = 27, -- efeito. } function onUse(cid, item, frompos, item2, topos) if getPlayerStorageValue (cid, config.storage) <= 0 then for i = 1, #config.item do doPlayerAddItem (cid, config.item[i], config.qnt[i]) end setPlayerStorageValue (cid, config.storage, 1) doTeleportThing (cid, config.newPos) doSendMagicEffect (getThingPos(cid), config.effect) doPlayerSendTextMessage (cid, 25, "Parabéns! Você pegou o seu kit inicial!") else doPlayerSendCancel (cid, "Você já pegou o seu kit inicial!") end return true end XML: <action actionid="ACTION_ID_DO_BAÚ" event="script" value="nome_arquivo.lua"/>
  4. Não faço ideia de qual é o erro, sorry... ;| Me passa o script que eu faço as modificações para você
  5. E qual é a chance do boss nascer?
  6. Pequeno erro, arrumei o código.
  7. Troque doTransformItem(item.uid, fotos) por doTransformItem(getPlayerSlotItem(cid, 7).uid, fotos[i])
  8. A correção tá no código que eu passei lá em cima, eu editei ele novamente para não poluir tanto.
  9. Testou o novo? Certeza? Tem uma variável chamada "pos", sem ter "local" na frente, o que possivelmente causa o erro.
  10. Editei o comentário com o código. Se possível, teste novamente.
  11. O "z" em fromPosition e toPosition é 7, ou seja, ta fazendo um math.random (7, 7). Eu só mudei para não fazer math.random. pos = {x = math.random(config.fromPosition.x, config.toPosition.x), y = math.random(config.fromPosition.y, config.toPosition.y), z = math.random(config.fromPosition.z, config.toPosition.z)} > pos = {x = math.random(config.fromPosition.x, config.toPosition.x), y = math.random(config.fromPosition.y, config.toPosition.y), z = config.fromPosition.z}
  12. local config = { semana_mes = "semana", days = {1,2,3,4,5,6,7}, goblet = 5805, -- id of the gold goblet you'll get when finishing the event. rewards = {2195, 2152, 2160}, -- You will get this + a gold goblet with your name on. moneyReward = {2160, 10, 1}, -- second collumn(count) 0 if you don't want money to be used. or a stackable item you want more than 1 of. playerCount = 2001, -- Global storage for counting the players left/entered in the event zombieCount = 2002, -- Global storage for counting the zombies in the event teleportActionId = 2008, -- Action id of the teleport needed for the movement script teleportPosition = {x = 152, y = 51, z = 7, stackpos = 1}, -- Where the teleport will be created teleportToPosition = {x = 37, y = 272, z = 7}, -- Where the teleport will take you teleportId = 1387, -- Id of the teleport timeToStartEvent = 2, -- Minutes, after these minutes the teleport will be removed and the event will be declared started timeBetweenSpawns = 20, -- Seconds between each spawn of zombie zombieName = "event zombie", -- Name of the zombie that should be summoned playersNeededToStartEvent = 1, -- Players needed before the zombies can spawn. -- Should be the same as in the creaturescript! -- The zombies will spawn randomly inside this area fromPosition = {x = 15, y = 274, z = 7}, -- top left cornor of the playground toPosition = {x = 68, y = 273, z = 7} -- bottom right cornor of the playground } function onTime() local time = os.date("*t") if (config.semana_mes == "semana" and isInArray(config.days,time.wday)) or (config.semana_mes == "mes" and isInArray(config.days,time.day)) or config.semana_mes == "" then local tp = doCreateTeleport(config.teleportId, config.teleportToPosition, config.teleportPosition) doItemSetAttribute(tp, "aid", config.teleportActionId) doBroadcastMessage("Zombie event starting in " .. config.timeToStartEvent .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING) setGlobalStorageValue(config.playerCount, 0) setGlobalStorageValue(config.zombieCount, 0) addEvent(startEvent, config.timeToStartEvent * 1000 * 60) end return TRUE end function startEvent() local get = getThingfromPos(config.teleportPosition) if get.itemid == config.teleportId then doRemoveItem(get.uid, 1) end local fromp, top = config.fromPosition, config.toPosition if getGlobalStorageValue(config.playerCount) >= config.playersNeededToStartEvent then addEvent(spawnZombie, config.timeBetweenSpawns * 1000) doBroadcastMessage("Good luck in the zombie event people! The teleport has closed!", MESSAGE_STATUS_WARNING) for x = fromp.x, top.x do for y = fromp.y, top.y do for z = fromp.z, top.z do areapos = {x = x, y = y, z = z, stackpos = 253} getPlayers = getThingfromPos(areapos) if isPlayer(getPlayers.uid) then doPlayerSendTextMessage(getPlayers.uid, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. config.timeBetweenSpawns .. " seconds! Good luck!") pvgaylord() end end end end else doBroadcastMessage("The Zombie event could not start because of to few players participating.\n At least " .. config.playersNeededToStartEvent .. " players is needed!", MESSAGE_STATUS_WARNING) for x = fromp.x, top.x do for y = fromp.y, top.y do for z = fromp.z, top.z do areapos = {x = x, y = y, z = z, stackpos = 253} getPlayers = getThingfromPos(areapos) if isPlayer(getPlayers.uid) then doTeleportThing(getPlayers.uid, getTownTemplePosition(getPlayerTown(getPlayers.uid)), false) doSendMagicEffect(getPlayerPosition(getPlayers.uid), CONST_ME_TELEPORT) end end end end end end function spawnZombie() if getGlobalStorageValue(config.playerCount) >= 1 then local randomX = math.random(config.fromPosition.x, config.toPosition.x) local randomY = math.random(config.fromPosition.y, config.toPosition.y) local randomPos = {x = randomX, y = randomY, z = config.fromPosition.z} doSummonCreature(config.zombieName, randomPos) doSendMagicEffect(randomPos, CONST_ME_MORTAREA) setGlobalStorageValue(config.zombieCount, getGlobalStorageValue(config.zombieCount)+1) doBroadcastMessage("A zombie has spawned! There is currently " .. getGlobalStorageValue(config.zombieCount) .. " zombies in the zombie event!", MESSAGE_STATUS_CONSOLE_RED) addEvent(spawnZombie, config.timeBetweenSpawns * 1000) else local fromp, top = config.fromPosition, config.toPosition for x = fromp.x, top.x do for y = fromp.y, top.y do for z = fromp.z, top.z do areapos = {x = x, y = y, z = z, stackpos = 253} cid = getThingfromPos(areapos).uid if isPlayer(cid) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false) doBroadcastMessage(getCreatureName(cid)..' has survived at zombie event!') for _,items in ipairs(config.rewards) do doPlayerAddItem(cid, items, 1) end if config.moneyReward[3] == 1 then doPlayerAddItem(cid, config.moneyReward[1], config.moneyReward[2]) end doBroadcastMessage(getPlayerName(cid) .. " won the Zombie event! Congratulations!", MESSAGE_STATUS_WARNING) local goblet = doPlayerAddItem(cid, config.goblet, 1) doItemSetAttribute(goblet, "description", "Awarded to " .. getPlayerName(cid) .. " for winning the Zombie event.") elseif isMonster(cid) then doRemoveCreature(cid) end end end end end end function pvgaylord() local fromp, top, p, m = config.fromPosition, config.toPosition, 0, 0 for x = fromp.x, top.x do for y = fromp.y, top.y do for z = fromp.z, top.z do local areapos = {x = x, y = y, z = z, stackpos = 253} local cid = getThingfromPos(areapos).uid if isPlayer(cid) then p = p+1 elseif isMonster(cid) then m = m+1 end end end end if p ~= getGlobalStorageValue(config.playerCount) then setGlobalStorageValue(config.playerCount, p) end if p < 2 then return true end addEvent(pvgaylord,100,nil) end
  13. Como ele não disse* AIOSDJAIOSDJAIOSDJ, sorry
  14. function onStepIn(cid, item, position, fromPosition) if isPlayer (cid) then doCreatureAddHealth (cid, -getCreatureHealth(cid)/100*99) end return true end
  15. Tenta assim: function onTarget(cid, target) if isMonster(cid) and isPlayer(target) then if canAttackOther(cid, target) == "Cant" then return false end end end
  16. @One Punch Man, como você não disse a versão do seu servidor, eu fiz baseado no meu, que é TFS 1.0. Mas deve funcionar para algumas versões anteriores.
  17. Estou na escola, fiz correndo. Não sei se vai funcionar. Bom, testa ai: local reward = { [1] = {storage = 46843, item = 2160, qnt = 5, players = 50}, [2] = {storage = 46844, item = 2160, qnt = 10, players = 60}, --[um número maior que o anterior] = {storage, ID do item, quantidade do item, quantidade de players necessários} } function onLogin (cid) local players = getPlayersOnline() for _, v in pairs (reward) do if getGlobalStorageValue (v[1]) <= 0 and players >= v[4] then setGlobalStorageValue (v[1], 1) for _, pid in ipairs (players) do for i = 1, #reward do doPlayerAddItem (pid, reward[i][2], reward[i][3]) end end end end return true end XML: <event type="login" name="recordReward" event="script" value="nome_arquivo.lua"/> Registre em login.lua: registerCreatureEvent(cid, "recordReward")
  18. @Sepultura Troca o teu !revert por isso: function onSay(cid, words, param, channel) local thisball = getPlayerSlotItem(cid, 8) local eff = 184 local outfit = getPokemonXMLOutfit("Ditto") local ditto = getCreatureSummons(cid)[1] if getItemAttribute(thisball.uid, "ehditto") then doItemSetAttribute(thisball.uid, "poke", "Ditto") doItemSetAttribute(thisball.uid, "ehditto", 1) doSendMagicEffect(getThingPosWithDebug(ditto), eff) doSetCreatureOutfit(ditto, {lookType = outfit}, -1) doPlayerSay(sid, ""..getPokeName(ditto)..", untransfrom!", 1) doCreatureSay(ditto, "TRANSFORM!", TALKTYPE_MONSTER) doPlayerSendTextMessage (cid, 19, "Puxe o Ditto para reverter a transformação.") end return true end
  19. Tenta trocar por onTarget. ;X
  20. Tu fez como? onTarget?
  21. Eu vi o código do revert, só que no meu servidor não existe a função "doDittoRevert". Ela deve estar em algum arquivo da sua LIB.
  22. Então, eu não entendo praticamente nada de c++, mas pelo que sei de php, "!" significa not, ou seja, tá dizendo que o NPC não será "targetável". Tenta tirar o not, deixando assim: target -> Npc -> isAtackable OBS: Todos os NPCs serão atacáveis.
  23. To na escola, não posso testar. Fiz correndo aqui, vê se funciona: local config = { tilePos = {x = 1503, y = 1504, z = 7}, -- posição onde o jogador deve estar. toPos = {x = 1053, y = 1054, z = 7}, -- posição para onde o jogador irá. stone = 6463, -- ID da pedra. timeToRemove = 3, -- tempo em horas para remover a pedra. exhausted = 3, -- tempo em horas para outro jogador poder entrar. storage = 68735, hoursLeft = math.floor((getGlobalStorageValue(cid, 68735) - os.time())/(60 * 60)) } function onUse(cid, item, fromPosition, itemEx, toPosition) if getTopCreature(config.tilePos).uid > 0 then if getGlobalStorageValue (config.storage) < os.time() then doTeleportThing (cid, config.toPos) doSendMagicEffect (getThingPos (cid), CONST_ME_TELEPORT) doCreateItem (config.stone, 1, config.tilePos) setGlobalStorageValue (config.storage, config.exhausted * 60 * 60 + os.time()) addEvent (function() local tileItem = getTileItemById (pos, item).uid if tileItem ~= 0 then doRemoveItem (tileItem, 1) end end, config.timeToRemove * 1000 * 60 * 60) else doPlayerSendCancel (cid, "O caminho está bloqueado, será liberado em "..config.hoursLeft.." horas.") end else doPlayerSendCancel(cid, "Você deve estar no local correto.") end return true end

Informação Importante

Confirmação de Termo