Ir para conteúdo
  • 0

[Pedido] Prêmio por Vocação


Farathor

Pergunta

Olá, gostaria de saber se é possível por para que esse script adicione o prêmio para cada vocação

 

local query = db.query or db.executeQuerylocal premios = { --  -- [chance] -- itemid,amount[{1, 5}] = {{12674}, {11754}},[{10, 30}] = {{2390}, {2469}, {2646}, {8306,5}, {2408}, {9693}},[{80, 100}] = {{2160,1000}}} local function getGuildNameById(id)    local name = ""    local query = db.getResult('SELECT `name` FROM `guilds` WHERE `id` = "'.. id ..'"')    if query:getID() == -1 then        return true    end    name = query:getDataString("name")    query:free()    return nameend function pointNumber(number)    if not tonumber(number) then        return false    end    local str = ""    number = tostring(number):reverse()    local count = 0    for i = 1, number:len() do        count = count + 1        if count <= 3 then            if str == "" then                str = number:sub(i, i)            else                str = str..number:sub(i, i)            end        else            count = 1            str = str.."."..number:sub(i, i)        end    end    return str:reverse()end function onStatsChange(cid, attacker, type, combat, value)    if isMonster(cid) and isPlayer(attacker) and type == STATSCHANGE_HEALTHLOSS then         if isInArray({"Castle Guardian I", "Castle Guardian II", "Castle Guardian III", "Castle Guardian IV", "Castle Generator", "Ice Crystal"}, getCreatureName(cid)) then            doPlayerSetStorageValue(attacker, 1827311, getPlayerStorageValue(attacker, 1827311) + value)            local quant = guild_hit_count[getPlayerGuildId(attacker)] and guild_hit_count[getPlayerGuildId(attacker)] or 0            guild_hit_count[getPlayerGuildId(attacker)] = quant + value        end    end    return trueend  function onDeath(cid, corpse, deathList)    local gid = 0    local winner = 0    if isMonster(cid) and getCreatureName(cid) == "Ice Crystal" then       if not getPlayingGuilds() then           return true        end        local guilds = getPlayingGuilds()        local max = 0        for index, var in pairs(guild_hit_count) do            if var > max then               max = var               gid = index            end        end        setGlobalStorageValue(1823999, gid)        query("UPDATE `castle_dono` SET `guild_id` = '"..gid.."' WHERE `guild_id` > 0")        doBroadcastMessage("{Castle War} O evento acabou, a guild com maior desempenho foi "..getGuildNameById(gid)..", com "..pointNumber(max).." pontos sobre o castelo.")        updateCastleData()        setGlobalStorageValue(18219113, -1)        if gid > 0 then            local mx = 0            for _, pid in pairs(getPlayersOnline()) do                if getPlayerGuildId(pid) == gid then                    local st = getPlayerStorageValue(pid, 1827311)                    if st > mx then                        mx = st                        winner = pid                    end               end           end           if isPlayer(winner) then                   local r = math.random(1,100)                for v, k in pairs(premios) do                    if r >= v[1] and r <= v[2] then                        local rand = k[math.random(#k)]                            itemr, amountr = rand[1], (not rand[2] and 1 or rand[1] and rand[2] or 1)                            end                        end                        local recompensa = doPlayerAddItem(winner, itemr, amountr)                             doBroadcastMessage("{Castle War} O jogador com maior desempenho foi "..getCreatureName(winner)..", com "..pointNumber(mx).." pontos sobre o castelo. Ele recebeu "..pointNumber(amountr).."x "..getItemNameById(itemr).." como premio.")                               doItemSetAttribute(recompensa, 'description', "Premio do jogador "..getCreatureName(winner).." ganho no evento castle war do dia "..os.date("%d/%m/%y")..".")                                            local medal = doPlayerAddItem(winner, 10127, 1)                            doItemSetAttribute(medal, 'description', "Trofeu ganho pelo jogador "..getCreatureName(winner).." no evento castle war do dia "..os.date("%d/%m/%y")..".")                        end                    end                    for _, pid in pairs(getPlayersOnline()) do                    if isInArea(getThingPos(pid), {x = 494, y = 552, z = 6}, {x = 585, y = 620, z = 6}) or isInArea(getThingPos(pid), {x = 511, y = 588, z = 5}, {x = 556, y = 607, z = 5}) or isInArea(getThingPos(pid), {x = 511, y = 588, z = 4}, {x = 556, y = 607, z = 4}) or isInArea(getThingPos(pid), {x = 511, y = 588, z = 3}, {x = 556, y = 607, z = 3}) or isInArea(getThingPos(pid), {x = 481, y = 580, z = 7}, {x = 683, y = 798, z = 7}) then                        doTeleportThing(pid, {x = 540, y = 631, z = 6})                    end                end                guild_hit_count = {}            end    return trueend

 

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Troque a tabela premios por:

local premios = { --  -- [chance] -- itemid,amount    [vocation_id] = {        [{1, 5}] = {{12674}, {11754}},        [{10, 30}] = {{2390}, {2469}, {2646}, {8306,5}, {2408}, {9693}},        [{80, 100}] = {{2160,1000}}    },    --etc}

Depois, substitua:

for v, k in pairs(premios) do

por:

for v, k in pairs(premios[getPlayerVocation(winner)]) do

 

Link para o comentário
Compartilhar em outros sites

  • 0

Esse script, conta quem bateu mais no evento e da o prêmio, fazendo isso, os jogadores de cada vocação que ganhou mais, ira ganhar os itens?

Eta tipo isso q eu queria,

 

O Jogador tal, da vocação sorcerer venceu e ganhou blablabla

O Jogador tal, da vocação druid venceu e ganhou blablabla

 

etc

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

×
×
  • Criar Novo...