• 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

    Compartir:

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

    Invitado

    Anonymous
    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 Jul 20, 2017 5:07 pm, editado 1 vez (Razón : de seguro algo andaba mal)

    4 participantes

    Demonius

    avatar
    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

    4 participantes

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

    Invitado

    Anonymous
    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!

    4 participantes

    Demonius

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

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

    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

    4 participantes

    Invitado

    Anonymous
    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

    4 participantes

    Demonius

    avatar
    Nuevo Miembro
    Nuevo Miembro
    Hola antemano buenas tardes probe con la modificación ahora me aparece esto. en la consola
    [Aporte] Al matar un player ganas un objeto, y se anuncia su muerte Error210

    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

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

    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.

    4 participantes

    Invitado

    Anonymous
    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

    4 participantes

    Demonius

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

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

    4 participantes

    Invitado

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

    4 participantes

    Demonius

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

    4 participantes

    rpalmak

    rpalmak
    Miembro
    Miembro
    por que el localid es el id de una crystal coin? no deberia ser de un corazon?

    4 participantes
    http://www.tibia.com

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    rpalmak escribió:por que el localid es el id de una crystal coin? no deberia ser de un corazon?

    por que es un ejemplo usted ya le coloca el objeto que usted le guste



    [Aporte] Al matar un player ganas un objeto, y se anuncia su muerte YNU5B25
    4 participantes
    http://www.tibiaface.com

    daneraots

    daneraots
    Miembro
    Miembro
    Hola, Mato el player y no da el item, quien es el que gana el item? que que saca PK o el que mata al PK??

    4 participantes
    http://imperio.servegame.com/

    Contenido patrocinado


    4 participantes

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