Ir para conteúdo

Alucar

Membro
  • Registro em

  • Última visita

  1. O Cliente da CIP não havia reconhecido a Opção de transparência, todas as Sprites ficaram bugadas.
  2. Testei em 8.54 e 8.60, infelizmente, não obtive êxito no funcionamento. Btw, de longe uma grande contribuição para o fórum.
  3. Alucar reagiu a uma resposta no tópico: Condition em Spell.
  4. Alucar postou uma resposta no tópico em Suporte Tibia OTServer
    Estou totalmente leigo em scrips, mas não faltou a parte da porcentagem em chance? Devo ter me explicado mal. Seria básicamente isso: a spell sempre hitaria normalmente, mas teria 50% de chance de a cada ataque adicionar a condition energy.
  5. É apenas o nome do seu banco de dados, não tem um padrão, deixe-o igual ao arquivo s3db do servidor.
  6. Alucar postou uma resposta no tópico em Suporte Tibia OTServer
    Tenho aqui esse script de exori vis, gostaria de ajuda para adicionar nele uma chance em porcentagem para o condition energy pegar no target. Script:
  7. Bom, estou usando um servidor 8.6. Postarei o mod aqui, tem como dar uma olhada se ocorreu alguma alteração errada? <?xml version="1.0" encoding="UTF-8"?> <mod name="Fire_Storm_Event" version="0.1" author="Absolute Version" contact="lu.lukinha" enabled="yes"> <config name="config_fire_storm_event"> <![CDATA[ configFireStormEvent = { storages = { main = 'fireStormEventMain', -- set free storage player = 'fireStormEventPlayer', -- set free storage joining = 'fireStormEventJoining', -- set free storage exhaust = 'fireStormEventExhaust', -- set free storage countEvent = 'fireStormEventCountEvent' -- set free storage }, position = {x=1017 ,y=1138,z=7}, -- posiotion to which player is teleporting room = { from = {x=986,y=1118,z=7}, -- left top corner of event room to = {x=1047,y=1161,z=7} -- right bottom corner of event room }, rewards = {8858, 2346, 2538, 2437}, -- reward id which player can win (reward is random) players = { max = 80, min = 2, minLevel = 100 }, days = { ['Tuesday'] = {'19:59:20'}, ['Thursday'] = {'19:59:20'}, ['Sunday'] = {'19:50:00'} }, fireStormDelay = 1000, -- milisecond delayTime = 5.0, -- time in which players who joined to event are teleporting to teleport position startEvent = 5 -- time from teleport to start event text = '-PL-\nAby wygrac i otrzymac nagrode, utrzymaj sie jak najdluzej na arenie.\n\n-ENG-\nTo win and get a Rewards, to stay as long as possible in the arena.' } y, x = 1, 1 -- don't change it ]]> </config> <lib name="lib_fire_storm_event"> <![CDATA[ function doStartFireStormEvent() doSetStorage(configFireStormEvent.storages.joining, -1) if configFireStormEvent.players.min <= doCountPlayersFireStormEvent() then for _, cid in ipairs(getPlayersOnline()) do if getCreatureStorage(cid, configFireStormEvent.storages.player) > 0 then doCreatureSetNoMove(cid, false) doRemoveCondition(cid, CONDITION_INFIGHT) doTeleportThing(cid, configFireStormEvent.position) doCreatureSetStorage(cid, configFireStormEvent.storages.player, -1) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, 'Get ready. Fire Storm Event start in '..configFireStormEvent.startEvent..' seconds.') end end addEvent(doSetStorage, configFireStormEvent.startEvent * 1000, configFireStormEvent.storages.main, 1) addEvent(doRepeatCheckFireStorm, configFireStormEvent.startEvent * 1000 + 2000) doBroadcastMessage('Fire Storm Event has started. LET\'S GO!') else for _, cid in ipairs(getPlayersOnline()) do if getCreatureStorage(cid, configFireStormEvent.storages.player) > 0 then doCreatureSetNoMove(cid, false) doRemoveCondition(cid, CONDITION_INFIGHT) end end doBroadcastMessage('Fire Storm hasn\'t started beacuse there were not enough players.') end end function doRepeatCheckFireStorm() if getStorage(configFireStormEvent.storages.main) > 0 then local xTable, yTable, playerTable = {}, {}, {} for x = configFireStormEvent.room.from.x, configFireStormEvent.room.to.x do for y = configFireStormEvent.room.from.y, configFireStormEvent.room.to.y do table.insert(xTable, x) table.insert(yTable, y) local n, i = getTileInfo({x=x, y=y, z=configFireStormEvent.room.to.z}).creatures, 1 if n ~= 0 then local v = getThingfromPos({x=x, y=y, z=configFireStormEvent.room.to.z, stackpos=i}).uid while v ~= 0 do if isPlayer(v) then table.insert(playerTable, v) if n == #playerTable then break end end i = i + 1 v = getThingfromPos({x=x, y=y, z=configFireStormEvent.room.to.z, stackpos=i}).uid end end end end if #playerTable == 1 then local prize = math.random(#configFireStormEvent.rewards) doCreatureAddHealth(playerTable[1], getCreatureMaxHealth(playerTable[1]) - getCreatureHealth(playerTable[1])) doCreatureAddMana(playerTable[1], getCreatureMaxMana(playerTable[1]) - getCreatureMana(playerTable[1])) doTeleportThing(playerTable[1], getTownTemplePosition(getPlayerTown(playerTable[1])), true) doPlayerAddItem(playerTable[1], configFireStormEvent.rewards[prize], 1) doPlayerSendTextMessage(playerTable[1], MESSAGE_EVENT_ADVANCE, 'You win! You have received ' .. getItemNameById(configFireStormEvent.rewards[prize]) .. ' as reward.') doBroadcastMessage('Fire Storm Event has finished. The winner is ' .. getCreatureName(playerTable[1]) .. '. Congratulations.') doSetStorage(configFireStormEvent.storages.main, -1) db.query("INSERT INTO `events` (`event_name`, `winner_name`, `won_item`, `time_win`) VALUES (\"Fire\", \"" .. getCreatureName(playerTable[1]) .. "\", \"" .. getItemNameById(configFireStormEvent.rewards[prize]) .. "\", " .. getStorage(configFireStormEvent.storages.countEvent) ..");") doSetStorage(configFireStormEvent.storages.countEvent, getStorage(configFireStormEvent.storages.countEvent) + 1) x, y = 1, 1 elseif #playerTable > 1 then for a = 1, y do addEvent( function() local pos = {x=xTable[math.random(#xTable)], y=yTable[math.random(#yTable)], z=7} for _, player in ipairs(playerTable) do local pPos = getThingPos(player) if pPos.x == pos.x and pPos.y == pos.y and pPos.z == pos.z then doCreatureAddHealth(player, - getCreatureMaxHealth(player)) end end 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) end, math.random(100,1000) ) end if x == 5 * y then y = y + 1 end x = x + 1 else doBroadcastMessage('No one have won in Fire Storm Event.') doSetStorage(configFireStormEvent.storages.main, -1) doSetStorage(configFireStormEvent.storages.countEvent, getStorage(configFireStormEvent.storages.countEvent) + 1) x, y = 1, 1 end addEvent(doRepeatCheckFireStorm, configFireStormEvent.fireStormDelay) end end function doCountPlayersFireStormEvent() local x = 0 for _, cid in ipairs(getPlayersOnline()) do if getCreatureStorage(cid, configFireStormEvent.storages.player) > 0 then x = x + 1 end end return x end function doStartCountingFireStormEvent(x) if configFireStormEvent.delayTime-x > 0 then doBroadcastMessage('Fire Storm Event will start in '..configFireStormEvent.delayTime-x..' minutes. You can join to the event by say "!fire join".') addEvent(doStartCountingFireStormEvent, 60*1000, x+1) end end ]]> </lib> <talkaction words="!fire" event="script"> <![CDATA[ domodlib("config_fire_storm_event") function onSay(cid, words, param) if getStorage(configFireStormEvent.storages.joining) ~= 1 then return doPlayerSendCancel(cid, 'Fire Storm Event hasn\'t started yet.') elseif param == '' then return doPlayerSendCancel(cid, 'Command param required (say: "!fire join" or "!fire leave.").') elseif getPlayerLevel(cid) < configFireStormEvent.players.minLevel then return doPlayerSendCancel(cid, 'You can\'t join to the event if you don\'t have a require '..configFireStormEvent.players.minLevel..' level.') elseif getTileInfo(getThingPos(cid)).protection ~= true then return doPlayerSendCancel(cid, 'You can\'t join to the event if you aren\'t in protection zone.') elseif exhaustion.check(cid, configFireStormEvent.storages.exhaust) ~= false then return doPlayerSendCancel(cid, 'You must wait '..exhaustion.get(cid, configFireStormEvent.storages.exhaust)..' seconds to use this command again.') end if param == 'join' then if getCreatureStorage(cid, configFireStormEvent.storages.player) > 0 then return doPlayerSendCancel(cid, 'You have arleady joined to event. Wait patiently for start.') elseif doCountPlayersFireStormEvent() == configFireStormEvent.players.max then return doPlayerSendCancel(cid, 'Max players in the event have been reached.') end doCreatureSetNoMove(cid, true) doPlayerPopupFYI(cid, configFireStormEvent.text) doCreatureSetStorage(cid, configFireStormEvent.storages.player, 1) doAddCondition(cid, createConditionObject(CONDITION_INFIGHT, -1)) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, 'You have joined to Fire Storm Event. You can\'t move until event don\'t start. Wait patiently for the event start.') doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'You have joined to Fire Storm Event.') elseif param == 'leave' then if getCreatureStorage(cid, configFireStormEvent.storages.player) <= 0 then return doPlayerSendCancel(cid, 'You can\'t leave from the event if you don\'t join.') end doCreatureSetNoMove(cid, false) doRemoveCondition(cid, CONDITION_INFIGHT) doCreatureSetStorage(cid, configFireStormEvent.storages.player, -1) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'You have left from the Fire Storm Event.') end exhaustion.set(cid, configFireStormEvent.storages.exhaust, 5) return true end ]]> </talkaction> <talkaction words="!startfire" access="4" event="script"> <![CDATA[ domodlib("config_fire_storm_event") domodlib("lib_fire_storm_event") function onSay(cid, words, param) if getStorage(configFireStormEvent.storages.main) > 0 then return doPlayerSendCancel(cid, 'Fire Storm Event is already running.') end doStartCountingFireStormEvent(0) for _, pid in ipairs(getPlayersOnline()) do if getCreatureStorage(pid, configFireStormEvent.storages.player) > 0 then doCreatureSetStorage(pid, configFireStormEvent.storages.player, -1) doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)), true) end end doSetStorage(configFireStormEvent.storages.joining, 1) addEvent(doStartFireStormEvent, configFireStormEvent.delayTime * 60 * 1000) return true end ]]> </talkaction> <globalevent name="Fire_Storm_Event_Days" interval="1000" event="script"> <![CDATA[ domodlib("config_fire_storm_event") domodlib("lib_fire_storm_event") local daysOpen = {} for k, v in pairs(configFireStormEvent.days) do table.insert(daysOpen, k) end function onThink(interval) if isInArray(daysOpen, os.date('%A')) then if isInArray(configFireStormEvent.days[os.date('%A')], os.date('%X', os.time())) then if getStorage(configFireStormEvent.storages.joining) ~= 1 then doStartCountingFireStormEvent(0) for _, pid in ipairs(getPlayersOnline()) do if getCreatureStorage(pid, configFireStormEvent.storages.player) > 0 then doCreatureSetStorage(pid, configFireStormEvent.storages.player, -1) doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)), true) end end doSetStorage(configFireStormEvent.storages.joining, 1) addEvent(doStartFireStormEvent, configFireStormEvent.delayTime * 60 * 1000) end end end return true end ]]> </globalevent> <event type="statschange" name="Fire_Storm_Event_Dead" event="script"> <![CDATA[ domodlib("config_fire_storm_event") function onStatsChange(cid, attacker, type, combat, value) if type == 1 and getCreatureHealth(cid) <= value then if isInRange(getThingPos(cid), configFireStormEvent.room.from, configFireStormEvent.room.to) then doCreatureAddHealth(cid, getCreatureMaxHealth(cid) - getCreatureHealth(cid)) doCreatureAddMana(cid, getCreatureMaxMana(cid) - getCreatureMana(cid)) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'You loss.') return false end end return true end ]]> </event> <event type="login" name="Fire_Storm_Event_Login" event="script"> <![CDATA[ domodlib("config_fire_storm_event") function onLogin(cid) if getCreatureStorage(cid, configFireStormEvent.storages.player) > 0 then doCreatureSetStorage(cid, configFireStormEvent.storages.player, -1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), true) doCreatureSetNoMove(cid, false) doRemoveCondition(cid, CONDITION_INFIGHT) end registerCreatureEvent(cid, 'Fire_Storm_Event_Dead') return true end ]]> </event> <globalevent name="Fire_Storm_Event_Start" type="startup" event="script"> <![CDATA[ domodlib("config_fire_storm_event") function onStartup() doSetStorage(configFireStormEvent.storages.main, -1) doSetStorage(configFireStormEvent.storages.joining, -1) return true end ]]> </globalevent> </mod>
  8. As únicas alterações que fiz, foram as coordenas para adequação do map do evento. No momento da print, estava usando a distro do styller yourots.
  9. Não sei ao certo a versão do tfs que uso, mas postarei uma print dos erros. São muitos, assim a print não conseguiu pegar todos.
  10. Alucar postou uma resposta no tópico em Suporte Tibia OTServer
    Testei como mandou, infelizmente ainda não funcionou. O player continua marcando o último ponto e ficando preso.
  11. Alucar postou uma resposta no tópico em Suporte Tibia OTServer
    É o seguinte, estou usando o CTF do max. tópico aqui. Porém estou com um pequeno problema, quando o player captura a última bandeira e marca o ponto final..ele simplesmente não é teleportado para o templo junto com os outros, ele fica lá preso. Para quem não quiser acessar o tópico oficial, vou postar aqui a lib. --[[ Capture The Flag System Author: Maxwell Denisson(MaXwEllDeN) Version: 2.0 Contact: [email protected] ]] CTF_LIB = { waitpos = {x = 1009, y = 1030, z =7}, -- Posição da sala de espera tppos = {x = 1031, y = 1028, z =7}, -- Onde o TP vai aparecer days = {2, 5, 7}, -- Dias que o evento vai abrir xp_percent = 0.5, -- Porcentagem de exp que o player vai ganhar timeclose = 1, -- Tempo, em minutos, para iniciar o CTF winp = 10, -- Quantos pontos uma equipe precisa marcar para vencer teams = { ["Vermelho"] = { temple = 1, -- TownID da equipe vermelha outfit = {lookHead = 0, lookBody = 132, lookLegs = 113, lookFeet = 94}, flag = { id = 1435, flag_pos = {x = 1024, y = 1036, z =7}, -- Posição onde a bandeira vermelha vai ser criada gnd_pos = {x = 1025, y = 1036, z =7}, -- Onde os players da equipe vermelha entregarão a bandeira. }, }, ["Verde"] = { temple = 1, -- TownID da equipe verde outfit = {lookHead = 0, lookBody = 121, lookLegs = 101, lookFeet = 101}, flag = { id = 1437, flag_pos = {x = 1027, y = 1039, z =7}, -- Posição onde a bandeira verde vai ser criada gnd_pos = {x = 1027, y = 1038, z =7}, -- Onde os players da equipe verde entregarão a bandeira. }, }, }, } local CTF = CTF_LIB function CTF.getMembers() local members = {} for _, cid in pairs(getPlayersOnline()) do if getPlayerStorageValue(cid, 16700) ~= -1 then table.insert(members, cid) end end return members end function CTF.getTeamMembers(team) local members = {} for _, cid in pairs(CTF.getMembers()) do if getPlayerStorageValue(cid, 16700) == team then table.insert(members, cid) end end return members end function CTF.removePlayer(uid) setPlayerStorageValue(uid, 16700, -1) doPlayerSetTown(uid, getPlayerStorageValue(uid, 16701)) doTeleportThing(uid, getTownTemplePosition(getPlayerStorageValue(uid, 16701))) setPlayerStorageValue(uid, 16701, -1) doRemoveCondition(uid, CONDITION_OUTFIT) doCreatureAddHealth(uid, getCreatureMaxHealth(uid)) doCreatureAddMana(uid, getCreatureMaxMana(uid)) return true end function CTF.addPlayer(uid) local team = CTF.getTeamLivre() local n_team = CTF.teams[team] setPlayerStorageValue(uid, 16700, team) setPlayerStorageValue(uid, 16701, getPlayerTown(uid)) doPlayerSetTown(uid, n_team.temple) doTeleportThing(uid, CTF.waitpos) doPlayerSendTextMessage(uid, 22, "Você agora faz parte do time ".. team .. ".") local outfit = getCreatureOutfit(uid) for i, v in pairs(n_team.outfit) do outfit[i] = v end registerCreatureEvent(uid, "CTFLogout") registerCreatureEvent(uid, "CTFAttack") registerCreatureEvent(uid, "CTFCombat") registerCreatureEvent(uid, "CTFDeath") doSetCreatureOutfit(uid, outfit, -1) return true end function CTF.getTeamLivre() local teams = {} for i, _ in pairs(CTF.teams) do table.insert(teams, {i, #CTF.getTeamMembers(i)}) end if (teams[1][2] < teams[2][2]) then return teams[1][1] elseif (teams[1][2] > teams[2][2]) then return teams[2][1] end return teams[math.random(2)][1] end function CTF.broadCast(msg, class) for _, uid in pairs(CTF.getMembers()) do doPlayerSendTextMessage(uid, class or 20, msg) end return true end function CTF.getFlagTeam(flag) for i, v in pairs(CTF.teams) do if v.flag.id == flag then return i end end return "" end local score_sto = {} local a = 0 for i, _ in pairs(CTF.teams) do score_sto[i] = 42314 + a a = a + 1 end function CTF.createFlags() for i, v in pairs(CTF.teams) do local flag = doCreateItem(v.flag.id, 1, v.flag.flag_pos) doItemSetAttribute(flag, "aid", 63218) v.flag.gnd_pos.stackpos = 0 local gnd = getThingFromPos(v.flag.gnd_pos).uid doItemSetAttribute(gnd, "aid", 63200) doItemSetAttribute(gnd, "team", i) setGlobalStorageValue(score_sto[i], 0) end return true end function CTF.removeFlags() for i, v in pairs(CTF.teams) do local flag = doFindItemInPos({v.flag.id}, v.flag.flag_pos)[1] if flag then doRemoveItem(flag.uid, 1) end v.flag.gnd_pos.stackpos = 0 local gnd = getThingFromPos(v.flag.gnd_pos).uid doItemSetAttribute(gnd, "aid", 0) end return true end function CTF.start() doRemoveItem(doFindItemInPos({1387}, CTF.tppos)[1].uid, 1) setGlobalStorageValue(16705, -1) if #CTF.getMembers() < 2 then doBroadcastMessage("O CTF não pôde ser iniciado por falta de players.") for _, cid in pairs(CTF.getMembers()) do CTF.removePlayer(cid) end return false end CTF.broadCast("O CTF foi iniciado. Bom jogo!") for _, uid in pairs(CTF.getMembers()) do doTeleportThing(uid, getTownTemplePosition(getPlayerTown(uid))) end CTF.createFlags() return true end function CTF.returnFlag(uid, status) local team = getPlayerStorageValue(uid, 16702) if status then local msg = "O player ".. getCreatureName(uid) .. ", estava com a bandeira do time ".. team .. " " if status == 1 then msg = msg .. "e foi eliminado. " elseif status == 2 then msg = "e foi removido do evento. " end msg = msg .. "Portanto a bandeira do time ".. team .. " foi devolvida." CTF.broadCast(msg) end if CTF.teams[team] then local flag = doCreateItem(CTF.teams[team].flag.id, 1, CTF.teams[team].flag.flag_pos) doItemSetAttribute(flag, "aid", 63218) setPlayerStorageValue(uid, 16702, -1) end return true end function CTF.addPoint(uid) local finish local msg = "Capture The Flag:" setGlobalStorageValue(score_sto[getPlayerStorageValue(uid, 16700)], getGlobalStorageValue(score_sto[getPlayerStorageValue(uid, 16700)]) + 1) for i, _ in pairs(CTF.teams) do msg = msg .. "\nTime ".. i .. ": ".. getGlobalStorageValue(score_sto[i]) if getGlobalStorageValue(score_sto[i]) >= CTF.winp then finish = i end end CTF.broadCast(getCreatureName(uid) .. " marcou um ponto para o time ".. getPlayerStorageValue(uid, 16700) .. ".", 22) CTF.broadCast(msg) if finish then CTF.close(finish) end return true end function CTF.close(win) for i, _ in pairs(CTF.teams) do setGlobalStorageValue(score_sto[i], 0) end if not win then doBroadcastMessage("O CTF acabou sem vencedores.") else CTF.broadCast("O time ".. win .. " marcou ".. CTF.winp .. " ponto(s) e venceu o evento.") end for _, cid in pairs(CTF.getMembers()) do if getPlayerStorageValue(cid, 16700) == win then local xp = math.ceil(getPlayerExperience(cid) * (CTF.xp_percent / 100), 215) doPlayerSendTextMessage(cid, 22, "Parabéns! Você ganhou o evento e obteve ".. CTF.xp_percent .."% de sua experiência total(".. xp ..").") doSendAnimatedText(getThingPos(cid), xp, 215) doPlayerAddExperience(cid, xp) end if getPlayerStorageValue(cid, 16702) ~= -1 then CTF.returnFlag(cid) end CTF.removePlayer(cid) end CTF.removeFlags() return true end local function Alert(uid) if (isCreature(uid)) then if getPlayerStorageValue(uid, 16702) == -1 or getPlayerStorageValue(uid, 16700) == -1 then return false end doSendAnimatedText(getThingPos(uid), "Flag!", math.random(50, 200)) local bla = {18, 19, 21, 22, 23, 24} doSendMagicEffect(getThingPos(uid), bla[math.random(#bla)]) if (os.time() - getPlayerStorageValue(uid, 16703) >= 60) then CTF.returnFlag(uid) return setPlayerStorageValue(uid, 16703, -1) end addEvent(Alert, 500, uid) return true end return false end function CTF.stealFlag(uid, team) setPlayerStorageValue(uid, 16702, team) setPlayerStorageValue(uid, 16703, os.time()) CTF.broadCast(getCreatureName(uid) .. " roubou a bandeira do time ".. team .. "!") Alert(uid) return true end function doFindItemInPos(ids, pos) -- By Undead Slayer local results = {} for _ = 0, 255 do local findPos = {x = pos.x, y = pos.y, z = pos.z, stackpos = _} if isInArray(ids, getThingFromPos(findPos).itemid) then table.insert(results, getThingFromPos(findPos)) end end return results end
  12. Alguém conseguiu a solução?
  13. O evento foi feito para que versão? Testei em 8.6 e ocorreram vários erros.
  14. Alucar postou uma resposta no tópico em Suporte Tibia OTServer
    É o seguinte, tenho um otserv de narutibia e estou tentando abrir ele com site. Só que algumas páginas dão erros ao abrir (erros postados em quote). Gostaria de pedir as seguintes tabelas/ou páginas, -não sei bem qual é o problema- pro meu modern aac. Estou precisando muito delas para a resolução desses erros. Quando abro a página "bugs reportados"
  15. É o seguinte, eu estou tentando instalar um Modern acc feito para narutibia ( site do ntoshinobi. ) Só que quando chego na parte de Conectar a database ( depois de criar a database, e clica no Admin do apache. ) Dá esse error Alguém poderia me ajudar ? não faço mais idéia do que fazer pra resolver.

Informação Importante

Confirmação de Termo