• TibiaFace

    Tibiaface | Una comunidad Open Tibia donde encontras : mapas, scripts, Otserver, npc y amigos etc ...

    .
    demo menumenu

    Afiliados



    Votar:

    [Ayuda] Ayuda con Cript de tema

    Compartir:

    Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje (Página 1 de 1.)

    1default [Ayuda] Ayuda con Cript de tema el Sáb Oct 27, 2018 8:25 pm

    jesusaron

    avatar
    Miembro
    Miembro
    Hola Alguien Que me ayude con soporte de un tema, quiero ver si se puede que al equiparse un ring te de % de recuperacion de vida de tu ataque por ejemplo el ring tiene un 50% de robo de vida es decir que si al monstruo le haces daño de 100 le te recupera 50 de HP


    [Tienes que estar registrado y conectado para ver este vínculo]

    Ver perfil de usuario

    2default Re: [Ayuda] Ayuda con Cript de tema el Mar Oct 30, 2018 10:13 am

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    todo esto en data/weapons

    arma

    Código:
    <melee id="XXXX" level="20" unproperly="1" event="script" value="weapon.lua"/>

    Código:
      local combat = createCombatObject()
        setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1)
        setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1)
        setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
        setCombatFormula(combat, COMBAT_FORMULA_SKILL, 0, 0, 1.0, 0)
     
    function onUseWeapon(cid, var)
        local skill = getPlayerSkill(cid,SKILL_SWORD) -- Change this to the type of weapon you are using
        local mat = 0.085*0.5*50*skill+(getPlayerLevel(cid)/5) -- Change 50 to the attack of the weapon
        local min = 5 -- this means 5% minimum healing
        local max = 15 -- this means 15% maximum healing
        local addhealth = math.random((mat * (min/100)), (mat * (max/100)))
     
        if getPlayerLevel(cid) >= 20 then
            doCreatureAddHealth(cid, addhealth)
            doSendAnimatedText(getPlayerPosition(cid),"+"..addhealth.."", TEXTCOLOR_GREEN)
            doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
            doCombat(cid, combat, var)
        else
            doPlayerSendCancel(cid, 'You need level 20 to use this weapon.')
        end
    end


    o tambien podemos hacer esto para una sola linea y ocupen varias armas de diferent habilidades y que tome un porcentaje del daño solo remplzando esta funcion

    Código:

    function onUseWeapon(cid, var)
        local skillType = {
            [WEAPON_FIST ] = SKILL_FIST    ;
            [WEAPON_CLUB ] = SKILL_CLUB    ;
            [WEAPON_SWORD] = SKILL_SWORD    ;
            [WEAPON_AXE  ] = SKILL_AXE      ;
            [WEAPON_DIST ] = SKILL_DISTANCE ;
            } ;
        local attackWeapon  = getItemAttribute(getPlayerWeapon(cid, true).uid,  "attack") or getItemInfo(getPlayerWeapon(cid,  true)["itemid"])["attack"] ;
        local skill = getPlayerSkill(cid, skillType[getItemWeaponType(getPlayerWeapon(cid, true).uid)]) ;
        local level = getPlayerLevel(cid)/5 ;
        local mat = ( 0.085 * attackWeapon * skill + level ) ;






    wands

    Código:
    <wand id="XXXX" level="50" mana="15" event="script" value="wand.lua"> <!-- Healing Wand -->
            <vocation id="1"/>
        </wand>


    Código:
    local combat = createCombatObject()
        setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
        setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
        setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_HOLY)
     
        function onGetFormulaValues(cid, level, maglevel)
        min = -(maglevel*4) -level/5
        max = -(maglevel*6) -level/5
     
        return min, max
        end
     
        setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
     
    function onUseWeapon(cid, var)
     
        local level, magic, target = getPlayerLevel(cid), getPlayerMagLevel(cid), getCreatureTarget(cid)
        local mat1, mat2 = magic*2+level/10, magic*3+level/10 -- 50% from the min/max above
        local xmat1, xmat2 = magic*4+level/5, magic*6+level/5 -- same as the min/max above
        local percent = 10 -- change here the % of the healing.
        local health, xhealth = math.random((mat1 * (percent/100)), (mat2 * (percent/100))), math.random((xmat1 * (percent/100)), (xmat2 * (percent/100)))
     
        if isPlayer(target) then
            doCreatureAddHealth(cid, health)
                doSendAnimatedText(getPlayerPosition(cid),"+"..health.."", TEXTCOLOR_GREEN)
                doCombat(cid, combat, var)
        else
            doCreatureAddHealth(cid, xhealth)
                doSendAnimatedText(getPlayerPosition(cid),"+"..xhealth.."", TEXTCOLOR_GREEN)
                doCombat(cid, combat, var)
        end
        return true
    end




    Ver perfil de usuario http://www.tibiaface.com

    3default [Weapons] Ayuda el Miér Oct 31, 2018 12:17 am

    jesusaron

    avatar
    Miembro
    Miembro
    Hola, y en le caso de ring como puedo poner ese slot?
    gracias por el soporte

    Ver perfil de usuario

    4default Re: [Ayuda] Ayuda con Cript de tema el Miér Oct 31, 2018 1:55 pm

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    no se puede



    Ver perfil de usuario http://www.tibiaface.com

    5default Re: [Ayuda] Ayuda con Cript de tema el Sáb Nov 03, 2018 12:52 am

    AJAJAJAJAJA



    Si necesitas hospedaje para tu servidor usa este enlace y mira las buenos planes de Windows y Linux:

    SevuOT Online, Version:10 and Custom.

    Ver perfil de usuario

    6default Re: [Ayuda] Ayuda con Cript de tema el Sáb Nov 03, 2018 1:38 am

    Crea un nuevo archivo lua en la carpeta /data/creaturescripts/scripts y lo nombras como quieras, luego abres el archivo y pegas este codigo.

    Código:
    local slot = CONST_SLOT_RING
    local rings = {
       [xxxx] = { hitpointsleechchance = 25, hitpointsleechamount = 50 }
    }

    function onStatsChange(cid, attacker, type, combat, value)
       if type == STATSCHANGE_HEALTHLOSS and isPlayer(attacker) then
          local slotid = getPlayerSlotItem(attacker, slot).itemid
          local ring = rings[slotid]
          if ring then
             local chance = ring.hitpointsleechchance
             local amount = ring.hitpointsleechamount
             if math.random(1, 100) <= chance then
                local gain = value * (amount / 100)
                doCreatureAddHealth(attacker, gain)
                doSendAnimatedText(getCreaturePosition(attacker), "Absorb", TEXTCOLOR_RED)
             end
          end
       end
       return true
    end

    Donde estan las XXXX van los ID de los ring con su respectiva configuracion para cada ring,
    guardas el archivo, y abres el archivo /data/creaturescripts/creaturescripts.xml y agregas esta linea.
    Código:
    <event type="statschange" name="HitPointsLeech" event="script" value="NombreDelArchivo.lua"/>

    Guardas y te vas a tu login.lua y agregas esto:
    Código:
    registerCreatureEvent(cid, "HitPointsLeech")
    listo!

    cierras el server, lo vuelves a abrir y testeas pegandole a otro player, usando el ring que configurastes a ver si ya absorbe vida.



    Si necesitas hospedaje para tu servidor usa este enlace y mira las buenos planes de Windows y Linux:

    SevuOT Online, Version:10 and Custom.

    Ver perfil de usuario

    7default Gracias el Sáb Nov 03, 2018 2:19 am

    jesusaron

    avatar
    Miembro
    Miembro
    Resuelto

    Ver perfil de usuario

    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.

     

    BienvenidosTibiaFace es una comunidad de Open Tibia. Para participar debes estar registrado (click para Regístrate).