• TibiaFace

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

    .
    demo menumenu

    Afiliados



    Votar:

    [Sistema] Exercise Weapons (Tfs 1.x)

    Compartir:

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

    1default [Sistema] Exercise Weapons (Tfs 1.x) el Mar Sep 11, 2018 11:36 pm

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    Hola Tibiaface, esa es la primera versión del "Ejercicio Weapons",


    Siéntase libre de sugerir modificaciones y ayudar a mejorarlo!
    Si no tiene los sprites, puede utilizar otros, como el "Training Dummy" y otros items correspondientes.

    [Sistema] Exercise Weapons (Tfs 1.x) JkujujA

    nos vamos a data/actions/scripts

    copiamos cualquier archivo y renombramos por exercise_training.lua y pegamos esto dentro

    Código:
    local skills = {
       [26397] = {id=SKILL_SWORD,voc=4},
       [26398] = {id=SKILL_AXE,voc=4},
       [26399] = {id=SKILL_CLUB,voc=4},
       [26400] = {id=SKILL_DISTANCE,voc=3,range=CONST_ANI_SIMPLEARROW},
       [26401] = {id=SKILL_MAGLEVEL,voc=2,range=CONST_ANI_ENERGY},
       [26402] = {id=SKILL_MAGLEVEL,voc=1,range=CONST_ANI_FIRE},
    }

    ------- CONFIG -----//
    local dummies = {26403,26404}
    local skill_gain = 1 -- per hit
    local gain_stamina = 60

    local function start_train(pid,start_pos,itemid,fpos)
       local player = Player(pid)
       if player ~= nil then
          local pos_n = player:getPosition()

          if start_pos:getDistance(pos_n) == 0 and getTilePzInfo(pos_n) then
             if player:getItemCount(itemid) >= 1 then
                local exercise = player:getItemById(itemid,true)

                if exercise:isItem() then
                   if exercise:hasAttribute(ITEM_ATTRIBUTE_CHARGES) then
                      local charges_n = exercise:getAttribute(ITEM_ATTRIBUTE_CHARGES)

                      if charges_n >= 1 then
                         exercise:setAttribute(ITEM_ATTRIBUTE_CHARGES, (charges_n-1))

                         local required = 0
                         local currently = 0
                         local voc = player:getVocation()

                         if skills[itemid].id == SKILL_MAGLEVEL then
                            required = voc:getRequiredManaSpent(player:getBaseMagicLevel() + 1)/skill_gain
                            currently = player:getManaSpent()
                            player:addManaSpent(required - currently)
                         else
                            required = voc:getRequiredSkillTries(skills[itemid].id, player:getSkillLevel(skills[itemid].id)+1)/skill_gain
                            currently = player:getSkillTries(skills[itemid].id)

                            player:addSkillTries(skills[itemid].id, (required - currently))
                         end

                         fpos:sendMagicEffect(CONST_ME_HITAREA)
                         if skills[itemid].range then
                            pos_n:sendDistanceEffect(fpos, skills[itemid].range)
                         end
                          player:setStamina(player:getStamina() + 60)

                          if charges_n == 1 then
                            exercise:remove(1)
                            return true
                          end
                         local training = addEvent(start_train, voc:getAttackSpeed(), pid,start_pos,itemid,fpos)
                      else
                         exercise:remove(1)
                         stopEvent(training)
                      end
                   end
                end
             end
          else
             stopEvent(training)
          end
       else
          stopEvent(training)
       end
       return true
    end

    function onUse(player, item, fromPosition, target, toPosition, isHotkey)
       local start_pos = player:getPosition()

       if target:isItem() then
          if isInArray(dummies,target:getId()) then
             if not skills[item.itemid].range and (start_pos:getDistance(target:getPosition()) > 1) then
                stopEvent(training)
                return false
             end
             if not player:getVocation():getId() == skills[item.itemid].voc or not player:getVocation():getId() == (skills[item.itemid].voc+4) then
                stopEvent(training)
                return false
             end
              player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You started training.")
             start_train(player:getId(),start_pos,item.itemid,target:getPosition())
          end
       end

       return true
    end

    luego a nos vamos a data/actions/actions.xml

    Código:
    <action fromid="26397" toid="26402" script="exercise_training.lua" allowfaruse="1"/>

    ahora nos vamos a la carpeta data/events/events.xml

    y modificamos esta parte (enable="0" para "1")

    y que quede asi

    Código:
    <event class="Player" method="onTradeRequest" enabled="1" />

    ahora en data/events/scripts/player.lua

    agregamos esta linea al inicio del archivo

    Código:
    local exercise_ids = {26397,26398,26399,26400,26401,26402}

    despues de esta funcion function Player:OnMoveItem agregamos

    Código:
    -- Exercise Weapons
        if isInArray(exercise_ids,item.itemid) then
            self:sendCancelMessage('You cannot move this item outside this container.')
            return false
        end

    abajo de esta funcion agregue function Player:OnTradeRequest

    Código:
    if isInArray(exercise_ids,item.itemid) then
            return false
        end

    creditos:  rod_doidim



    [Sistema] Exercise Weapons (Tfs 1.x) YNU5B25
    Ver perfil de usuario https://www.tibiaface.com

    2default Re: [Sistema] Exercise Weapons (Tfs 1.x) el Dom Nov 11, 2018 4:58 pm

    Erickguzma

    Erickguzma
    Miembro
    Miembro
    como podria modificarse para ganar menos skils? ahi dice 1 por hit no?

    Ver perfil de usuario

    3default Re: [Sistema] Exercise Weapons (Tfs 1.x) el Dom Nov 11, 2018 6:07 pm

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:como podria modificarse para ganar menos skils? ahi dice 1 por hit no?

    si dice
    local skill_gain = 1 -- per hit



    [Sistema] Exercise Weapons (Tfs 1.x) YNU5B25
    Ver perfil de usuario https://www.tibiaface.com

    4default Re: [Sistema] Exercise Weapons (Tfs 1.x) el Lun Nov 12, 2018 2:31 pm

    Erickguzma

    Erickguzma
    Miembro
    Miembro
    pero si quisiera que ganara poco, como si estuviera en training con monk

    Ver perfil de usuario

    5default Re: [Sistema] Exercise Weapons (Tfs 1.x) el Mar Dic 18, 2018 11:09 pm

    Aqui esta una pequeña modificacion del mismo script creado por Maya:
    Los cambios fueron los siguientes: ya no sube 1 skill por hit, ahora sube normalmente como si estubieses pegandole a un monster y con el mana pasa lo mismo es como si gastases 100 de mana con una spell por ejemplo.

    existe una variable que se llama debug_on, cuando esta en true, genera mensajes en la consola que te muestran cuantos hit esta ganando cada jugdor que este usando este skill dummy, solo ponlo en false para evitar esos mensajes.

    bueno sin mas aqui esta el codigo:


    Código:
    local skills = {
        [26397] = { id = SKILL_SWORD, voc = 4 },
        [26398] = { id = SKILL_AXE, voc = 4 },
        [26399] = { id = SKILL_CLUB, voc = 4 },
        [26400] = { id = SKILL_DISTANCE, voc = 3, range = CONST_ANI_SIMPLEARROW },
        [26401] = { id = SKILL_MAGLEVEL, voc = 2, range = CONST_ANI_ENERGY },
        [26402] = { id = SKILL_MAGLEVEL, voc = 1, range = CONST_ANI_FIRE },
    }

    ------- CONFIG -----
    local dummies = { 26403, 26404 }
    local skill_gain_tries = 1
    local spent_mana_tries = 100
    local gain_stamina = 60
    local trainingEvents = {}
    local debug_on = true

    local function start_train(pid, start_pos, itemid, fpos)
        local player = Player(pid)
        if player ~= nil then
            local pos_n = player:getPosition()
            if start_pos:getDistance(pos_n) == 0 and getTilePzInfo(pos_n) then
                if player:getItemCount(itemid) >= 1 then
                    local exercise = player:getItemById(itemid,true)
                    if exercise:isItem() then
                        if exercise:hasAttribute(ITEM_ATTRIBUTE_CHARGES) then
                            local charges_n = exercise:getAttribute(ITEM_ATTRIBUTE_CHARGES)
                            if charges_n >= 1 then
                                exercise:setAttribute(ITEM_ATTRIBUTE_CHARGES, (charges_n-1))
                                local currently = 0
                                local voc = player:getVocation()
                                if skills[itemid].id == SKILL_MAGLEVEL then
                                    player:addManaSpent(spent_mana_tries)
                                    if debug_on then
                                        print(string.format([[El jugador: %s esta adquiriendo %u puntos de consumo de mana.]], player:getName(), spent_mana_tries))
                                    end
                                else
                                    player:addSkillTries(skills[itemid].id, skill_gain_tries)
                                    if debug_on then
                                        print(string.format([[El jugador: %s esta adquiriendo %u puntos de skill.]], player:getName(), skill_gain_tries))
                                    end
                                end
                                fpos:sendMagicEffect(CONST_ME_HITAREA)
                                if skills[itemid].range then
                                    pos_n:sendDistanceEffect(fpos, skills[itemid].range)
                                end
                                player:setStamina(player:getStamina() + 60)
                                if charges_n == 1 then
                                    exercise:remove(1)
                                    return true
                                end
                                trainingEvents[pid] = addEvent(start_train, voc:getAttackSpeed(), pid, start_pos, itemid, fpos)
                            else
                                exercise:remove(1)
                                stopEvent(trainingEvents[pid])
                            end
                        end
                    end
                end
            else
                stopEvent(trainingEvents[pid])
            end
        else
            stopEvent(trainingEvents[pid])
        end
        return true
    end

    function onUse(player, item, fromPosition, target, toPosition, isHotkey)
        local start_pos = player:getPosition()
        if target:isItem() then
            if isInArray(dummies,target:getId()) then
                if not skills[item.itemid].range and (start_pos:getDistance(target:getPosition()) > 1) then
                    stopEvent(trainingEvents[player:getId()])
                    return false
                end
                if not player:getVocation():getId() == skills[item.itemid].voc or not player:getVocation():getId() == (skills[item.itemid].voc+4) then
                    stopEvent(trainingEvents[player:getId()])
                    return false
                end
                player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You started training.")
                start_train(player:getId(), start_pos, item.itemid, target:getPosition())
            end
        end
        return true
    end



    Última edición por [Adm] SevuOT el Lun Dic 31, 2018 9:42 pm, editado 1 vez



    Si necesitas hospedaje para tu servidor usa este enlace y mira los buenos planes de Windows y Linux:
    Si tu cuenta de PayPal no esta verificada no importara, igual aceptan pagos con cuentas no verificadas.


    [Sistema] Exercise Weapons (Tfs 1.x) TRJEB8aSRYK5IulEU6ilJw
    Ver perfil de usuario

    6default Re: [Sistema] Exercise Weapons (Tfs 1.x) el Mar Dic 18, 2018 11:35 pm

    azteca

    azteca
    Nuevo Miembro
    Nuevo Miembro
    [Tienes que estar registrado y conectado para ver este vínculo]
    use solo una y me subio el skill completo y copie todo como dice tu script

    Ver perfil de usuario

    7default Re: [Sistema] Exercise Weapons (Tfs 1.x) el Mar Dic 18, 2018 11:58 pm

    azteca

    azteca
    Nuevo Miembro
    Nuevo Miembro
    Me podrias ayudar a que no suba todo el skill, no se como explicarme pero que sirva como esto [Tienes que estar registrado y conectado para ver este vínculo] que dependa de varias varitas para subir un skill

    Ver perfil de usuario

    8default Re: [Sistema] Exercise Weapons (Tfs 1.x) el Miér Dic 19, 2018 12:13 am

    azteca

    azteca
    Nuevo Miembro
    Nuevo Miembro
    invoco a @[Adm] SevuOT en modo de ayuda Sad

    Ver perfil de usuario

    9default Re: [Sistema] Exercise Weapons (Tfs 1.x) el Lun Dic 31, 2018 9:48 pm

    [Tienes que estar registrado y conectado para ver este vínculo] escribió:invoco a @[Adm] SevuOT en modo de ayuda Sad
    verifica nuevamente mi respuesta, la he actualizado nuevamente.
    [Tienes que estar registrado y conectado para ver este vínculo]



    Si necesitas hospedaje para tu servidor usa este enlace y mira los buenos planes de Windows y Linux:
    Si tu cuenta de PayPal no esta verificada no importara, igual aceptan pagos con cuentas no verificadas.


    [Sistema] Exercise Weapons (Tfs 1.x) TRJEB8aSRYK5IulEU6ilJw
    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.

    Temas Recomendados×+

       

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