Isso, testa ai pra eu ver se tenho alguma luz e ir dormir.
info
Grupo: Herói
Registrado: 25/02/07
Posts: 859
Reputação: +331
Gênero: Masculino

info
Grupo: Visconde
Registrado: 02/10/13
Posts: 320
Reputação: +22
Gênero: Masculino

Olha, eu substituí do jeito que vc mandou, mas aconteceu o seguinte erro:
info
Grupo: Herói
Registrado: 25/02/07
Posts: 859
Reputação: +331
Gênero: Masculino

Ah, esqueci dessa linha rs.. Mal!
Ultima tentativa.. la em for i = 1, #winner do
Faz for i = 1, 4 do
info
Grupo: Visconde
Registrado: 02/10/13
Posts: 320
Reputação: +22
Gênero: Masculino

retiro o #winner?
info
Grupo: Herói
Registrado: 25/02/07
Posts: 859
Reputação: +331
Gênero: Masculino

Substitui ele por 4
O knight so nao ganha a recompensa? Ele fala o nome dele certo e tudo mais?
info
Grupo: Visconde
Registrado: 02/10/13
Posts: 320
Reputação: +22
Gênero: Masculino

![]()
local query = db.query or db.executeQuery
local premios = { -- -- [chance] -- itemid,amount
[{20}] = {{12674}, {11754}},
[{50}] = {{2390}, {2469}, {2646}, {8306,5}, {2408}},
[{80}] = {{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 name
end
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 true
end
local vocation = {
"sorcerer",
"druid",
"paladin",
"knight"
}
function onDeath(cid, corpse, deathList)
local gid = 0
local winner = {}
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 = {}
for _, pid in pairs(getPlayersOnline()) do
if getPlayerGuildId(pid) == gid then
local st = getPlayerStorageValue(pid, 1827311)
local i = getPlayerVocation(pid)
local index = i
if index > 4 then index = index - 4 end
if not mx[index] then mx[index] = 0 end
if st > mx[index] then
mx[index] = st
winner[index] = pid
end
end
end
for i = 1, 4 do
if isPlayer(winner[i]) 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[i], itemr, amountr)
doBroadcastMessage("{Castle War} O jogador com maior desempenho da vocação " ..vocation[i].." foi "..getCreatureName(winner[i])..", com "..pointNumber(mx[i]).." pontos sobre o castelo. Ele recebeu "..pointNumber(amountr).."x "..getItemNameById(itemr).." como premio.")
doItemSetAttribute(recompensa, 'description', "Premio do jogador "..getCreatureName(winner[i]).." ganho no evento castle war do dia "..os.date("%d/%m/%y")..".")
local medal = doPlayerAddItem(winner[i], 10127, 1)
doItemSetAttribute(medal, 'description', "Trofeu ganho pelo jogador "..getCreatureName(winner[i]).." no evento castle war do dia "..os.date("%d/%m/%y")..".")
end
end
end
for _, pid in pairs(getPlayersOnline()) do
setPlayerStorageValue(pid, 1827311, 0)
if isInArea(getThingPos(pid), {x = 500, y = 574, z = 6}, {x = 575, 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, getTownTemplePosition(getPlayerTown(pid)))
end
end
guild_hit_count = {}
end
return true
end
info
Grupo: Herói
Registrado: 25/02/07
Posts: 859
Reputação: +331
Gênero: Masculino

Uai mas a linha 100 do script que vc mandou nao tem nada a ve com a parte que eu mexi..
info
Grupo: Visconde
Registrado: 02/10/13
Posts: 320
Reputação: +22
Gênero: Masculino

Substitui ele por 4
O knight so nao ganha a recompensa? Ele fala o nome dele certo e tudo mais?
não, não fala nome, nem nada, aquela mensagem não aparece
info
Grupo: Herói
Registrado: 25/02/07
Posts: 859
Reputação: +331
Gênero: Masculino

Bom, vou dormir. Depois vejo!
Abraços
info
Grupo: Visconde
Registrado: 02/10/13
Posts: 320
Reputação: +22
Gênero: Masculino

nenhuma novidade
info
Grupo: Herói
Registrado: 25/02/07
Posts: 859
Reputação: +331
Gênero: Masculino

Faz um teste pra mim, la em login.lua (creaturescripts) poe logo depois de onLogin assim:
doBroadcastMessage(getPlayerVocation(cid))
e loga com um knigth e me diz o que aparece.
info
Grupo: Visconde
Registrado: 02/10/13
Posts: 320
Reputação: +22
Gênero: Masculino

19:08 4


info
Grupo: Visconde
Registrado: 02/10/13
Posts: 320
Reputação: +22
Gênero: Masculino