Ir para conteúdo
  • Cadastre-se

Tottin

Membro
  • Total de itens

    27
  • Registro em

  • Última visita

  • Dias Ganhos

    2

Histórico de Curtidas

  1. Curtir
    Tottin recebeu reputação de Lisbeky em (Resolvido)Setar storage para todos em uma determinada área   
    Resolvendo seu problema onde ao matar o monstro só quem fragava recebia o storage:
     
    local tps = {
                            ["hyaena"] = {pos = {x=349, y=1103, z=15}, toPos = {x = 518, y = 840, z = 7}, time = 10, storage = 46000},
    }
    local storage = 46000
    local function removeTp(tp)
    local t = getTileItemById(tp.pos, 5023).uid
    return t > 0 and doRemoveItem(t) and doSendMagicEffect(tp.pos, CONST_ME_POFF)
    end

    function onDeath(cid, corpse, deathList, frompos, topos)
            local tp = tps[getCreatureName(cid)]
            if tp then
                    doCreateTeleport(5023, tp.toPos, tp.pos)
                    doCreatureSay(cid, "O teleport irá sumir em "..tp.time.." segundos.", TALKTYPE_ORANGE_1)
                    addEvent(removeTp, tp.time*1000, tp)
            for _, check in pairs(deathList) do
                    if isPlayer(check) then
                            setPlayerStorageValue(check, tp.storage, 5)
                    end
            end  
            end
    return true
    end 

    registra no creaturescripts:
    <event type="death" name="Storage" event="script" value="seuarquivo.lua"/>

    registra no arquivo.xml do boss:
    <script>
    <event name="Storage"/>
    </script>
  2. Curtir
    Tottin recebeu reputação de Zazeros em (Resolvido)Spell de dano baseado no shield   
    Isso tudo vai variar da forma com que você quer fazer seu script, sua dúvida principal era sobre como trabalhar em cima da defesa do shield. E isso como mencionei acima pode ser feito da seguinte forma, utilizando a função:
    getItemAttribute(uid,'defense')
     
    Pra checar se o item é 1 shield, você pode utilizar uma função que o mock disponibilizou já faz um bom tempo:
    local function isShield(uid) -- Function by Mock the bear.
    uid = uid or 0
    if getItemWeaponType(uid) == 5 then
        return true
    end
    return false
    end
     
    Com isso você vai ter todas informações necessárias pra fazer seu script trabalhar em cima da defesa do shield que estiver equipado, e claro vai poder checar se o item que você está "pegando" a defesa, é de fato um shield ou não.
     
  3. Curtir
    Tottin recebeu reputação de L3K0T em (Resolvido)GlobalEvent criar item no mapa   
    Cara vou te passar um código que fiz pra 0.4, deve funcionar pra 0.36 também:
    código lua:
     
    local config = {
       itemid = 1451,
       itemid2 = 1451,
       itemid3 = 1451,
       pos = {x=718, y=1534, z=10},
       pos2 = {x= 107, y=1507, z=8},
       pos3 = {x= 111, y=1507, z=8},
       chance = 50
     }

    function onTime(interval)
      if config.chance >= math.random(1, 100) then
            doBroadcastMessage("Os items X Y Z foram spawnados!") --- Caso queira que mande uma mensagem pra todos players online, ja deixei pronto.
            doCreateItem(config.itemid, 1, config.pos)
            doCreateItem(config.itemid1, 1, config.pos2)
            doCreateItem(config.itemid2, 1, config.pos3)
      end
    return true
    end

    tag no xml:
    <globalevent name="nomedoevento" time="04:05:00" event="script" value="nomedoarquivo.lua"/>
  4. Obrigado
    Tottin recebeu reputação de Senju uchira em script para arma double hit   
    Provavelmente ta dando erro pela versão de seu servidor. Se ainda tiver precisando disso, testa desta forma:
    Troca esta linha:
    target:say("!DOUBLEHIT", TALKTYPE_MONSTER_SAY)              ,<<<<<<<<<<<<<<<<<<<<<
    por esta:
    doCreatureSay(target, "DOUBLE HIT", 19)
  5. Obrigado
    Tottin recebeu reputação de Senju uchira em script para arma double hit   
    Vou te mandar a script que uso em meu servidor, com o texto adicionado já, possivelmente deve resolver seu problema, segue a script:
     
    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, 1.0, 0, 1.0, 0)
     
    function onUseWeapon(cid, var)
    local chance = 20 
    if chance <= math.random(1,100) then
      doCombat(cid, combat, var)
    else
     doCreatureSay(cid, "DOUBLE HIT", 19)
     doCombat(cid, combat, var)
     addEvent(doCombat, 500, cid, combat, var)
    end
    return true
    end
  6. Gostei
    Tottin recebeu reputação de Senju uchira em preciso de ajuda com um script que tenho   
    Exatamente, a primeira parte é pra "registrar as posições do efeito" (isso dentro da tabela), na segunda parte é onde a script vai trabalhar em cima dessas posições pra executar o efeito na posição desejada. Basta trocar esta linha do seu script:
     
    addEvent(doAreaCombatHealth, 100, cid, wx.dmg, getThingPos(target), 0, -min, -max, wx.ef) por estas duas:
     
    local pos = {x = getThingPos(target).x + (wx.posx), y = getThingPos(target).y + (wx.posy), z = getThingPos(target).z} -- Aqui vai trabalhar em cima das posições definidas la na tabela. addEvent(doAreaCombatHealth, 100, cid, wx.dmg, pos, 0, -min, -max, wx.ef) -- E aqui vai aplicar o efeito na posição final.
  7. Curtir
    Tottin recebeu reputação de Lurk em [Ajuda] função onDeath   
    Se você quer trabalhar somente com o player que pegou o loot você pode utilizar a função da seguinte forma:
    function onDeath(cid, corpse, lastHitKiller, mostDamageKiller)
    local killer = lastHitKiller[1] --- a atribuição em uma variável do player que pegou o frag é totalmente opcional.

    Dai caso queira realizar alguma ação em cima desse player pode fazer da seguinte forma:
    if isPlayer(killer) then --- Não lembro ao certo se tem monstros entram na lista (lastHitKiller) então só por precaução eu recomendaria fazer uma checagem se quem fragou é 1 player.
    doPlayerAddItem(killer, 13981, 1)
    end
  8. Curtir
    Tottin recebeu reputação de WooX em [Ajuda] função onDeath   
    Se você quer trabalhar somente com o player que pegou o loot você pode utilizar a função da seguinte forma:
    function onDeath(cid, corpse, lastHitKiller, mostDamageKiller)
    local killer = lastHitKiller[1] --- a atribuição em uma variável do player que pegou o frag é totalmente opcional.

    Dai caso queira realizar alguma ação em cima desse player pode fazer da seguinte forma:
    if isPlayer(killer) then --- Não lembro ao certo se tem monstros entram na lista (lastHitKiller) então só por precaução eu recomendaria fazer uma checagem se quem fragou é 1 player.
    doPlayerAddItem(killer, 13981, 1)
    end
  9. Obrigado
    Tottin recebeu reputação de Mor3nao em Resistencia temporaria   
    Isso, a forma como você vai aplicar a script no jogo vai de sua imaginação, basta por 1 checagem de storage antes desta linha:
    if combat == COMBAT_PHYSICALDAMAGE then
    e sim é 1 creaturescript, a tag xml seria +ou- isto:
    <event type="statschange" name="Nomedoevento" event="script" value="nomedoarquivo.lua"/>
  10. Gostei
    Tottin recebeu reputação de LeoTK em [DOAÇÃO] Algumas sprites atualizadas para NTO   
    Na verdade essas sprites são do meu servidor: NTO Falcon.
    Não me importo que postem até por que não dá pra evitar que roubem sprites hoje em dia. Mas coloca os créditos do servidor que foi retirado. Nem todas são sprites originais de meu servidor porém em média de 80% são.
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo