Jump to content

Search the Community

Showing results for tags 'mods'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • xTibia - Notícias e Suporte
    • Regras
    • Noticias
    • Soluções
    • Projetos Patrocinados
    • Tutoriais para Iniciantes
    • Imprensa
  • OTServ
    • Notícias e Debates
    • OTServlist
    • Recursos
    • Suporte
    • Pedidos
    • Downloads
  • OFF-Topic

Categories

There are no results to display.


Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Sou

Found 9 results

  1. Salve rapazeada, boa tarde ? estou aqui hoje pra mostrar um ModuleOTC que comprei de um player aqui do forum God Vitor e ele me bloqueou sem passar o script !, porem n foi ele quem fez, n tem creditos Segue os link abaixo ae rapazeada https://www.mediafire.com/file/lwhzxjm42110ct9/modules.rar/file https://www.mediafire.com/file/iersn6ze5844l8c/REEDEM_CODES_SYSTEM.rar/file Segue os TalkActions ai ! <talkaction log="no" words="#@[email protected]#" script="REEDEM CODES SYSTEM/Reedem MainWindow - Open.lua"/> <talkaction log="no" words="#@[email protected]#" script="REEDEM CODES SYSTEM/Reedem EventsWindow - Open.lua"/> <talkaction log="no" words="#@[email protected]#" script="REEDEM CODES SYSTEM/Reedem DonationsWindow - Open.lua"/> <talkaction log="no" words="#@[email protected]#" script="REEDEM CODES SYSTEM/Reedem OthersWindow - Open.lua"/> OBS: NÃO SOU BOM PRA FAZER TOPICO, DESCULPEM !! SE ALGUEM CONSEGUIR FAZER O SCRIPT .lua pro codigo me avisem ! Abraços
  2. Nome: Evento for fun Infos: quem é atingido pelo fogo morre, o último a sobreviver ganha. O evento é automático, mas também possui um comando para dar inicio ao evento, só usar /firestart minutos exemplo: /firestart 1 Fire_Storm_Event.xml <?xml version="1.0" encoding="ISO-8859-1"?><mod name="Fire Storm Event" version="8.6" author="Vodkart" contact="" enabled="yes"><config name="fire_config"><![CDATA[Fire = { storages = {172354, 172355}, -- storage Count players = {min = 2, max = 50}, -- min, max players no evento minLevel = 20, -- level minimo para entrar no event rewards = {{2160,10},{2494,1}}, -- premios que vai receber timeToStartEvent = 30, -- segundos para começar o evento CheckTime = 5, -- time to check event teleport = {{x=158, y=53, z=7}, {x=189 , y=58, z=7}}, -- posição do teleport, posição para onde o jogador vai arena = {{x=186,y=54,z=7},{x=193,y=60,z=7}} -- posição começo e final da area}Fire_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"}}function removeFireTp() local t = getTileItemById(Fire.teleport[1], 1387).uid return t > 0 and doRemoveItem(t) and doSendMagicEffect(Fire.teleport[1], CONST_ME_POFF)endfunction ZerarStorFire() setGlobalStorageValue(Fire.storages[1], 0) setGlobalStorageValue(Fire.storages[2], 0)endfunction getPlayersInFireEvent() local t = {} for _, pid in pairs(getPlayersOnline()) do if isInRange(getPlayerPosition(pid), Fire.arena[1], Fire.arena[2]) then t[#t+1] = pid end end return tendfunction getFireRewards(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 endendfunction doFireInArea(n) if #getPlayersInFireEvent() > 1 then for i = 1, n do local pos = {x=math.random(Fire.arena[1].x, Fire.arena[2].x), y=math.random(Fire.arena[1].y,Fire.arena[2].y), z=Fire.arena[1].z} local m = getTopCreature(pos).uid 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) if m ~= 0 and isPlayer(m) then doSendMagicEffect(getCreaturePosition(m), CONST_ME_FIREAREA) doCreatureSay(m, "Ooh Burn Burn", TALKTYPE_ORANGE_1) local corpse = doCreateItem(3058, 1, getPlayerPosition(m)) doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(m) .. ". He was killed by Fire Field.") doSendMagicEffect(getPlayerPosition(m), CONST_ME_POFF) doTeleportThing(m, getTownTemplePosition(getPlayerTown(m))) doPlayerSendTextMessage(m, MESSAGE_EVENT_ADVANCE, "[Fire Storm Event] You died burned out.") end end local x = 2700-(200*n) addEvent(doFireInArea, x <= 0 and 500 or x, n+1) elseif #getPlayersInFireEvent() == 1 then local cid = getPlayersInFireEvent()[1] doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) getFireRewards(cid, Fire.rewards) doBroadcastMessage("Fire Storm Event have finished. The winner is ".. getCreatureName(cid).. ". Congratulations.", MESSAGE_EVENT_ADVANCE) ZerarStorFire() else doBroadcastMessage("No one Won the Fire Storm Event.", MESSAGE_EVENT_ADVANCE) ZerarStorFire() endendfunction CheckFireEvent(delay) if getGlobalStorageValue(Fire.storages[1]) ~= (Fire.players.max+1) then if delay > 0 and getGlobalStorageValue(Fire.storages[1]) < Fire.players.max then doBroadcastMessage("[Fire Stortm Event] Starting in " .. delay .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING) elseif delay == 0 and getGlobalStorageValue(Fire.storages[1]) < Fire.players.min then for _, cid in pairs(getPlayersInFireEvent()) do doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end removeFireTp() doBroadcastMessage("The Fire Storm event could not start because of to few players participating.\n At least " .. Fire.players.min .. " players is needed!", MESSAGE_STATUS_WARNING) ZerarStorFire() elseif delay == 0 and getGlobalStorageValue(Fire.storages[1]) >= Fire.players.min then removeFireTp() doBroadcastMessage("Good Lucky! The event will start on "..Fire.timeToStartEvent.." seconds. get ready!") addEvent(doFireInArea, Fire.timeToStartEvent*1000, 1) end addEvent(CheckFireEvent, 60000, delay-1) endend]]></config><globalevent name="Storm_Fire_Start" interval="60" event="script"><![CDATA[domodlib('fire_config')function onThink(interval, lastExecution) if Fire_Days[os.date("%A")] then local hrs = tostring(os.date("%X")):sub(1, 5) if isInArray(Fire_Days[os.date("%A")], hrs) and getGlobalStorageValue(Fire.storages[2]) <= 0 then local tp = doCreateItem(1387, 1, Fire.teleport[1]) doItemSetAttribute(tp, "aid", 45111) CheckFireEvent(Fire.CheckTime) setGlobalStorageValue(Fire.storages[1], 0) end end return trueend]]></globalevent><event type="login" name="Storm_Fire_Login" event="script"><![CDATA[domodlib('fire_config')function onLogin(cid) registerCreatureEvent(cid, "FireStormBatle") if isInRange(getPlayerPosition(cid), Fire.arena[1], Fire.arena[2]) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end return trueend]]></event><event type="combat" name="FireStormBatle" event="script"><![CDATA[domodlib('fire_config')if isPlayer(cid) and isPlayer(target) and isInRange(getPlayerPosition(cid), Fire.arena[1], Fire.arena[2]) then doPlayerSendCancel(cid, "You may not attack this player.") return falseendreturn true]]></event><movevent type="StepIn" actionid ="45111" event="script"><![CDATA[domodlib('fire_config')function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if getPlayerAccess(cid) > 3 then return doTeleportThing(cid, Fire.teleport[2]) end if getPlayerLevel(cid) < Fire.minLevel then doTeleportThing(cid, fromPosition, true) doPlayerSendCancel(cid, "You need to be at least level " .. Fire.minLevel .. ".") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end if getGlobalStorageValue(Fire.storages[1]) <= Fire.players.max then doTeleportThing(cid, Fire.teleport[2]) setGlobalStorageValue(Fire.storages[1], getGlobalStorageValue(Fire.storages[1])+1) doBroadcastMessage(getPlayerName(cid) .. " entered the fire stortm event! Currently " .. getGlobalStorageValue(Fire.storages[1]) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED) if getGlobalStorageValue(Fire.storages[1]) == Fire.players.max then setGlobalStorageValue(Fire.storages[1], getGlobalStorageValue(Fire.storages[1])+1) removeFireTp() doBroadcastMessage("The event will start on "..Fire.timeToStartEvent.." seconds. get ready!") addEvent(doFireInArea, Fire.timeToStartEvent*1000, 1) end end return trueend]]></movevent><talkaction words="/firestart;!firestart" access="5" event="buffer"><![CDATA[domodlib('fire_config')if getGlobalStorageValue(Fire.storages[2]) > 0 then doPlayerSendCancel(cid, "The event is already starting.") return trueelseif not param or not tonumber(param) then doPlayerSendCancel(cid, "Use only numbers.") return true endlocal param = tonumber(param) <= 0 and 1 or tonumber(param)local tp = doCreateItem(1387, 1, Fire.teleport[1])doItemSetAttribute(tp, "aid", 45111)CheckFireEvent(tonumber(param))setGlobalStorageValue(Fire.storages[1], 0)setGlobalStorageValue(Fire.storages[2], 1)]]></talkaction><globalevent name="FireDebug-Start" type="start" event="buffer"><![CDATA[domodlib('fire_config')ZerarStorFire()return true]]></globalevent></mod> Baixa esse arquivo e adicione no seu servidor no respectivo lugar.! fire lua.rar fire lua.rar
  3. Boa tarde galera do Xtibia, estou tendo alguns problemas ao pesquisar aqui no Xtibia, de Links quebrados em relação a download e etc, então como dei uma grande pesquisada não só aqui como em outros fóruns também e não achei muita coisa, gostaria de pedir o link de download ou as próprias scripts de alguns eventos por aqui. Obs: Peguei um servidor base 8.6 sem eventos nenhum sem nenhuma script adicionada, peguei ele cru e estou adicionando eu mesmo todos os eventos possíveis. [1] Evento Dota (Se possível ele em MOD) [2] SnowBall War [3] The Lightbearer [4] BattleField [5] Rush War Event E se tiver mais alguns ai podem postar o link ou o próprio conteúdo ... No final Se alguém quiser pegar o conteúdo do topic e criar uma lista para facilitar o pessoal que procura por eventos, fiquem a vontade.
  4. como o titulo ja diz, alguem me ajuda a colocar meu ot tibia em % o hp e mp ? ele e ot lvl alto ai fica as macadas de vida. Queria saber se alguem pode me ajudar passo a passo a botar porcentagem.
  5. Então galera . Queria saber se alguém poder disponibiliza um script de relfect. Seria +/- assim um cara usa um ring e ao usar esse ring refletia 10% de dano da pessoa que esta atacando. Sera que alguém pode ajudar ? Id do item: 11387 Agradeço desde e ja ! *-*-
  6. Iae galera, vir um script chamado paintball igual ao (Snowball War ) na net, so q ele esta todo junto, nao sei como que é, sera q alguem pode me ajudar a montar ele, q parte de colocar tals parte do script onde colocar etc .... Script <?xml version="1.0" encoding="UTF-8"?> <mod name="Paintball event" version="1.0" author="Bogart" contact="otland.net" enabled="yes"> <description> </description> <config name="config"><![CDATA[ t = { main = { tfs_version = "0.3", --0.3 or 0.4 positions = { paintball_spawn_area = { top_left = {x = 970, y = 1040, z = 4}, --Top left pos of spawning area bottom_right = {x = 975, y = 1046, z = 7}--bottom right pos of spawning area }, waiting_room_area = { top_left = {x = 970, y = 1040, z = 7}, --Top left pos of the waiting room bottom_right = {x = 975, y = 1046, z = 7}--bottom right pos of the waiting room }, tp_to_paintball = {x = 985, y = 1052, z = 7}, --pos where the tp will be created event_ending_pos = {x = 985, y = 1052, z = 7} --pos players will be sent after event ending }, storages = { exhaust = 2455, is_in_event = 2460, score = 2465 }, misc = { status = 'on' }, messages = { event_started = "Paintball event has started! there's a teleport near Thais temple!",--Message that will be broadcasted after the event has started event_ended = "Paintball event has ended!" --same but when event ends }, event_config = { event_duration = 15, --minutes, 0 if it's an always-open event infinite_ammo = false, winner_gets_item = true, prize_item_id = 3051, decrease_score_on_death = true, points_per_kill = 1, randomize_player_start_pos = true, ammo_per_point = 100, reset_bullets_on_death = true, min_bullets_on_spawn = 100, start_automatically = false, use_waiting_room = false, waiting_time = 3 --minutes } }, onShoot = { storages = { ammo = 2400 }, misc = { walls_id = {1115,1111,1112,5258,1385,1113}, bullets_exhaust = 500, --in ms bullet_speed = 150 }, vars = { shootdir = 0 } } } ]]></config> <movevent type="StepIn" actionid ="2880" event="script"><![CDATA[ domodlib('config') function onStepIn(cid, item, pos) local t_l = t.main.positions.paintball_spawn_area.top_left local b_r = t.main.positions.paintball_spawn_area.bottom_right doTeleportThing(cid, {x=math.random(t_l.x,b_r.x), y=math.random(t_l.y, b_r.y), z=math.random(t_l.z, b_r.z)}) doPlayerSetStorageValue(cid, t.main.storages.is_in_event,1) doPlayerSetStorageValue(cid, t.onShoot.storages.ammo, t.main.event_config.min_bullets_on_spawn) doPlayerSetStorageValue(cid, t.main.storages.score, 0) doPlayerSendTextMessage(cid,27,"Welcome to paintball, here are the commands:\n!shoot bullet --This will shot a bullet.\n!shoot ammo --This will give you "..t.main.event_config.ammo_per_point.." bullets and take 1 point from your current score (you need at least 1 point to use this command).\n!shoot info --This will show you your current score and ammo, it'll also show the current high score of the event.\nIt is strongly recommended that you bind these commands to your hotkeys.") end ]]></movevent> <globalevent name="StartPaintBall" interval="3600" event="script"><![CDATA[ domodlib('config') function onThink(interval, lastExecution, thinkInterval) if t.main.event_config.start_automatically then doBroadcastMessage(t.main.messages.event_started, MESSAGE_STATUS_WARNING) if t.main.event_config.use_waiting_room then addEvent(moveToEvent, t.main.event_config.waiting_time*1000*60) doCreateTeleport(1387,t.main.positions.waiting_room_area.top_left, t.main.positions.tp_to_paintball) else if t.main.tfs_version == "0.3" then doItemSetAttribute(doCreateItem(1387, t.main.positions.tp_to_paintball), "aid", 2880) else doSetItemActionId(doCreateItem(1387, t.main.positions.tp_to_paintball),2880) end if(t.main.event_config.event_duration > 0) then addEvent(endPaintball, t.main.event_config.event_duration*1000*60) end end end return true end function endPaintball() local score = {} if not t.main.event_config.use_waiting_room then doRemoveItem(getTileItemById(t.main.positions.tp_to_paintball,1387).uid) end for _, pid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(pid, t.main.storages.is_in_event) > 0 then table.insert(score, {getCreatureName(pid), getPlayerStorageValue(pid, t.main.storages.score)}) doPlayerSetStorageValue(pid, t.main.storages.is_in_event, 0) doPlayerSetStorageValue(pid, t.main.storages.score, 0) doPlayerSetStorageValue(pid, t.onShoot.storages.ammo, 0) doTeleportThing(pid, t.main.positions.event_ending_pos) end end table.sort(score, function(a, b) return a[2] > b[2] end) if table.getn(score) > 0 then if t.main.event_config.winner_gets_item then for _, pid in ipairs(getPlayersOnline()) do if getCreatureName(pid) == score[1][1] then doPlayerAddItem(pid, t.main.event_config.prize_item_id) break end end end doBroadcastMessage("Paintball event has ended, "..score[1][1].." won paintball event with "..score[1][2].." points", MESSAGE_STATUS_WARNING) end end local t_l = t.main.positions.paintball_spawn_area.top_left local b_r = t.main.positions.paintball_spawn_area.bottom_right function moveToEvent() for _, pid in ipairs(getPlayersOnline()) do if isInRange(getCreaturePosition(pid), t.main.positions.waiting_room_area.top_left, t.main.positions.waiting_room_area.bottom_right) then doTeleportThing(pid, {x=math.random(t_l.x,b_r.x), y=math.random(t_l.y, b_r.y), z=math.random(t_l.z, b_r.z)}) doPlayerSetStorageValue(pid, t.main.storages.is_in_event,1) doPlayerSetStorageValue(pid, t.onShoot.storages.ammo, t.main.event_config.min_bullets_on_spawn) doPlayerSetStorageValue(pid, t.main.storages.score, 0) doPlayerSendTextMessage(pid,27,"Welcome to paintball, here are the commands:\n!shoot bullet --This will shot a bullet.\n!shoot ammo --This will give you "..t.main.event_config.ammo_per_point.." bullets and take 1 point from your current score (you need at least 1 point to use this command).\n!shoot info --This will show you your current score and ammo, it'll also show the current high score of the event.\nIt is strongly recommended that you bind these commands to your hotkeys.") end end doRemoveItem(getTileItemById(t.main.positions.tp_to_paintball,1387).uid) addEvent(endPaintball, t.main.event_config.event_duration*1000*60) end ]]></globalevent> <talkaction words="!shoot" event="script"><![CDATA[ domodlib('config') function onSay(cid, words, param, channel) local k = string.explode(param, ",") if(k[1] ~= nil) then if(string.upper(k[1]) == 'END') and getPlayerGroupId(cid) >= 3 then endPaintball() end if(string.upper(k[1]) == 'START') and getPlayerGroupId(cid) >= 3 then doBroadcastMessage(t.main.messages.event_started, MESSAGE_STATUS_WARNING) if t.main.event_config.use_waiting_room then addEvent(moveToEvent, t.main.event_config.waiting_time*1000*60) doCreateTeleport(1387,t.main.positions.waiting_room_area.top_left, t.main.positions.tp_to_paintball) else if t.main.tfs_version == "0.3" then doItemSetAttribute(doCreateItem(1387, t.main.positions.tp_to_paintball), "aid", 2880) else doSetItemActionId(doCreateItem(1387, t.main.positions.tp_to_paintball),2880) end if(t.main.event_config.event_duration > 0) then addEvent(endPaintball, t.main.event_config.event_duration*1000*60) end end end if(string.upper(k[1]) == 'INFO') then local score = {} local output = "You have " .. getPlayerStorageValue(cid, t.main.storages.score) .. " points.\nYou have "..getPlayerStorageValue(cid, t.onShoot.storages.ammo).." ammo left.\n------------------\nThe current high score in paintball is:\n" for _, pid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(pid, t.main.storages.is_in_event) then table.insert(score, {getCreatureName(pid), getPlayerStorageValue(pid, t.main.storages.score)}) end end local lx = table.getn(score) if(lx > 3) then lx = 3 end table.sort(score, function(a, b) return a[2] > b[2] end) for k = 1,lx do output = output .. k..". "..score[k][1] .." [".. score[k][2] .."].\n" end doPlayerPopupFYI(cid, output) end if (string.upper(k[1]) == 'AMMO') then if(t.main.event_config.infinite_ammo) then doPlayerSendTextMessage(cid, 27, "Ammo is infinite, there's no need to buy more.") else if getPlayerStorageValue(cid, t.main.storages.score) > 0 then doPlayerSetStorageValue(cid, t.main.storages.score, getPlayerStorageValue(cid, t.main.storages.score)-1) doPlayerSetStorageValue(cid, t.onShoot.storages.ammo, getPlayerStorageValue(cid,t.onShoot.storages.ammo)+t.main.event_config.ammo_per_point) doPlayerSendTextMessage(cid, 27, "You have received " .. t.main.event_config.ammo_per_point .. " bullets and you have lost 1 score point.") doSendMagicEffect(getCreaturePosition(cid),4) else doPlayerSendTextMessage(cid, 27, "You do not have enough score points to buy ammo, you need ".. 1-(getPlayerStorageValue(cid, t.main.storages.score)).. " more.") end end end if (string.upper(k[1]) == 'BULLET') then if(getPlayerStorageValue(cid, t.main.storages.is_in_event) == 1) then if getPlayerStorageValue(cid, t.main.storages.exhaust) <= 1 then if(getPlayerStorageValue(cid, t.onShoot.storages.ammo) > 0) then if t.main.misc.status == 'on' then if(t.main.event_config.infinite_ammo == false) then doPlayerSetStorageValue(cid, t.onShoot.storages.ammo, getPlayerStorageValue(cid, t.onShoot.storages.ammo)-1) end doPlayerSetStorageValue(cid, t.main.storages.exhaust, 2) lineAnimation(getPlayerLookDirection(cid),getCreaturePosition(cid),12,cid,1,0,1,0,0,0,1,0) addEvent(doPlayerSetStorageValue,t.onShoot.misc.bullets_exhaust, cid, t.main.storages.exhaust,1) end else doPlayerSendCancel(cid, "You're out of ammo, exchange ammo for points with !shoot ammo or get killed for a recharge.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) end else doPlayerSendCancel(cid, "Gun is on cooldown") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) end else doPlayerSendCancel(cid, "You need to be in the event.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) end end end return true end function lineAnimation(lookDir,playerPos,effect,cid,fvar,fpos,ffound,fposV,fcheck,fvcid,floopCounter,fvpid, name) local var = fvar local pos = fpos local found = ffound local posV = fposV local check = fcheck local vcid = fvcid local loopCounter = floopCounter local vpid = fvpid local storage = t.main.storages.exhaust if var < 2 then vcid = cid end pos = playerPos if not isInWallArray(convert(lookDir,pos)) then--isInWallArray({x=convert(lookDir,pos).x, y=convert(lookDir,pos).y,z=convert(lookDir,pos).z}) then --isInArray(t.onShoot.misc.walls_id, getThingfromPos({x=convert(lookDir,pos).x, y=convert(lookDir,pos).y,z=convert(lookDir,pos).z, stackpos=0}).itemid) then doSendDistanceShoot(pos, convert(lookDir,pos),effect) pos = convert(lookDir,pos) var=var+1 posV = convertV(lookDir,playerPos) for _, pid in ipairs(getPlayersOnline()) do if (getCreaturePosition(pid).x == pos.x and getCreaturePosition(pid).y == pos.y and getCreaturePosition(pid).z == pos.z) then --if loopCounter > 2 then vpid = pid --end if (vpid ~= vcid) then if var > 2 then if (getCreaturePosition(pid).x == posV.x and getCreaturePosition(pid).y == posV.y and getCreaturePosition(pid).z == posV.z) then killPlayer(pid,pos,getCreatureName(vcid)) if (lookDir == 0) or (lookDir == 2) then var = 6 else var = 8 end end end killPlayer(pid,pos,vcid) if (lookDir == 0) or (lookDir == 2) then var = 6 else var = 8 end end end loopCounter = loopCounter +1 end if (lookDir == 0) or (lookDir == 2) then if var ~= 6 then addEvent(lineAnimation, t.onShoot.misc.bullet_speed, lookDir,pos,effect,nil,var,pos,found,posV,check,vcid,loopCounter,vpid) else var = 1 end else if var ~= 8 then addEvent(lineAnimation, t.onShoot.misc.bullet_speed, lookDir,pos,effect,nil,var,pos,found,posV,check,vcid,loopCounter,vpid) else var = 1 end end else doSendMagicEffect(convert(lookDir,pos),2) var = 1 end end local ret = {} function convert(lookDir,pos) local positions = { [0] = {x = pos.x, y = pos.y-1, z = pos.z}, [1] = {x = pos.x+1, y = pos.y, z = pos.z}, [2] = {x = pos.x, y = pos.y+1, z = pos.z}, [3] = {x = pos.x-1, y = pos.y, z = pos.z} } ret = positions[lookDir] return ret end local ret = {} function convertV(lookDir,pos) local positions = { [0] = {x = pos.x, y = pos.y+1, z = pos.z}, [1] = {x = pos.x-1, y = pos.y, z = pos.z}, [2] = {x = pos.x, y = pos.y-1, z = pos.z}, [3] = {x = pos.x+1, y = pos.y, z = pos.z} } ret = positions[lookDir] return ret end function killPlayer(cid,pos, killer) local t_l = t.main.positions.paintball_spawn_area.top_left local b_r = t.main.positions.paintball_spawn_area.bottom_right doTeleportThing(cid, {x=math.random(t_l.x,b_r.x), y=math.random(t_l.y, b_r.y), z=math.random(t_l.z, b_r.z)}) doSendMagicEffect(pos,2) doPlayerSendTextMessage(cid, 27, "You've been killed by "..getCreatureName(killer)..".") doPlayerSetStorageValue(killer, t.main.storages.score, getPlayerStorageValue(killer, t.main.storages.score)+t.main.event_config.points_per_kill) doPlayerSendTextMessage(killer, 27, "You've killed "..getCreatureName(cid)..".") doBroadcastMessage("[Event] Paintball: "..getCreatureName(killer).." has killed "..getCreatureName(cid)..".", MESSAGE_STATUS_WARNING) if t.main.event_config.decrease_score_on_death then doPlayerSetStorageValue(cid, t.main.storages.score, getPlayerStorageValue(cid, t.main.storages.score)-1) end if t.main.event_config.reset_bullets_on_death then doPlayerSetStorageValue(cid, t.onShoot.storages.ammo, t.main.event_config.min_bullets_on_spawn) end end function isInWallArray(pos) for k = 0, table.getn(t.onShoot.misc.walls_id) do if getTileItemById(pos, t.onShoot.misc.walls_id[k]).itemid == t.onShoot.misc.walls_id[k] then --this doesn't even make sense but tried other ways and it gave errors, so meh 2lazy2search return true end end return false end function endPaintball() local score = {} if not t.main.event_config.use_waiting_room then doRemoveItem(getTileItemById(t.main.positions.tp_to_paintball,1387).uid) end for _, pid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(pid, t.main.storages.is_in_event) > 0 then table.insert(score, {getCreatureName(pid), getPlayerStorageValue(pid, t.main.storages.score)}) doPlayerSetStorageValue(pid, t.main.storages.is_in_event, 0) doPlayerSetStorageValue(pid, t.main.storages.score, 0) doPlayerSetStorageValue(pid, t.onShoot.storages.ammo, 0) doTeleportThing(pid, t.main.positions.event_ending_pos) end end table.sort(score, function(a, b) return a[2] > b[2] end) if table.getn(score) > 0 then if t.main.event_config.winner_gets_item then for _, pid in ipairs(getPlayersOnline()) do if getCreatureName(pid) == score[1][1] then doPlayerAddItem(pid, t.main.event_config.prize_item_id) break end end end doBroadcastMessage("Painball event has ended, "..score[1][1].." won paintball event with "..score[1][2].." points", MESSAGE_STATUS_WARNING) end end local t_l = t.main.positions.paintball_spawn_area.top_left local b_r = t.main.positions.paintball_spawn_area.bottom_right function moveToEvent() for _, pid in ipairs(getPlayersOnline()) do if isInRange(getCreaturePosition(pid), t.main.positions.waiting_room_area.top_left, t.main.positions.waiting_room_area.bottom_right) then doTeleportThing(pid, {x=math.random(t_l.x,b_r.x), y=math.random(t_l.y, b_r.y), z=math.random(t_l.z, b_r.z)}) doPlayerSetStorageValue(pid, t.main.storages.is_in_event,1) doPlayerSetStorageValue(pid, t.onShoot.storages.ammo, t.main.event_config.min_bullets_on_spawn) doPlayerSetStorageValue(pid, t.main.storages.score, 0) doPlayerSendTextMessage(pid,27,"Welcome to paintball, here are the commands:\n!shoot bullet --This will shot a bullet.\n!shoot ammo --This will give you "..t.main.event_config.ammo_per_point.." bullets and take 1 point from your current score (you need at least 1 point to use this command).\n!shoot info --This will show you your current score and ammo, it'll also show the current high score of the event.\nIt is strongly recommended that you bind these commands to your hotkeys.") end end doRemoveItem(getTileItemById(t.main.positions.tp_to_paintball,1387).uid) addEvent(endPaintball, t.main.event_config.event_duration*1000*60) end ]]></talkaction> </mod>
  7. Entao galera, queria saber se alguém pode me disponibiliza um script que ao fazer uma acc ganha 2 dias de vip no char ou na conta, tanto faz. Storage da minha vip = 13715
  8. Olá galera do Xtibia, venho hoje trazer um sistema muito útil como pode ver no Título ele remove casa dos players que não logam mais. Explicação: Sabe aqueles players filho da mãe que compram as melhores casas e não logam mais no servidor e enche a porra da casa de item pros novos players não comprar? Pois é esse sistema dara um jeito nesses safados! xD Este script é apenas um arquivo que você colocará em sua pasta mods e ele executará toda vez que o servidor for reiniciado/ligado, ou seja: Quando o servidor ligar ele irá verificar os players que não logam a X dias (configurável) e então expulsa-los da casa movendo seus items para o depot deixando a casa sem dono. Bom chega de explicação e vamos ao que interessa; Na pasta principal do servidor, onde fica a distro que roda o servidor e tudo mais, entre na pasta MODS e crie um arquivo com o nome de cleanhouses.xml e dentro coloque o seguinte codigo: <?xml version="1.0" encoding="UTF-8"?><mod name="Cleanhouses" version="1.04" author="Yan Liima-Night" contact="xtibia.com" enabled="yes"> <description> v.1.04 - Adicionado 'onlyNonPremium' configurável. Versão sem erros por favor caso não é avançado na área não modifique nada. Criado e modificado por Yan Liima Nick: [ADM] Night Este mod irá limpar casas de jogadores inativos e mover os seus itens para o depósito.explicação das configurações: days - Se o jogador não tiver logado para este número de dias de sua casa será liberado. log - true/false, é para habilitar o registro de quais casas foram limpas. file - caminho para o arquivo de log, onde os logs serão armazenados. Ignorado se 'log' definido como falso onlyNonPremium - se definido como 'true', o script irá limpar apenas as casas dos jogadores que não lougou X dias. Outras indicações: NÃO remova doSaveServer() no final, caso contrário, se o servidor parar de funciona antes que o servidor salve você vai se arrepender =) </description> <globalevent name="cleanhouses" type="start" event="buffer"><![CDATA[ local config = { days = 60, log = true, file = getDataDir() .. "/logs/cleanhouses.txt", onlyNonPremium = true } local ns_query =[[ SELECT houses.owner, houses.id as hid, houses.name as house_name ,players.name FROM houses LEFT JOIN players ON players.id=houses.owner LEFT JOIN accounts ON players.account_id=accounts.id WHERE players.lastlogin < (UNIX_TIMESTAMP() - ]] ..config.days.. [[*24*60*60) ]] ..(config.onlyNonPremium and ' AND accounts.premdays=0 ' or '')..[[ AND players.world_id =]] .. getConfigValue("worldId") local house = db.getResult(ns_query) local logs = " Houses cleaned:\n\n" if house:getID() ~= -1 then repeat logs = logs .. house:getDataString('house_name') ..", owned by " .. house:getDataString('name') .. "\n" setHouseOwner(house:getDataInt('hid'), 0) until not house:next() house:free() else logs = logs .. "There were no houses to clean." end if config.log then doWriteLogFile(config.file, logs) end addEvent(doSaveServer, 1000) ]]></globalevent></mod> Pronto, salve e feche. Toda vez que o servidor iniciar irá expulsar os players que não logam aos dias configuráveis. Como configurar: days = 60 * É o número em DIAS que o player terá que ficar sem logar para perder a casa. Aconselho a não mexer, caso queira modificar algo aconselho ser avançado na área para não causar error no sistema. Este sistema funciona em qualquer TFS. Créditos Yan Liima Bom eu tinha publicado um post igual esse faz anos so que não lembro minha conta, e pegaro meu post postaro em outro fórum que não merece ser citado com outros créditos estou apenas avisando. Te ajudei?? REP + e ficamos quites... Atenciosamente, Yan Liima Abraços!
  9. Eu tenho um ot com o mapa global 8.60(Real Server 1.7) e queria saber se dá pra criar a pasta mods manualmente(nova>pasta>mods) ou se precisa configurar alguma coisa antes. obs-esse ot não veio com a pasta mods. desde já agradeço. Edit- eu quero colocar a potion de double xp (ja tenho o script)
×
×
  • Create New...