• TibiaFace

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

    .
    demo menumenu

    Afiliados



    Votar:

    [Aporte] Al matar un player ganas un objeto, y se anuncia su muerte

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

    Invitado


    Invitado
    Hola amig@s de tibiaface, aqui tienen un script para que cuando mates a otro player te ganes un objeto ( corazon ) y se anuncie su muerte por broadcast.
    ADVERTENCIA: Solo es compatible con server TFS 1.0 to 1.3

    para comenzar tendran que abrir el archivo ( data/creaturescripts/creaturescripts.xml ) y pegan el siguiente codigo:
    Código:
    <event type="kill" name="playerKills" script="player_kills.lua"/>
    Guardan y ahora crearan un archivo lua, llamado ( player_kills.lua ) en ( data/creaturescripts/scripts/... ) y pegan dentro de ese archivo lo siguiente:
    Código:
    local gainItemId = 2160

     function onKill(player, target)
     if player:isPlayer() and target:isPlayer() then
     local item = Game.createItem(gainItemId)
     local description = 'Este corazon pertenece a ' .. target:getName() .. ' fue asesinado cuando era level ' .. target:getLevel() .. ' y fue arrancado por ' .. player:getName() .. '.'
     item:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, description)
     player:addItemEx(item)
     -- broadcast message
     local message = 'El jugador ' .. player:getName() .. '[' .. player:getLevel() ..'] ha asesinado a ' .. target:getName() .. '[' .. target:getLevel() .. ']'
     Game.broadcastMessage(message, MESSAGE_STATUS_DEFAULT)
     end
     return true
     end
    Guardan nuevamente, y ahora abren el archivo ( data/creaturescripts/scripts/login.lua ) y agregan este pequeño codigo:
    Código:
    player:registerEvent('playerKills')

    Espero que a todos les funcione al 100% y les guste mucho.



    Última edición por Sarah Wesker el Jue 20 Jul 2017, 5:07 pm, editado 1 vez (Razón : de seguro algo andaba mal)

    Demonius


    Nuevo Miembro
    Nuevo Miembro
    Me intereso el script ya que e buscado uno, pero al momento de hacer todo en la consola me dice esto. '=' expected near 'description' tal vez este algo mal en el script o sere yo. espero y puedas resolver mi duda

    Ver perfil de usuario

    3Thông báo mas informacion el Lun 17 Jul 2017, 4:26 pm

    Invitado


    Invitado
    acuerdate de dejar en los comentarios, la version de tu server! y si tienes algun error en la consola, tambien puedes dejar una imagen y asi resolver el problema!

    Demonius


    Nuevo Miembro
    Nuevo Miembro
    Si uso otx y esta basado en tfs 1.3  



    y uso ese código de login


    Código:
    local events = {
        'ElementalSpheresOverlords',
        'BigfootBurdenVersperoth',
        'Razzagorn',
        'Shatterer',
        'Zamulosh',
     'The Hunger',
     'The Rage',
     'Eradicator',
     'Eradicator1',
     'Rupture',
     'World Devourer',
        'Tarbaz',
        'Shulgrax',
        'Ragiaz',
        'Plagirath',
        'Mazoran',
        'Destabilized',
        'BigfootBurdenWiggler',
        'SvargrondArenaKill',
        'NewFrontierShardOfCorruption',
        'NewFrontierTirecz',
        'ServiceOfYalaharDiseasedTrio',
        'ServiceOfYalaharAzerus',
        'ServiceOfYalaharQuaraLeaders',
        'InquisitionBosses',
        'InquisitionUngreez',
        'KillingInTheNameOfKills',
     'KillingInTheNameOfKillss',
     'KillingInTheNameOfKillsss',
        'MastersVoiceServants',
        'SecretServiceBlackKnight',
        'ThievesGuildNomad',
        'WotELizardMagistratus',
        'WotELizardNoble',
        'WotEKeeper',
        'WotEBosses',
        'WotEZalamon',
        'WarzoneThree',
        'PlayerDeath',
        'AdvanceSave',
        'bossesWarzone',
        'AdvanceRookgaard',
        'PythiusTheRotten',
        'DropLoot',
        'Yielothax',
        'BossParticipation',
        'Energized Raging Mage',
        'Raging Mage',
        'modalMD1',
     'VibrantEgg',
        'DeathCounter',
        'KillCounter',
        'bless1',
    'Anunciar_Mortes',
    'playerKills',
     'lowerRoshamuul'

    }
     
    local function onMovementRemoveProtection(cid, oldPosition, time)
        local player = Player(cid)
        if not player then
            return true
        end
     
        local playerPosition = player:getPosition()
        if (playerPosition.x ~= oldPosition.x or playerPosition.y ~= oldPosition.y or playerPosition.z ~= oldPosition.z) or player:getTarget() then
            player:setStorageValue(Storage.combatProtectionStorage, 0)
            return true
        end
     
        addEvent(onMovementRemoveProtection, 1000, cid, oldPosition, time - 1)
    end
     
    function onLogin(player)
     local loginStr = 'Welcome to ' .. configManager.getString(configKeys.SERVER_NAME) .. '!'
     if player:getLastLoginSaved() <= 0 then
     loginStr = loginStr .. ' Please choose your outfit.'
     player:sendOutfitWindow()
     player:sendTutorial(1)
     else
     if loginStr ~= "" then
     player:sendTextMessage(MESSAGE_STATUS_DEFAULT, loginStr)
     end

     loginStr = string.format('Your last visit was on %s.', os.date('%a %b %d %X %Y', player:getLastLoginSaved()))
     end
     
        player:sendTextMessage(MESSAGE_STATUS_DEFAULT, loginStr)
      
        local playerId = player:getId()
     
        -- Stamina
        nextUseStaminaTime[playerId] = 1
     
        -- STAMINA DEVIDO A QUEDAS START
      
        --local stamina_full = 42 * 60 -- config. 42 = horas
       -- if player:getStamina() >= stamina_full then
          --  player:sendCancelMessage("Your stamina is already full.")
       -- elseif player:getPremiumDays() < 1 then
         --   player:sendCancelMessage("You must have a premium account.")
       -- else
          --  player:setStamina(stamina_full)
         -- player:sendTextMessage(MESSAGE_INFO_DESCR, "Your stamina has been refilled.")      
       -- end
      
        -- STAMINA DEVIDO A QUEDAS END
      
        -- Promotion
       --[[ local vocation = player:getVocation()
        local promotion = vocation:getPromotion()
        if player:isPremium() then
            local value = player:getStorageValue(Storage.Promotion)
            if not promotion and value ~= 1 then
                player:setStorageValue(Storage.Promotion, 1)
            elseif value == 1 then
                player:setVocation(promotion)
            end
        elseif not promotion then
            player:setVocation(vocation:getDemotion())
        end--]]
      
         -- ABRIR CHANNELS
        if(not isInArray({1,2,3,5,6,7,8}, player:getVocation():getId()) or player:getLevel() < 6) then
       -- player:openChannel(7)   -- help channel
        player:openChannel(3)   -- world chat
        player:openChannel(6)   -- advertsing rook main
        else
      --  player:openChannel(7)   -- help channel
        player:openChannel(3)   -- world chat
        player:openChannel(5)   -- advertsing main
        end
      
        --
        -- Rewards
        local rewards = #player:getRewardList()
        if(rewards > 0) then
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, string.format("You have %d %s in your reward chest.", rewards, rewards > 1 and "rewards" or "reward"))
        end
     
        -- Update player id
        local stats = player:inBossFight()
        if stats then
            stats.playerId = player:getId()
        end
     
        -- fury gates
      
        if Game.getStorageValue(GlobalStorage.FuryGates, (9710)) == 1 then -- for venore
          player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Fury Gate is on Venore Today.')
    elseif Game.getStorageValue(GlobalStorage.FuryGates, (9711)) == 2 then -- for ab...
          player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Fury Gate is on Abdendriel Today.')
          elseif Game.getStorageValue(GlobalStorage.FuryGates, (9712)) == 3 then -- for ab...
          player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Fury Gate is on Thais Today.')
          elseif Game.getStorageValue(GlobalStorage.FuryGates, (9713)) == 4 then -- for ab...
          player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Fury Gate is on Carlin Today.')
          elseif Game.getStorageValue(GlobalStorage.FuryGates, (9714)) == 5 then -- for ab...
          player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Fury Gate is on Edron Today.')
          elseif Game.getStorageValue(GlobalStorage.FuryGates, (9716)) == 6 then -- for ab...
         player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Fury Gate is on Kazordoon Today.')
          end
        
      
            player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, 'OTXServer Global by Malucooo http://www.github.com/malucooo/otxserver-testing/')
            player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, '[BONUS EXP] Command for check !exp.')
            player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, '[GUILD LEADER COMMAND] Will change all outfits from members !outfit.')
      
        -- Events
        for i = 1, #events do
            player:registerEvent(events[i])
        end
     
        if player:getStorageValue(Storage.combatProtectionStorage) <= os.time() then
            player:setStorageValue(Storage.combatProtectionStorage, os.time() + 10)
            onMovementRemoveProtection(playerId, player:getPosition(), 10)
        end
        return true
    end

    mi pregunta seria ahí donde pongo
    Código:
    player:registerEvent('playerKills')

    seria en esta parte ?
    Código:
       -- Events
        for i = 1, #events do
            player:registerEvent(events[i])
        end

    o en donde antemano muchas gracias si puedes resolver mi duda gracias saludos.

    y si no se puede, no importa pero me podrias ayudar en este? este función en tfs1.x y me sirve como recompensa por level, pero quisiera si sube a 50 le den algo, y al momento de morir baje a 49, y después vuelva a subir a 50 otra vez le de la recompensa. este es el código, no se si podrias ayudarme?.

    Código:
    local table =
    {
     -- [level] = type = "item", id = {ITEM_ID, QUANTIDADE}, msg = "MENSAGEM"},
     -- [level] = type = "bank", id = {QUANTIDADE, 0}, msg = "MENSAGEM"},
     -- [level] = type = "addon", id = {ID_ADDON_FEMALE, ID_ADDON_MALE}, msg = "MENSAGEM"},
     -- [level] = type = "mount", id = {ID_MOUNT, 0}, msg = "MENSAGEM"},

     [20] = {type = "item", id = {2160, 2}, msg = "Voce ganhou 2 crystal coins por alcancar o level 20!"},
     [30] = {type = "bank", id = {20000, 0}, msg = "Foi depositado em seu bank 20000 gold coints!"},
     [40] = {type = "addon", id = {136, 128}, msg = "Voce ganhou o addon citizen full por alcancar o level 40!"},
     [60] = {type = "mount", id = {2, 0}, msg = "Voce ganhou a montaria x!"},
    }

    local storage = 15000

    function onAdvance(player, skill, oldLevel, newLevel)

     if skill ~= SKILL_LEVEL or newLevel <= oldLevel then
     return true
     end

     for level, _ in pairs(table) do
     if newLevel >= level and player:getStorageValue(storage) < level then
     if table[level].type == "item" then
     player:addItem(table[level].id[1], table[level].id[2])
     elseif table[level].type == "bank" then
     player:setBankBalance(player:getBankBalance() + table[level].id[1])
     elseif table[level].type == "addon" then
     player:addOutfitAddon(table[level].id[1], 3)
     player:addOutfitAddon(table[level].id[2], 3)
     elseif table[level].type == "mount" then
     player:addMount(table[level].id[1])
     else
     return false
     end

     player:sendTextMessage(MESSAGE_EVENT_ADVANCE, table[level].msg)
     player:setStorageValue(storage, level)
     end
     end

     player:save()

     return true
    end

    Ver perfil de usuario

    Invitado


    Invitado
    Hola, buenas tardes.
    ya edite el post, vuelve a probar con la modificacion, y tu script para que vuelva a darte los items, solo tienes que ponerlo asi:
    Código:

    local table =
    {
     -- [level] = type = "item", id = {ITEM_ID, QUANTIDADE}, msg = "MENSAGEM"},
     -- [level] = type = "bank", id = {QUANTIDADE, 0}, msg = "MENSAGEM"},
     -- [level] = type = "addon", id = {ID_ADDON_FEMALE, ID_ADDON_MALE}, msg = "MENSAGEM"},
     -- [level] = type = "mount", id = {ID_MOUNT, 0}, msg = "MENSAGEM"},

     [20] = {type = "item", id = {2160, 2}, msg = "Voce ganhou 2 crystal coins por alcancar o level 20!"},
     [30] = {type = "bank", id = {20000, 0}, msg = "Foi depositado em seu bank 20000 gold coints!"},
     [40] = {type = "addon", id = {136, 128}, msg = "Voce ganhou o addon citizen full por alcancar o level 40!"},
     [60] = {type = "mount", id = {2, 0}, msg = "Voce ganhou a montaria x!"},
    }

    local storage = 15000

    function onAdvance(player, skill, oldLevel, newLevel)

     if skill ~= SKILL_LEVEL or newLevel <= oldLevel then
     return true
     end

     for level, _ in pairs(table) do
     if newLevel >= level then
     if table[level].type == "item" then
     player:addItem(table[level].id[1], table[level].id[2])
     elseif table[level].type == "bank" then
     player:setBankBalance(player:getBankBalance() + table[level].id[1])
     elseif table[level].type == "addon" then
     player:addOutfitAddon(table[level].id[1], 3)
     player:addOutfitAddon(table[level].id[2], 3)
     elseif table[level].type == "mount" then
     player:addMount(table[level].id[1])
     else
     return false
     end

     player:sendTextMessage(MESSAGE_EVENT_ADVANCE, table[level].msg)
     player:setStorageValue(storage, level)
     end
     end

     player:save()

     return true
    end

    Demonius


    Nuevo Miembro
    Nuevo Miembro
    Hola antemano buenas tardes probe con la modificación ahora me aparece esto. en la consola


    pero tal vez no es compatible con mi consola y solo te hago perder el tiempo.

    sobre el script de recompensa lo copie tal cual lo pegaste en el código y ahora me sale este error en la consola



    no se que será, pero si el otro script de playerkisll no funciona no me preocupa, me gustaría que siriviera mas el de recompensa pero te digo me marca este error.

    Ver perfil de usuario

    Invitado


    Invitado
    Código:
    local table = {
    [20] = { type = "item", id = {2160, 2}, msg = "Voce ganhou 2 crystal coins por alcancar o level 20!" },
    [30] = { type = "bank", id = {20000, 0}, msg = "Foi depositado em seu bank 20000 gold coints!" },
    [40] = { type = "addon", id = {136, 128}, msg = "Voce ganhou o addon citizen full por alcancar o level 40!" },
    [60] = { type = "mount", id = {2, 0}, msg = "Voce ganhou a montaria x!" }
    }

    local storage = 15000

    function onAdvance(player, skill, oldLevel, newLevel)

     if skill ~= SKILL_LEVEL or newLevel <= oldLevel then
     return true
     end

     for level, _ in pairs(table) do
     if newLevel >= level then
     if table[level].type == "item" then
     player:addItem(table[level].id[1], table[level].id[2])
     elseif table[level].type == "bank" then
     player:setBankBalance(player:getBankBalance() + table[level].id[1])
     elseif table[level].type == "addon" then
     player:addOutfitAddon(table[level].id[1], 3)
     player:addOutfitAddon(table[level].id[2], 3)
     elseif table[level].type == "mount" then
     player:addMount(table[level].id[1])
     else
     return false
     end
     player:sendTextMessage(MESSAGE_EVENT_ADVANCE, table[level].msg)
     player:setStorageValue(storage, level)
     end
     end

    player:save()
    return true
    end

    Demonius


    Nuevo Miembro
    Nuevo Miembro
    Ahora me sale este error. en el que acabas de poner. espero y no estas molestando tanto. en verdad.

    Ver perfil de usuario

    Invitado


    Invitado
    Chico, ese error es muy raro, si lo notas bien no hay ningun error, estoy segura que estas haciendo algunas cosas mal! si te veo online chateare contigo en tiempo real.

    Demonius


    Nuevo Miembro
    Nuevo Miembro
    Sarah muchas gracias por tu ayuda y paciencia en verdad lo agradesco, utilize otro script de un servidor que tenia por ahí y me sirivio en verdad muchas gracias por las atenciones tomadas, ando creando un proyecto y estaras en los créditos por la ayuda que me has brindando en verdad excelente noche.

    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).