BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

[Pedido] Scripts y dudas de servers wars...[Resuelto]

[Pedido] Scripts y dudas de servers wars...[Resuelto]

Hellscors


Miembro
jelou Sad

bueno traigo unas cuantas dudas que ojala me ashuden a solucionarlo ,porque ya busque por todas partes y no encontre nadatl .

1.- Como hacer para que una Wall tape la subida en una escalera ,es decir ,al poner magic wall arriba de una escalera ,el player no pueda subir hasta que se quite la wall. (Ya que en este server pongo la wall y al subir la desaparece la wall) la tumbo xd

2.- Como he visto en unos servers al entrar a una zona pz ( templo ) se les quita el battle automaticamente ¿donde se edita eso?

4.- Y por ultimo quisiera pedir un script de Skills para los players nuevos ,osea que al entrar los players ya tengan avanzando en skills( dependiendo de su vocacion ) busqué este script y el unico que encontre fue :

Código:
http://www.blacktibia.org/t3029-pedido-scrypt-skills-up-al-login

Pero tiene un problema ,el cual ,al crearte la cuenta ,todo bien ,pero al querer entrar a tu mono creado por primera vez ,te da debug ,y ya al segundo intento todo bien ... por eso quisiera otro oh no se que tiene ese xD



Última edición por Hellscors el Mar Jun 21, 2016 5:42 pm, editado 4 veces

http://www.blacktibia.org/t32971-86-prestige-imperia-ot-server-h

Belerofonte


Administrador
[Tienes que estar registrado y conectado para ver este vínculo] escribió:1.- Como hacer para que una Wall tape la subida en una escalera ,es decir ,al poner magic wall arriba de una escalera ,el player no pueda subir hasta que se quite la wall. (Ya que en este server pongo la wall y al subir la desaparece la wall) la tumbo xd
Spoiler:

Código:
<movevent type="StepIn" itemid="5260" event="script" value="noSubir.lua" />
Tendrás que ponerle el Id de cada escalera. En el caso de las compuestas por 2 piezas, solamente tendrás que poner la que hace que el jugador suba.
Si lo quieres en todas... desgraciadamente tendrás que ponerle todas. Cada Id separado por punto y coma ;

Código:
local MagicWalls = {1492, 1495, 1496, 1497} -- Id de los objetos que bloquearán las escaleras.

function onStepIn(cid, item, position, fromPosition, toPosition)
    for _, mw in ipairs(MagicWalls) do
        if getTileItemById({x = position.x, y = position.y, z = position.z - 1}, mw).itemid == mw then
            doTeleportThing(cid, fromPosition, false)
         doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You can't climb the " .. getItemNameById(item.itemid) .. " because " .. getItemArticleById(mw) .. " " .. getItemNameById(mw) .. " hampers the top floor.")
        end
    end
    return true
end



[Tienes que estar registrado y conectado para ver este vínculo] escribió:Y por ultimo quisiera pedir un script de Skills para los players nuevos ,osea que al entrar los players ya tengan avanzando en skills( dependiendo de su vocacion )
Spoiler:
En tu login.lua, antes del último return true pegas lo siguiente:
Código:
local config = {
    [1] = { -- Sorcerer
        ML = 60, -- Magic Level
        Shield = 20, -- Shield
    },

    [2] = { -- Druid
        ML = 60, -- Magic Level
        Shield = 20, -- Shield
        Fish = 5, -- Fishing
    },

    [3] = { -- Paladin
        Distance = 81, -- Distance
        Shield = 81, -- Shield
        ML = 21, -- Magic Level
    },

    [4] = { -- Knight
        Fist = 81, -- Fist
        Sword = 81, -- Sword
        Axe = 81, -- Axe
        Club = 81, -- Club
        Shield = 81, -- Shield
        ML = 11, -- Magic Level
    },
}

    if getPlayerLastLogin(cid) == nil then
        local v = config[getPlayerVocation(cid)]
        if v then
            local s = {
                [SKILL_FIST] = v.Fist,
                [SKILL_SHIELD] = v.Shield,
                [SKILL_DISTANCE] = v.Distance,
                [SKILL_SWORD] = v.Sword,
                [SKILL_CLUB] = v.Club,
                [SKILL_AXE] = v.Axe,
                [SKILL_FISHING] = v.Fish,
            }
            if getPlayerMagLevel(cid) < v.ML then
                doPlayerAddMagLevel(cid, v.ML - getPlayerMagLevel(cid))
            end
            for skill, count in pairs(s) do
                if getPlayerSkill(cid, skill) < count then
                    doPlayerAddSkill(cid, skill, count - getPlayerSkill(cid, skill))
                end
            end
        end
    end



Sugerencia para evitar futuros quebraderos de cabeza:
[Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo]
[Tienes que estar registrado y conectado para ver esa imagen]

Neowar


Novato
[Tienes que estar registrado y conectado para ver este vínculo] escribió:
[Tienes que estar registrado y conectado para ver este vínculo] escribió:1.- Como hacer para que una Wall tape la subida en una escalera ,es decir ,al poner magic wall arriba de una escalera ,el player no pueda subir hasta que se quite la wall. (Ya que en este server pongo la wall y al subir la desaparece la wall) la tumbo xd
Spoiler:

Código:
<movevent type="StepIn" itemid="5260" event="script" value="noSubir.lua" />
Tendrás que ponerle el Id de cada escalera. En el caso de las compuestas por 2 piezas, solamente tendrás que poner la que hace que el jugador suba.
Si lo quieres en todas... desgraciadamente tendrás que ponerle todas. Cada Id separado por punto y coma ;

Código:
local MagicWalls = {1492, 1495, 1496, 1497} -- Id de los objetos que bloquearán las escaleras.

function onStepIn(cid, item, position, fromPosition, toPosition)
    for _, mw in ipairs(MagicWalls) do
        if getTileItemById({x = position.x, y = position.y, z = position.z - 1}, mw).itemid == mw then
            doTeleportThing(cid, fromPosition, false)
 doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You can't climb the " .. getItemNameById(item.itemid) .. " because " .. getItemArticleById(mw) .. " " .. getItemNameById(mw) .. " hampers the top floor.")
        end
    end
    return true
end
Esto es al subir, tambien funciona al bajar?

Belerofonte


Administrador
[Tienes que estar registrado y conectado para ver este vínculo] escribió:Esto es al subir, tambien funciona al bajar?
No, ya que se ha de registrar el Id de la escalera, es decir, el objeto que el usuario va a pisar para que se ejecute el script.
Y en el mismo, también se va a detectar el objeto que haya en la coordenada:
{x = position.x, y = position.y, z = position.z - 1} O sea, la posición del piso superior para detectar el magic wall.

Precisamente [Tienes que estar registrado y conectado para ver este vínculo] me pidió por privado, mostrándome este link, que hiciera ese script pero al revés:
[Tienes que estar registrado y conectado para ver este vínculo]

Ahí, sí afecta solo al subir. Ya que, al contrario de lo dicho: el Id registrado es de la Trap Door que active el script.
Y la coordenada tiene: z = position.z + 1. Ése es el que buscas.



Sugerencia para evitar futuros quebraderos de cabeza:
[Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo]
[Tienes que estar registrado y conectado para ver esa imagen]

Hellscors


Miembro
@Belero

En el script de Start Skills me quedo asi el login.lua

Código:
local config = {
 loginMessage = getConfigValue('loginMessage'),
 useFragHandler = getBooleanFromString(getConfigValue('useFragHandler'))
}

function onLogin(cid)
 local loss = getConfigValue('deathLostPercent')
 if(loss ~= nil) then
 doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 10)
 doPlayerAddBlessing(cid, 1)
 doPlayerAddBlessing(cid, 2)
 doPlayerAddBlessing(cid, 3)
 doPlayerAddBlessing(cid, 4)
 doPlayerAddBlessing(cid, 5)
 end

 local accountManager = getPlayerAccountManager(cid)
 if(accountManager == MANAGER_NONE) then
 local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage
 if(lastLogin > 0) then
 doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
 str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "."
 else
 str = str .. " Please choose your outfit."
 doPlayerSendOutfitWindow(cid)
 end

 doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
 elseif(accountManager == MANAGER_NAMELOCK) then
 doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, it appears that your character has been namelocked, what would you like as your new name?")
 elseif(accountManager == MANAGER_ACCOUNT) then
 doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to manage your account and if you want to start over then type 'cancel'.")
 else
 doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to create an account or type 'recover' to recover an account.")
 end

 if(not isPlayerGhost(cid)) then
 doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
 end

     registerCreatureEvent(cid, "kill")
     registerCreatureEvent(cid, "onPrepareDeath")
     registerCreatureEvent(cid, "PlayerLogout")
     registerCreatureEvent(cid, "playeradvance")
     registerCreatureEvent(cid, "ZombieAttack")
     registerCreatureEvent(cid, "wholook")
     registerCreatureEvent(cid, "Playerkill")
     registerCreatureEvent(cid, "showKD")
     registerCreatureEvent(cid, "onPrepareDeath")
     registerCreatureEvent(cid, "deathBroadcast")
     registerCreatureEvent(cid, "DeathBroadcast")

 registerCreatureEvent(cid, "Idle")
 if(config.useFragHandler) then
 registerCreatureEvent(cid, "SkullCheck")
 end

 registerCreatureEvent(cid, "ReportBug")
local config = {
    [1] = { -- Sorcerer
        ML = 100, -- Magic Level
        Shield = 30, -- Shield
    },

    [2] = { -- Druid
        ML = 100, -- Magic Level
        Shield = 30, -- Shield
        Fish = 5, -- Fishing
    },

    [3] = { -- Paladin
        Distance = 90, -- Distance
        Shield = 30, -- Shield
        ML = 21, -- Magic Level
    },

    [4] = { -- Knight
        Fist = 15, -- Fist
        Sword = 90, -- Sword
        Axe = 90, -- Axe
        Club = 90, -- Club
        Shield = 40, -- Shield
        ML = 10, -- Magic Level
    },
}

    if getPlayerLastLogin(cid) == nil then
        local v = config[getPlayerVocation(cid)]
        if v then
            local s = {
                [SKILL_FIST] = v.Fist,
                [SKILL_SHIELD] = v.Shield,
                [SKILL_DISTANCE] = v.Distance,
                [SKILL_SWORD] = v.Sword,
                [SKILL_CLUB] = v.Club,
                [SKILL_AXE] = v.Axe,
                [SKILL_FISHING] = v.Fish,
            }
            if getPlayerMagLevel(cid) < v.ML then
                doPlayerAddMagLevel(cid, v.ML - getPlayerMagLevel(cid))
            end
            for skill, count in pairs(s) do
                if getPlayerSkill(cid, skill) < count then
                    doPlayerAddSkill(cid, skill, count - getPlayerSkill(cid, skill))
                end
            end
        end
    end
 return true
end

Perooootl ,no me da error ni nada ,pero al crearme los monos no me otorga ningún skill ,hice algo mal? o tengo que poner algo mas en otra parte?


Y en la de escalera tampoco funcionó xD ,sigue sin prohibir el paso ,y solo la uso para una escalera (ladder) la que le das click para subir pero no prohibe la subida u.u

http://www.blacktibia.org/t32971-86-prestige-imperia-ot-server-h

Belerofonte


Administrador
Comentario re-editado

Scripts sin mensaje y sin permitir subir solo si las magic wall se encuentran en el norte/sur/este/oeste de la trapDoor, como acordamos en el chatbox. (Lo menciono por si cualquier otro ajeno a este pedido viene buscando lo mismo )

Server/Data/Actions/Scripts/Other/... teleport.lua
Código:
local fields = {1492, 1495, 1496, 1497} -- Id de los objetos que bloquearán las escaleras.
local upFloorIds = {1386, 3678, 5543} -- Id de las escaleras a usar. No las del movements, solo las que se vayan a clicar.

function onUse(cid, item, fromPosition, itemEx, toPosition)
    if isInArray(upFloorIds, item.itemid) then
        local field = getTileItemByType({x = fromPosition.x, y = fromPosition.y + 1, z = fromPosition.z - 1}, ITEM_TYPE_MAGICFIELD)
        if isInArray(fields, field.itemid) then
            return false
        end
        fromPosition.z = fromPosition.z - 1
        fromPosition.y = fromPosition.y + 1
    else
        fromPosition.z = fromPosition.z + 1
    end
    doTeleportThing(cid, fromPosition, false)
    return true
end





Server/Data/Movements/Scripts/... noSubir.lua
Código:
local fields = {1492, 1495, 1496, 1497} -- Id de los objetos que bloquearán las escaleras.

function onStepIn(cid, item, position, fromPosition, toPosition)
    local dir = {
        {x = position.x, y = position.y - 1, z = position.z - 1}, -- norte
        {x = position.x, y = position.y + 1, z = position.z - 1}, -- sur
        {x = position.x + 1, y = position.y, z = position.z - 1}, -- este
        {x = position.x - 1, y = position.y, z = position.z - 1}, -- oeste
    }
    for i = 1, #dir do
        local field = getTileItemByType(dir[i], ITEM_TYPE_MAGICFIELD)
        if fromPosition.z == position.z and isInArray(fields, field.itemid) then
            doTeleportThing(cid, fromPosition, false)
            return
        end
    end
    return true
end



Sugerencia para evitar futuros quebraderos de cabeza:
[Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo]
[Tienes que estar registrado y conectado para ver esa imagen]

Hellscors


Miembro
Listo ese de wall si funcionó ,mas el de start skills da debug ,help xD

http://www.blacktibia.org/t32971-86-prestige-imperia-ot-server-h

Hellscors


Miembro
Bring
Up
My
Post!

Solo me falta el de Start Skills ! ,sigo buscando scripts pero me sigue dando debug!
Porfa ,alguien que tenga uno ,oh me diga que me falta configurar D;

http://www.blacktibia.org/t32971-86-prestige-imperia-ot-server-h

Contenido patrocinado


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

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

 

¿Quién está en línea?

En total hay 1 usuario en línea: 0 Registrados, 0 Ocultos y 1 Invitado

Usuarios navegando en este foro: Ninguno

Forum Statistics

Nuestros miembros han públicado un total de posts en temas.
Actualmente hay miembros registrados.
Démosle la bienvenida al miembro más reciente,
La mayor cantidad de usuarios en línea ha sido de .