Ir para conteúdo

lordzetros

Membro
  • Registro em

  • Última visita

Tudo que lordzetros postou

  1. É por conta que o cálculo da chance do loot é feito desta forma: chance/1000 Se quer 90%, deves colocar 90000.
  2. Não cheguei a testar, mas dá o feedback depois do teste, caso tenha ou não funcionado: local config = { chance_heal = 45, -- Chance para ele se curar, deixei como 45% life_ative = 1000000, life_add = 500000, seconds_ative = 2, monster = "Azazel" -- nome do monstro } function AddHealthMonster(monst) if (isMonster(monst)) then doCreatureAddHealth(monst, config.life_add) doCreatureSay(monst, "Fracos demais!", TALKTYPE_MONSTER) doSendMagicEffect(getCreaturePosition(monst), CONST_ME_MAGIC_RED) end end function onStatsChange(cid, attacker, type, combat, value) if not isMonster(cid) then return true end if ((type == STATSCHANGE_HEALTHLOSS) and (getCreatureName(cid) == config.monster) and (getCreatureHealth(cid) <= config.life_ative)) then if (config.chance_heal >= math.random(1,100)) then doCreatureSay(cid, "Eu sou o deus do inferno, precisa mais do que isso para me matar, HAHAHA!", TALKTYPE_MONSTER) addEvent(AddHealthMonster, config.seconds_ative * 1000, cid) else doCreatureSay(cid, "Seus miseraveis! Eu nao os perdoarei!!!!", TALKTYPE_MONSTER) end end return true end
  3. @zxcvbnm Exatamente, colega, kkk, veja bem: "caso o player esteja nessa x area e invente de sair, queria que remove-se a storage 43352. Assim o player terá que arruma o item novamente para entra na x area." Ele se referiu CASO o player resolve-se sair, correto?
  4. @zxcvbnm Pensando desta forma sim, porém, perguntei ao autor do tópico como seria a entrada do jogador nesta área X, o mesmo respondeu que seria apenas por piso, logo, esta possibilidade é descartada, correto? Em seguida, acho que em questão do jogador entrar na área novamente, não será um problema, visto que da forma que está, o jogador pode entrar pelo piso e pisar novamente na entrada sem problema algum, não proíbe a passagem dele na entrada novamente até que ele complete o possível 'objetivo': chegar na saída (e aí sim, ele perderá permissão de adentrar na área novamente).
  5. <?xml version="1.0" encoding="UTF-8"?> <mod name="AdvancedExpPotionSystem" enabled="yes" author="MatheusMkalo" forum="XTibia.com"> <!-- Configs and Functions --> <config name="PotionExpConfigs"><![CDATA[ ------ CONFIGURE SEU SCRIPT ------ TRUE ou FALSE configs = { time = 30, ---- TIME IN MINUTES needpa = TRUE, needlvl = {TRUE, level = 50}, costmana = {TRUE, mana = 300}, addrate = 50, -- Exp que vai adicionar em % removeonuse = TRUE } function getTime(s) local n = math.floor(s / 60) s = s - (60 * n) return n, s end CreatureEventChecker = function(event, ...) -- Colex if isCreature(arg[1]) then event(unpack(arg)) end end creatureEvent = function(event, delay, ...) -- Colex addEvent(CreatureEventChecker, delay, event, unpack(arg)) end function getPlayerExtraExpRate(cid) -- By MatheusMkalo return (getPlayerRates(cid)[8]-1)*100 end ]]></config> <!-- exppotion.lua --> <action itemid="7440" event="script"><![CDATA[ domodlib('PotionExpConfigs') if getPlayerStorageValue(cid, 62164) >= 1 then return doPlayerSendCancel(cid, "Voce ja ta Sob o Efeito da Potion.") end if configs.needpa and not isPremium(cid) then return doPlayerSendCancel(cid, "Voce Precisar ser Premium Para Usar") end if configs.needlvl[1] and getPlayerLevel(cid) < configs.needlvl.level then return doPlayerSendCancel(cid, "Voce Precisa ser " .. configs.needlvl.level .. " Para usar a Potion.") end if configs.costmana[1] then if getCreatureMana(cid) < configs.costmana.mana then return doPlayerSendCancel(cid, "Voce Precisar ter " .. configs.costmana.mana .. " de Mana Para usar a Potion") else doCreatureAddMana(cid, -configs.costmana.mana) end end if configs.removeonuse then doRemoveItem(item.uid, 1) end for i = configs.time*60, 1, -1 do local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60)) if #a < 4 then a = string.sub(a,1,2) .. "0" .. string.sub(a, 3) end if i == configs.time*60 then creatureEvent(doPlayerSendCancel, configs.time*60*1000, cid, "Efeito Final da Pocao de EXP.") end creatureEvent(doPlayerSendCancel, (configs.time*60-i)*1000, cid, "O Efeito da Pocao vai acabar em "..a..".") end doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100)) creatureEvent(doPlayerSetExperienceRate, configs.time *60*1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100))) doPlayerSendTextMessage(cid, 22, "Agora Voce Esta Recebendo mais EXP por Matar Monstros.") setPlayerStorageValue(cid, 62164, os.time()) creatureEvent(setPlayerStorageValue, configs.time *60*1000, cid, 62164, 0) return TRUE ]]></action> <creaturescript type="login" name="ExpPotion" event="script"><![CDATA[ domodlib('PotionExpConfigs') local time = configs.time if os.time()-getPlayerStorageValue(cid, 62164) < time *60 then doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100)) creatureEvent(doPlayerSetExperienceRate, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100))) creatureEvent(setPlayerStorageValue, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000 , cid, 62164, 0) for i = (time*60-(os.time()-getPlayerStorageValue(cid, 62164))), 1, -1 do local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60)) if #a < 4 then a = string.sub(a,1,2) .. "0" .. string.sub(a, 3) end if i == (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) then creatureEvent(doPlayerSendCancel, (time*60-(os.time()-getPlayerStorageValue(cid, 62164)))*1000, cid, "O Efeito da Potion Termina em.") end creatureEvent(doPlayerSendCancel, ((time*60-(os.time()-getPlayerStorageValue(cid, 62164)))-i)*1000, cid, "O Efeito da Potion Termina em "..a..".") end end return TRUE ]]></creaturescript> </mod> Créditos no código. Tente buscar algumas dúvidas no fórum, às vezes já foi resolvida por alguém! Abraços.
  6. @Tadelho Estranho, nunca vi esse caso do globalStorage não salvar, eu ia recomendar dá uma olhada no config.lua, mas como você já disse que alterou para true, já deveria está funcionando. Em questão de alterar o storage, o mais viável para se fazer isso seria atualizando pela database, já que nem todos os jogadores estariam online. Daqui a pouco penso em uma solução para isso.
  7. local pos = {x=875,y=398,z=7} -- Local do NPC function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if not (npc_tile) then if getGlobalStorageValue(9000) <= 0 then if isPlayer(cid) and getPlayerAccess(cid) < 3 and getPlayerStorageValue(cid, 9000) <= 0 then npc_tile = doCreateNpc("GoblinAssustadoOesteCidade", pos) end setGlobalStorageValue(9000, 1) end end return true end Acredito que isso resolva, colega. A solução é guardar o uid do npc criado e fazer a verificação se ele existe ou não cada vez que o jogador pisar no piso. Caso não resolva, buscaremos outra forma para solucionar isso aí, :).
  8. @BangxD Eita, verdade. Descuido de minha parte, corrigido. Que bom que deu certo, sucesso!
  9. @Rkkksalgado2 Acontece, haha. Disponha!
  10. @Rkkksalgado2 Não entendi direito o que você quer, mas... Se você estiver usando o sistema de vip criado por Kydrai (o qual você postou em anexo), para adicionar um item que dê x dias de vip, crie um arquivo data/actions/scripts/ chamado itemAddVip.lua e cole dentro: local config = { removeOnUse = "yes", -- remover quando usar ("yes" or "no") days = 30 -- dias que serão adicionados } function onUse(cid, item, fromPosition, itemEx, toPosition) addVipDays(cid, config.days) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. config.days .." dias de VIP no seu character.") if (config.removeOnUse == "yes") then doRemoveItem(item.uid, 1) end return true end E em data/actions/actions.xml adicione dentro e abaixo de uma semelhante: <action itemid="id_do_item" event="script" value="itemAddVip.lua"/> Altere o itemid para o ID do item que você quer que dê Vip Days.
  11. Em data/actions/scripts/ crie um arquivo chamado setStoragePiso.lua e cole o código abaixo dentro dele: local storage = 43352 -- Storage, coloquei o mesmo do post, caso queira mudar, faça isso nos dois scripts. local msg_sucesso = "Opa, parece que voce pode entrar na area sagrada." -- Mensagem quando o usuário usar o item local msg_falha = "Voce ja tem permissao para entrar na area sagrada!" -- Caso o usuário ja tenha usado o item antes e nao saiu da área. local efeito = CONST_ME_HOLYDAMAGE -- Efeito quando player usar o item function onUse(cid, item, fromPos, item2, toPos) if (isPlayer(cid)) then if (getPlayerStorageValue(cid, storage) == -1) then setPlayerStorageValue(cid, storage, 1) doRemoveItem(item.uid, 1) doPlayerSendCancel(cid, msg_sucesso) doSendMagicEffect(getCreaturePosition(cid), efeito) else doPlayerSendCancel(cid, msg_falha) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) end end return true end Em data/actions/actions.xml adicione este código abaixo de um semelhante: <action itemid="id_do_item" event="script" value="setStoragePiso.lua"/> OBS.: MUDE ACIMA O ID DO ITEM PARA O QUAL VOCÊ QUER QUE O PLAYER USE PARA SETAR O STORAGE Em data/movements/scripts/ crie um arquivo chamado pisoStorage.lua e adicione o código abaixo: local storage = 43352 -- Storage, coloquei o mesmo do post, caso queira mudar, faça isso nos dois scripts. local msg_entrar = "Voce entrou na area sagrada." -- Mensagem quando o player entrar na área. local msg_sem_permissao = "Voce nao esta autorizado a passar por aqui!" -- Caso player não tenha o storage ainda local telePosition = {x = 155, y = 54, z = 7} -- Posicao do local que o player será teleportado quando ele pisar na saída local msg_saida = "Voce saiu da area sagrada, agora esta sem permissao para andar por lá." -- Mensagem de quando o player sair da area function onStepIn(cid, item, pos, fromPos) if not (isPlayer(cid)) then return false end if (item.actionid == 45560) then if (getPlayerStorageValue(cid, storage) ~= -1) then doPlayerSendCancel(cid, msg_entrar) doSendMagicEffect(pos, CONST_ME_MAGIC_BLUE) else doPlayerSendCancel(cid, msg_sem_permissao) doTeleportThing(cid, fromPos, true) end elseif (item.actionid == 45561) then setPlayerStorageValue(cid, storage, -1) doTeleportThing(cid, telePosition) doPlayerSendCancel(cid, msg_saida) end return true end Em data/movements/movements.xml adicione este código abaixo de um semelhante: <movevent type="StepIn" actionid="45560;45561" event="script" value="pisoStorage.lua"/> 1 - Configure no seu editor de mapa no piso de entrada coloque o actionID = 45560 2 - Ainda no editor de mapa, no piso de saída coloque o actionID = 45561 Não fiz o teste, mas qualquer erro, pode postar aqui novamente que tentarei lhe ajudar.
  12. @tataboy67 Claro, colega, pode ficar tranquilo, ?. Aguardando resposta de @ghunalma.
  13. Ele irá entrar por uma porta, portal, piso? E quais são as formas dele sair? Da mesma forma?
  14. local storageChests = 202049 -- Storage local config = { ---------------------------------------- { actionID = 1234, -- ActionID Bau questName = "Hybrid Quest", -- Nome da Quest levelNec = 400, -- Nivel necessário reward = { [1] = {2160, 10}, -- {ItemID, Count} } }, ---------------------------------------- { actionID = 1235, questName = "Afonso Quest", levelNec = 200, reward = { [1] = {2159, 15}, [2] = {2160, 100}, } }, ---------------------------------------- } function onUse(cid, item, fromPos, item2, toPos) for k, v in ipairs(config) do if item.actionid == v.actionID then if (getPlayerStorageValue(cid, (storageChests + k)) ~= -1) then doPlayerSendTextMessage(cid, 22, "You have completed this quest.") return true end if (getPlayerLevel(cid) <= v.levelNec) then doPlayerSendTextMessage(cid, 22, "You need a level "..v.levelNec..".") return true end for i = 1, #v.reward do doPlayerAddItem(cid, v.reward[i][1], v.reward[i][2]) end setPlayerStorageValue(cid, storageChests + k, 1) doPlayerSendTextMessage(cid, 22, "Congratulations, you completed the quest: {"..v.questName.."}.") end end end Não cheguei a testar, mas dá um feedback depois, caso tenha dado algum problema.
  15. Gosto muito de contemplar trabalhos de mappers, e este aqui, é um baita de trabalho. Muito bom!
  16. @tataboy67 Se me permite, nesta parte: for i = 1, #v.reward do doPlayerAddItem(cid, i[1], i[2]) end Deveria ser: for i = 1, #v.reward do doPlayerAddItem(cid, v.reward[i][1], v.reward[i][2]) end não?
  17. 0.4 ou 1.3? Teleport aparece quando o evento abre? Ou é uma passagem que é aberta?
  18. <?xml version="1.0" encoding="UTF-8"?> <!-- ULTIMATE SURVIVAL - Codigo feito por Omega / Pedido por vinnevinne Informacoes: http://www.xtibia.com/forum/topic/221415-ultimate-survival/ --> <mod name="Ultimate Survival" version="1.0" author="Omega" enabled="yes"> <config name="ultimatelib"><![CDATA[ USurvival = { posi = {x=1785, y=269, z=9}, -- parte esquerda superior da arena posf = {x=1798, y=290, z=9}, -- parte direita inferior da arena posc = {x=1791, y=280, z=9}, -- onde o player entra na arena waves = { [1] = {monsters = {'wolf', 'wolf'}, count = 10, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [2] = {monsters = {'wolf', 'fighter', 'paikuhan'}, count = 13, reward = {exp = 0, item = 2160, amount = 1, money = 5000000}}, [3] = {monsters = {'bandit scout', 'ice elemental', 'fire elemental'}, count = 15, reward = {exp = 0, item = 2160, amount = 1, money = 10000000}}, [4] = {monsters = {'namekjin', 'ice elemental', 'gohan ssj2', 'paikuihan'}, count = 20, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [5] = {monsters = {'namekjin', 'space soldier', 'android evolution v1', 'giat bandit'}, count = 25, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [6] = {monsters = {'giat bandit', 'namekjin', 'boo', 'frontal cyborg'}, count = 25, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [7] = {monsters = {'android evolution v2', 'namekjin mindcontroller', 'android evolution v1', 'dragon'}, count = 26, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [8] = {monsters = {'black dragon', 'dragon', 'licantropo', 'undead dragon'}, count = 28, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [9] = {monsters = {'paikuhan', 'bandit', 'super paikuhan', 'giant bandit', 'goku ssj3'}, count = 20, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [10] = {monsters = {'trunks ssj2', 'goku ssj3', 'boo', 'gohan ssj2', 'golden oozaru'}, count = 21, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [11] = {monsters = {'ryan shenlong', 'goku ssj4', 'undead dragon', 'raditz ssj4', 'black dragon', 'mini black', 'li shenron'}, count = 22, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [12] = {monsters = {'li shenron', 'goku ssj4', 'li shenron max', 'king vegeta', 'san shenron'}, count = 25, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [13] = {monsters = {'hell scorpion v1', 'suu shenron', 'hell janemba teach', 'li shenron max', 'vegetto', 'san shenron', 'suu shenron'}, count = 24, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [14] = {monsters = {'hell scorpion v1', 'ryan shenlong', 'turles ssj5', 'boo', 'namekjin v1', 'licantropo', 'black dragon'}, count = 27, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [15] = {monsters = {'san shenron', 'ryan shenlong'}, count = 26, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [16] = {monsters = {'vegetto', 'dog', 'namekjin v1', 'oturles ssj5', 'hell scorpion v1', 'li shenron', 'king vegeta'}, count = 27, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [17] = {monsters = {'goku ssj5', 'Anbu'}, count = 28, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [18] = {monsters = {'vegeta ssj5', 'Anbu'}, count = 28, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [19] = {monsters = {'hell janemba teach', 'Anbu'}, count = 28, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [21] = {monsters = {'hell scorpion ssj5', 'Anbu'}, count = 28, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [22] = {monsters = {'turles ssj5', 'black dragon'}, count = 29, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [23] = {monsters = {'raditz ssj5', 'mini black'}, count = 29, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [24] = {monsters = {'tsuful ssj5', 'black dragon'}, count = 29, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [25] = {monsters = {'furie gogeta', 'black dragon'}, count = 29, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [26] = {monsters = {'freeza rage', 'mini black'}, count = 29, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [27] = {monsters = {'strong boo', 'furie cell'}, count = 29, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [28] = {monsters = {'hell janemba teach', 'Anbu'}, count = 29, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [29] = {monsters = {'freeza rage', 'hell scorpion v1'}, count = 29, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [30] = {monsters = {'vegeta ssj5', 'freeza rage'}, count = 29, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [31] = {monsters = {'black dragon', 'mini black'}, count = 29, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [33] = {monsters = {'furie gogeta', 'black dragon'}, count = 29, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [34] = {monsters = {'freeza rage', 'li shenron max'}, count = 30, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, [35] = {monsters = {'furie cell', 'furie gogeta'}, count = 30, reward = {exp = 0, item = 2160, amount = 1, money = 1000000}}, }, exhaust = 1 * 24 * 60 * 60, -- Tempo em segundos ate poder entrar novamente na arena (1 * 24 * 60 * 60 = 1 dia) final_reward = {item = 2160, amount = 100, exp = 10000000, money = 0}, storage_ex = 607069, storage_wave = 607089, }   function isWalkable(pos)-- by Nord / editado por Omega if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false elseif isCreature(getTopCreature(pos).uid) then return false elseif getTileInfo(pos).protection then return false elseif hasProperty(getThingFromPos(pos).uid, 3) or hasProperty(getThingFromPos(pos).uid, 7) then return false end return true end   function doSpawnMonsters(monsters, pos, radius, limit) if not pos.x or not pos.y or not pos.z or not type(monsters) == 'table' then return false end local radius = tonumber(radius) if radius > 5 then radius = 5 elseif radius < 2 then radius = 2 end if not limit or limit < 1 then limit = 1 elseif limit > radius ^ 2 then limit = math.floor((radius*1.5) ^ 2) end local k = 0 local tries = 0 repeat for x = pos.x - radius, pos.x + radius do for y = pos.y - radius, pos.y + radius do if isWalkable({x=x, y=y, z=pos.z}) then local monster = monsters[math.random(1, #monsters)] local chance = math.random(1, 100) if k == limit then break elseif chance <= 8 and doCreateMonster(monster, {x=x, y=y, z=pos.z}) then k = k + 1 end end end end tries = tries + 1 until k >= limit or tries >= 500 return k >= limit and true or false end   function getPlayersInArea(pos1,pos2) local players = {} if pos1.x and pos1.y and pos2.x and pos2.y and pos1.z == pos2.z then for a = pos1.x, pos2.x do for b = pos1.y,pos2.y do local pos = {x=a,y=b,z=pos1.z} if isPlayer(getTopCreature(pos).uid) then table.insert(players,getTopCreature(pos).uid) end end end return players else return false end end   function getMonstersInArea(pos1,pos2) local players = {} if pos1.x and pos1.y and pos2.x and pos2.y and pos1.z == pos2.z then for a = pos1.x, pos2.x do for b = pos1.y,pos2.y do local pos = {x=a,y=b,z=pos1.z} if isMonster(getTopCreature(pos).uid) then table.insert(players,getTopCreature(pos).uid) end end end return players else return false end end   function doCleanArena() local monsters = getMonstersInArea(USurvival.posi, USurvival.posf) for _, cid in pairs(monsters) do doRemoveCreature(cid) end end   function doStartWave(waveID, cid) if not isCreature(cid) then return false end if USurvival.waves[waveID] then wave = USurvival.waves[waveID] doSpawnMonsters(wave.monsters, USurvival.posc, 5, wave.count) doPlayerSendTextMessage(cid, 21, 'Wave '..waveID..' inicie abatalha! FIGHT!') end end ]]></config>   <action actionid="4599" event="script" override="yes"><![CDATA[ domodlib('ultimatelib') function onUse(cid, item) if getPlayerStorageValue(cid, USurvival.storage_ex) <= os.time() then if #getPlayersInArea(USurvival.posi, USurvival.posf) == 0 then doCleanArena() doTeleportThing(cid, USurvival.posc) doPlayerSendTextMessage(cid, 21, 'O jogo de sobrevicencia vai iniciar em 10 segundos') addEvent(doStartWave, 10000, 1, cid) setPlayerStorageValue(cid, USurvival.storage_wave, 1) setPlayerStorageValue(cid, USurvival.storage_ex, os.time() + USurvival.exhaust) if item.itemid % 2 == 1 then doTransformItem(item.uid, item.itemid+1) else doTransformItem(item.uid, item.itemid-1) end else doPlayerSendCancel(cid, 'Someone is already in the arena.') doSendMagicEffect(getThingPos(cid), 2) end else local left = getPlayerStorageValue(cid, USurvival.storage_ex) - os.time() left = {hour = math.floor(left/3600), minutes = math.ceil((left % 3600)/60)} doPlayerSendCancel(cid, 'You have to wait '.. left.hour ..'h and '..left.minutes..'min.') doSendMagicEffect(getThingPos(cid), 2) end return true end ]]></action>   <event type="login" name="US Login" event="script"><![CDATA[ domodlib('ultimatelib') function onLogin(cid) registerCreatureEvent(cid,'UltimateSurvival1') registerCreatureEvent(cid,'UltimateSurvival2') if isInArea(getThingPos(cid), USurvival.posi, USurvival.posf) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doSendMagicEffect(getThingPos(cid), 10) end return true end ]]></event>   <event type="kill" name="UltimateSurvival1" event="script"><![CDATA[ domodlib('ultimatelib') function onKill(cid, target) if isInArea(getThingPos(cid), USurvival.posi, USurvival.posf) then if #getMonstersInArea(USurvival.posi, USurvival.posf) == 1 then local wave = getPlayerStorageValue(cid, USurvival.storage_wave) if USurvival.waves[wave+1] then setPlayerStorageValue(cid, USurvival.storage_wave, wave + 1) addEvent(doStartWave, 5000, wave + 1, cid) doPlayerSendTextMessage(cid, 22, 'Voce passou de wave! proxima em 5 segundos') else doPlayerSendTextMessage(cid, 22, 'CONGRATULATIONS! YOU HAVE BEATEN THE ULTIMATE SURVIVAL!') local reward = USurvival.final_reward if reward.item then doPlayerAddItem(cid, reward.item, (reward.amount or 1), false) end if reward.exp then doPlayerAddExp(cid, reward.exp) end if reward.money then doPlayerAddMoney(cid, reward.money) end local medal = doPlayerAddItem(cid, 5785, 1, false) if medal then doItemSetAttribute(medal, 'description', 'This was given to '..getCreatureName(cid)..' by completing the Ultimate Survival.') doItemSetAttribute(medal,'name', 'Ultimate Survival Medal') end doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end end end return true end   ]]></event>   <event type="preparedeath" name="UltimateSurvival2" event="script"><![CDATA[ domodlib('ultimatelib') function onPrepareDeath(cid, killers) if isInArea(getThingPos(cid), USurvival.posi, USurvival.posf) then doCreatureAddHealth(cid, getCreatureMaxHealth(cid), 65535, 256, true) doRemoveConditions(cid, false) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doPlayerSendTextMessage(cid, 21, 'Too bad, you couldn\'t defeat the Ultimate Survival... Better luck next time.') doCleanArena() local reward = USurvival.waves[getPlayerStorageValue(cid, USurvival.storage_wave)].reward if reward.item then doPlayerAddItem(cid, reward.item, reward.amount or 1) end if reward.exp then doPlayerAddExp(cid, reward.exp) end if reward.money then doPlayerAddMoney(cid, reward.money) end return false end return true end ]]></event>   </mod>
  19. @Darci Santos Verificou todas as etapas se estão instaladas corretamente no servidor? Registrou no monster o script? @elielder Abre o notepad++ com este código que está dando errado, lá em cima tem uma aba chamada 'Formatação', você clicka lá e seleciona a opção 'Codificação em ANSI', após isso salve o arquivo e faça o teste.
  20. lordzetros postou uma resposta no tópico em Mapping Show Off
    Gostei bastante, eu gostaria muito de ver coisas assim com outros tipos de ambientes. Parabéns.
  21. lordzetros postou uma resposta no tópico em Suporte & Pedidos
    Como já falaram, acho que servidores pequenos não precisam se preocupar com isso por agora, mas veja bem, se um servidor pequeno crescer e venha a 'chamar' atenção, isso daí, pode gerar um 'problemão' como esse.
  22. Em data/creaturescripts/scripts/login.lua 1 - TFS 1.x if (player:getStorageValue(VALOR_STORAGE) == -1) then player:setStorageValue(VALOR_STORAGE, X_VALOR) end 2 - TFS 0.4 if (getPlayerStorageValue(cid, VALOR_STORAGE) == -1) then setPlayerStorageValue(cid, VALOR_STORAGE, X_VALOR) end Acredito que desta forma seja mais simples.
  23. Em data/actions/scripts/ adicione um arquivo chamado packetPremiada.lua e cole este código dentro dele: local config = { {item = 2160, qntd_max = 100}, -- Segue a ordem: ID do item, quantidade maxima deste item que o player pode ganhar {item = 8303, qntd_max = 8}, {item = 8306, qntd_max = 6}, {item = 8326, qntd_max = 11}, {item = 9059, qntd_max = 1}, {item = 9969, qntd_max = 3}, -- para adicionar um novo, copie esta linha e adicione abaixo desta. } local qntd_max_itens = #config local msg_sucesso = "Opa, que caixa interessante!" -- Mensagem apos o player usar function onUse(cid, item, fromPos, itemEx, toPos) local random_qntd = math.random(1, qntd_max_itens) for i = 1, random_qntd do doPlayerAddItem(cid, config[i].item, math.random(1, config[i].qntd_max)) end doRemoveItem(item.uid,1) doCreatureSay(cid, msg_sucesso, TALKTYPE_ORANGE_1) doSendMagicEffect(getCreaturePosition(cid), 49) return true end E em data/actions/actions.xml adicione este código abaixo de uma linha semelhante: <action itemid="id_da_Packet" event="script" value="packetPremiada.lua"/> Não esqueça de mudar acima o ID da Packet (id_da_Packet) que você quer que dê os itens.

Informação Importante

Confirmação de Termo