-
Total de itens
68 -
Registro em
-
Última visita
Posts postados por outbreaks
-
-
tipo no client tem opção andar rapido
ai vc ativa ele fica rapido pra se move
eu queria tira e deixa normal!
-
Ow eu queria tira uma opção do meu client
que tava bugando meu server!
fica em opção, andar rapido!
queria tira ele
pq com ele da pra atrevessa paredes, e buga server!
donlowand do client: http://www.mediafire.com/download/zbt9ap013iiwkkw/OTCLIENT+HALOOWEN.rar
-
e pda slicer sim!
-
seção errada.
nos outros pokemon do seu server aparece boost
ou nenhum aparece?
se pude manda script do look do seu server!
-
vo manda mini tutorial, portugues n e mt bom
Mini Tutorial
Primeiro você pega type do corpose no dat
depois abre um OTB Item editor-- pode baixa facil no xtibia eu acho
abre o otb do seu server, que fica na pasta do intens
vai em edit e cria novo intem, criando intem vc vai nele e coloka type do corpose
do dat editor. No otb ele vai aparece um numero,
ai vc vai intem.xml e adiciona o msm numero que você adiciono no otb
o numero que você coloko no otb vai se o que vc usa, no monster, e no lib
para captura o pokemon
-
isso man, ganha roupa e dinheiro e intens , etc!
so quer queria sabe como eu coloko pra somente
tipo " naturia keeper" rank 5
somenta rank 5 pra fala com npc!
Você precisa a script do npc master?
-
" PDA SLICER"
Primeiro vc precisa se Rank 5
Você fala missão, ai npc responde você precisa
derrota 4 npc, quando derrota os 4
ele fala: agr vc tem que batalha cmg
se ele vence ele ganha roupa!
Preciso de npc quer voçê batalha com ele,
se você vencer ganha um intem,
ai outro npc que vc batalha com ele, mais so pode batalha com ele
se você tive um intem, se ganha do npc vc ganha outro intem
-
Preciso script que vc clica no intem e teleporta
e n pode esta com pz!
-
aaa man descobrir erro e outro
do bau, tipo
n sei o que eu fiz com mapa
ele bugo cidade,
pq tentei usa teleport,
e o comando town
n funciono!
vc sabe arruma isso no map editor?
na questao do bau a script ta funcionando perfeitamente
so que n ta achando a cidade! na hr do teleport
podem fecha topico conseguir concerta!
-
SERVER E "PDA"
Gente eu n conseguir concerta 2 bug
vir recorrer a vcs
1º - no começo do jogo, quando player fala com npc, e clica no bau n e teleportado
2º - sempre da erro quando da look no player
[erro]
[09/11/2013 22:36:47] [Error - CreatureScript Interface]
[09/11/2013 22:36:47] data/creaturescripts/scripts/look.lua:onLook
[09/11/2013 22:36:47] Description:
[09/11/2013 22:36:47] data/lib/some functions.lua:53: attempt to concatenate a boolean value
[09/11/2013 22:36:47] stack traceback:
[09/11/2013 22:36:47] data/lib/some functions.lua:53: in function 'getPlayerDesc'
[09/11/2013 22:36:47] data/creaturescripts/scripts/look.lua:136: in functionas script sao :
look
local NPCBattle = {
["Brock"] = {artig = "He is", cidbat = "Pewter"},
["Misty"] = {artig = "She is", cidbat = "Cerulean"},
["Blaine"] = {artig = "He is", cidbat = "Cinnabar"},
["Sabrina"] = {artig = "She is", cidbat = "Saffron"}, --alterado v1.9 \/ peguem tudo!
["Kira"] = {artig = "She is", cidbat = "Viridian"},
["Koga"] = {artig = "He is", cidbat = "Fushcia"},
["Erika"] = {artig = "She is", cidbat = "Celadon"},
["Surge"] = {artig = "He is", cidbat = "Vermilion"},
}
function onLook(cid, thing, position, lookDistance)
local str = {}
if not isCreature(thing.uid) then
local iname = getItemInfo(thing.itemid)
if isPokeball(thing.itemid) and getItemAttribute(thing.uid, "poke") then
unLock(thing.uid)
local lock = getItemAttribute(thing.uid, "lock")
local pokename = getItemAttribute(thing.uid, "poke")
table.insert(str, "You see "..iname.article.." "..iname.name..".")
if getItemAttribute(thing.uid, "unique") then
table.insert(str, " It's an unique item.")
end
if pokesPrice[pokename] then
table.insert(str, "\nIt contains "..getArticle(pokename).." "..pokename..". Price: $"..pokesPrice[pokename].price..".\n")
else
table.insert(str, "\nIt contains "..getArticle(pokename).." "..pokename..". Price: unsellable.\n")
end
if lock and lock > 0 then
table.insert(str, "It will unlock in ".. os.date("%d/%m/%y %X", lock)..".\n")
end
local boost = getItemAttribute(thing.uid, "boost") or 0
if boost > 0 then
table.insert(str, "Boost level: +"..boost..".\n")
end
if getItemAttribute(thing.uid, "nick") then
table.insert(str, "It's nickname is: "..getItemAttribute(thing.uid, "nick")..".\n")
end
if getItemAttribute(thing.uid, "gender") == SEX_MALE then
table.insert(str, "It is male.")
elseif getItemAttribute(thing.uid, "gender") == SEX_FEMALE then
table.insert(str, "It is female.")
else
table.insert(str, "It is genderless.")
end
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str))
return false
elseif string.find(iname.name, "fainted") or string.find(iname.name, "defeated") then
table.insert(str, "You see a "..string.lower(iname.name)..". ")
if isContainer(thing.uid) then
table.insert(str, "(Vol: "..getContainerCap(thing.uid)..")")
end
table.insert(str, "\n")
if getItemAttribute(thing.uid, "gender") == SEX_MALE then
table.insert(str, "It is male.")
elseif getItemAttribute(thing.uid, "gender") == SEX_FEMALE then
table.insert(str, "It is female.")
else
table.insert(str, "It is genderless.")
end
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str))
return false
elseif isContainer(thing.uid) then --containers
if iname.name == "dead human" and getItemAttribute(thing.uid, "pName") then
table.insert(str, "You see a dead human (Vol:"..getContainerCap(thing.uid).."). ")
table.insert(str, "You recognize ".. getItemAttribute(thing.uid, "pName")..". ".. getItemAttribute(thing.uid, "article").." was killed by a ")
table.insert(str, getItemAttribute(thing.uid, "attacker")..".")
else
table.insert(str, "You see "..iname.article.." "..iname.name..". (Vol:"..getContainerCap(thing.uid)..").")
end
if getPlayerGroupId(cid) >= 4 and getPlayerGroupId(cid) <= 6 then
table.insert(str, "\nItemID: ["..thing.itemid.."]")
local pos = getThingPos(thing.uid)
table.insert(str, "\nPosition: [X: "..pos.x.."][Y: "..pos.y.."][Z: "..pos.z.."]")
end
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str))
return false
elseif getItemAttribute(thing.uid, "unique") then
local p = getThingPos(thing.uid)
table.insert(str, "You see ")
if thing.type > 1 then
table.insert(str, thing.type.." "..iname.plural..".")
else
table.insert(str, iname.article.." "..iname.name..".")
end
table.insert(str, " It's an unique item.\n"..iname.description)
if getPlayerGroupId(cid) >= 4 and getPlayerGroupId(cid) <= 6 then
table.insert(str, "\nItemID: ["..thing.itemid.."]")
table.insert(str, "\nPosition: ["..p.x.."]["..p.y.."]["..p.z.."]")
end
sendMsgToPlayer(cid, MESSAGE_INFO_DESCR, table.concat(str))
return false
else
return true
end
end
local npcname = getCreatureName(thing.uid)
if ehNPC(thing.uid) and NPCBattle[npcname] then --npcs duel
table.insert(str, "You see "..npcname..". "..NPCBattle[npcname].artig.." leader of the gym from "..NPCBattle[npcname].cidbat..".")
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str))
return false
end
if getPlayerStorageValue(thing.uid, 697548) ~= -1 then
table.insert(str, getPlayerStorageValue(thing.uid, 697548))
local pos = getThingPos(thing.uid)
if youAre[getPlayerGroupId(cid)] then
table.insert(str, "\nPosition: [X: "..pos.x.."][Y: "..pos.y.."][Z: "..pos.z.."]")
end
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str))
return false
end
if not isPlayer(thing.uid) and not isMonster(thing.uid) then --outros npcs
table.insert(str, "You see "..getCreatureName(thing.uid)..".")
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str))
return false
end
if isPlayer(thing.uid) then --player
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, getPlayerDesc(cid, thing.uid, false))
return false
end
if getCreatureName(thing.uid) == "Evolution" then return false end
if not isSummon(thing.uid) then --monstros
table.insert(str, "You see a wild "..string.lower(getCreatureName(thing.uid))..".\n")
table.insert(str, "Hit Points: "..getCreatureHealth(thing.uid).." / "..getCreatureMaxHealth(thing.uid)..".\n")
if getPokemonGender(thing.uid) == SEX_MALE then
table.insert(str, "It is male.")
elseif getPokemonGender(thing.uid) == SEX_FEMALE then
table.insert(str, "It is female.")
else
table.insert(str, "It is genderless.")
end
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str))
return false
elseif isSummon(thing.uid) and not isPlayer(thing.uid) then --summons
local boostlevel = getItemAttribute(getPlayerSlotItem(getCreatureMaster(thing.uid), 8).uid, "boost") or 0
if getCreatureMaster(thing.uid) == cid then
local myball = getPlayerSlotItem(cid, 8).uid
table.insert(str, "You see your "..string.lower(getCreatureName(thing.uid))..".")
if boostlevel > 0 then
table.insert(str, "\nBoost level: +"..boostlevel..".")
end
table.insert(str, "\nHit points: "..getCreatureHealth(thing.uid).."/"..getCreatureMaxHealth(thing.uid)..".")
table.insert(str, "\n"..getPokemonHappinessDescription(thing.uid))
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str))
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You see a "..string.lower(getCreatureName(thing.uid))..".\nIt belongs to "..getCreatureName(getCreatureMaster(thing.uid))..".")
end
return false
end
return true
endsome functions
function unLock(ball) --alterado v1.8 \/\/ peguem ele todo!
if not ball or ball <= 0 then return false end
if getItemAttribute(ball, "lock") and getItemAttribute(ball, "lock") > 0 then
local vipTime = getItemAttribute(ball, "lock")
local timeNow = os.time()
local days = math.ceil((vipTime - timeNow)/(24 * 60 * 60))
if days <= 0 then
doItemEraseAttribute(ball, "lock")
doItemEraseAttribute(ball, "unique")
return true
end
end
return false
end
function getGuildMembersOnline(GuildId)
local players = {}
for _, pid in pairs(getPlayersOnline()) do
if getPlayerGuildId(pid) == tonumber(GuildId) then
table.insert(players, pid)
end
end --by Vodkart
return #players > 0 and players or false
end
function getGuildMembers(GuildId)
local players,query = {},db.getResult("SELECT `name` FROM `players` WHERE `rank_id` IN (SELECT `id` FROM `guild_ranks` WHERE `guild_id` = " .. GuildId .. ");")
if (query:getID() ~= -1) then
repeat
table.insert(players,query:getDataString("name"))
until not query:next() --by Vodkart
query:free()
end
return #players > 0 and players or false
end
--/////////////////////////////////////////////////////////////////////////////////---
function sendMsgToPlayer(cid, tpw, msg) --alterado v1.7 \/\/\/
if not isCreature(cid) or not tpw or not msg then return true end
doPlayerSendTextMessage(cid, tpw, msg)
end
function getPlayerDesc(cid, thing, TV)
if (not isCreature(cid) or not isCreature(thing)) and not TV then return "" end
local pos = getThingPos(thing)
local ocup = youAre[getPlayerGroupId(thing)]
local rank = (getPlayerStorageValue(thing, 86228) <= 0) and "a Pokemon Trainer" or lookClans[getPlayerStorageValue(thing, 86228)][getPlayerStorageValue(thing, 862281)]
local name = thing == cid and "yourself" or getCreatureName(thing) --alterado v1.8
local art = thing == cid and "You are" or (getPlayerSex(thing) == 0 and "She is" or "He is")
local str = "You see "..name..". "..art.." "
if youAre[getPlayerGroupId(thing)] then
str = str..""..(ocup).." and "..rank.." from ".. getTownName(getPlayerTown(thing)).."."
else
str = str..""..(rank).." from ".. getTownName(getPlayerTown(thing)).."."
end
if getPlayerGuildId(thing) > 0 then
str = str.." "..art.." "..getPlayerGuildRank(thing).." from the "..getPlayerGuildName(thing).."."
end
if TV then
str = str.." "..art.." watching TV."
end
str = str..""..((isPlayer(cid) and youAre[getPlayerGroupId(cid)]) and "\nPosition: [X: "..pos.x.."][Y: "..pos.y.."][Z: "..pos.z.."]" or "") --alterado v1.8
return str
end
------------------------------------------------------------------------------------------------- /\/\
function getLivePokeballs(cid, container, duel)
if not isCreature(cid) then return {} end
if not isContainer(container) then return {} end
local items = {}
---
local ballSlot = getPlayerSlotItem(cid, 8)
if ballSlot.uid ~= 0 then
for a, b in pairs (pokeballs) do
if ballSlot.itemid == b.on or ballSlot.itemid == b.use then
if duel and getPlayerLevel(cid) >= (pokes[getItemAttribute(ballSlot.uid, "poke")].level + getPokeballBoost(ballSlot)) then
table.insert(items, ballSlot.uid) --alterado v1.8
elseif not duel then
table.insert(items, ballSlot.uid)
end
end
end
end
---
if isContainer(container) and getContainerSize(container) > 0 then
for slot=0, (getContainerSize(container)-1) do
local item = getContainerItem(container, slot)
if isContainer(item.uid) then
local itemsbag = getPokeballsInContainer(item.uid)
for i=0, #itemsbag do
if not isInArray(items, itemsbag) then
table.insert(items, itemsbag)
end
end
elseif isPokeball(item.itemid) then
for a, b in pairs (pokeballs) do
if item.itemid == b.on then
if duel and getPlayerLevel(cid) >= (pokes[getItemAttribute(item.uid, "poke")].level + getPokeballBoost(item)) then
table.insert(items, item.uid) --alterado v1.8
elseif not duel then
table.insert(items, item.uid)
end
end
end
end
end
end
return items
end
function addItemInFreeBag(container, item, num)
if not isContainer(container) then return false end
if not item then return false end
if not num then num = 1 end --alterado v1.6.1
if getContainerSize(container) < getContainerCap(container) then
return doAddContainerItem(container, item, num)
else
for slot = 0, (getContainerSize(container)-1) do
local container2 = getContainerItem(container, slot)
if isContainer(container2.uid) and getContainerSize(container2.uid) < getContainerCap(container2.uid) then
return doAddContainerItem(container2.uid, item, num)
end
end
end
return false
end
------------------------------------------------------------------------------------------------------
function pokeHaveReflect(cid)
if not isCreature(cid) then return false end
local table = getTableMove(cid, "Reflect")
if table and table.name then --alterado v1.6
return true
end
return false
end
------------------------------------------------------------------------------------------------------
function nextHorario(cid)
horarioAtual = os.date("%X")
horario = string.explode(horarioAtual, ":")
for i = 1, #horas do
horarioComparacao = horas
horarioComp = string.explode(horarioComparacao, ":")
---------------
if tonumber(horarioComp[1]) > tonumber(horario[1]) then
return horarioComparacao --alterado v1.3
elseif tonumber(horarioComp[1]) == tonumber(horario[1]) and tonumber(horario[2]) < tonumber(horarioComp[2]) then
return horarioComparacao
end
end
return horas[1] --alterado v1.3
end
function getTimeDiff(timeDiff)
local dateFormat = {
{'hour', timeDiff / 60 / 60}, --6%
{'min', timeDiff / 60 % 60},
}
local out = {} --alterado v1.3
for k, t in ipairs(dateFormat) do
local v = math.floor(t[2])
if(v > -1) then
table.insert(out, (k < #dateFormat and '' or ' and ') .. v .. '' .. (v <= 1 and t[1] or t[1].."s"))
end
end
if tonumber(dateFormat[1][2]) == 0 and tonumber(dateFormat[2][2]) == 0 then
return "seconds"
end
return table.concat(out)
end
function getTimeDiff2(timeDiff)
local dateFormat = {
{'hour', timeDiff / 60 / 60}, --6%
{'min', timeDiff / 60 % 60},
{'sec', timeDiff % 60},
}
local out = {}
for k, t in ipairs(dateFormat) do
local v = math.floor(t[2])
if(v > 0) then
table.insert(out, (k < #dateFormat and ' ' or ' and ') .. v .. '' .. (v <= 1 and t[1] or t[1].."s"))
end
end
return table.concat(out)
end
function showTimeDiff(timeComp)
local b = string.explode(os.date("%X"), ":")
local c = string.explode(timeComp, ":")
---
local d, m, y = os.date("%d"), os.date("%m"), os.date("%Y")
local hAtual, mAtual = tonumber(b[1]), tonumber(b[2])
local hComp, mComp = tonumber(c[1]), tonumber(c[2])
---
local t = os.time{year= y, month= m, day= d, hour= hAtual, min= mAtual}
local t1 = os.time{year= y, month= m, day= d, hour= hComp, min= mComp}
--- --alterado v1.3
comparacao = t1-t
if hComp < hAtual then
v = os.time{year= y, month= m, day= d, hour= 24, min= 0}
v2 = os.time{year= y, month= m, day= d, hour= 0, min= 0}
comparacao = (v-t)+(t1-v2)
end
return getTimeDiff(comparacao)
end
-------------------------------------------------------------------------
function cleanCMcds(item)
if item ~= 0 then
for c = 1, 15 do --alterado v1.5
local str = "cm_move"..c
setCD(item, str, 0)
end
end
end
function ehNPC(cid)
if isCreature(cid) and not isPlayer(cid) and not isSummon(cid) and not isMonster(cid) then
return true
end --alterado v1.5
return false
end
function ehMonstro(cid)
if not isPlayer(cid) and not isSummon(cid) and not isNpc(cid) then
return true
end --function pro exp.lua...
return false
end
function doAppear(cid) --Faz um poke q tava invisivel voltar a ser visivel...
if not isCreature(cid) then return true end
doRemoveCondition(cid, CONDITION_INVISIBLE)
doRemoveCondition(cid, CONDITION_OUTFIT)
doCreatureSetHideHealth(cid, false)
if getCreatureName(cid) == "Ditto" and pokes[getPlayerStorageValue(cid, 1010)] and getPlayerStorageValue(cid, 1010) ~= "Ditto" then
if isSummon(cid) then
local item = getPlayerSlotItem(getCreatureMaster(cid), 8)
doSetCreatureOutfit(cid, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1) --alterado v1.6.1
end
end
end
function doDisapear(cid) --Faz um pokemon ficar invisivel
if not isCreature(cid) then return true end
doCreatureAddCondition(cid, permanentinvisible)
doCreatureSetHideHealth(cid, true)
doSetCreatureOutfit(cid, {lookType = 2}, -1)
end
function hasTile(pos) --Verifica se tem TILE na pos
pos.stackpos = 0
if getTileThingByPos(pos).itemid >= 1 then
return true
end
return false
end
function getThingFromPosWithProtect(pos) --Pega uma creatura numa posiçao com proteçoes
if hasTile(pos) then
if isCreature(getRecorderCreature(pos)) then
return getRecorderCreature(pos)
else
pos.stackpos = 253
pid = getThingfromPos(pos).uid
end
else
pid = getThingfromPos({x=1,y=1,z=10,stackpos=253}).uid
end
return pid
end
function getTileThingWithProtect(pos) --Pega um TILE com proteçoes
if hasTile(pos) then
pos.stackpos = 0
pid = getTileThingByPos(pos)
else
pid = getTileThingByPos({x=1,y=1,z=10,stackpos=0})
end
return pid
end
function canAttackOther(cid, pid) --Function q verifica se um poke/player pode atacar outro poke/player
if not isCreature(cid) or not isCreature(pid) then return "Cant" end
local master1 = isSummon(cid) and getCreatureMaster(cid) or cid
local master2 = isSummon(pid) and getCreatureMaster(pid) or pid
--alterado v1.6.1 Party system agora eh simplismente party system kk
---- --alterado v1.6 duel system
if getPlayerStorageValue(master1, 6598754) >= 5 and getPlayerStorageValue(master2, 6598754) >= 5 then
if getPlayerStorageValue(master1, 6598754) ~= getPlayerStorageValue(master2, 6598754) then
if isDuelingAgainst(master1, master2) then --alterado v1.8
if isSummon(cid) and isPlayer(pid) then
return "Cant"
else
return "Can"
end
end
end
end
---- pvp system
if getPlayerStorageValue(master1, 6598754) >= 1 and getPlayerStorageValue(master2, 6598755) >= 1 then
return "Can"
end
if getPlayerStorageValue(master1, 6598755) >= 1 and getPlayerStorageValue(master2, 6598754) >= 1 then ---estar em times diferentes
return "Can"
end
----
if ehMonstro(cid) or ehMonstro(pid) then
return "Can"
end
return "Cant"
end
function stopNow(cid, time) --function q faz o poke/player ficar imovel por um tempo
if not isCreature(cid) then return true end
if isSleeping(cid) then return true end
local speed = getCreatureSpeed(cid)
if isPlayer(cid) then
mayNotMove(cid, true)
addEvent(mayNotMove, time, cid, false)
else
doChangeSpeed(cid, -speed)
addEvent(doRegainSpeed, time, cid)
end
end
function doReduceStatus(cid, off, def, agi) --reduz os status
if not isCreature(cid) then return true end
local A = getOffense(cid)
local B = getDefense(cid)
local C = getSpeed(cid)
if off > 0 then
setPlayerStorageValue(cid, 1001, A - off)
end
if def > 0 then
setPlayerStorageValue(cid, 1002, B - def)
end
if agi > 0 then
setPlayerStorageValue(cid, 1003, C - agi)
if getCreatureSpeed(cid) ~= 0 then
doRegainSpeed(cid)
end --alterado v1.5 functions arrumadas...
end
end
function doRaiseStatus(cid, off, def, agi, time)
if not isCreature(cid) then return true end
local A = getOffense(cid)
local B = getDefense(cid)
local C = getSpeed(cid)
if off > 0 then
setPlayerStorageValue(cid, 1001, A * off)
end
if def > 0 then
setPlayerStorageValue(cid, 1002, B * def)
end
if agi > 0 then
setPlayerStorageValue(cid, 1003, C + agi)
if getCreatureSpeed(cid) ~= 0 then
doRegainSpeed(cid)
end
end
local D = getOffense(cid)
local E = getDefense(cid)
local F = getSpeed(cid)
---------------------------
local G = D - A
local H = E - B
local I = F - C
addEvent(doReduceStatus, time*1000, cid, G, H, I)
end
function BackTeam(cid)
if isCreature(cid) then
local summon = getCreatureSummons(cid) --alterado v1.6
for i = 2, #summon do
doSendMagicEffect(getThingPos(summon), 211)
doRemoveCreature(summon)
end
setPlayerStorageValue(cid, 637501, -1)
end
end
function choose(...) -- by mock
local arg = {...}
return arg[math.random(1,#arg)]
end
function AddPremium(cid, days)
local function removerPlayer(cid)
if isCreature(cid) then
doRemoveCreature(cid)
end
end
db.executeQuery("UPDATE `accounts` SET `premdays` = '"..days.."' WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";")
doPlayerSendTextMessage(cid,25,"Você será kickado em 5 segundos.")
addEvent(removerPlayer, 5*1000, cid)
return TRUE
end
function isShiny(cid)
if not isCreature(cid) then
return false
end
if string.find(tostring(getCreatureName(cid)), "Shiny") then
return true
end
return false
end
function isShinyName(name) --verifica se um nome tem a palavra "Shiny" nele...
if string.find(tostring(name), "Shiny") then
return true
end
return false
end
function doConvertTypeToStone(type, string)
local t = {
["fly"] = {heart, "heart"},
["flying"] = {heart, "heart"},
["normal"] = {heart, "heart"},
["fire"] = {fire, "fire"},
["grass"] = {leaf, "leaf"},
["leaf"] = {leaf, "leaf"},
["water"] = {water, "water"},
["poison"] = {venom, "venom"},
["venom"] = {venom, "venom"},
["electric"] = {thunder, "thunder"},
["thunder"] = {thunder, "thunder"},
["rock"] = {rock, "rock"},
["fight"] = {punch, "punch"},
["fighting"] = {punch, "punch"},
["bug"] = {coccon, "coccon"},
["dragon"] = {crystal, "crystal"},
["dark"] = {dark, "dark"},
["ghost"] = {dark, "dark"},
["ground"] = {earth, "earth"},
["earth"] = {earth, "earth"},
["psychic"] = {enigma, "enigma"},
["steel"] = {metal, "metal"},
["metal"] = {metal, "metal"},
["ice"] = {ice, "ice"},
}
if string then
return t[type][2]
else
return t[type][1]
end
end
function doConvertStoneIdToString(stoneID)
local t = {
[11453] = "Heart Stone",
[11441] = "Leaf Stone",
[11442] = "Water Stone",
[11443] = "Venom Stone",
[11444] = "Thunder Stone",
[11445] = "Rock Stone",
[11446] = "Punch Stone",
[11447] = "Fire Stone", --alterado v1.6
[11448] = "Cocoon Stone",
[11449] = "Crystal Stone",
[11450] = "Darkess Stone",
[11451] = "Earth Stone",
[11452] = "Enigma Stone",
[11454] = "Ice Stone",
[12244] = "King's Rock",
[12232] = "Metal Stone",
[12242] = "Sun Stone",
[12401] = "Shiny Fire Stone",
[12402] = "Shiny Water Stone",
[12403] = "Shiny Leaf Stone",
[12404] = "Shiny Heart Stone",
[12405] = "Shiny Enigma Stone",
[12406] = "Shiny Rock Stone",
[12407] = "Shiny Venom Stone",
[12408] = "Shiny Ice Stone",
[12409] = "Shiny Thunder Stone",
[12410] = "Shiny Crystal Stone",
[12411] = "Shiny Cocoon Stone",
[12412] = "Shiny Darkness Stone",
[12413] = "Shiny Punch Stone",
[12414] = "Shiny Earth Stone",
}
if t[stoneID] then
return t[stoneID]
else
return ""
end
end
function isStone(id)
if id >= leaf and id <= ice then
return true
end
if id == 12232 or id == 12242 or id == 12244 or id == 12245 then
return true --alterado v1.7 com as stones shinys tb soh pra garantir.. ^^
end
if (id >= sfire and id <= searth) or id == 12417 or id == 12419 then
return true
end
return false
end
function isWater(id)
if id >= 4820 and id <= 4825 then
return true
end
return false
end
function getTopCorpse(position)
local pos = position
for n = 1, 255 do
pos.stackpos = n
local item = getTileThingByPos(pos)
if item.itemid >= 2 and (string.find(getItemNameById(item.itemid), "fainted ") or string.find(getItemNameById(item.itemid), "defeated ")) then
return getTileThingByPos(pos)
end
end
return null
end
bpslot = CONST_SLOT_BACKPACK
function hasPokemon(cid)
if not isCreature(cid) then return false end
if getCreatureMana(cid) <= 0 then return false end
if #getCreatureSummons(cid) >= 1 then return true end
local item = getPlayerSlotItem(cid, CONST_SLOT_FEET)
local bp = getPlayerSlotItem(cid, bpslot)
for a, b in pairs (pokeballs) do
if item.itemid == b.on or item.itemid == b.use then
return true --alterado v1.4
end
if #getItemsInContainerById(bp.uid, b.on) >= 1 then
return true
end
end
return false
end
function isNpcSummon(cid)
return isNpc(getCreatureMaster(cid))
end
function getPokemonHappinessDescription(cid)
if not isCreature(cid) then return true end
local str = ""
if getPokemonGender(cid) == SEX_MALE then
str = "He"
elseif getPokemonGender(cid) == SEX_FEMALE then
str = "She"
else
str = "It"
end
local h = getPlayerStorageValue(cid, 1008)
if h >= tonumber(getConfigValue('PokemonStageVeryHappy')) then
str = str.." is very happy with you!"
elseif h >= tonumber(getConfigValue('PokemonStageHappy')) then
str = str.." is happy."
elseif h >= tonumber(getConfigValue('PokemonStageOK')) then
str = str.." is unhappy."
elseif h >= tonumber(getConfigValue('PokemonStageSad')) then
str = str.." is sad."
elseif h >= tonumber(getConfigValue('PokemonStageMad')) then
str = str.." is mad."
else
str = str.." is very mad at you!"
end
return str
end
function doSetItemAttribute(item, key, value)
doItemSetAttribute(item, key, value)
end
function deTransform(cid, check)
if not isCreature(cid) then return true end
local m = getCreatureMaster(cid)
local p = getPlayerSlotItem(m, 8)
if getItemAttribute(p.uid, "transTurn") ~= check then return true end
setPlayerStorageValue(cid, 1010, getCreatureName(cid) == "Ditto" and "Ditto" or "Shiny Ditto") --edited
doRemoveCondition(cid, CONDITION_OUTFIT)
doSendMagicEffect(getThingPos(cid), 184)
doCreatureSay(cid, "DITTO!", TALKTYPE_MONSTER)
doItemSetAttribute(p.uid, "transBegin", 0)
doItemSetAttribute(p.uid, "transLeft", 0)
doItemEraseAttribute(p.uid, "transName")
adjustStatus(cid, p.uid, true, true, true)
end
function isTransformed(cid)
if getPlayerStorageValue(cid, 1010) == "Ditto" or getPlayerStorageValue(cid, 1010) == "Shiny Ditto" then
return false --edited
else
return true
end
end
function doSendFlareEffect(pos)
local random = {28, 29, 79}
doSendMagicEffect(pos, random[math.random(1, 3)])
end
function isDay()
local a = getWorldTime()
if a >= 360 and a < 1080 then
return true
end
return false
end
function doPlayerSendTextWindow(cid, p1, p2)
if not isCreature(cid) then return true end
local item = 460
local text = ""
if type(p1) == "string" then
doShowTextDialog(cid, item, p1)
else
doShowTextDialog(cid, p1, p2)
end
end
function getClockString(tw)
local a = getWorldTime()
local b = a / 60
local hours = math.floor(b)
local minut = a - (60 * hours)
if not tw then
if hours < 10 then
hours = "0"..hours..""
end
if minut < 10 then
minut = "0"..minut..""
end
return hours..":"..minut
else
local sm = "a.m"
if hours >= 12 then
hours = hours - 12
sm = "p.m"
end
if hours < 10 then
hours = "0"..hours..""
end
if minut < 10 then
minut = "0"..minut..""
end
return hours..":"..minut.." "..sm
end
end
function doCorrectPokemonName(poke)
return doCorrectString(poke)
end
function doCorrectString(poke)
local name = ""
local n = string.explode(poke, " ")
local str = string.sub(n[1], 1, 1)
local sta = string.sub(n[1], 2, string.len(n[1]))
name = ""..string.upper(str)..""..string.lower(sta)..""
if n[2] then
str = string.sub(n[2], 1, 1)
sta = string.sub(n[2], 2, string.len(n[2]))
name = name.." "..string.upper(str)..""..string.lower(sta)..""
end
if n[3] then
str = string.sub(n[3], 1, 1)
sta = string.sub(n[3], 2, string.len(n[3]))
name = name.." "..string.upper(str)..""..string.lower(sta)..""
end
return name
end
function getHappinessRate(cid)
if not isCreature(cid) then return 1 end
local a = getPlayerStorageValue(cid, 1008)
if a == -1 then return 1 end
if a >= getConfigValue('PokemonStageVeryHappy') then
return happinessRate[5].rate
elseif a >= getConfigValue('PokemonStageHappy') then
return happinessRate[4].rate
elseif a >= getConfigValue('PokemonStageOK') then
return happinessRate[3].rate
elseif a >= getConfigValue('PokemonStageSad') then
return happinessRate[2].rate
else
return happinessRate[1].rate
end
return 1
end
function doBodyPush(cid, target, go, pos)
if not isCreature(cid) or not isCreature(target) then
doRegainSpeed(cid)
doRegainSpeed(target)
return true
end
if go then
local a = getThingPos(cid)
doChangeSpeed(cid, -getCreatureSpeed(cid))
if not isPlayer(target) then
doChangeSpeed(target, -getCreatureSpeed(target))
end
doChangeSpeed(cid, 800)
doTeleportThing(cid, getThingPos(target))
doChangeSpeed(cid, -800)
addEvent(doBodyPush, 350, cid, target, false, a)
else
doChangeSpeed(cid, 800)
doTeleportThing(cid, pos)
doRegainSpeed(cid)
doRegainSpeed(target)
end
end
function doReturnPokemon(cid, pokemon, pokeball, effect, hideeffects, blockevo)
--////////////////////////////////////////////////////////////////////////////////////////--
checkDuel(cid) --alterado v1.6 duel system
--////////////////////////////////////////////////////////////////////////////////////////--
if #getCreatureSummons(cid) > 1 and getPlayerStorageValue(cid, 212124) <= 0 then --alterado v1.6
if getPlayerStorageValue(cid, 637501) == -2 or getPlayerStorageValue(cid, 637501) >= 1 then
BackTeam(cid)
end
end
-----------------
local edit = true
if not pokeball then
pokeball = getPlayerSlotItem(cid, 8)
end
if blockevo then
edit = false
doPlayerSendCancel(cid, "Your pokemon couldn't evolve due to server mistakes, please wait until we fix the problem.")
end
local happy = getPlayerStorageValue(pokemon, 1008)
local hunger = getPlayerStorageValue(pokemon, 1009)
local pokelife = (getCreatureHealth(pokemon) / getCreatureMaxHealth(pokemon))
if edit then
doItemSetAttribute(pokeball.uid, "happy", happy)
doItemSetAttribute(pokeball.uid, "hunger", hunger)
doItemSetAttribute(pokeball.uid, "hp", pokelife)
end
if getCreatureName(pokemon) == "Ditto" then
if isTransformed(pokemon) then
local left = getItemAttribute(pokeball.uid, "transLeft") - (os.clock() - getItemAttribute(pokeball.uid, "transBegin"))
doItemSetAttribute(pokeball.uid, "transLeft", left)
end
end
if hideeffects then
doRemoveCreature(pokemon)
return true
end
local pokename = getPokeName(pokemon)
local mbk = gobackmsgs[math.random(1, #gobackmsgs)].back:gsub("doka", pokename)
if getCreatureCondition(cid, CONDITION_INFIGHT) then
if isCreature(getCreatureTarget(cid)) then
doItemSetAttribute(pokeball.uid, "happy", happy - 5)
else
doItemSetAttribute(pokeball.uid, "happy", happy - 2)
end
end
doTransformItem(pokeball.uid, pokeball.itemid-1)
doCreatureSay(cid, mbk, TALKTYPE_SAY)
doSendMagicEffect(getCreaturePosition(pokemon), effect)
doRemoveCreature(pokemon)
unLock(pokeball.uid) --alterado v1.8
if useOTClient then
doPlayerSendCancel(cid, '12//,hide') --alterado v1.7
end
if useKpdoDlls then
doUpdateMoves(cid)
end
end
local EFFECTS = {
--[OutfitID] = {Effect}
["Magmar"] = 35, --alterado v1.5
["Jynx"] = 17,
["Shiny Jynx"] = 17,
["Piloswine"] = 205, --alterado v1.8
["Swinub"] = 205,
}
function doGoPokemon(cid, item)
if getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 then
return true
end
---------------------------------------------------------------
local ballName = getItemAttribute(item.uid, "poke")
btype = getPokeballType(item.itemid)
local effect = pokeballs[btype].effect
if not effect then
effect = 21
end
-----------------------------------------------------------------
if item.uid ~= getPlayerSlotItem(cid, CONST_SLOT_FEET).uid then
doPlayerSendCancel(cid, "You must put your pokeball in the correct place!")
return TRUE
end
local thishp = getItemAttribute(item.uid, "hp")
if thishp <= 0 then
if isInArray(pokeballs[btype].all, item.itemid) then
doTransformItem(item.uid, pokeballs[btype].off)
doItemSetAttribute(item.uid, "hp", 0)
doPlayerSendCancel(cid, "This pokemon is fainted.")
return true
end
end
local pokemon = getItemAttribute(item.uid, "poke")
if not pokes[pokemon] then
return true
end
----------------------- Sistema de nao poder carregar mais que 3 pokes lvl baixo e + q 1 poke de lvl medio/alto ---------------------------------
if not isInArray({5, 6}, getPlayerGroupId(cid)) then
local bp = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK)
local lowPokes = {"Rattata", "Caterpie", "Weedle", "Oddish", "Pidgey", "Paras", "Poliwag", "Bellsprout", "Magikarp", "Hoppip", "Sunkern"}
local low = {}
local lw = 1
for e, f in pairs(pokeballs) do
for times = 1, 3 do
local items = getItemsInContainerById(bp.uid, pokeballs[e].all[times])
if #items >= 1 then --alterado v1.6
for _, uid in pairs(items) do
local nome1 = getItemAttribute(uid, "poke")
if not isInArray(lowPokes, pokemon) and nome1 == pokemon then
return doPlayerSendTextMessage(cid, 27, "Sorry, but you can't carry more than two pokemons equals!")
elseif isInArray(lowPokes, pokemon) then
if nome1 == pokemon then
table.insert(low, lw, nome1)
lw = lw +1
end
end
end
end
end
end
if #low >= 3 then
return doPlayerSendTextMessage(cid, 27, "Sorry, but you can't carry more than three pokemons equals of low level!")
end
end
---------------------------------------------------------------------------------------------------------------------------------------------------
local x = pokes[pokemon]
local boosts = getItemAttribute(item.uid, "boost") or 0
if getPlayerLevel(cid) < (x.level + boosts) then --alterado v1.8 \/
doPlayerSendCancel(cid, "You need level "..(x.level + boosts).." to use this pokemon.")
return true
end
--------------------------------------------------------------------------------------
shinysClan = {
["Shiny Fearow"] = {4, "Wingeon"},
["Sper Fearow"] = {4, "Wingeon"},
["Shiny Flareon"] = {1, "Volcanic"},
["Esparta Flareon"] = {1, "Volcanic"},
["Shiny Vaporeon"] = {2, "Seavel"},
["Esparta Vaporeon"] = {2, "Seavel"},
["Shiny Jolteon"] = {9, "Raibolt"},
["Esparta Jolteon"] = {9, "Raibolt"},
["Shiny Hypno"] = {7, "Psycraft"},
["Shiny Golem"] = {3, "Orebound"},
["Espinho Golem"] = {3, "Orebound"},
["Shiny Vileplume"] = {8, "Naturia"},
["Shiny Nidoking"] = {5, "Malefic"},
["Tanker Nidoking"] = {5, "Malefic"},
["Shiny Hitmontop"] = {6, "Gardestrike"},
["Shiny Hitmonlee"] = {6, "Gardestrike"},
["Shiny Hitmonchan"] = {6, "Gardestrike"},
--alterado v1.4
}
if shinysClan[pokemon] and (getPlayerGroupId(cid) < 3 or getPlayerGroupId(cid) > 6) then
if getPlayerStorageValue(cid, 86228) ~= shinysClan[pokemon][1] then
doPlayerSendCancel(cid, "You need be a member of the clan "..shinysClan[pokemon][2].." to use this pokemon!")
return true
elseif getPlayerStorageValue(cid, 862281) ~= 5 then
doPlayerSendCancel(cid, "You need be atleast rank 5 to use this pokemon!")
return true
end
end
--------------------------------------------------------------------------------------
doSummonMonster(cid, pokemon)
local pk = getCreatureSummons(cid)[1]
if not isCreature(pk) then return true end
------------------------passiva hitmonchan------------------------------
if isSummon(pk) then
--local e = getCreatureMaster(cid)
local nameHIT = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "poke")
local hands = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "hands")
if nameHIT == "Shiny Hitmonchan" or nameHIT == "Hitmonchan" then
if getItemAttribute(getPlayerSlotItem(cid, 8).uid, "hands") then
doSetCreatureOutfit(pk, {lookType = hitmonchans[nameHIT][hands].out}, -1)
else
doPlayerSendTextMessage(cid, 27, "Contact a GameMaster! Error in passive system! Attribute \"hands\" missing")
end
end
end
-------------------------------------------------------------------------
---------movement magmar, jynx-------------
if EFFECTS[getCreatureName(pk)] then --alterado v1.5
markPosEff(pk, getThingPos(pk))
sendMovementEffect(pk, EFFECTS[getCreatureName(pk)], getThingPos(pk)) --alterado v1.5
end
--------------------------------------------------------------------------
if getCreatureName(pk) == "Ditto" then
local left = getItemAttribute(item.uid, "transLeft")
local name = getItemAttribute(item.uid, "transName")
if left and left > 0 then
setPlayerStorageValue(pk, 1010, name)
doSetCreatureOutfit(pk, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1)
addEvent(deTransform, left * 1000, pk, getItemAttribute(item.uid, "transTurn"))
doItemSetAttribute(item.uid, "transBegin", os.clock())
else
setPlayerStorageValue(pk, 1010, "Ditto")
end
end
if isGhostPokemon(pk) then doTeleportThing(pk, getPosByDir(getThingPos(cid), math.random(0, 7)), false) end
doCreatureSetLookDir(pk, 2)
adjustStatus(pk, item.uid, true, true, true)
doAddPokemonInOwnList(cid, pokemon)
doTransformItem(item.uid, item.itemid+1)
local pokename = getPokeName(pk) --alterado v1.7
local mgo = gobackmsgs[math.random(1, #gobackmsgs)].go:gsub("doka", pokename)
doCreatureSay(cid, mgo, TALKTYPE_SAY)
doSendMagicEffect(getCreaturePosition(pk), effect)
unLock(item.uid) --alterado v1.8
if useKpdoDlls then
doUpdateMoves(cid)
end
end
function doRegainSpeed(cid)
if not isCreature(cid) then return true end
if isPlayer(cid) or ehNPC(cid) then --alterado v1.7 \/
doChangeSpeed(cid, -getCreatureSpeed(cid))
local speed = PlayerSpeed
if isPlayer(cid) and isInArray({4, 5, 6}, getPlayerGroupId(cid)) then
speed = 150*getPlayerGroupId(cid)
end
if getCreatureCondition(cid, CONDITION_PARALYZE) == true then
doRemoveCondition(cid, CONDITION_PARALYZE)
addEvent(doAddCondition, 10, cid, paralizeArea2)
end
doChangeSpeed(cid, speed)
return speed
end
local speed = getSpeed(cid)
if speed > 1500 then speed = 1500 end
doChangeSpeed(cid, -getCreatureSpeed(cid))
if getCreatureCondition(cid, CONDITION_PARALYZE) == true then
doRemoveCondition(cid, CONDITION_PARALYZE)
addEvent(doAddCondition, 10, cid, paralizeArea2)
end
doChangeSpeed(cid, speed)
return speed
end
function isPosEqualPos(pos1, pos2, checkstackpos)
if pos1.x ~= pos2.x or pos1.y ~= pos2.y and pos1.z ~= pos2.z then
return false
end
if checkstackpos and pos1.stackpos and pos2.stackpos and pos1.stackpos ~= pos2.stackpos then
return false
end
return true
end
function getRandomGenderByName(name)
local rate = newpokedex[name]
if not rate then return 0 end
rate = rate.gender
if rate == 0 then
gender = 3
elseif rate == 1000 then
gender = 4
elseif rate == -1 then
gender = 0
elseif math.random(1, 1000) <= rate then
gender = 4
else
gender = 3
end
return gender
end
function getRecorderPlayer(pos, cid)
local ret = 0
if cid and getThingPos(cid).x == pos.x and getThingPos(cid).y == pos.y then
return cid
end
local s = {}
s.x = pos.x
s.y = pos.y
s.z = pos.z
for a = 0, 255 do
s.stackpos = a
local b = getTileThingByPos(s).uid
if b > 1 and isPlayer(b) and getCreatureOutfit(b).lookType ~= 814 then
ret = b
end
end
return ret
end
function getRecorderCreature(pos, cid)
local ret = 0
if cid and getThingPos(cid).x == pos.x and getThingPos(cid).y == pos.y then
return cid
end
local s = {}
s.x = pos.x
s.y = pos.y
s.z = pos.z
for a = 0, 255 do
s.stackpos = a
local b = getTileThingByPos(s).uid
if b > 1 and isCreature(b) and getCreatureOutfit(b).lookType ~= 814 then
ret = b
end
end
return ret
end
function doCreatureSetOutfit(cid, outfit, time)
doSetCreatureOutfit(cid, outfit, time)
end
function doMagicalFlower(cid, away)
if not isCreature(cid) then return true end
for x = -3, 3 do
for y = -3, 3 do
local a = getThingPos(cid)
a.x = a.x + x
a.y = a.y + y
if away then
doSendDistanceShoot(a, getThingPos(cid), 21)
else
doSendDistanceShoot(getThingPos(cid), a, 21)
end
end
end
end
function isItemPokeball(item)
if not item then return false end
for a, b in pairs (pokeballs) do
if isInArray(b.all, item) then return true end
end
return false
end
function isPokeball(item)
if not item then return false end
if item >= 11826 and item <= 11837 then
return true
end
if item >= 11737 and item <= 11748 then
return true
end
if item >= 12930 and item <= 12932 then
return true
end
if item >= 12933 and item <= 12935 then
return true
end
if item >= 12332 and item <= 12333 then
return true
end
if item >= 12335 and item <= 12336 then
return true
end
if item >= 12339 and item <= 12340 then
return true
end
if item >= 12930 and item <= 12932 then
return true
end
if item >= 2397 and item <= 2399 then
return true
end
if item >= 2401 and item <= 2406 then
return true
end
return false
end
function getPokeballType(id)
for a, b in pairs (pokeballs) do
if isInArray(b.all, id) then
return a
end
end
return "none"
end
randomdiagonaldir = {
[NORTHEAST] = {NORTH, EAST},
[sOUTHEAST] = {SOUTH, EAST},
[NORTHWEST] = {NORTH, WEST},
[sOUTHWEST] = {SOUTH, WEST}}
function doFaceOpposite(cid)
local a = getCreatureLookDir(cid)
local d = {
[NORTH] = SOUTH,
[sOUTH] = NORTH,
[EAST] = WEST,
[WEST] = EAST,
[NORTHEAST] = SOUTHWEST,
[NORTHWEST] = SOUTHEAST,
[sOUTHEAST] = NORTHWEST,
[sOUTHWEST] = NORTHEAST}
doCreatureSetLookDir(cid, d[a])
end
function doFaceRandom(cid)
local a = getCreatureLookDir(cid)
local d = {
[NORTH] = {SOUTH, WEST, EAST},
[sOUTH] = {NORTH, WEST, EAST},
[WEST] = {SOUTH, NORTH, EAST},
[EAST] = {SOUTH, WEST, NORTH}}
doChangeSpeed(cid, 1)
doCreatureSetLookDir(cid, d[a][math.random(1, 3)])
doChangeSpeed(cid, -1)
end
function getFaceOpposite(dir)
local d = {
[NORTH] = SOUTH,
[sOUTH] = NORTH,
[EAST] = WEST,
[WEST] = EAST,
[NORTHEAST] = SOUTHWEST,
[NORTHWEST] = SOUTHEAST,
[sOUTHEAST] = NORTHWEST,
[sOUTHWEST] = NORTHEAST}
return d[dir]
end
function getResistance(cid, combat)
if isPlayer(cid) then return false end
local poketype1 = pokes[getCreatureName(cid)].type
local poketype2 = pokes[getCreatureName(cid)].type2
local multiplier = 1
if effectiveness[combat].super and isInArray(effectiveness[combat].super, poketype1) then
multiplier = multiplier * 2
end
if poketype2 and effectiveness[combat].super and isInArray(effectiveness[combat].super, poketype2) then
multiplier = multiplier * 2
end
if effectiveness[combat].weak and isInArray(effectiveness[combat].weak, poketype1) then
multiplier = multiplier * 0.5
end
if poketype2 and effectiveness[combat].weak and isInArray(effectiveness[combat].weak, poketype2) then
multiplier = multiplier * 0.5
end
if effectiveness[combat].non and isInArray(effectiveness[combat].non, poketype1) then
multiplier = multiplier * 0
end
if poketype2 and effectiveness[combat].non and isInArray(effectiveness[combat].non, poketype2) then
multiplier = multiplier * 0
end
if multiplier == 0.25 then
multiplier = 0.5
elseif multiplier == 4 then
multiplier = 2
end
return multiplier
end
function getCreatureDirectionToTarget(cid, target, ranged)
if not isCreature(cid) then return true end
if not isCreature(target) then return getCreatureLookDir(cid) end
local dirs = {
[NORTHEAST] = {NORTH, EAST},
[sOUTHEAST] = {SOUTH, EAST},
[NORTHWEST] = {NORTH, WEST},
[sOUTHWEST] = {SOUTH, WEST}}
local x = getDirectionTo(getThingPos(cid), getThingPos(target), false)
if x <= 3 then return x
else
local xdistance = math.abs(getThingPos(cid).x - getThingPos(target).x)
local ydistance = math.abs(getThingPos(cid).y - getThingPos(target).y)
if xdistance > ydistance then
return dirs[x][2]
elseif ydistance > xdistance then
return dirs[x][1]
elseif isInArray(dirs[x], getCreatureLookDir(cid)) then
return getCreatureLookDir(cid)
else
return dirs[x][math.random(1, 2)]
end
end
end
function getSomeoneDescription(cid)
if isPlayer(cid) then return getPlayerNameDescription(cid) end
return getMonsterInfo(getCreatureName(cid)).description
end
function isGhostPokemon(cid)
if not isCreature(cid) then return false end
ghosts = {"Gastly", "Haunter", "Gengar", "Shiny Gengar", "Misdreavus", "Shiny Abra"}
if isInArray(ghosts, getCreatureName(cid)) then
return true
end
return false
end
function updateGhostWalk(cid)
if not isCreature(cid) then return false end
local pos = getThingPos(cid)
pos.x = pos.x + 1
pos.y = pos.y + 1
local ret = getThingPos(cid)
doTeleportThing(cid, pos, false)
doTeleportThing(cid, ret, false)
return true
end
function doRemoveElementFromTable(t, e)
local ret = {}
for a = 1, #t do
if t[a] ~= e then
table.insert(ret, t[a])
end
end
return ret
end
function doFaceCreature(sid, pos)
if not isCreature(sid) then return true end
if getThingPos(sid).x == pos.x and getThingPos(sid).y == pos.y then return true end
local ret = 0
local ld = getCreatureLookDir(sid)
local dir = getDirectionTo(getThingPos(sid), pos)
local al = {
[NORTHEAST] = {NORTH, EAST},
[NORTHWEST] = {NORTH, WEST},
[sOUTHEAST] = {SOUTH, EAST},
[sOUTHWEST] = {SOUTH, WEST}}
if dir >= 4 and isInArray(al[dir], ld) then return true end
doChangeSpeed(sid, 1)
if dir == 4 then
ret = math.random(2, 3)
elseif dir == 5 then
ret = math.random(1, 2)
elseif dir == 6 then
local dirs = {0, 3}
ret = dirs[math.random(1, 2)]
elseif dir == 7 then
ret = math.random(0, 1)
else
ret = getDirectionTo(getThingPos(sid), pos)
end
doCreatureSetLookDir(sid, ret)
doChangeSpeed(sid, -1)
return true
end
function doCreatureAddCondition(cid, condition)
if not isCreature(cid) then return true end
doAddCondition(cid, condition)
end
function doCreatureRemoveCondition(cid, condition)
if not isCreature(cid) then return true end
doRemoveCondition(cid, condition)
end
function setCD(item, tipo, tempo)
if not tempo or not tonumber(tempo) then
doItemEraseAttribute(item, tipo)
return true
end
doItemSetAttribute(item, tipo, "cd:"..(tempo + os.time()).."")
return tempo + os.time()
end
function getCD(item, tipo, limite)
if not getItemAttribute(item, tipo) then
return 0
end
local string = getItemAttribute(item, tipo):gsub("cd:", "")
local number = tonumber(string) - os.time()
if number <= 0 then
return 0
end
if limite and limite < number then
return 0
end
return number
end
function doSendMoveEffect(cid, target, effect)
if not isCreature(cid) or not isCreature(target) then return true end
doSendDistanceShoot(getThingPos(cid), getThingPos(target), effect)
return true
end
function doSetItemActionId(uid, actionid)
doItemSetAttribute(uid, "aid", actionid)
return true
end
function threeNumbers(number)
if number <= 9 then
return "00"..number..""
elseif number <= 99 then
return "0"..number..""
end
return ""..number..""
end
function isBr(cid)
if getPlayerStorageValue(cid, 105505) ~= -1 then
return true
end
return false
end
function isBeingUsed(ball)
if isInArray({11827, 11830, 11833, 11836, 11738, 11741, 11744, 11747}, ball) then
return true
end
return false
end
function doRemoveTile(pos)-- Script by mock
pos.stackpos = 0
local sqm = getTileThingByPos(pos)
doRemoveItem(sqm.uid,1)
end
function doCreateTile(id,pos) -- By mock
doAreaCombatHealth(0,0,pos,0,0,0,CONST_ME_NONE)
doCreateItem(id,1,pos)
end
function hasSqm(pos)
local f = getTileThingByPos(pos)
if f.itemid ~= 0 and f.itemid ~= 1 then
return true
end
return false
end
function getPosDirs(p, dir) -- By MatheusMkalo
return dir == 1 and {x=p.x-1, y=p.y, z=p.z} or dir == 2 and {x=p.x-1, y=p.y+1, z=p.z} or dir == 3 and {x=p.x, y=p.y+1, z=p.z} or dir == 4 and {x=p.x+1, y=p.y+1, z=p.z} or dir == 5 and {x=p.x+1, y=p.y, z=p.z} or dir == 6 and {x=p.x+1, y=p.y-1, z=p.z} or dir == 7 and {x=p.x, y=p.y-1, z=p.z} or dir == 8 and {x=p.x-1, y=p.y-1, z=p.z}
end
function canWalkOnPos(pos, creature, pz, water, sqm, proj)
if not pos then return false end
if not pos.x then return false end
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid <= 1 and sqm then return false end
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 919 then return false end
if isInArray({4820, 4821, 4822, 4823, 4824, 4825}, getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid) and water then return false end
if getTopCreature(pos).uid > 0 and creature then return false end
if getTileInfo(pos).protection and pz then return false end
local n = not proj and 3 or 2 --alterado v1.6
for i = 0, 255 do
pos.stackpos = i
local tile = getTileThingByPos(pos)
if tile.itemid ~= 0 and i ~= 253 and not isCreature(tile.uid) then --edited
if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
return false
end
end
end
return true
end
function canWalkOnPos2(pos, creature, pz, water, sqm, proj) --alterado v1.6
if not pos then return false end
if not pos.x then return false end
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid <= 1 and sqm then return false end
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 919 then return false end
if isInArray({4820, 4821, 4822, 4823, 4824, 4825}, getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid) and water then return false end
if getTopCreature(pos).uid > 0 and creature then return false end
if getTileInfo(pos).protection and pz then return false end
--[[local n = not proj and 3 or 2
for i = 0, 255 do
pos.stackpos = i --edited pra retirar um bug.. ;x
local tile = getTileThingByPos(pos)
if tile.itemid ~= 0 and i ~= 253 and not isCreature(tile.uid) then --edited
if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
return false
end
end
end ]]
return true
end
function getFreeTile(pos, cid)
if canWalkOnPos(pos, true, false, true, true, false) then
return pos
end
local positions = {}
for a = 0, 7 do
if canWalkOnPos(getPosByDir(pos, a), true, false, true, true, false) then
table.insert(positions, pos)
end
end
if #positions >= 1 then
if isCreature(cid) then
local range = 1000
local ret = getThingPos(cid)
for b = 1, #positions do
if getDistanceBetween(getThingPos(cid), positions) < range then
ret = positions
range = getDistanceBetween(getThingPos(cid), positions)
end
end
return ret
else
return positions[math.random(#positions)]
end
end
return getThingPos(cid)
end
function isWalkable(pos, creature, proj, pz, water)-- by Nord
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
if isWater(getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid) and water then return false end
if getTopCreature(pos).uid > 0 and creature then return false end
if getTileInfo(pos).protection and pz then return false, true end
local n = not proj and 3 or 2
for i = 0, 255 do
pos.stackpos = i
local tile = getTileThingByPos(pos)
if tile.itemid ~= 0 and not isCreature(tile.uid) then
if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
return false
end
end
end
return true
end
function isPlayerSummon(cid, uid)
if getCreatureMaster(uid) == cid then
return TRUE
end
return FALSE
end
function isSummon(sid)
if not isCreature(sid) then return false end
--
if isPlayer(sid) then
return false
end
if isPlayer(getCreatureMaster(sid)) then
return true
end
return false
end
function getItemsInContainerById(container, itemid) -- Function By Kydrai
local items = {}
if isContainer(container) and getContainerSize(container) > 0 then
for slot=0, (getContainerSize(container)-1) do
local item = getContainerItem(container, slot)
if isContainer(item.uid) then
local itemsbag = getItemsInContainerById(item.uid, itemid)
for i=0, #itemsbag do
table.insert(items, itemsbag)
end
else
if itemid == item.itemid then
table.insert(items, item.uid)
end
end
end
end
return items
end
function getPokeballsInContainer(container) -- Function By Kydrai
if not isContainer(container) then return {} end
local items = {}
if isContainer(container) and getContainerSize(container) > 0 then
for slot=0, (getContainerSize(container)-1) do
local item = getContainerItem(container, slot)
if isContainer(item.uid) then
local itemsbag = getPokeballsInContainer(item.uid)
for i=0, #itemsbag do
table.insert(items, itemsbag)
end
elseif isPokeball(item.itemid) then
table.insert(items, item.uid)
end
end
end
return items
end
function getItensUniquesInContainer(container) --alterado v1.6
if not isContainer(container) then return {} end
local items = {}
if isContainer(container) and getContainerSize(container) > 0 then
for slot=0, (getContainerSize(container)-1) do
local item = getContainerItem(container, slot)
if isContainer(item.uid) then
local itemsbag = getItensUniquesInContainer(item.uid)
for i=0, #itemsbag do
table.insert(items, itemsbag)
end
elseif getItemAttribute(item.uid, "unique") then
table.insert(items, item)
end
end
end
return items
end
function hasSpaceInContainer(container) --alterado v1.6
if not isContainer(container) then return false end
if getContainerSize(container) < getContainerCap(container) then return true end
for slot = 0, (getContainerSize(container)-1) do
local item = getContainerItem(container, slot)
if isContainer(item.uid) then
if hasSpaceInContainer(item.uid) then
return true
end
end
end
return false
endstarter
local starterpokes = {
["Squirtle"] = {x = 51, y = 70, z = 7},
["Charmander"] = {x = 47, y = 70, z = 7}, --Alterado por min, stylo para meu MAPA'
["Bulbasaur"] = {x = 49, y = 70, z = 7},
}
local btype = "ultra"
function onUse(cid, item, frompos, item2, topos)
if getPlayerLevel(cid) > 5 then --alterado v1.3
return true
end
local pokemon = ""
for a, b in pairs (starterpokes) do
if isPosEqualPos(topos, b) then
pokemon = a
end
end
if pokemon == "" then return true end
if getPlayerStorageValue(cid, 9658754) ~= 1 then --alterado v1.7 -opicional-
sendMsgToPlayer(cid, 27, "Talk to the Prof. Robert to choose your beginner {city first}/Falê com o Prof. Robert para escolher sua {cidade primeiro}!")
return true
end
local gender = getRandomGenderByName(pokemon)
local happy = 250
doPlayerAddItem(cid, 2392,30)
doPlayerAddItem(cid, 2393,50)
doPlayerAddItem(cid, 12343,5) --Alterado por min, Stylo ' "KIT INICIAL"~~
doPlayerAddItem(cid, 12346,20)
doPlayerAddItem(cid, 12348,30)
doPlayerAddItem(cid, 12222,100)
local item = doCreateItemEx(2219)
doItemSetAttribute(item, "poke", pokemon)
doItemSetAttribute(item, "hp", 1)
doItemSetAttribute(item, "happy", happy)
doItemSetAttribute(item, "gender", gender)
doItemSetAttribute(item, "description", "Contains a "..pokemon..".")
doItemSetAttribute(item, "fakedesc", "Contains a "..pokemon..".")
doItemSetAttribute(item, "unique", getCreatureName(cid)) --alterado v1.6
doPlayerAddItemEx(cid, item, true)
doTransformItem(item, pokeballs[btype].on)
doPlayerSendTextMessage(cid, 27, "You got your first pokemon! You also received some pokeballs to help you in your way.")
doPlayerSendTextMessage(cid, 27, "Don\'t forget to use your pokedex on every undiscovered pokemon!")
doSendMagicEffect(getThingPos(cid), 28)
doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
doSendMagicEffect(getThingPos(cid), 27)
doSendMagicEffect(getThingPos(cid), 28)
return TRUE
end -
tipo man o palyer vai pra sala contra npc, e tem intem la que ele so pode clica quando
mata npc, ou n estive com pz
-
n e essa parte que n funciono, e parte
que oo teleport no intem
que n vai,
-
-
eu coloko aonde o item pra aperta e ganha storage?
n funciono veio!
-
blz vo testa deixa so termina quest, se funciona do rep+
coloka isso tudo ai no createscript?
ou no actions?
tb outra duvidas?
da pra coloka um mensagem pra o player sabe que ganho storage?
-
por n so script n sei quais nd! foi mal ai
se vc pude ajuda agradeceria!
-
-
Preciso de 3 script
1- Preciso de um intem que clika nele e, eo player teleportado,
e so que so da pra clika no intem se n tive
com pz!
2- uma script que quando vc clika no intem vc
ganha storage
3- intem que teleporta, so que so teleporta player
se ele tive uma storage!
-
vlw man isso funciono!
pode fecha topico! rep
-
Queria Script Ensinando Coloka Rank6 no serv
e coloka npc seavel master um battle pra quem ja e rank 5
e se ganha battle do npc, ganha outfit rank 6!
"BASE PDA"
-
Ow Preciso de Npc Battle que ele ataka o player
direto sem fala nd! " Base PDA"
esse e erro do meu >>
[07/11/2013 11:53:55] [Error - Npc interface]
[07/11/2013 11:53:55] In a timer event called from:
[07/11/2013 11:53:55] data/npc/scripts/.aHunter.lua:onThink
[07/11/2013 11:53:55] Description:
[07/11/2013 11:53:55] data/npc/scripts/.aHunter.lua:24: attempt to index field 'pokeball' (a nil value)
[07/11/2013 11:53:55] stack traceback:
[07/11/2013 11:53:55] data/npc/scripts/.aHunter.lua:24: in functionnpc
local target = 0
local prevTarget = 0
local origPos = 0
local max_distance = 12
local fighting = false
local challenger = 0
local battle_turn = 1 -- don't change
local challenger_turn = 0 -- don't change
---
--/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////--
local function doSummonGymPokemon(npc)
local this = npc
if not isCreature(this) or not ehNPC(this) then return true end --alterado v1.6
if #getCreatureSummons(this) >= 1 or target == 0 then return true end
local it = wildHunter[getPlayerStorageValue(this, 665471)][battle_turn]
if not it then return true end
doSummonMonster(this, it.name)
local summon = getCreatureSummons(this)[1]
if not summon then --alterado v1.6
print("Error in npc: "..getCreatureName(this)..", tring to execute function 'doSummonGymPokemon', poke: "..it.name)
battle_turn = battle_turn+1
return true
end
local balleffect = pokeballs["pokeball"].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, target)
addEvent(adjustWildPoke, 15, summon, it.optionalLevel)
if it.nick ~= "" then doCreatureSetNick(summon, it.nick) end
local name = it.nick ~= "" and it.nick or getCreatureName(this).."s "..it.name --alterado v1.3
doCreatureSay(this, gobackmsgs[math.random(#gobackmsgs)].go:gsub("doka", getPlayerStorageValue(summon, 1007)), 1)
fighting = true
battle_turn = battle_turn + 1
end
--/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////--
local function goToOrigPos()
target = 0
selfFollow(0)
fighting = false
challenger = 0
challenger_turn = 0
if #getCreatureSummons(getNpcCid()) >= 1 then
setPlayerStorageValue(getCreatureSummons(getNpcCid())[1], 1006, 0)
doCreatureAddHealth(getCreatureSummons(getNpcCid())[1], -getCreatureMaxHealth(getCreatureSummons(getNpcCid())[1]))
end
doChangeSpeed(getNpcCid(), -getCreatureSpeed(getNpcCid()))
doTeleportThing(getNpcCid(), origPos)
end
--/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////--
local function updateTarget()
if(target == 0) then
local list = getSpectators(getNpcPos(), 9, 9, false)
for i = 1, table.getn(list) do
local _target = list
if(_target ~= 0) then
if isPlayer(_target) and not getTileInfo(getThingPos(_target)).protection then --alterado v1.8
selfSay(hunterTalks[math.random(#hunterTalks)])
doNpcSetCreatureFocus(_target)
target = _target
prevTarget = target
break
end
end
end
end
end
--/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////--
function onCreatureAppear(cid)
end
function onCreatureDisappear(cid)
end
function onCreatureMove(creature, oldPos, newPos)
--
end
--/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////--
function onThink()
if not isCreature(getNpcCid()) then return false end --alterado v1.6
if origPos == 0 then
origPos = getNpcPos()
end
if getPlayerStorageValue(getNpcCid(), 665471) <= 0 then
setPlayerStorageValue(getNpcCid(), 665471, math.random(1, 5))
randOutfit(getNpcCid())
end
updateTarget()
------------------------------------------------------
if getDistanceBetween(getNpcPos(), origPos) >= max_distance or (isCreature(target) and getTileInfo(getThingPos(target)).protection) then --alterado v1.8
goToOrigPos()
end
------------------------------------------------------
if(target == 0) then
if getPlayerStorageValue(getNpcCid(), 154788) <= 0 then
setPlayerStorageValue(getNpcCid(), 154788, 1)
doChangeSpeed(getNpcCid(), -getCreatureSpeed(getNpcCid()))
addEvent(randWalk, 2000, getNpcCid(), 1000, getPlayerStorageValue(getNpcCid(), 154788))
end
return true
end
------------------------------------------------------
local playerPos = getThingPosWithDebug(target) --alterado v1.6
local myPos = getNpcPos()
------------------------------------------------------
if(myPos.z ~= playerPos.z) then
goToOrigPos()
battle_turn = battle_turn == 1 and battle_turn or battle_turn-1
return true
end
------------------------------------------------------
if getDistanceBetween(playerPos, myPos) > max_distance then
goToOrigPos()
battle_turn = battle_turn == 1 and battle_turn or battle_turn-1
return true
end
------------------------------------------------------
if getDistanceBetween(playerPos, myPos) >= 5 then
if getPlayerStorageValue(getNpcCid(), 154788) >= 1 then
setPlayerStorageValue(getNpcCid(), 154788, -1)
doRegainSpeed(getNpcCid())
if isCreature(target) then
selfFollow(target)
end
end
end
------------------------------------------------------
if getDistanceBetween(playerPos, myPos) <= 3 then
if getPlayerStorageValue(getNpcCid(), 154788) <= 0 then
setPlayerStorageValue(getNpcCid(), 154788, 1)
doChangeSpeed(getNpcCid(), -getCreatureSpeed(getNpcCid()))
addEvent(randWalk, 2000, getNpcCid(), 1000, getPlayerStorageValue(getNpcCid(), 154788))
end
end
------------------------------------------------------
if getDistanceBetween(playerPos, myPos) <= 5 then
challenger = target
addEvent(doSummonGymPokemon, 1000, getNpcCid())
local change = false
if not isCreature(target) then
target = 0
battle_turn = battle_turn == 1 and battle_turn or battle_turn-1
return true
end
if fighting then
if not isCreature(getCreatureTarget(getNpcCid())) then
if #getCreatureSummons(challenger) >= 1 then
selfAttackCreature(getCreatureSummons(challenger)[1])
change = true
else
if change then
change = false
challenger_turn = challenger_turn + 1
end
end
end
if #getCreatureSummons(getNpcCid()) == 0 and isCreature(target) then
if battle_turn > #wildHunter[getPlayerStorageValue(getNpcCid(), 665471)] then
addEvent(doCreateNpc, 300000, ".aHunter", myPos) --alterado v1.5
local outfit = getCreatureOutfit(getNpcCid())
doRemoveCreature(getNpcCid())
----------------------------------------
if outfit.lookType == 1016 then --verifica se o npc eh female.. ;p
monster = doCreateMonster("aHunterFemale", myPos)
else
monster = doCreateMonster("aHunter", myPos)
end
----------------------------------------
doCloneOut(monster, outfit)
addEvent(beDrunk, 100, monster)
end
addEvent(doSummonGymPokemon, 1000, getNpcCid())
end
if #getCreatureSummons(challenger) <= 0 then
selfAttackCreature(challenger)
end
end
end
ende lib/wild trainer se precisa
function isRocket(cid)
if not isCreature(cid) then return false end
if getPlayerStorageValue(cid, 665450) >= 1 then
return true
end
return false
end
--/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////--
function isOfficer(cid)
if not isCreature(cid) then return false end
if getPlayerStorageValue(cid, 665460) >= 1 then
return true
end
return false
end
--/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////--
function randOutfit(cid)
outfit = getCreatureOutfit(cid)
if getPlayerStorageValue(cid, 665451) >= 1 then
outfit = {lookType = choose(605, 604), lookHead = math.random(1, 250), lookBody = math.random(1, 250), lookLegs = math.random(1, 250), lookFeet = math.random(1, 250)}
elseif getPlayerStorageValue(cid, 665461) >= 1 then
outfit = {lookType = choose(1184, 1183), lookHead = math.random(1, 250), lookBody = math.random(1, 250), lookLegs = math.random(1, 250), lookFeet = math.random(1, 250)}
elseif getPlayerStorageValue(cid, 665471) >= 1 then
outfit = {lookType = choose(1016, 1015), lookHead = math.random(1, 250), lookBody = math.random(1, 250), lookLegs = math.random(1, 250), lookFeet = math.random(1, 250)}
end
doSetCreatureOutfit(cid, outfit, -1)
end
--/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////--
function doCloneOut(npc, outfit)
local o = outfit
local npcoutfit = {lookType = o.lookType, lookHead = o.lookHead, lookBody = o.lookBody, lookLegs = o.lookLegs, lookFeet = o.lookFeet}
doSetCreatureOutfit(npc, npcoutfit, -1)
end
--/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////--
function beDrunk(target)
if not isCreature(target) then return true end
doChangeSpeed(target, -getCreatureSpeed(target))
doChangeSpeed(target, 100)
if not isSleeping(target) and getPlayerStorageValue(target, 654878) <= 0 then
doPushCreature(target, math.random(0, 3), 1, 0)
end
doChangeSpeed(target, -100)
addEvent(beDrunk, 2000, target)
end
--/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////--
function randWalk(cid, cd, check, target)
if not isCreature(cid) then return true end
if check and check ~= getPlayerStorageValue(cid, 154788) then return true end
if getPlayerStorageValue(cid, 154788) >= 2 and cd ~= -1 then return true end
-------
local alvo = target
-------
setPlayerStorageValue(cid, 154788, getPlayerStorageValue(cid, 154788)+cd)
local a = getPlayerStorageValue(cid, 154788)
if a <= 0 then setPlayerStorageValue(cid, 154788, -1) return true end
-------
doChangeSpeed(cid, -getCreatureSpeed(cid))
doChangeSpeed(cid, 100)
-------
if not isSleeping(cid) and getPlayerStorageValue(cid, 654878) <= 0 then
doPushCreature(cid, math.random(0, 3), 1, 0)
end
-------
doChangeSpeed(cid, -100)
if isCreature(alvo) then
doCreatureSetLookDir(cid, getCreatureDirectionToTarget(cid, alvo))
end
-------
addEvent(randWalk, 5000, cid, -1, a, target)
end
--/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////--
rocketTalks = {"I will kill you, your pig!!", "HAHA you won't get me!!!", "I will win and disappear!!"}
policeTalks = {"I will get you, thief!!", "So you belong to the team rocket? Come here for i get you!!", "I will kill you, your little thief!!"}
hunterTalks = {"I will kill you!!", "Wasn't for you be here!", "This field is sacred! Get out of here!!"}
--/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////--
wildRocket = {
[1] = {{name = "Bulbasaur", optionalLevel = 100, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Squirtle", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Charmander", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Raticate", optionalLevel = 100, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Gloom", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "ultra"},
},
[2] = {{name = "Chikorita", optionalLevel = 100, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Totodile", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Cyndaquil", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Natu", optionalLevel = 100, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Pidgeotto", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "ultra"},
},
[3] = {{name = "Muk", optionalLevel = 100, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Ivysaur", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Ledian", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Venonat", optionalLevel = 100, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Ariados", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "ultra"},
},
[4] = {{name = "Pichu", optionalLevel = 100, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Flaaffy", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Seadra", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Koffing", optionalLevel = 100, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Cubone", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "ultra"},
},
[5] = {{name = "Haunter", optionalLevel = 100, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Furret", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Marill", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Charmeleon", optionalLevel = 100, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Yanma", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "ultra"},
},
}
--/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////--
wildPolice = {
[1] = {{name = "Golbat", optionalLevel = 100, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Hoothoot", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Magnemite", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Doduo", optionalLevel = 100, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Kingler", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "ultra"},
},
[2] = {{name = "Aipom", optionalLevel = 100, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Murkrow", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Pineco", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Swinub", optionalLevel = 100, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Bulbasaur", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "ultra"},
},
[3] = {{name = "Croconaw", optionalLevel = 100, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Kadabra", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Weepinbell", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Graveler", optionalLevel = 100, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Houndour", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "ultra"},
},
[4] = {{name = "Magby", optionalLevel = 100, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Shuckle", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Seaking", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Seel", optionalLevel = 100, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Machoke", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "ultra"},
},
[5] = {{name = "Slowpoke", optionalLevel = 100, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Wartortle", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Bayleef", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Dugtrio", optionalLevel = 100, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Hypno", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "ultra"},
},
}
--/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////--
wildCommanderOfficer = {
[1] = {{name = "Donphan", optionalLevel = 120, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Porygon2", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Octillery", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Bellossom", optionalLevel = 120, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Nidoking", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "ultra"},
},
[2] = {{name = "Sandslash", optionalLevel = 120, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Electabuzz", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Jynx", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Tauros", optionalLevel = 120, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Venomoth", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "ultra"},
},
[3] = {{name = "Lanturn", optionalLevel = 120, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Umbreon", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Magcargo", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Ninetales", optionalLevel = 120, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Primeape", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "ultra"},
},
[4] = {{name = "Machamp", optionalLevel = 120, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Snorlax", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Magneton", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Mantine", optionalLevel = 120, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Exeggutor", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "ultra"},
},
[5] = {{name = "Dewgong", optionalLevel = 120, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Xatu", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Skarmory", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Hitmonlee", optionalLevel = 120, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Hitmonchan", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "ultra"},
},
}
--/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////--
wildCommanderRocket = {
[1] = {{name = "Raichu", optionalLevel = 120, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Pidgeot", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Politoed", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Nidoqueen", optionalLevel = 120, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Vileplume", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "ultra"},
},
[2] = {{name = "Clefable", optionalLevel = 120, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Noctowl", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Forretress", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Golduck", optionalLevel = 120, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Dragonair", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "ultra"},
},
[3] = {{name = "Victreebel", optionalLevel = 120, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Tentacruel", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Togetic", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Espeon", optionalLevel = 120, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Heracross", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "ultra"},
},
[4] = {{name = "Girafarig", optionalLevel = 120, sex = SEX_FEMALE, nick = "", ball = "normal"}, --alterado v1.6
{name = "Ursaring", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Piloswine", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Mantine", optionalLevel = 120, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Wigglytuff", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "ultra"},
},
[5] = {{name = "Slowpoke", optionalLevel = 120, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Poliwrath", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Farfetch'd", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Cloyster", optionalLevel = 120, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Hitmontop", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "ultra"},
},
}
--/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////--
wildHunter = {
[1] = {{name = "Raichu", optionalLevel = 70, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Pidgeot", optionalLevel = 65, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Politoed", optionalLevel = 60, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Nidoqueen", optionalLevel = 70, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Gengar", optionalLevel = 80, sex = SEX_MALE, nick = "", ball = "ultra"},
},
[2] = {{name = "Clefable", optionalLevel = 55, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Noctowl", optionalLevel = 60, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Forretress", optionalLevel = 80, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Golduck", optionalLevel = 70, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Dragonair", optionalLevel = 80, sex = SEX_MALE, nick = "", ball = "ultra"},
},
[3] = {{name = "Victreebel", optionalLevel = 55, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Tentacruel", optionalLevel = 69, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Magmar", optionalLevel = 80, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Espeon", optionalLevel = 70, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Heracross", optionalLevel = 75, sex = SEX_MALE, nick = "", ball = "ultra"},
},
[4] = {{name = "Girafarig", optionalLevel = 80, sex = SEX_FEMALE, nick = "", ball = "normal"}, --alterado v1.6
{name = "Ursaring", optionalLevel = 80, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Piloswine", optionalLevel = 70, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Mantine", optionalLevel = 75, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Kangaskhan", optionalLevel = 65, sex = SEX_MALE, nick = "", ball = "ultra"},
},
[5] = {{name = "Slowpoke", optionalLevel = 45, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Poliwrath", optionalLevel = 55, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Scyther", optionalLevel = 85, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Cloyster", optionalLevel = 70, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Hitmontop", optionalLevel = 80, sex = SEX_MALE, nick = "", ball = "ultra"},
},
}se puderem me ajuda agradeço!
-
Tipo Eu queria um Npc que colokase as Roupas pra Vende
so que ao invez de usa dinheiro, vc usa
diamond! " Base PDA"
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
local outs = {
--[nome da outfit] = {sto, {id male, id female}}
["jamaican"] = {181601, {m = 587, f = 588}},
["rapper"] = {181602, {m = 545, f = 512}},
["oriental"] = {181603, {m = 585, f = 586}},
["adventurer"] = {181605, {m = 494, f = 495}},
["bussines"] = {181606, {m = 1419, f = 513}},
["atletic"] = {181607, {m = 516, f = 517}},
["punk"] = {181608, {m = 518, f = 519}},
["mercenary"] = {181610, {m = 522, f = 524}},
["hiker"] = {181611, {m = 523, f = 525}},
["hunter"] = {181645, {m = 1015, f = 1016}},
}
msg = string.lower(msg)
--local outfit = ""
if (msgcontains(msg, 'outfit') or msgcontains(msg, 'outfits')) then
selfSay("I sell this outfits: {Jamaican, Rapper, Oriental, Adventurer, Bussines, Atletic, Punk, Mercenary, Hiker and Hunter}, which outfit do you want??", cid)
talkState[talkUser] = 2
elseif outs[msg] and talkState[talkUser] == 2 then
selfSay("Are you sure which want buy that outfit?", cid)
outfit = msg
talkState[talkUser] = 3
elseif msgcontains(msg, 'yes') and talkState[talkUser] == 3 then
if getPlayerStorageValue(cid, outs[outfit][1]) <= 0 then
if getPlayerPremiumDays(cid) > 0 then
if getPlayerMoney(cid) >= 20000 then
if(getPlayerSex(cid) == PLAYERSEX_FEMALE) then
doPlayerAddOutfit(cid, outs[outfit][2].f, 0)
doPlayerRemoveMoney(cid, 20000)
setPlayerStorageValue(cid, outs[outfit][1], 1)
else
doPlayerAddOutfit(cid, outs[outfit][2].m, 0)
doPlayerRemoveMoney(cid, 20000)
setPlayerStorageValue(cid, outs[outfit][1], 1)
end
else
selfSay("You need 200dl to buy this outfit!", cid)
talkState[talkUser] = 0
return false
end
else
selfSay("Need be premium to buy this Outfit.", cid)
talkState[talkUser] = 0
return false
end
else
selfSay("You already have this outfit, so please, choose another outfit...", cid)
talkState[talkUser] = 0
return false
end
selfSay("So... Here is.", cid)
talkState[talkUser] = 0
return true
elseif msgcontains(msg, 'no') and talkState[talkUser] == 3 then
selfSay("So... Please choose another outfit...", cid)
talkState[talkUser] = 0
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())script, tipo so queria muda o money pra diamond
ao invez compra com dinheiro
precisa de diamonds!
-
ow man conseguir vc ja ganho meu rep
so que tipo, quando o pokemon fica ensima da tiles
ele so perde 1x a vida
queria que ficase perdendo toda hr!
se o pokemon fica ensima do tile
ele fica perdendo 2k vida em 2 em 2 segundos sera que vc consegue?
se vc conseguir deixa ja ta bom assim!
ow vlw ai podem fecha topico!rep+
-
deu isso, parece que movements n ta achando o globalevents eu acho!
[04/11/2013 21:11:04] >> Loading script systems
[04/11/2013 21:11:07] [Error - LuaScriptInterface::loadFile] cannot open data/movements/scripts/dano tiles: No such file or directory
[04/11/2013 21:11:07] [Warning - Event::loadScript] Cannot load script (data/movements/scripts/dano tiles)
[04/11/2013 21:11:07] cannot open data/movements/scripts/dano tiles: No such file or directory
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.
[Encerrado] npc quest
em Tópicos Sem Resposta
Postado
Pessoal preciso de um npc quer voce fala missao
E teleportado pra um lugar e la voce vai derrota npc
Quando derrota o npc, vc e teleportado ate npc inicial
Ganhado uma recompesa
Server pda