Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

O Scripter King segue o mesmo propósito do Mapper King e Spriter King, espero que curtam e participem do tópico.

REGRAS:
• O Rei escolhe um tema para o duelo de Scripts.
• Os membros que quiserem participar podem enviar o script pronto até 72 horas contadas depois da escolha do tema.
• Os scripts devem ser enviados para: [email protected] (scripts fora do tema serão desclassificados e cada membro só pode enviar um script).
• Os participantes podem votar, mas não no seu script. (caso isso aconteça o mesmo será desclassificado).
• Se nenhum script for enviado em 72 horas, o rei deve escolher outro tema.
• Após entregue a conquista de Scripter King ao vencedor, o mesmo deve escolher um novo tema em até 48 horas, caso contrário, a conquista é transferida ao segundo colocado.
• Apenas o atual rei ficará com a conquista do Scripter King.
• Após 15 votos, o membro que obter maior número de votos vira o rei. (caso houver empate, o próximo voto aos membros que empataram decidirá)
• Uma vez votado, o membro não pode mudar o voto.
• Cada script deve ser de autoria do participante.
• Cada voto deve ser justificado.


Histórico:

30/05/2015 - Snowsz


Então para começar, eu me declaro o Atual rei, o primeiro da linhagem, e o primeiro tema é ...

 

Peguei um tópico da seção de script que não esta resolvido. Aqui vai ..

"Em um conjunto de players, um deles puxa uma alavanca, e são enviados para uma sala sem saída onde aparecerá um monstro, o time tem um determinado tempo para mata-lo, se o tempo acabar, eles são enviados para uma saída e o monstro some. Se matarem são enviados para uma saída depois de 1 minuto. O script deve ser feito para a versão 0.4 do TFS. Apenas um time por vez. "

Divirtam-se  ;D 

  • Respostas 37
  • Visualizações 19.7k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • runeraserver
    runeraserver

    Meu voto vai para o 3, além de bem comentado, está fácil para uma breve edição. Parabéns!!

  • Bom, fiz como o luan, peguei o tema de uma área de suporte:   NPC de Promotion que funciona assim: • O player vai no NPC de Promotion que promove por task, fala com ele, dai ele vai cobrar 25kk

  • obrigado todos que participaram e os que votaram eu não vou fazer q nem os antecessor o novo tema eu msm tive a ideia vai ser assim   evento 1x1 com aposta funciona assim: entre dois player o pla

Postado
  • Autor

Primeiramente gostaria de deixar claro aqui a minha indignação com aqueles muitos que ficam reclamando que não tem eventos de scripting, e agora, quando tentamos fazer, não participam.

Obrigado aos DOIS desafiantes que participaram ... bora para o duelo!

São 3 scripts, lembrando que ao votar é preciso citar uma justificativa.

Script 1:

ACTION:

    -- area de configuração
local config = {
    [1] = {pos_player = {x=156,y=51,z=5, stackpos=253},topos_player = {x=146,y=27,z=7},effect_player = 10},
    [2] = {pos_player = {x=157,y=51,z=5, stackpos=253},topos_player = {x=147,y=27,z=7},effect_player = 10},
    [3] = {pos_player = {x=158,y=51,z=5, stackpos=253},topos_player = {x=148,y=27,z=7},effect_player = 10},
    [4] = {pos_player = {x=159,y=51,z=5, stackpos=253},topos_player = {x=149,y=27,z=7},effect_player = 10},
    [5] = {pos_player = {x=160,y=51,z=5, stackpos=253},topos_player = {x=150,y=27,z=7},effect_player = 10},
    --[6] = {pos_player = {x=161,y=51,z=5, stackpos=253},topos_player = {x=151,y=27,z=7},effect_player = 10},
    --[7] = {pos_player = {x=162,y=51,z=5, stackpos=253},topos_player = {x=152,y=27,z=7},effect_player = 10},
    --[8] = {pos_player = {x=163,y=51,z=5, stackpos=253},topos_player = {x=153,y=27,z=7},effect_player = 10},
    --[9] = {pos_player = {x=164,y=51,z=5, stackpos=253},topos_player = {x=154,y=27,z=7},effect_player = 10},
    --[10] = {pos_player = {x=165,y=51,z=5, stackpos=253},topos_player = {x=155,y=27,z=7},effect_player = 10},
    --[11] = {pos_player = {x=166,y=51,z=5, stackpos=253},topos_player = {x=156,y=27,z=7},effect_player = 10},
    --[12] = {pos_player = {x=167,y=51,z=5, stackpos=253},topos_player = {x=157,y=27,z=7},effect_player = 10},
    --[13] = {pos_player = {x=168,y=51,z=5, stackpos=253},topos_player = {x=158,y=27,z=7},effect_player = 10},
    --[14] = {pos_player = {x=169,y=51,z=5, stackpos=253},topos_player = {x=159,y=27,z=7},effect_player = 10},
    --[15] = {pos_player = {x=170,y=51,z=5, stackpos=253},topos_player = {x=160,y=27,z=7},effect_player = 10},
    }
    local monster = {name_monster = "Demon", pos_monster = {x=145,y=29,z=7},time_monster = 20, effect_monster = 10} -- tempo em segundos
    local retorno_players = {pos = {x=160,y=54,z=7},time_players = 5} -- tempo em segundos
    local evaluation_of_id_players = {}
    local reward = {2160,500} -- achei sem graça resovir colocar uma recopensa
    local check = 1
    -- area de configuração
 
function onUse(cid, item, frompos, item2, topos)
    if check ~= 1 then
        doPlayerSendCancel(cid,"já tem gente matando boss")
        return true
    end
    onCheckPlayers (cid)
    if counter == #config then
        for key,value in pairs(config) do
            doTransformItem(item.uid,item.itemid == 1945 and 1946 or 1945)
            all_players = getThingfromPos(value.pos_player)
            doTeleportThing(all_players.uid,value.topos_player)
            doSendMagicEffect(value.topos_player,value.effect_player)
            doPlayerSendTextMessage(getCreatureByName(getCreatureName(all_players.uid)),22,"você tem "..monster.time_monster.." segundos para matar boss")
        end
        bicho = doCreateMonster(monster.name_monster,monster.pos_monster)
        addEvent(removerMonster,monster.time_monster*1000,cid)
        check = 0
    else
        doPlayerSendCancel(cid,"You need "..#config.." players in your team.")
    end
    return true
end
 
function onCheckPlayers (cid)
    counter = 0
    for key,value in pairs(config) do
        all_players = getThingfromPos(value.pos_player)
        if all_players.itemid > 0 and isPlayer(all_players.uid) then
            counter = counter+all_players.itemid
            evaluation_of_id_players[counter] = getCreatureByName(getCreatureName(all_players.uid))
        end
    end
    return true
end
 
function removerMonster(cid)
    if isCreature(bicho) then
        doSendMagicEffect(getThingPos(bicho),monster.effect_monster)
        doRemoveCreature(bicho)
        addEvent(telePlayers,(retorno_players.time_players/2)*1000,cid)
        for i = 1,#evaluation_of_id_players do
            if isPlayer (evaluation_of_id_players[i]) then
                doPlayerSendTextMessage(evaluation_of_id_players[i],22,"o seu tempo acabou tenta de novo você sera teletransportado em "..(retorno_players.time_players/2).." segundos")
            end
        end
    else
        for i = 1,#evaluation_of_id_players do
            if isPlayer (evaluation_of_id_players[i]) then
                doPlayerAddItem(evaluation_of_id_players[i],reward[1],reward[2])
                doPlayerSendTextMessage(evaluation_of_id_players[i],22,"parabéns por ter matado boss você sera teletransportado em "..retorno_players.time_players.." segundos")
                addEvent(telePlayers,retorno_players.time_players*1000,cid)
                return true
            end
        end
    end
    return true
end
 
function telePlayers(cid)
    check = 1
    for i = 1,#evaluation_of_id_players do
        if isPlayer(evaluation_of_id_players[i]) then
            doTeleportThing(evaluation_of_id_players[i],retorno_players.pos)
            doSendMagicEffect(retorno_players.pos,10)
        end
    end
    return true
end

Script 2:

ACTION:

local quest = {
        team_pos = {
                {{x = 0, y = 0, z = 0, stackpos = 253},{x = 0, y = 0, z = 0}},
                {{x = 0, y = 0, z = 0, stackpos = 253},{x = 0, y = 0, z = 0}},
        },
        boss_config = {name = "Demon", pos = {x = 0, y = 0, z = 0}, minutes = 10,},
        saida_pos = {x = 0, y = 0, z = 0},
        gStorage = 99999,
}
 
local function exit(tabela)
        for i = 1, #tabela do
                if isPlayer(tabela[i]) then
                        doTeleportThing(tabela[i], quest.saida_pos)
                        doSendMagicEffect(quest.saida_pos, CONST_ME_ENERGYAREA)
                end
        end
       
        setGlobalStorageValue(quest.gStorage, 0)
end
 
local function verificarBoss(boss_uid, tabela, x)
        if x > 0 then
                if boss_uid > 0 then
                        if x == 1 then
                                doRemoveCreature(boss_uid) and exit(tabela)
                        else
                                addEvent(verificarBoss, 60000, boss_uid, tabela, x - 1)
                        end
                else
                        addEvent(exit, 60000, tabela)
                end
        end
end
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
 
        if item.itemid == 1945 then
               
                if getGlobalStorageValue(quest.gStorage) < 1 then
                        return doPlayerSendCancel(cid, "Ja tem um time dentro da quest, aguarde.")
                end
                       
                local tabela = {}
                for i = 1, #quest.team_pos do
                        local player = getThingfromPos(quest.team_pos[i][1]).uid
                        if player > 0 and isPlayer(player) then
                                table.insert(tabela, player)
                        end
                end
 
                if #tabela == #quest.team_pos then
                        for i = 1, #tabela do
                                doTeleportThing(tabela[i], quest.team_pos[i][2])
                                doSendMagicEffect(quest.team_pos[i][2], CONST_ME_ENERGYAREA)
                               
                                local boss_uid = doSummonCreature(quest.boss_config.name, quest.boss_config.pos)
                                addEvent(verificarBoss, 60000, boss_uid, tabela, quest.boss_config.minutes - 1)
 
                                setGlobalStorageValue(quest.gStorage, 1)
                        end
                else
                        return doPlayerSendCancel(cid, "Voce precisa de "..#quest.team_pos.." jogadores para a quest.")
                end
        end
       
        doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
       
        return true
end

Script 3:

LIB:

--[[

• time, é o tempo máximo que pode ficar na sala.
• timeOnWin, é o tempo que eles devem esperar ao matar os monstros configurados para serem teleportados.
• globalStorage, é a storage usada para saber se já estão usando a sala.
• resetGoPos, é o local para onde todos serão teleportados quando o tempo máximo acabar.
• playerGoPos, é o local da sala para onde os players serão teleportados.
• winGoPos, é o local para onde os ganhadores serão teleportados.
• roomPoints: leftUpPoint(Canto superior esquerdo da sala, a posição dele), rightDownPoint(Canto inferior direito da sala, a posição dele).
• monsters: monsterName(Nome do monstro que vai ser criado), createPos(Posição onde o monstro vai ser criado.)
• players: playerPos(Onde o player deve estar para a alavanca poder ser acionada), a quantidade configurada será a quantidade necessária de players para entrar na sala.

]]--

SKDeathRoom = {
    time = 180, -- Time in this room, in seconds
    timeOnWin = 60, -- Time on win, to teleport all players.
    globalStorage = 4565,
    playerToPos = {x = 100, y = 100, z = 7},
    resetGoPos = {x = 10, y = 10, z = 7},
    winGoPos = {x = 20, y = 20, z = 7},
    roomPoints = {leftUpPoint = {x = 1, y = 1, z = 7}, rightDownPoint = {x = 2, y = 2, z = 7}},
    monsters = {
                   {monsterName = "Demon", createPos = {x = 2, y = 2, z = 7}},
               },
    players = {
                  {playerPos = {x = 1, y = 1, z = 7}},
              }
}
 
function doResetSKRoom(toPos)
    local left, right = SKDeathRoom.roomPoints.leftUpPoint, SKDeathRoom.roomPoints.rightDownPoint
    for x = left.x, right.x do
        for y = left.y, right.y do
            for z = left.z, right.z do
                local creature = getTopCreature({x = x, y = y, z = z}).uid
                if isPlayer(creature) then
                     doTeleportThing(creature, toPos, true, true)
                else
                     doRemoveCreature(creature)
                end
            end
        end        
    end
    setGlobalStorageValue(SKDeathRoom.globalStorage, 0)
end

ACTION:

-- <action actionid="ALGUMID" event="script" value="ARQUIVO.lua"/>

function onUse(cid, item, frompos, itemEx, topos)
 
    if getGlobalStorageValue(SKDeathRoom.globalStorage) <= 0 then
         local count = 0
         for i, player in pairs(SKDeathRoom.players) do
             local creature = getTopCreature(player.playerPos).uid
             if isPlayer(creature) then
                 count = count+1
             end
         end
         if #count == #SKDeathRoom.players then
              for i, player in pairs(SKDeathRoom.players) do
                  local creature = getTopCreature(player.playerPos).uid
                  doTeleportThing(creature, SKDeathRoom.playerToPos, true, true)
              end
              for i, monster in pairs(SKDeathRoom.monsters) do
                  local monster = doCreateMonster(monster.monsterName, monster.createPos)
                  registerCreatureEvent(monster, "SKMonsterDeath")
              end
              addEvent(doResetSKRoom(SKDeathRoom.resetGoPos), SKDeathRoom.time*1000)
              setGlobalStorageValue(SKDeathRoom.globalStorage, 1)
         else
              return doPlayerSendCancel(cid, "You need "..#SKDeathRoom.players.." player"..(#SKDeathRoom.players > 1 and 's' or '').." to enter in this room.")
         end
    else
         return doPlayerSendCancel(cid, "Only one at a time, this room is occupied.")
    end
   
    return true
end

CREATURESCRIPT:

-- <event type="death" name="SKMonsterDeath" event="script" value="ARQUIVO.lua"/>

function onDeath(cid, corpse, deathList)
    setGlobalStorageValue(SKDeathRoom.globalStorage, 0)
    addEvent(doResetSKRoom(SKDeathRoom.winGoPos), SKDeathRoom.time*1000)
    return true
end

É isso pessoal, mudei o total de votos para 15, boa sorte aos desafiantes.

Editado por luanluciano93 (veja o histórico de edições)

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo