WhiteTibia
Buscar
 
 

Resultados por:
 


Rechercher Búsqueda avanzada

Últimos temas
» (Pedido) Ayuda con script
Sáb Jul 11, 2015 6:02 am por Avsilon

» [Action] Item que guarda el level del player
Lun Nov 25, 2013 2:46 pm por Dantarrix

» Loot general con chances, itemid y cantidad... FULL Configurable
Sáb Feb 25, 2012 7:57 pm por Dantarrix

» [Talkaction] Trade Vip Days...
Sáb Feb 25, 2012 7:45 pm por Dantarrix

» No Puedo Abrir mi OT:S
Dom Dic 18, 2011 10:32 pm por Dantarrix

» Food Por Soul a Traves de Un Click
Dom Sep 25, 2011 11:14 am por Dantarrix

» Guía básica para crear OT Server [Por Progenosis]
Lun Sep 19, 2011 6:41 pm por AloxiToz

» Agregada Nueva Sección [Juegos]
Dom Sep 18, 2011 7:15 am por Dantarrix

» tp de recidencia
Sáb Sep 17, 2011 8:08 pm por Dantarrix

» acc manager
Sáb Sep 17, 2011 8:48 am por Tribus

Mayo 2018
LunMarMiérJueVieSábDom
 123456
78910111213
14151617181920
21222324252627
28293031   

Calendario Calendario


Mock Fly System 1.0

Ir abajo

Mock Fly System 1.0

Mensaje por dyker el Sáb Sep 03, 2011 8:23 pm

Amigos, les traigo este script que yo uso en mi servidor y que funciona muy bien, se trata de un Fly System. Ala ahi lo dejo:

en data/lib creamos un archivo llamado flylib.lua y metemos esto

Código:
CONST_FLYVOID = 460
CONT_FLYOUTFIT = 239
IGNORED = {6495,7096,7099,5167,5162,5163,405,7100,
5315,5521,5316,5193,5192,5191,945,5048,923,950,951,
952,953,3623,954,955,949,9101,3352,9106,9103,1524,
1111,437,433,443,434,442,436,445,941,444,435,943,
1027,925,930,926,928,922,921,1112,406,904,931,934,
932,933,5319} --- Config here
 
 
up = {}
down = {}
fly = {}
fly.win = function(cid)-- Script by mock
        setPlayerStorageValue(cid, 102015,1)
        doPlayerSendTextMessage(cid,27,'Now you can fly.')
end
fly.add = function(cid)-- Script by mock
        if getPlayerStorageValue(cid, 102015) == -1 or getPlayerStorageValue(cid,13241) == 1 then
                return false
        end
        if getPlayerStorageValue(cid, 102059) <= 0 then
                local outfit = getCreatureOutfit(cid)
                outfit.lookType = CONT_FLYOUTFIT
                doSetCreatureOutfit(cid, outfit, -1)
                setPlayerStorageValue(cid, 102059,1)
                doChangeSpeed(cid, 390)
                doPlayerSendTextMessage(cid,27,'Fale 'up' e 'down'.' )
                return true
        else
                doPlayerSendTextMessage(cid,27, "Você ja esta voando.")
                return false
        end
 
end
function doSetItemActionId(uid,aid)
        doItemSetAttribute(uid,'aid',aid)
end
function hasSqm(pos)-- by Mock
        return getTileThingByPos({x=pos.x,y=pos.y,z=pos.z,stackpos=0}).itemid ~= 0
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
fly.using=function(cid)-- Script by mock
  return getPlayerStorageValue(cid, 102059) > 0
end
fly.logout = function(cid)-- Script by mock
        if fly.using(cid) then
                local p = getCreaturePosition(cid)
                setPlayerStorageValue(cid, 102010,1)
                setPlayerStorageValue(cid, 102011,p.x)
                setPlayerStorageValue(cid, 102012,p.y)
                setPlayerStorageValue(cid, 102013,p.z)
                deletarEmVolta(p)
                fly.del(cid)
        end
        return true
end
fly.login = function(cid)-- Script by mock
        if getPlayerStorageValue(cid, 102010) ~= -1 then
                setPlayerStorageValue(cid, 102010,-1)
                local p = {}
                p.x = getPlayerStorageValue(cid, 102011)
                p.y = getPlayerStorageValue(cid, 102012)
                p.z = getPlayerStorageValue(cid, 102013)
                if not checkAround(p) then
                        fly.add(cid)
                        down.gerarEmVolta(p)
                        doTeleportThing(cid,p)
                end
        end
        return true
end
fly.die = function(cid)-- Script by mock
        if fly.using(cid) then
                local p = getCreaturePosition(cid)
                setPlayerStorageValue(cid, 102011,-1)
                setPlayerStorageValue(cid, 102012,-1)
                setPlayerStorageValue(cid, 102013,-1)
                deletarEmVolta(p)
                fly.del(cid)
        end
        return true
end
fly.del = function(cid)-- Script by mock
        if getPlayerStorageValue(cid, 102059) > 0 then
                if getSqmId(getCreaturePosition(cid)).itemid == CONST_FLYVOID then
                        return false
                end
                doRemoveCondition(cid, CONDITION_OUTFIT)
                setPlayerStorageValue(cid, 102059,-1)
                doChangeSpeed(cid, -390)
                return true
        end
end
function hasSqm2(pos)-- Script by mock
        local f = getTileThingByPos(pos)
        if f.itemid ~= 0 and f.itemid ~= 1 and (not isWalkable(pos) and not isInArray(IGNORED,f.itemid)) then
                return true
        end
        return false
end
function hasSqm3(pos)-- Script by mock
        local f = getTileThingByPos(pos)
        if f.itemid ~= 0 and f.itemid ~= 1 and f.itemid ~= CONST_FLYVOID and not isInArray(IGNORED,f.itemid) then
                return true
        end
        return false
end
 function deletar(pos)-- Script by mock
        if hasSqm(pos) then
                local sqm = getSqmId(pos)
                if sqm.itemid == CONST_FLYVOID then
                        doRemoveItem(sqm.uid,1)
                end
        end
end
function deletarEmVolta(pos)
        for x=-1,1 do
                for y=-1,1 do
                        deletar({x=pos.x+x,y=pos.y+y,z=pos.z})
                end
        end
end
function checkAround(pos)-- Script by mock
        for x=-1,1 do
                for y=-1,1 do
                        if hasSqm2({x=pos.x+x,y=pos.y+y,z=pos.z}) then
                                return true
                        end
                end
        end
        return false
end
 
function fly.checkAround(pos)-- Script by mock
        local n = 0
        for x=-1,1 do
                for y=-1,1 do
                        local g = getTileThingByPos({x=pos.x+x,y=pos.y+y,z=pos.z})
 
                        if g.itemid == CONST_FLYVOID then
                                n = n+1
                        end
                        if isCreature(getTopCreature({x=pos.x+x,y=pos.y+y,z=pos.z}).uid) then
                                return false
                        end
                end
        end
        if n == 9 then
                return true
        end
        return false
end
 
function up.checkAround(pos)-- Script by mock
        for x=-1,1 do
                for y=-1,1 do
                local g = getTileThingByPos({x=pos.x+x,y=pos.y+y,z=pos.z})
                        if hasSqm3({x=pos.x+x,y=pos.y+y,z=pos.z}) or g.itemid == CONST_FLYVOID then
                                return true
                        end
                end
        end
        return false
end
 
function down.checkAround(pos,f)-- Script by mock
        for x=-1,1 do
                for y=-1,1 do
                local g = getTileThingByPos({x=pos.x+x,y=pos.y+y,z=pos.z})
                        if (not f and hasSqm2({x=pos.x+x,y=pos.y+y,z=pos.z})) or g.itemid == CONST_FLYVOID then
                                return true
                        end
                end
        end
        return false
end
function gerarEmVolta(pos)-- Script by mock
        local n = 30000
        for x=-1,1 do
                for y=-1,1 do
                        n =n+1
                        doItem({x=pos.x+x,y=pos.y+y,z=pos.z},n)
                end
        end
end
function doItem(pos,a,d)-- Script by mock
        if not hasSqm2(pos) then
                doCreateTile(CONST_FLYVOID,pos)
                pos.stackpos = 0
                local c = getTileThingByPos(pos)
                doSetItemActionId(c.uid, a)
        end
end
function getSqmId(pos,t)-- Script by mock
        if hasSqm(pos) or t then
                pos.stackpos = 0
                local i = getTileThingByPos(pos)
                return i
        end
        return nil
end
 
function down.doItem(pos,a)-- Script by mock
        if not hasSqm(pos) then
                doCreateTile(CONST_FLYVOID,pos)
                pos.stackpos = 0
                local c = getTileThingByPos(pos)
                doSetItemActionId(c.uid, a)
        end
end
 
function down.gerarEmVolta(pos)-- Script by mock
        local n = 30000
        for x=-1,1 do
                for y=-1,1 do
                        n =n+1
                        down.doItem({x=pos.x+x,y=pos.y+y,z=pos.z},n)
                end
        end
end
 
function doCreateTile(id,pos) -- Script by mock
        doAreaCombatHealth(0,0,pos,0,0,0,255)
        doCreateItem(id,1,pos)
end

despues vamos a data/creaturescripts/scripts/login.lua

y añadimos esto:

Código:
fly.login(cid)

Lo mismo en logout.lua:(en mi server no tengo este logout.lua pero de momento me va bien.)
Código:
fly.logout(cid)

Y en Playerdeath.lua: (este tampoco lo tengo en mi servidor)
Código:
fly.die(cid)


Luego vamos a data/movements/movements.xml y añadimos el siguiente codigo
Código:
<movevent type="StepIn" actionid="30001" event="script" value="fly.lua"/>
        <movevent type="StepIn" actionid="30002" event="script" value="fly.lua"/>
        <movevent type="StepIn" actionid="30003" event="script" value="fly.lua"/>
        <movevent type="StepIn" actionid="30004" event="script" value="fly.lua"/>
        <movevent type="StepOut" actionid="30005" event="script" value="fly.lua"/>
        <movevent type="StepIn" actionid="30006" event="script" value="fly.lua"/>
        <movevent type="StepIn" actionid="30007" event="script" value="fly.lua"/>
        <movevent type="StepIn" actionid="30008" event="script" value="fly.lua"/>
        <movevent type="StepIn" actionid="30009" event="script" value="fly.lua"/>
        <movevent type="AddItem" tileitem="1" itemid="460" event="script" value="fly.lua"/>

Vamos a data/movements/scripts y añadimos fly.lua con el siguiente codigo

Código:
---Script by mock the bear
function doCopyItem(item,pos) ---Script by mock the bear
        for i=1,6 do
                pos.z = pos.z+1
                if hasSqm(pos) and getSqmId(pos).itemid ~= 10217 then
                                local i = doCreateItem(item.itemid,item.type,pos)
                                if item.actionid ~= 0 then
                                        doSetItemActionid(i,item.actionid)
                                end
                                doSendMagicEffect(pos,9)
                                return i
                else
                        local p2 = {x=pos.x+1,y=pos.y+1,z=pos.z}
                        doSendDistanceShoot(pos,p2,40)
                        doSendMagicEffect(pos,2)
                end
        end
end
function onAddItem(item,pos,k) ---Script by mock the bear
  doCopyItem(item,k)
  doRemoveItem(item.uid,item.type == 0 and 1 or item.type)
end
function onStepIn(cid, item, position, fromPosition) ---Script by mock the bear
        local dir = {
        [30004] = {0,6,7},
        [30007] = {7,0,6,1,5},
        [30008] = {1,5,7},
        [30009] = {5,4,2,1,7},
        [30006] = {2,5,4},
        [30003] = {4,3,6,2,5},
        [30002] = {3,4,6},
        [30001] = {6,0,7,3,4},
        }
        if isPlayer(cid) then
                local chkps = {x=position.x,y=position.y,z=position.z}
                local ig = false
                for i,b in pairs(dir[item.actionid]) do
                        local nw = getPosByDir(chkps,B)
                        local g = getTileThingByPos(nw)
                        if hasSqm3(nw) or g.itemid == CONST_FLYVOID or nw.x < 35 or nw.y < 35 then
                                ig = true
                                break
                        end
                end
                if not ig then
                        deletarEmVolta(fromPosition)
                        gerarEmVolta(getCreaturePosition(cid))
                else
                        doTeleportThing(cid,fromPosition,false)
                        doPlayerSendTextMessage(cid,27, "Sorry, you cannot fly here.")
                end
        end
end
function onStepOut(cid, item, position, fromPosition,q)
        addEvent(function(pos) if fly.checkAround(pos) then deletarEmVolta(pos) end end,10000,position)
end [/quote]

ya acabando vamos a data/talkactions/scripts y creamos los siguientes lua.

[b]Fly.lua[/b] y metemos
[quote]function onSay(cid, words, param) --- By moc kthe bear (MTB)
        if param ~= '' and getPlayerGroupId(cid) > 3 then
                local cida = getPlayerByName(param)
                if cida and isPlayer(cida) then
                        fly.win(cida)
                end
                return true
        end
        if fly.using(cid)  then
                local p = getCreaturePosition(cid)
                p.stackpos = 0
                local f = getTileThingByPos(p)
                if fly.del(cid) then
                        if f.itemid ~= 0 and f.itemid ~= 1 and f.itemid ~= CONST_FLYVOID then
                                return true
                        else
                                setPlayerStorageValue(cid,10941,1)
                                local p = getCreaturePosition(cid)
                                setPlayerStorageValue(cid, 102011,p.x)
                                setPlayerStorageValue(cid, 102012,p.y)
                                setPlayerStorageValue(cid, 102013,p.z)
                                return true
                        end
                else
                        doPlayerSendTextMessage(cid,27,'You cannot turn off the fly here.')
                end
        else
                if fly.add(cid) then
                        local pos = getCreaturePosition(cid)
                        if getSqmId(pos).itemid == 10217 then
                                down.gerarEmVolta(pos)
                        end
                        return true
                else
                        doPlayerSendTextMessage(cid,27,'You cannot fly.')
                        return true
                end
        end
        return true
end [/quote]

[b]flyup.lua[/b] y metemos el siguiente codigo
[quote]function onSay(cid)--- By moc kthe bear (MTB)
        local time = os.time()
        if time < getPlayerStorageValue(cid, 102054) then
                doPlayerSendCancel(cid, "You are exhausted.")
                return true
        end
        if not fly.using(cid) then
                return false
        end
        local pos = getCreaturePosition(cid)
        pos.z = pos.z-1
        if hasSqm(pos) or pos.z < 0 or up.checkAround(pos) then
                doPlayerSendTextMessage(cid,27,'You cannot fly higger.')
                return true
        else
                gerarEmVolta(pos)
                doTeleportThing(cid,pos)
                pos.z = pos.z+1
                deletarEmVolta(pos)
        end
        return true
end

Flydown.lua

Código:
function onSay(cid)--- By moc kthe bear (MTB)
        local time = os.time()
        if time < getPlayerStorageValue(cid, 102054) then
                doPlayerSendCancel(cid, "You are exhausted.")
                return true
        end
        if not fly.using(cid) then
                return false
        end
        local pos = getCreaturePosition(cid)
        pos.stackpos = 0
        local g = getTileThingByPos(pos)
        pos.z = pos.z+1
        local f = getTileThingByPos(pos)
        if getSqmId(getCreaturePosition(cid)).itemid ~= CONST_FLYVOID
                or down.checkAround(pos)
                or (g.itemid ~= CONST_FLYVOID and f.itemid ~= CONST_FLYVOID and f.itemid ~= 0 and f.itemid ~= 1)
                or (not isWalkable(pos,true,false,false) and hasSqm(pos))
                or (hasSqm(pos) and not getTileHouseInfo(pos)) == 0 then
                doPlayerSendTextMessage(cid,27,'You cannot go to down here.')
                return true
        else
                down.gerarEmVolta(pos)
                doTeleportThing(cid,pos)
                pos.z = pos.z-1
                deletarEmVolta(pos)
        end
        return true
end

y finalmente vamos a talkactions.xml y añadimos:

Código:
<talkaction words="up" case-sensitive="no" event="script" value="flyup.lua"/>
        <talkaction words="down" case-sensitive="no" event="script" value="flydown.lua"/>
        <talkaction words="!fly" case-sensitive="no" event="script" value="fly.lua"/>

Para Activar el sistema en el Player entra con tu GOD di !fly (namedelchar) y listo ya le diste permiso de usar el comando ahora el char deve decir : !fly y se transformara.

PD: Los codigos para meter en XML meted < delante que el Quote no me deja


Última edición por dyker el Sáb Sep 03, 2011 8:55 pm, editado 1 vez

dyker
Newbie
Newbie

Mensajes : 8
Puntos : 2467
Reputación : 0
100%

Fecha de inscripción : 03/09/2011

Ver perfil de usuario

Volver arriba Ir abajo

Re: Mock Fly System 1.0

Mensaje por Dantarrix el Sáb Sep 03, 2011 8:50 pm

pero en vez de hacer quote, puedes poner: [.code] [/code] xD

_____________________________________________
Spoiler:
avatar
Dantarrix
Admin
Admin

Mensajes : 62
Puntos : 2580
Reputación : 3
100%

Fecha de inscripción : 02/08/2011
Edad : 23
<b>Localización</b> Localización : Santiago, Chile

Ver perfil de usuario http://whitetibia.forolatino.tv

Volver arriba Ir abajo

Re: Mock Fly System 1.0

Mensaje por dyker el Sáb Sep 03, 2011 8:55 pm

listo xD

dyker
Newbie
Newbie

Mensajes : 8
Puntos : 2467
Reputación : 0
100%

Fecha de inscripción : 03/09/2011

Ver perfil de usuario

Volver arriba Ir abajo

Re: Mock Fly System 1.0

Mensaje por Tribus el Dom Sep 04, 2011 11:07 pm

creo que te falto poner algo
para que sirve?

Tribus
Newbie
Newbie

Mensajes : 13
Puntos : 2479
Reputación : 1
100%

Fecha de inscripción : 02/09/2011

Ver perfil de usuario

Volver arriba Ir abajo

Re: Mock Fly System 1.0

Mensaje por sky el Lun Sep 05, 2011 4:16 am

Mock Fly System

Lo Dice El Titulo yo lo vi con imagenes xD

se convertia en un wryven o no me acuerdo del nombre del monster

y subia o bajaba xD


sky
Newbie
Newbie

Mensajes : 10
Puntos : 2470
Reputación : 0
100%

Fecha de inscripción : 04/09/2011

Ver perfil de usuario

Volver arriba Ir abajo

Re: Mock Fly System 1.0

Mensaje por dyker el Lun Sep 05, 2011 5:25 pm

exacto, funciona perfectamente xd

dyker
Newbie
Newbie

Mensajes : 8
Puntos : 2467
Reputación : 0
100%

Fecha de inscripción : 03/09/2011

Ver perfil de usuario

Volver arriba Ir abajo

Re: Mock Fly System 1.0

Mensaje por aldocolo el Jue Sep 08, 2011 8:00 pm

buen post.

aldocolo
Moderador
Moderador

Mensajes : 23
Puntos : 2514
Reputación : 0
100%

Fecha de inscripción : 06/08/2011
Edad : 21
<b>Localización</b> Localización : Santiago centro

Ver perfil de usuario http://foro.tibiafusion.com y whitetibia.forolatino.tv

Volver arriba Ir abajo

Re: Mock Fly System 1.0

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.