Histórico de Curtidas
-
ricardiitoohz deu reputação a thelifeofpbion em [creaturescript] Always Green Emblem shieldBom a um tempo atras como de costume eu pedi para alguém me ajudar a montar um script onde os players que tiverem guild terem o emblema de guild (de quando começa a war) não to com tempo pra procurar a foto agora, mas é aquele verdinho que fica do lado do char, como ninguém sabia, ou não pode ajudar eu procurei sobre para tentar montar isso e consegui (pelo menos ate agora), vou postar para os ouros membros do meu tópico de ajuda testarem e talvez achar algum bug.
obs: só para quem já tem os códigos na distro
Finalidade do Script: É bem simples, apenas deixar o escudo verde ativado quando um player tiver uma guild, para identificar seus aliados, mesmo com a war entre guilds desativadas.
Para adicionar o script também é bem simples, Basta ir em Data>creaturescript>scripts>login.lua
e antes do ultimo
return true
end
voce adiciona isso.
Pronto, cada vez que o player logar, vai definir um inimigo (0). ou seja não vai ter inimigo mas sua guild vai ter o emblema verde...
Eu consegui essa solução agora de manhã então eu não sei se pode ter bugs, porém pelo que eu pude testar, consegui de boa e também consegui entrar em war com outras guild, sair de war e etc.
obs: Eu tava com um problema na minha talkactions de war, quando uma guild que recebia convite para entrar, aceitava mas depois não conseguia sair. só a guild que convidou podia cancelar a guerra entre guild... não sei se isso é normal mas consegui modificar, caso alguém tenha o mesmo problema eu posso passar a talkaction.
-
ricardiitoohz recebeu reputação de KotZletY em [Link Quebrado]Hydra Cave 8.6Fala galera, aqui venho trazer uma nova cave, feito por mim:
Algums imagens:
Baixar:
Hydra Cave 8.6
Scan:
https://www.virustotal.com/es/file/80e4f97795ccb315cd0f6acacde4cb7886f5549e80db8d307f6648b6ba66f66d/analysis/
Creditos: 100% Meus
-
ricardiitoohz recebeu reputação de KotZletY em [Link Quebrado]Demon cave 8.6Fala galera eu venho trazer pra vc meu map do demon 8.6, espero gostei
aqui algums imagens:
Baixar:
Demon Cave 8.6
Scan:
https://www.virustotal.com/es/file/3279af44aa1fe72f94ccaec29a9ec97df33668df39e694ad1a7b55ad40d1e283/analysis/
-
ricardiitoohz deu reputação a DdJs em Pharaoh's Tomb | Cave Hunt | 8.60Cave hunt - Pharaohs Tomb.
Download: Here
Scan: Here
Imagens:
-
ricardiitoohz deu reputação a Apache em EVENTO ILHAS TEMATICAS + PHP + MAPAOlá pessoal como falei irei postar alguns eventos sem bugs para vocês e GRÁTIS!
Estarei também postando uma source OTX paga para vocês.
Chega de enrolar vamos ao evento (Particularmente gosto muito desse)
**SÓ CONFIGUREM NO MAPA DO EVENTO O LOCAL DE SAÍDA DAS ILHAS**
**EVENTO NÃO É DE MINHA AUTORIA MAS COMO É MEU ESTOU POSTANDO**
Vídeo mostrando como funciona o evento
obs: link para o vídeo estava localizado dentro do script
5 bosses localizados nas ilhas temáticas
Os jogadores deverão se unir para conseguir vencer todos os bosses das ilhas e atingir a última com o mais temido. Apenas os bravos guerreiros conseguem chegar ao final, como prêmio eles recebem a experiência dos bosses e loot.
Vá em data/creaturescripts/scripts e crie um aquivo chamado IOE.lua e cole isso dentro
agora na mesma pasta creaturescripts/scripts procure pela pasta login.lua e lá adicione o registro do evento
após isso vá em data/creaturescripts abra o arquivo creaturescripts.xml e adicione a tag
agora em data/globalevents/scripts crie um arquivo chamado IOE.lua e cole isso dentro
em globalevents.xml adicione a tag
agora na pasta LIB crie um arquivo chamado IOE.lua e cole isso dentro
agora na pasta data/monsters crie uma pasta chamada IOE e dentro crie 5 arquivos .xml com os seguintes nomes (irei postar o nome do monstro e em seguida o script dele.
island death.xml
island earth.xml
island energy.xml
island fire.xml
island ice.xml
feito isso agora na pasta data/monsters procure por monster.xml vamos registras nossos novos monsters
agora em data/movements/scripts crie um arquivo chamado IOE.lua e cole isso dentro
agora em movements.xml adicione a tag
pronto pessoal o evento já está registrado em seu servidor, agora vocês configurem a seu desejo na pasta data/LIB
agora irei postar a query o php e o mapa
SQL QUERY PARA REGISTRAR O EVENTO EM SUA DATABASE
PAGINA PHP EM SEU SITE (LINDA)
AGORA O MAPA (NÃO POSTAREI SCAN, QUEM QUISER BAIXAR É SÓ BAIXAR QUEM NÃO QUISER É SÓ CRIAR UM MAPA PARA SEU EVENTO!)
É ISSO AE ESPERO QUE GOSTEM DEIXEM SEU REP+
QUEM PRECISAR DE AJUDA PARA INSTALAR É SÓ PEDIR!
-
ricardiitoohz recebeu reputação de peterson18 em Cyclops CaveBen vindo galera, hoje venho trazer-lhe uma excelente caverna do cyclops.
aqui o link e algumas imagens:
Scan: https://www.virustotal.com/#/file/ea3a17af8480bbd8967f2d227d74308af8c660a6c93d3a589a961b479ef7293b/detection
Download: http://www.mediafire.com/file/65ekvtwa5uqkgjl/Cave+Cyclops.rar
-
ricardiitoohz recebeu reputação de JonatasLucasf em Cyclops CaveBen vindo galera, hoje venho trazer-lhe uma excelente caverna do cyclops.
aqui o link e algumas imagens:
Scan: https://www.virustotal.com/#/file/ea3a17af8480bbd8967f2d227d74308af8c660a6c93d3a589a961b479ef7293b/detection
Download: http://www.mediafire.com/file/65ekvtwa5uqkgjl/Cave+Cyclops.rar
-
ricardiitoohz recebeu reputação de lucas martins em BaiakNeweu tenho tudo isso kkkkk, só manda pm eu passo.
-
ricardiitoohz recebeu reputação de KotZletY em Cyclops CaveBen vindo galera, hoje venho trazer-lhe uma excelente caverna do cyclops.
aqui o link e algumas imagens:
Scan: https://www.virustotal.com/#/file/ea3a17af8480bbd8967f2d227d74308af8c660a6c93d3a589a961b479ef7293b/detection
Download: http://www.mediafire.com/file/65ekvtwa5uqkgjl/Cave+Cyclops.rar
-
ricardiitoohz deu reputação a roach95 em Map editor 10.98 rmeConsegui resolver, segue RME LINK 10.98
https://virustotal.com/pt/file/2e2b7df581ace70457f06fbda99ae2f03a644b3b190560102883a46e3d9ef7ee/analysis/1477369928/
https://virustotal.com/pt/file/ae8e914255d02cece7c5948f4dce530bc060303ee0cec7128060a5de5fdff555/analysis/1477369942/
dois scans, arquivos .rar e .exe, só baixar e aproveitar :D
RME-Win-3.2.rar
-
ricardiitoohz recebeu reputação de jNo em (Resolvido)Erro npc Diceeu vou passa, meu dicer, já repare isso error. só troca as coordenadas
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
local coins = {[2160] = 10000}
function countMoneyOnPos(pos)
local money = 0
for stack = 1, 50 do
pos.stackpos = stack
local item = getThingFromPos(pos)
if item and item.uid > 0 then
if coins[item.itemid] then
money = money + coins[item.itemid] * item.type
end
end
end
return money
end
local posCoal = {x = 994, y = 991, z = 7} -- POSIÇÃO DO COAL, ONDE O GOLD DEVE ESTAR
local posNpc = {x = 994, y = 991, z = 7} -- POSIÇÃO DO NPC
local pos = getPosByDir(getThingPos(cid), getCreatureLookDirection(cid), 1) -- NÃO ALTERAR
if msgcontains(msg, 'l') or msgcontains(msg, 'L') or msgcontains(msg, 'low') or msgcontains(msg, 'Low') then
if countMoneyOnPos(pos) > 0 then
if math.random(1, 6) <= 2 then
doPlayerAddMoney(cid, countMoneyOnPos(pos)*2)
doRemoveItem(getTileItemById(pos, 2160).uid)
doSendMagicEffect(posNpc, 26)
doSendMagicEffect(posNpc, 28)
doCreatureSay(getNpcId(), getCreatureName(cid)..' Salió '..math.random(1, 3)..', Felicidades!', TALKTYPE_ORANGE_1)
else
doRemoveItem(getTileItemById(pos, 2160).uid)
doSendMagicEffect(posNpc, 2)
doSendMagicEffect(posNpc, 26)
doCreatureSay(getNpcId(), getCreatureName(cid)..' salió el numero '..math.random(4, 6)..', intente nuevamente!', TALKTYPE_ORANGE_1)
end
else
doCreatureSay(getNpcId(), getCreatureName(cid)..', debes colocar la cantidad de dinero encima del coal, para poder apostar!', TALKTYPE_ORANGE_1)
end
elseif msgcontains(msg, 'h') or msgcontains(msg, 'H') or msgcontains(msg, 'high') or msgcontains(msg, 'High') then
if countMoneyOnPos(pos) > 0 then
if math.random(1, 6) <= 2 then
doPlayerAddMoney(cid, countMoneyOnPos(pos)*2)
doRemoveItem(getTileItemById(pos, 2160).uid)
doSendMagicEffect(posNpc, 26)
doSendMagicEffect(posNpc, 28)
doCreatureSay(getNpcId(), getCreatureName(cid)..' salió el numero '..math.random(4, 6)..', felicidades!', TALKTYPE_ORANGE_1)
else
doRemoveItem(getTileItemById(pos, 2160).uid)
doSendMagicEffect(posNpc, 2)
doSendMagicEffect(posNpc, 26)
doCreatureSay(getNpcId(), getCreatureName(cid)..' salió el numero '..math.random(1, 3)..', intenta nuevamente!', TALKTYPE_ORANGE_1)
end
else
doCreatureSay(getNpcId(), getCreatureName(cid)..', debes colocar la cantidad de dinero encima del coal, para poder apostar!', TALKTYPE_ORANGE_1)
end
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
-
ricardiitoohz recebeu reputação de JcA em (Resolvido)Erro npc Diceeu vou passa, meu dicer, já repare isso error. só troca as coordenadas
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
local coins = {[2160] = 10000}
function countMoneyOnPos(pos)
local money = 0
for stack = 1, 50 do
pos.stackpos = stack
local item = getThingFromPos(pos)
if item and item.uid > 0 then
if coins[item.itemid] then
money = money + coins[item.itemid] * item.type
end
end
end
return money
end
local posCoal = {x = 994, y = 991, z = 7} -- POSIÇÃO DO COAL, ONDE O GOLD DEVE ESTAR
local posNpc = {x = 994, y = 991, z = 7} -- POSIÇÃO DO NPC
local pos = getPosByDir(getThingPos(cid), getCreatureLookDirection(cid), 1) -- NÃO ALTERAR
if msgcontains(msg, 'l') or msgcontains(msg, 'L') or msgcontains(msg, 'low') or msgcontains(msg, 'Low') then
if countMoneyOnPos(pos) > 0 then
if math.random(1, 6) <= 2 then
doPlayerAddMoney(cid, countMoneyOnPos(pos)*2)
doRemoveItem(getTileItemById(pos, 2160).uid)
doSendMagicEffect(posNpc, 26)
doSendMagicEffect(posNpc, 28)
doCreatureSay(getNpcId(), getCreatureName(cid)..' Salió '..math.random(1, 3)..', Felicidades!', TALKTYPE_ORANGE_1)
else
doRemoveItem(getTileItemById(pos, 2160).uid)
doSendMagicEffect(posNpc, 2)
doSendMagicEffect(posNpc, 26)
doCreatureSay(getNpcId(), getCreatureName(cid)..' salió el numero '..math.random(4, 6)..', intente nuevamente!', TALKTYPE_ORANGE_1)
end
else
doCreatureSay(getNpcId(), getCreatureName(cid)..', debes colocar la cantidad de dinero encima del coal, para poder apostar!', TALKTYPE_ORANGE_1)
end
elseif msgcontains(msg, 'h') or msgcontains(msg, 'H') or msgcontains(msg, 'high') or msgcontains(msg, 'High') then
if countMoneyOnPos(pos) > 0 then
if math.random(1, 6) <= 2 then
doPlayerAddMoney(cid, countMoneyOnPos(pos)*2)
doRemoveItem(getTileItemById(pos, 2160).uid)
doSendMagicEffect(posNpc, 26)
doSendMagicEffect(posNpc, 28)
doCreatureSay(getNpcId(), getCreatureName(cid)..' salió el numero '..math.random(4, 6)..', felicidades!', TALKTYPE_ORANGE_1)
else
doRemoveItem(getTileItemById(pos, 2160).uid)
doSendMagicEffect(posNpc, 2)
doSendMagicEffect(posNpc, 26)
doCreatureSay(getNpcId(), getCreatureName(cid)..' salió el numero '..math.random(1, 3)..', intenta nuevamente!', TALKTYPE_ORANGE_1)
end
else
doCreatureSay(getNpcId(), getCreatureName(cid)..', debes colocar la cantidad de dinero encima del coal, para poder apostar!', TALKTYPE_ORANGE_1)
end
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
-
ricardiitoohz deu reputação a Vodkart em [MODS] - [8.6] Perfect Zombie System [Automático] [V1.0]Qual dúvida ou erro poste no tópico que estarei respondendo.
Obs: Antes que me falem besteiras, coloquei para os GM'S, CM'S E GOD'S não contarem no evento, então testem apenas com jogadores.
Zombie.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Perfect Zombie System" version="8.6" author="Vodkart" contact="tibiaking.com" enabled="yes"> <config name="zombie_config"><![CDATA[ zombie_config = { storages = {172100, 172101, 172102}, -- n edite players = {min = 2, max = 30}, -- min, max players no evento rewards = {items ={{2160,10},{2494,1}}, trophy = 5805}, timeToStartEvent = 30, -- segundos para começar o evento CheckTime = 5, -- tempo que o TP fica aberto para os jogadores adrentarem o evento teleport = {{x=147, y=55, z=7}, {x=125 , y=304, z=7}}, -- position do tp onde aparece, position para onde o jogador vai ao entrar no tp arena = {{x=110,y=297,z=7},{x=145,y=321,z=7}}, -- area positions monster_name = "Zombie Event", timeBetweenSpawns = 20, min_Level = 20 } zombie_days = { ["Monday"] = {"13:00","18:00","20:00","22:00"}, ["Tuesday"] = {"13:00","18:00","22:50","22:00"}, ["Wednesday"] = {"21:57","18:00","20:00","23:17"}, ["Thursday"] = {"13:00","18:00","20:00","22:00"}, ["Friday"] = {"13:00","18:00","21:45","22:00"}, ["Saturday"] = {"13:00","18:00","20:00","22:00"}, ["Sunday"] = {"13:00","18:00","20:00","22:00"} } function removeZombieTp() local t = getTileItemById(zombie_config.teleport[1], 1387).uid return t > 0 and doRemoveItem(t) and doSendMagicEffect(zombie_config.teleport[1], CONST_ME_POFF) end function ZerarStoragesZombie() for _, stor in pairs(zombie_config.storages) do setGlobalStorageValue(stor, 0) end end function getPlayersInZombieEvent() local t = {} for _, pid in pairs(getPlayersOnline()) do if isInRange(getPlayerPosition(pid), zombie_config.arena[1], zombie_config.arena[2]) and getPlayerAccess(pid) < 3 then t[#t+1] = pid end end return t end function getZombieRewards(cid, items) local backpack = doPlayerAddItem(cid, 1999, 1) -- backpackID for _, i_i in ipairs(items) do local item, amount = i_i[1],i_i[2] if isItemStackable(item) or amount == 1 then doAddContainerItem(backpack, item, amount) else for i = 1, amount do doAddContainerItem(backpack, item, 1) end end end end function isWalkable(pos, creature, proj, pz)-- by Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and pz then return false, true end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function HaveCreatureZombie(area, remove) for x = area[1].x - 1, area[2].x + 1 do for y = area[1].y - 1, area[2].y + 1 do local pos = {x=x, y=y, z=area[1].z} local m = getTopCreature(pos).uid if remove ~= false and m ~= 0 and isMonster(m) then doRemoveCreature(m) end end end end function spawnZombie() if #getPlayersInZombieEvent() > 1 then local pos = {x=math.random(zombie_config.arena[1].x, zombie_config.arena[2].x), y=math.random(zombie_config.arena[1].y,zombie_config.arena[2].y), z=zombie_config.arena[1].z} if not isWalkable(pos, false, false, false) then spawnZombie() else doSummonCreature(zombie_config.monster_name, pos) doSendDistanceShoot({x = pos.x - math.random(4, 6), y = pos.y - 5, z = pos.z}, pos, CONST_ANI_FIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_HITBYFIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_FIREAREA) doSendMagicEffect(pos, CONST_ME_MORTAREA) setGlobalStorageValue(zombie_config.storages[2], getGlobalStorageValue(zombie_config.storages[2]) <= 0 and 1 or getGlobalStorageValue(zombie_config.storages[2])+1) doBroadcastMessage("A zombie has spawned! There is currently " .. getGlobalStorageValue(zombie_config.storages[2]) .. " zombies in the zombie event!", MESSAGE_STATUS_CONSOLE_RED) addEvent(spawnZombie, zombie_config.timeBetweenSpawns *1000) end end end function CheckZombieEvent(delay) if getGlobalStorageValue(zombie_config.storages[1]) ~= (zombie_config.players.max+1) then if delay > 0 and getGlobalStorageValue(zombie_config.storages[1]) < zombie_config.players.max then doBroadcastMessage("Zombie event starting in " .. delay .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING) elseif delay == 0 and getGlobalStorageValue(zombie_config.storages[1]) < zombie_config.players.min then for _, cid in pairs(getPlayersInZombieEvent()) do doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) end removeZombieTp() doBroadcastMessage("The Zombie event could not start because of to few players participating.\n At least " .. zombie_config.players.min .. " players is needed!", MESSAGE_STATUS_WARNING) ZerarStoragesZombie() elseif delay == 0 and getGlobalStorageValue(zombie_config.storages[1]) >= zombie_config.players.min then removeZombieTp() doBroadcastMessage("The Zombie event is now full [" .. getGlobalStorageValue(zombie_config.storages[1]) .. " players]! The event will soon start.") for _, var in pairs(getPlayersInZombieEvent()) do doPlayerSendTextMessage(var, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. zombie_config.timeToStartEvent .. " seconds! Good luck!") end addEvent(spawnZombie, zombie_config.timeToStartEvent*1000) end addEvent(CheckZombieEvent, 60000, delay-1) end end]]></config> <event type="statschange" name="ZombieStats" event="script"><![CDATA[ domodlib('zombie_config') if isPlayer(cid) and isMonster(attacker) and getCreatureName(attacker) == zombie_config.monster_name then if isInRange(getPlayerPosition(cid), zombie_config.arena[1], zombie_config.arena[2]) then if #getPlayersInZombieEvent() > 1 then doBroadcastMessage(getPlayerName(cid) .. " have been eated by Zombies!", MESSAGE_STATUS_CONSOLE_RED) local corpse = doCreateItem(getPlayerSex(cid) == 1 and 3058 or 6081, 1, getPlayerPosition(cid)) doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) if #getPlayersInZombieEvent() == 1 then local winner = getPlayersInZombieEvent()[1] doBroadcastMessage(getCreatureName(winner)..' has survived at zombie event!') local goblet = doPlayerAddItem(winner, zombie_config.rewards.trophy, 1) doItemSetAttribute(goblet, "description", "Awarded to " .. getPlayerName(winner) .. " for winning the Zombie event.") getZombieRewards(winner, zombie_config.rewards.items) doTeleportThing(winner, getTownTemplePosition(getPlayerTown(winner)), false) doSendMagicEffect(getPlayerPosition(winner), CONST_ME_TELEPORT) doBroadcastMessage(getPlayerName(winner).." won the Zombie event! Congratulations!") HaveCreatureZombie(zombie_config.arena, true) ZerarStoragesZombie() end else doBroadcastMessage("No one survived in the Zombie Event.", MESSAGE_EVENT_ADVANCE) HaveCreatureZombie(zombie_config.arena, true) ZerarStoragesZombie() end return false end end return true]]></event> <globalevent name="Zombie_Start" interval="60000" event="script"><![CDATA[ domodlib('zombie_config') function onThink(interval, lastExecution) if zombie_days[os.date("%A")] then local hrs = tostring(os.date("%X")):sub(1, 5) if isInArray(zombie_days[os.date("%A")], hrs) and getGlobalStorageValue(zombie_config.storages[3]) <= 0 then local tp = doCreateItem(1387, 1, zombie_config.teleport[1]) doItemSetAttribute(tp, "aid", 45110) CheckZombieEvent(zombie_config.CheckTime) setGlobalStorageValue(zombie_config.storages[1], 0) setGlobalStorageValue(zombie_config.storages[2], 0) HaveCreatureZombie(zombie_config.arena, true) end end return true end]]></globalevent> <event type="login" name="Zombie_Login" event="script"><![CDATA[ domodlib('zombie_config') function onLogin(cid) registerCreatureEvent(cid, "ZombieBattle") registerCreatureEvent(cid, "ZombieStats") if isInRange(getPlayerPosition(cid), zombie_config.arena[1], zombie_config.arena[2]) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end return true end]]></event> <event type="combat" name="ZombieBattle" event="script"><![CDATA[ domodlib('zombie_config') if isPlayer(cid) and isPlayer(target) and isInRange(getPlayerPosition(cid), zombie_config.arena[1], zombie_config.arena[2]) then doPlayerSendCancel(cid, "You may not attack this player.") return false end return true ]]></event> <movevent type="StepIn" actionid ="45110" event="script"><![CDATA[ domodlib('zombie_config') function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if getPlayerAccess(cid) > 3 then return doTeleportThing(cid, zombie_config.teleport[2]) end if getPlayerLevel(cid) < zombie_config.min_Level then doTeleportThing(cid, fromPosition, true) doPlayerSendCancel(cid, "You need to be at least level " .. zombie_config.min_Level .. ".") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end if getGlobalStorageValue(zombie_config.storages[1]) <= zombie_config.players.max then doTeleportThing(cid, zombie_config.teleport[2]) setGlobalStorageValue(zombie_config.storages[1], getGlobalStorageValue(zombie_config.storages[1])+1) doBroadcastMessage(getPlayerName(cid) .. " entered the Zombie event! Currently " .. getGlobalStorageValue(zombie_config.storages[1]) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED) if getGlobalStorageValue(zombie_config.storages[1]) == zombie_config.players.max then setGlobalStorageValue(zombie_config.storages[1], getGlobalStorageValue(zombie_config.storages[1])+1) removeZombieTp() doBroadcastMessage("The Zombie event is now full [" .. getGlobalStorageValue(zombie_config.storages[1])-1 .. " players]! The event will soon start.") for _, var in pairs(getPlayersInZombieEvent()) do doPlayerSendTextMessage(var, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. zombie_config.timeToStartEvent .. " seconds! Good luck!") end addEvent(spawnZombie, zombie_config.timeToStartEvent*1000) end end return true end]]></movevent> <talkaction words="/zombiestart;!zombiestart" access="5" event="buffer"><![CDATA[ domodlib('zombie_config') if getGlobalStorageValue(zombie_config.storages[3]) > 0 then doPlayerSendCancel(cid, "The event is already starting.") return true elseif not param or not tonumber(param) then doPlayerSendCancel(cid, "Use only numbers.") return true end local param = tonumber(param) <= 0 and 1 or tonumber(param) local tp = doCreateItem(1387, 1, zombie_config.teleport[1]) doItemSetAttribute(tp, "aid", 45110) CheckZombieEvent(tonumber(param)) ZerarStoragesZombie() setGlobalStorageValue(zombie_config.storages[3], 1) HaveCreatureZombie(zombie_config.arena, true) ]]></talkaction> <globalevent name="ZombieDebug-Start" type="start" event="buffer"><![CDATA[ domodlib('zombie_config') ZerarStoragesZombie() return true]]></globalevent> </mod>
OBS: Quem serve em milesegundos, mude essa parte:
<globalevent name="Zombie_Start" interval="60" event="script"><![CDATA[
para
<globalevent name="Zombie_Start" interval="60000" event="script"><![CDATA[
----------------------------------------------------- // --------------------------------------------------
o monstro você instala em data/monsters
zombie event.xml
<?xml version="1.0" encoding="UTF-8"?> <monster name="Zombie Event" nameDescription="an zombie event" race="undead" experience="280" speed="100" manacost="0"> <health now="500" max="500"/> <look type="311" corpse="9875"/> <targetchange interval="5000" chance="50"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="0"/> <flag attackable="0"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="0"/> <flag canpushitems="1"/> <flag canpushcreatures="1"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="0"/> </flags> <attacks> <attack name="melee" interval="2000" min="-35000" max="-35000"/> </attacks> <defenses armor="15" defense="10"/> <immunities> <immunity paralyze="1"/> <immunity invisible="1"/> </immunities> <voices interval="5000" chance="10"> <voice sentence="You wont last long!"/> <voice sentence="Mmmmh.. braains!"/> </voices> <loot> <item id="2148" countmax="1" chance="100000"/><!-- gold coin --> </loot> </monster>
e a tag em monsters.xml
<monster name="Zombie Event" file="zombie event.xml"/>
Configuração
Sistema
zombie_config = {
storages = {172100, 172101}, -- não edite
players = {min = 2, max = 30}, -- número minimo e máximo para jogadores no evento
rewards = {items ={{2160,10},{2494,1}}, trophy = 5805}, -- premiações do jogador
timeToStartEvent = 30, -- segundos para começar o evento após dar start
CheckTime = 5, -- tempo que o TP fica aberto para os jogadores adrentarem o evento
teleport = {{x=145, y=50, z=7}, {x=176 , y=54, z=5}}, -- posiçãodo tp onde aparece, posição para onde o jogador vai ao entrar no tp
arena = {{x=173,y=52,z=5},{x=179,y=56,z=6}}, -- posição começo e final da area do evento
monster_name = "Zombie Event", -- nome do monstro que será sumonado
timeBetweenSpawns = 20, -- a cada quantos segundos é dado o respaw time do zombie no evento
min_Level = 20 -- level minimo para participar do evento
}
Dia e Horário
zombie_days = {
["Monday"] = {"13:00","18:00","20:00","22:00"},
["Tuesday"] = {"13:00","18:00","20:00","22:00"},
["Wednesday"] = {"13:00","18:00","20:00","22:00"},
["Thursday"] = {"13:00","18:00","20:00","22:00"},
["Friday"] = {"13:00","18:00","20:00","22:00"},
["Saturday"] = {"13:00","18:00","20:00","22:00"},
["Sunday"] = {"13:00","18:00","20:00","22:00"}
}
["Dia em inglês"] = {"horário do evento"}
Configurando a área:
zombie lua.rar
-
ricardiitoohz deu reputação a Killua em Itens ganhando exp e upando (Upgrade System)Como funciona?
A cada monstro que vc mata, seus itens equipados ganham 1 de exp. Quando seus itens chegarem às quantidades de exp definidas, eles upam e ficam com o nome assim: Demon Helmet + 1. Helmets, armors, legs, e boots recebem 1 de arm a cada vez que upam. Armas recebem 1 de ataque e escudos 1 de defesa.
Para o monstro contar, ele deve dar um mínimo de exp (definido no script). O número de exp a que me refiro é aquele um presente no arquivo .xml.
Para instalar, crie Killua Items Upgrade.lua em data/creaturescripts/scripts e coloque:
Em data/creaturescripts/creaturescripts.xml coloque essas duas tags:
<event type="kill" name="Item level" event="script" value="Killua Items Upgrade.lua"/> <event type="login" name="Item levell" event="script" value="Killua Items Upgrade.lua"/> Configurando: Na tabela table_of_slots, coloque em quais slots os itens upam.
min_exp é a experiência mínima que o monstro deve ter para contar exp para o item. Se vc colocar 500, somente os monstros que tem exp igual ou superior a 500 no arquivo.xml vão valer.
exp_levels são os valores de exp que os itens devem atingir para upar. No meu caso, quando o item alcançar 50 de exp, ele upa para o level 1. Quando alcançar 50 de exp, upa para o level 2 e assim por diante.
-
ricardiitoohz deu reputação a Micheel15 em [EVENTO] Dota Completo@Yago Blind. amigo, eu tenho o DOTA EVENT,
vou estar disponibilizando pra você esta todo arrumado igual na imagem abaixo, basta apenas você colocar na pasta do seu servidor,
peço apenas para que me repute 1+ pelo evento se te ajudar !!!
segue a imagem abaixo:
-
ricardiitoohz deu reputação a .HuRRiKaNe em Waterfall RuimsScreen's:
Download:
http://www.mediafire...shkg03bp2ums3vb
Scan:
https://www.virustot...sis/1337652720/
Créditos:
Amsterdam
-
ricardiitoohz deu reputação a .HuRRiKaNe em Ice StormScreen's:
Download:
http://www.mediafire...wpxhfmemi7ua7mw
Scan:
https://www.virustot...sis/1339299983/
Créditos:
Amsterdam
-
ricardiitoohz deu reputação a Absolute em [Castle War 24H] Conquiste o trono!Fala galera linduxa do TK; hoje trago a vocês o tão desejado CASTLE WAR 24 HORAS, isto gera disputa intensa entre as guilds de seu servidor, atraindo assim mais jogadores que se interessam por guerras e seus demais sistemas! Modificado e com funções diferentes, no tópico ensinarei como instalar e como funciona.
Como funciona? WOOOOOOOOW!
Há um portal 24h aberto em algum lugar do seu mapa que ficará com o castle disponível 24h (avá).
Quando uma guild qualquer acessar o portal do castelo, irá aparecer para o servidor que a X guild está tentando dominar o castelo, então o líde da guild dominante atual irá dizer !gocastle para teleportar ao castelo e defende-lo.
O Objetivo para conquista do mesmo é invadi-lo derrotar os defensor da guild atual para abrir passagem, digamos assim, e subir ao trono, quando um membro da guild invadir o templo do trono e subir no mesmo a antiga guild dominadora é teleportada para o templo e o castelo fica sob domínio da nova guild.
Você poderá colocar como premiação acesso a áreas exclusivas do castelo, no caso hunts e cia. (Fica a vosso critério)
Evento testado nas versões 8.6; 9.6; 9.83; 9.86!
Observação:
Comando !gocastle faz com que o líder possa teleportar todos os membros da sua guild online para perto dele, desde que ele esteja no castle. Comando pode ser usado a cada 3 horas (exhausted).
Vamos aos scripts do sistema;
Em data/actions/scripts crie um arquivo com o nome de naviocastle.lua e coloque dentro:
function onUse(cid, item, fromPosition, itemEx, toPosition) if(item.actionid == 65500) then if getTopCreature({x=32464,y=32378,z=5}).uid > 0 then doTeleportThing(getTopCreature({x=32464,y=32378,z=5}).uid, {x=32526,y=32421,z=5}) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) else doPlayerSendCancel(cid, "Você precisa estar em cima do tapete.") return true end elseif (item.actionid == 65501) then if getTopCreature({x=32526,y=32421,z=5}).uid > 0 then doTeleportThing(getTopCreature({x=32526,y=32421,z=5}).uid, {x=32464,y=32378,z=5}) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) else doPlayerSendCancel(cid, "Você precisa estar em cima do tapete.") end end return true end
Em actions.xml adicione a seguinte linha:
<action actionid="65500-65501" event="script" value="naviocastle.lua"/> Pós feito isto, em data/lib crie um arquivo com o nome de 015-COH e adicione dentro dele:
-- This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation, either version 3 of the License, or -- (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program. If not, see <http://www.gnu.org/licenses/>. -- // COH_PUSHTIME = 10800 -- Tempo (em segundos) de exhausted para usar o comando !gocastle - Padrão (3 horas) COH_AREA = {{x = 32458, y = 32332, z = 7}, {x = 32558, y = 32429, z = 7}} -- Canto superior esquerdo / inferior direito do Castle -- // Não mexa daqui para baixo COH_STATUS = 201320111714 COH_PREPARE1 = 201320111715 COH_PUSHSTOR = 201320111716 COH_PREPARE2 = 201320111717 function doCastleRemoveEnemies() for index, creature in ipairs(getPlayersOnline()) do if isInArea(getThingPos(creature), COH_AREA[1], COH_AREA[2]) then if getPlayerGuildName(creature) ~= getGlobalStorageValue(COH_STATUS) then doTeleportThing(creature, getTownTemplePosition(getPlayerTown(creature))) end end end return true end Proximo passo, em data/monster.xml adicione a seguinte linha:
<monster name="Castle Guardian" file="Castle Guardian.xml"/> Em data/monsters crie um arquivo com o nome de Castle Guardian.xml e adicione o seguinte:
<?xml version="1.0" encoding="UTF-8"?> <monster name="Castle Guardian" nameDescription="a castle guardian" race="blood" experience="0" speed="0" manacost="0"> <health now="800000" max="800000"/> <look type="131" head="57" body="19" legs="57" feet="95" addons="1" corpse="6080"/> <targetchange interval="5000" chance="30"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="0"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="0"/> <flag canpushitems="1"/> <flag canpushcreatures="1"/> <flag targetdistance="4"/> <flag staticattack="90"/> <flag runonhealth="800"/> </flags> <attacks> <attack name="melee" interval="2000" min="-60" max="-180"/> <attack name="physical" interval="1000" chance="35" range="7" min="-205" max="-385"> <attribute key="shootEffect" value="energy"/> </attack> <attack name="manadrain" interval="1000" chance="17" range="7" min="-205" max="-560"/> <attack name="speed" interval="1000" chance="12" range="7" speedchange="-600" duration="40000"> <attribute key="areaEffect" value="redshimmer"/> </attack> <attack name="fire" interval="2000" chance="45" range="7" radius="3" target="1" min="-250" max="-420"> <attribute key="shootEffect" value="burstarrow"/> <attribute key="areaEffect" value="firearea"/> </attack> <attack name="firefield" interval="1000" chance="20" range="7" radius="2" target="1"> <attribute key="shootEffect" value="fire"/> </attack> <attack name="energy" interval="2000" chance="25" length="8" spread="0" min="-265" max="-445"> <attribute key="areaEffect" value="energy"/> </attack> <attack name="speed" interval="6000" chance="10" range="5" speedchange="-600" duration="20000"> <attribute key="areaEffect" value="redshimmer"/> </attack> </attacks> <defenses armor="1" defense="1"/> <elements> <element firePercent="100"/> <element energyPercent="100"/> <element icePercent="100"/> <element earthPercent="90"/> <element holyPercent="-25"/> <element physicalPercent="-33"/> </elements> <immunities> <immunity paralyze="1"/> <immunity invisible="1"/> </immunities> <summons maxSummons="2"> <summon name="deathspawn" interval="1500" chance="0" max="0"/> </summons> <loot> <item id="2148" countmax="20" chance1="100000" chancemax="0"/> </loot> </monster> Pós isto;
Em data/movements/scripts crie um arquivo com o nome de COH.lua e adicione o seguinte:
-- This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation, either version 3 of the License, or -- (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program. If not, see <http://www.gnu.org/licenses/>. -- // function onStepIn(cid, item, pos, fromPosition) local pos = getThingPos(cid) if item.actionid == 16203 then if not isPlayer(cid) then return true end if getGlobalStorageValue(COH_STATUS) == getPlayerGuildName(cid) then doSendMagicEffect(getThingPos(cid), 14) doSendAnimatedText(pos, "CoH", math.random(1, 255)) else doSendMagicEffect(getThingPos(cid), 2) doTeleportThing(cid, fromPosition, false) doPlayerSendCancel(cid, "[CoH] Você não pertence á guild "..getGlobalStorageValue(COH_STATUS)..".") end return true end if item.actionid == 16202 then if not isPlayer(cid) then return true end if getPlayerGuildId(cid) > 0 then if (getGlobalStorageValue(COH_STATUS) ~= getPlayerGuildName(cid)) then doPlayerSendTextMessage(cid, 20, "[Castle of Honor] Você e sua guild estão no comando, os antigos donos ["..tostring(getGlobalStorageValue(COH_STATUS)).."] podem se vingar!") setGlobalStorageValue(COH_PREPARE1, -1) setGlobalStorageValue(COH_PREPARE2, -1) setGlobalStorageValue(COH_STATUS, getPlayerGuildName(cid)) doCastleRemoveEnemies() doBroadcastMessage("[Castle of Honor] O jogador ["..getCreatureName(cid).."] e sua guild ["..getPlayerGuildName(cid).."] estão no comando do castelo, vá dominar e impedir isso!") end else doSendMagicEffect(pos, 2) doTeleportThing(cid, fromPosition, false) doPlayerSendCancel(cid, "[CoH] Você não possui uma guild.") end return true end if item.actionid == 16200 then if not isPlayer(cid) then return true end if getPlayerGuildId(cid) > 0 then doSendAnimatedText(pos, "CoH", math.random(1, 255)) if (getGlobalStorageValue(COH_PREPARE1) ~= getPlayerGuildName(cid)) and ((getGlobalStorageValue(COH_PREPARE2) ~= getPlayerGuildName(cid))) then setGlobalStorageValue(COH_PREPARE1, getPlayerGuildName(cid)) doBroadcastMessage("[Castle of Honor] Atenção! A guild "..getPlayerGuildName(cid).." está tentando dominar o castelo, preparem-se!") end else doSendMagicEffect(pos, 2) doTeleportThing(cid, fromPosition, false) doPlayerSendCancel(cid, "[CoH] Você não possui uma guild.") return true end end if item.actionid == 16201 then if not isPlayer(cid) then return true end doSendAnimatedText(pos, "CoH", math.random(1, 255)) if (getGlobalStorageValue(COH_PREPARE2) ~= getPlayerGuildName(cid)) then setGlobalStorageValue(COH_PREPARE2, getPlayerGuildName(cid)) doBroadcastMessage("[Castle of Honor] Atenção! A guild "..getPlayerGuildName(cid).." está muito próxima do domínio, ataquem!") end end return true end Em data/movements/movements.xml adicione a seguinte linha:
<movevent type="StepIn" actionid="16200-16203" event="script" value="COH.lua"/> Próximo passo:
Em data/talkactions/scripts crie um arquivo com o nome de COHABSOLUTE.lua e adicione o seguinte:
-- This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation, either version 3 of the License, or -- (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program. If not, see <http://www.gnu.org/licenses/>. -- // function onSay(cid, words, param) if getPlayerGuildLevel(cid) == GUILDLEVEL_LEADER then if getPlayerStorageValue(cid, COH_PUSHSTOR) < os.time() then if getGlobalStorageValue(COH_STATUS) == getPlayerGuildName(cid) then if isInArea(getThingPos(cid), COH_AREA[1], COH_AREA[2]) then if #getMembersOnline(getPlayerGuildId(cid)) > 0 then for index, creature in ipairs(getMembersOnline(getPlayerGuildId(cid))) do if (getTileInfo(getThingPos(creature)).protection ~= true) then return doPlayerSendCancel(cid, "[CoH] Os membros devem estar em área PZ.") end doTeleportThing(creature, getThingPos(cid)) end setPlayerStorageValue(cid, COH_PUSHSTOR, os.time() + COH_PUSHTIME) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "[Castle of Honor] Você teleportou seus membros, comando pode ser usado a cada "..tostring(COH_PUSHTIME / 60).." minuto(s).") else doPlayerSendCancel(cid, "[CoH] Para executar isso, sua guild deve ter 2 ou mais membros online.") end else doPlayerSendCancel(cid, "[CoH] Você deve estar no castelo.") end else doPlayerSendCancel(cid, "[CoH] Sua guild não é dona do castelo.") end else doPlayerSendCancel(cid, "[CoH] Você deve aguardar "..tostring(math.ceil((getPlayerStorageValue(cid, COH_PUSHSTOR) - os.time()) / 60)).." minuto(s) para usar este comando.") end else doPlayerSendCancel(cid, "[CoH] Você deve ser líder de uma guild para executar este comando.") end return true end function getMembersOnline(id) local mbr = {} for index, creature in ipairs(getPlayersOnline()) do if getPlayerGuildId(creature) == id then if getCreatureSkullType(creature) < 3 then table.insert(mbr, creature) end end end return mbr or #mbr end Em data/talkactions/talkactions.xml adicione a seguinte linha:
<talkaction words="!castlepush;!pushmembers;!gocastle" event="script" value="COHABSOLUTE.lua"/> Quem disponibiliza o mapa do castelo a vocês é nosso amigo ViitinG, segue o link do tópico para download do mesmo já adaptado para este Castle:
http://www.tibiaking.com/forum/topic/35730-mapa-evento-war-castle/
Explicação das actions e demais (caso não use o mapa disponibilizado pelo Viiting lembre de adicionar ao castelo);
ActionID 16200 - No meio do caminho para o castelo, ActionID 16201 - Perto do castelo, ActionID 16202 - No piso, trono que faz com que domine, e ActionID 16203 - Para a passagem de acesso ás hunts / city exclusivas da guild vencedora. Importante: Para colocar uma passagem para as hunts ou o que for a premiação da guild vencedora, coloque um caminho único com os actionIDS 16203, assim só a guild dominante do castelo poderá passar neste local. É importante lembrar que este script é de autoria do Roksas Nunez, ex scripter da empresa chaitosoft, fiz simples modificações de otimização.
Qualquer dúvida peço que entre em contato comigo e poste aqui no tópico.
Créditos:
Absolute
Roksas
ViitinG
Espero que gostem, afinal raro alguém disponibilizar algo tão desejado e útil assim!
Até o próximo sistema.
Absolute on tibiaking =p
-
ricardiitoohz deu reputação a ViitinG em [Castle War 24H] Conquiste o trono!Fico foda em,espero que a galera goste do mapa !