testa ae..
em baixo de..
local min_pokemons_to_battle = 1-- mudar para o que você quiser local number_of_pokemons = 0 -- don't change
adicione..
local exp = 80000 -- quantidade de exp local reward = 11448
e procura por..
doPlayerAddItem(cid, x[n].itemid, x[n].count) end
adicione...
doPlayerAddExp(cid, exp) doPlayerAddItem(cid, reward, 1)




info
Grupo: Visconde
Registrado: 10/09/12
Posts: 476
Reputação: +2
Char no Tibia: Esqueci
Iae galera, tou com uma dúvida, eu queria saber como faço para um npc de duelo após ele ter sido derrotado ele dar uma quantidade de exp (que eu vou escolher) e dar um item após sua derrota vou mandar a scripter de um npc de duel
Scripter.lua
local focus = 0
local max_distance = 8
local talk_start = 0
local conv = 0
local fighting = false
local challenger = 0
local afk_limit_time = 30 -- seconds
local afk_time = 0 -- não mudam
local battle_turn = 1 -- não mudam
local challenger_turn = 0 -- não mudam
local masterpos = {}
local time_to_fight_again = 15 -- segundos, não ms (so 30 * 60 means 30 minutes)
local can_walk = true -- verdade para fazer este npc anda aleatoriamente
local max_distance = 5 -- distância máxima Esse PNJ pode chegar longe(sqms)
local walk_delay = 7 -- cada segundo fazer esta caminhada npc
local cooldown_table = {}
local min_pokemons_to_battle = 1-- mudar para o que você quiser
local number_of_pokemons = 0 -- don't change
local prizes = {
[1] = {{itemid = 2393, count = 30}, {itemid = 2392, count = 20}},
[2] = {{itemid = 2393, count = 40}, {itemid = 2392, count = 30}},
[3] = {{itemid = 2393, count = 50}, {itemid = 2392, count = 40}},
[4] = {{itemid = 2393, count = 60}, {itemid = 2392, count = 50}},
[5] = {{itemid = 2393, count = 70}, {itemid = 2392, count = 60}},
[6] = {{itemid = 2393, count = 80}, {itemid = 2392, count = 70}}}
local pokemons = {
{name = "Cloyster", optionalLevel = 50, sex = SEX_MALE, nick = "Crusher", ball = "super"},
{name = "Lapras", optionalLevel = 50, sex = SEX_FEMALE, nick = "Laura", ball = "normal"},
{name = "Electabuzz", optionalLevel = 50, sex = SEX_MALE, nick = "Eletron", ball = "great"},
{name = "Pinsir", optionalLevel = 50, sex = SEX_MALE, nick = "Headcutter", ball = "normal"},
{name = "Dragonair", optionalLevel = 50, sex = SEX_FEMALE, nick = "Dragonix", ball = "ultra"},
}
local function doSummonGymPokemon(npc)
local this = npc
if not isCreature(this) then return true end
if #getCreatureSummons(this) >= 1 or focus == 0 then return true end
local it = pokemons[battle_turn]
doSummonMonster(this, it.name)
local summon = getCreatureSummons(this)[1]
local balleffect = pokeballs["normal"].effect
if it.ball and pokeballs[it.ball] then
balleffect = pokeballs[it.ball].effect
end
doSendMagicEffect(getThingPos(summon), balleffect)
setPlayerStorageValue(summon, 10000, balleffect)
setPlayerStorageValue(summon, 10001, gobackmsgs[math.random(#gobackmsgs)].back:gsub("doka", it.nick ~= "" and it.nick or it.name))
setPlayerStorageValue(summon, 1007, it.nick ~= "" and it.nick or it.name)
doSetMonsterGym(summon, focus)
local name = it.nick ~= "" and it.nick or getCreatureName(this).."s "..it.name
addEvent(adjustWildPoke, 15, summon, it.optionalLevel)
doCreatureSay(this, gobackmsgs[math.random(#gobackmsgs)].go:gsub("doka", getPlayerStorageValue(summon, 1007)), 1)
fighting = true
battle_turn = battle_turn + 1
end
local function doWinDuel(cid, npc)
if not isCreature(cid) then return true end
local this = npc
local x = prizes[number_of_pokemons]
for n = 1, #x do
doPlayerAddItem(cid, x[n].itemid, x[n].count)
end
doCreatureSay(npc, "Parabéns! Você ganhou, aqui é o seu prêmio.", 1)
cooldown_table[getCreatureName(cid)] = os.clock() + time_to_fight_again
return true
end
function onCreatureSay(cid, type, msg)
local msg = string.lower(msg)
if focus == cid then
talk_start = os.clock()
end
if msgcontains(msg, 'hi') and focus == 0 and getDistanceToCreature(cid) <= 4 then
if cooldown_table[getCreatureName(cid)] and cooldown_table[getCreatureName(cid)] - os.clock() > 0 then
selfSay("Olá "..getCreatureName(cid)..", Eu realmente gostei da nossa última batalha!")
conv = 10
else
selfSay("Olá "..getCreatureName(cid)..", você está pronto para um duelo? Eu posso dar prêmios se você ganhar!")
conv = 1
end
focus = cid
talk_start = os.clock()
return true
end
if (isDuelMsg(msg) or isConfirmMsg(msg)) and (conv == 1 or conv == 10) and focus == cid then
if conv == 10 then
selfSay("Acabamos lutaram! Por favor, espere por mim para recuperar a última batalha!")
focus = 0
return true
end
if not hasPokemon(cid) then
selfSay("Você precisa de pokemons para a batalha!")
return true
end
selfSay("Ok, diga-me quantos pokemons vai lutar.")
conv = 2
return true
end
if conv == 2 and focus == cid then
if not tonumber(msg) then
selfSay("Diga-me o número de pokemons que vamos disputar.")
return true
elseif tonumber(msg) > #pokemons then
selfSay("Eu só tenho"..#pokemons..", de modo que o máximo é "..#pokemons.."!")
return true
elseif tonumber(msg) < min_pokemons_to_battle or tonumber(msg) < 1 then
selfSay("Ele tem de ser mais do que "..min_pokemons_to_battle..".")
return true
else
number_of_pokemons = tonumber(msg)
selfSay("Ok, o primeiro que vence "..number_of_pokemons.." vitórias, vamos começar!")
challenger = focus
setPlayerStorageValue(cid, 990, 1)
addEvent(doSummonGymPokemon, 850, getThis())
conv = 3
return true
end
return true
end
if isNegMsg(msg) and conv == 1 and focus == cid then
focus = 0
selfSay("É melhor para você recusar uma batalha contra mim!")
return true
end
if msgcontains(msg, 'tchau') and focus == cid then
selfSay('Tchau e fazer melhor da proxima treinador!')
setPlayerStorageValue(focus, 990, -1)
focus = 0
return true
end
end
local afk_warning = false
local change = false
local walkdelay = 0
function onThink()
if not masterpos.x then
masterpos = getThingPos(getThis())
end
if focus == 0 then
selfTurn(2)
fighting = false
challenger = 0
change = false
challenger_turn = 0
battle_turn = 1
afk_time = 0
afk_warning = false
if #getCreatureSummons(getThis()) >= 1 then
setPlayerStorageValue(getCreatureSummons(getThis())[1], 1006, 0)
doCreatureAddHealth(getCreatureSummons(getThis())[1], -getCreatureMaxHealth(getCreatureSummons(getThis())[1]))
end
walkdelay = walkdelay - 0.5
if walkdelay <= 0 then
walkdelay = walk_delay
local pos = getThingPos(getThis())
local npos = {}
for a = 0, 3 do
if getDistanceBetween(getPosByDir(pos, a), masterpos) <= max_distance and canWalkOnPos(getPosByDir(pos, a), true, false, true, true, false) then
table.insert(npos, getPosByDir(pos, a))
end
end
if npos and #npos > 0 then
doTeleportThing(getThis(), npos[math.random(#npos)])
end
end
return true
else
if not isCreature(focus) then
focus = 0
return true
end
if fighting then
talk_start = os.clock()
if not isCreature(getCreatureTarget(getThis())) then
if #getCreatureSummons(challenger) >= 1 then
if getCreatureOutfit(getCreatureSummons(challenger)[1]).lookType ~= 2 then --alterado v1.6
selfAttackCreature(getCreatureSummons(challenger)[1])
change = true
afk_time = 0
end
else
afk_time = afk_time + 0.5
if change then
change = false
challenger_turn = challenger_turn + 1
end
end
end
if afk_time > afk_limit_time then
setPlayerStorageValue(focus, 990, -1)
focus = 0
selfSay("Eu esperei muito tempo, voltar quando estiver pronto!!")
return true
end
if not afk_warning and afk_time > afk_limit_time / 2 then
selfSay("Onde está o seu pokemon? Vamos lutar!")
afk_warning = true
end
if #getCreatureSummons(getThis()) == 0 then
if battle_turn > number_of_pokemons then
addEvent(doWinDuel, 1000, focus, getThis())
setPlayerStorageValue(focus, 990, -1)
focus = 0
return true
end
addEvent(doSummonGymPokemon, 1000, getThis())
end
if not hasPokemon(challenger) or challenger_turn > 6 or challenger_turn >= number_of_pokemons then
selfSay("Você perdeu o duelo! Talvez em outro momento você vai me derrotar.")
setPlayerStorageValue(focus, 990, -1)
focus = 0
return true
end
end
local npcpos = getThingPos(getThis())
local focpos = getThingPos(focus)
if npcpos.z ~= focpos.z then
setPlayerStorageValue(focus, 990, -1)
focus = 0
selfSay("Tchau então.")
return true
end
if (os.clock() - talk_start) > 30 then
selfSay("Adeus e continue treinando!!")
setPlayerStorageValue(focus, 990, -1)
focus = 0
end
if getDistanceToCreature(focus) > max_distance then
setPlayerStorageValue(focus, 990, -1)
focus = 0
return true
end
local dir = doRedirectDirection(getDirectionTo(npcpos, focpos))
selfTurn(dir)
end
return true
end
Tem como alguém de vocês me dizer como faço para ele dar exp e item após derrota ?
eu sei uma parte da scripter que é
doPlayerAddItem(cid, 11448, 1)
doPlayerAddExp(cid, 10000)
mais num sei o resto e onde adicionar alguém adicionar na scripter pra mim rep++