Ir para conteúdo
  • 0

Quest Simples


Drk Shadow

Pergunta

Então galera eu queria pedir uma quest que é o seguinte:



Cada Player fica em uma posição(será necessário 4 players).


Cada Player tambem tem que ter level minimo de 100.


E essa quest seria o seguinte, ela teria um tempo(Configuravel) para terminar, se dentro de 10 minutos os players nao consiguirem terminar a quest, são teletransportados para fora, e se morrer tambem nao perde xp.


Se Possivel(acho que é dificil :/) se um player morrer, todos seriam teletransportados para fora.



Bom é isso se puderem ajudar agradeço :/


Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Opa bom eu fiz um codigo aqui e não testei intão espero noticias.

 

Vamos ao tutorial de edição.

 

 

 

Roxo = Posições dos players onde eles devem estar.

Actionid = Actionid do item que vai clicar.

level = Level dos player's

premio = o premio claro.

qt = quantidade do premio

posto = pos pra onde vai ser teleportado(inicio da quest)

 

[actionid] = {{{x=223, y=405, z=7}, {x=223, y=407, z=7}, {x=223, y=409, z=7}, {x=225, y=410, z=7}}, level = 150, posto = {x=225, y=407, z=8}, premio = 2160, qt = 100}

 

 

 

obs: Não fiz de caso um player morrer a quest volta nn tenho nivel suficiente :v.

 

 

 

local config = {
[3248] = {{{x=223, y=405, z=7}, {x=223, y=407, z=7}, {x=223, y=409, z=7}, {x=225, y=410, z=7}}, level = 150, posto = {x=225, y=407, z=8}, premio = 2160, qt = 100}
}
function onUse(cid, item, frompos, item2, topos)
local cfg = config[item.actionid]
for i = 1, #configs do
local p = getRecorderPlayer(configs)
local configs = config[item.actionid][1]
if not isPlayer(p) and getPlayerLevel(cid) <= cfg.level then
doPlayerSendTextMessage(cid, 27, "Os player nao estao na posiçao correta ou nao tem level.")
return true
end
end
for i = 1, #configs do
local configs = config[item.actionid][1]
local p = getRecorderPlayer(configs)
if isPlayer(p) then
doTeleportThing(p, cfg.posto)
doSendMagicEffect(getThingPos(p), 21)
doPlayerAddItem(cid, cfg.premio, cfg.qt)
doPlayerSendTextMessage(cid, 27, "Parabens voce acaba de completar a quest.")
end
end
return true
end

Editado por kttallan
Link para o comentário
Compartilhar em outros sites

  • 0

@Kttallan

Obrigado amigo, mais não é bem isso que eu procurava, essa parte eu até sei fazer, a parte mais importante é o resto mesmo, tipo o tempo pra fazer a quest, e se alguem morrer nao perder xp e voltar a quest...

de qualquer forma, rep+ por tentar ajudar.

 

@zipter98

Então cara eu uso uma base propia mesmo que um amigo me passou, mais creio que a base que ele pegou é essa:

http://www.xtibia.com/forum/topic/203634-pokemon-dash-advanced/

é um derivado de pda...

se puder ajudar agradeço!

Link para o comentário
Compartilhar em outros sites

  • 0

Action:

local config = {
    time = 10,                                    --Tempo para fazer a quest, em minutos.
    toPosition = {x = x, y = y, z = z},           --Para onde os jogadores serão teleportados.
    positions = {
        {x = x, y = y, z = z},                    --Posições que os jogadores devem ficar.
        {x = x, y = y, z = z},
        {x = x, y = y, z = z},
        {x = x, y = y, z = z},
    },
    level = 100,                                  --Level mínimo para fazer a quest.
    storages = {8605, 8606},
}
function onUse(cid)
    local pid = {}
    if getPlayerStorageValue(cid, config.storages[2]) > -1 then
        return doPlayerSendCancel(cid, "You already completed that quest.")
    end
    for _, online in pairs(getPlayersOnline()) do
        if getPlayerStorageValue(online, config.storages[1]) > -1 then
            return doPlayerSendCancel(cid, "Someone is at the quest right now.")
        end
    end
    for i, position in pairs(config.positions) do
        local p = getTopCreature(position).uid
        if p < 1 or not isPlayer(p) then
            return doPlayerSendCancel(cid, "Not enough players to start the quest.")
        elseif getPlayerLevel(p) < config.level then
            return doPlayerSendCancel(cid, "Some player is at a level below "..config.level..".")
        end
        pid[#pid + 1] = p
    end
    for _, player in pairs(pid) do
        doPlayerSendTextMessage(player, MESSAGE_STATUS_CONSOLE_ORANGE, "Good luck at the quest!\nTime: "..config.time.." minutes.")
        doTeleportThing(player, getClosestFreeTile(player, config.toPosition))
        setPlayerStorageValue(player, config.storages[1], 1)
    end
    addEvent(function()
        for _, player in pairs(pid) do
            if isPlayer(player) and getPlayerStorageValue(player, config.storages[1]) > -1 then
                doPlayerSendTextMessage(player, 27, "Oh, timeout. Sorry. :/")
                setPlayerStorageValue(player, config.storages[1], -1)
                doTeleportThing(player, getTownTemplePosition(getPlayerTown(player)))
            end
        end
    end, config.time * 60 * 1000)
    return true
end
Tag:
<action actionid="xxx" event="script" value="nome_do_arquivo.lua"/>
Troque xxx pelo actionid.
Creaturescript:
function onLogout(cid)
    if getPlayerStorageValue(cid, 8605) > -1 then
        return doPlayerSendCancel(cid, "You can't logout on the quest.") and false
    end
    return true
end
function onLogin(cid)
    if getPlayerStorageValue(cid, 8605) > -1 then
        setPlayerStorageValue(cid, 8605, -1)
    end
    return true
end
Tags:
<event type="logout" name="questLogout" event="script" value="nome_do_arquivo.lua"/>
<event type="login" name="questLogin" event="script" value="nome_do_arquivo.lua"/>
Em data/creaturescripts/scripts, abra o arquivo exp2.0.lua. Acima de:
if getPlayerStorageValue(cid, 6598754) >= 1 or getPlayerStorageValue(cid, 6598755) >= 1 then
Coloque:
        if getPlayerStorageValue(cid, 8605) > -1 then
            for _, pid in pairs(getPlayersOnline()) do
                if getPlayerStorageValue(pid, 8605) > -1 then
                    doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)))
                    doPlayerSendTextMessage(pid, 27, "Someone died and you lost the quest. Better luck on the next time!")
                    setPlayerStorageValue(pid, 8605, -1)
                end
            end
            doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
            return false
        end

No código de premiação da quest, coloque as seguintes linhas:

setPlayerStorageValue(cid, 8605, -1)
setPlayerStorageValue(cid, 8606, 1)
Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0

@Zipter98

BOOOOOOA MANO

Obrigado mesmo cara, tava precisando muito disso, vc n sabe o quanto vc me ajudou :o

assim que der 00:00 eu te dou uns 3 reps, o de hoje ja acabou, obrigado mesmo cara de verdade, muito obrigado.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...