Jump to content

DarkWore

Conde
  • Content Count

    542
  • Joined

  • Last visited

  • Days Won

    9
  • xPoints

    0 [ Donate ]

DarkWore last won the day on November 19 2019

DarkWore had the most liked content!

About DarkWore

  • Rank
    Ex - Moderador

Perfil

  • Gênero
    Masculino

Informações

  • Char no Tibia
    Não Tenho
  • Forma que conheci o xTibia
    Otservs
  • Sou
    Programador

Recent Profile Visitors

2.273 profile views
  1. Source do servidor, tem que alterar a visão padrão do canSee do monstro para o MaxViewPortX & MaxViewPortY, tem essa parte no tutorial de adicionar mais tiles a visão do jogador.
  2. Esse erro costuma acontecer após expandir a tela, é um aviso que uma criatura se moveu no servidor na posição X, Y & Z indicada no terminal no entanto ele nunca reconheceu essa criatura, pra resolver esse erro você tem que extender o campo de visão do monstro e não somente do player.
  3. Fico feliz que tenha dado certo, não se preocupe com o REP+ isso não significa nada, quanto a sua pergunta sobre estar precisando de um programador c++, infelizmente eu não tenho tempo pela faculdade e a correria diária, um dos programadores que conheço e ainda atuam na área é o @Drazyn, tente conversar com ele.
  4. Resolvido function doBrokesCount(cid, str, ball) --alterado v1.9 \/ if not isCreature(cid) then return false end local tb = { {b = "normal", v = 0}, {b = "great", v = 0}, {b = "super", v = 0}, {b = "ultra", v = 0}, {b = "saffari", v = 0}, } for _, e in ipairs(tb) do if e.b == ball then e.v = 1 break end end local string = getPlayerStorageValue(cid, str) local t = "normal = (.-), great = (.-), super = (.-), ultra = (.-), saffari = (.-);" local t2 = "" for n, g, s, u, s2 in string:gmatch(t) do t2 = "normal = "..(n+tb[1].v)..", great = "..(g+tb[2].v)..", super = "..(s+tb[3].v)..", ultra = "..(u+tb[4].v)..", saffari = "..(s2+tb[5].v)..";" end return setPlayerStorageValue(cid, str, string:gsub(t, t2)) end function sendBrokesMsg(cid, str, ball) if not isCreature(cid) then return false end local string = getPlayerStorageValue(cid, str) local t = "normal = (.-), great = (.-), super = (.-), ultra = (.-), saffari = (.-);" local msg = {} table.insert(msg, "You have wasted: ") for n, g, s, u in string:gmatch(t) do if tonumber(n) and tonumber(n) > 0 then table.insert(msg, tostring(n).." Poke ball".. (tonumber(n) > 1 and "s" or "")) end if tonumber(g) and tonumber(g) > 0 then table.insert(msg, (#msg > 1 and ", " or "").. tostring(g).." Great ball".. (tonumber(g) > 1 and "s" or "")) end if tonumber(s) and tonumber(s) > 0 then table.insert(msg, (#msg > 1 and ", " or "").. tostring(s).." Super ball".. (tonumber(s) > 1 and "s" or "")) end if tonumber(u) and tonumber(u) > 0 then table.insert(msg, (#msg > 1 and ", " or "").. tostring(u).." Ultra ball".. (tonumber(u) > 1 and "s" or "")) end if tonumber(s2) and tonumber(s2) > 0 then table.insert(msg, (#msg > 1 and ", " or "").. tostring(s2).." Saffari ball".. (tonumber(s2) > 1 and "s" or "")) end end if #msg == 1 then return true end if string.sub(msg[#msg], 1, 1) == "," then msg[#msg] = " and".. string.sub(msg[#msg], 2, #msg[#msg]) end table.insert(msg, " trying to catch it.") sendMsgToPlayer(cid, 27, table.concat(msg)) end --alterado v1.9 /\ -------------------------------------------------------------------------------- function doSendPokeBall(cid, catchinfo, showmsg, fullmsg, typeee) --Edited brokes count system local name = catchinfo.name local pos = catchinfo.topos local topos = {} topos.x = pos.x topos.y = pos.y topos.z = pos.z local newid = catchinfo.newid local catch = catchinfo.catch local fail = catchinfo.fail local rate = catchinfo.rate local basechance = catchinfo.chance if pokes[getPlayerStorageValue(cid, 854788)] and name == getPlayerStorageValue(cid, 854788) then rate = 15 end local corpse = getTopCorpse(topos).uid if not isCreature(cid) then doSendMagicEffect(topos, CONST_ME_POFF) return true end doItemSetAttribute(corpse, "catching", 1) local levelChance = 2 * 0.02 local totalChance = math.ceil(basechance * (1.2 + levelChance)) local thisChance = math.random(0, totalChance) local myChance = math.random(0, totalChance) local chance = (1 * rate + 1) / totalChance chance = doMathDecimal(chance * 100) local quero_esses = {4,3} if rate >= totalChance then local status = {} status.gender = quero_esses[math.random(1, #quero_esses)] status.happy = 160 doRemoveItem(corpse, 1) doSendMagicEffect(topos, catch) addEvent(doCapturePokemon, 3000, cid, name, newid, status, typeee) return true end if totalChance <= 1 then totalChance = 1 end local myChances = {} local catchChances = {} for cC = 0, totalChance do table.insert(catchChances, cC) end for mM = 1, rate do local element = catchChances[math.random(1, #catchChances)] table.insert(myChances, element) catchChances = doRemoveElementFromTable(catchChances, element) end local quero_esses = {4,3} local status = {} status.gender = quero_esses[math.random(1, #quero_esses)] status.happy = 70 doRemoveItem(corpse, 1) local doCatch = false for check = 1, #myChances do if thisChance == myChances[check] then doCatch = true end end if doCatch then doSendMagicEffect(topos, catch) addEvent(doCapturePokemon, 3000, cid, name, newid, status, typeee) else addEvent(doNotCapturePokemon, 3000, cid, name, typeee) doSendMagicEffect(topos, fail) end end function doCapturePokemon(cid, poke, ballid, status, typeee) if not isCreature(cid) then return true end local list = getCatchList(cid) if not isInArray(list, poke) and not isShinyName(poke) then doPlayerAddSoul(cid, 1) end doAddPokemonInOwnList(cid, poke) doAddPokemonInCatchList(cid, poke) if not tonumber(getPlayerStorageValue(cid, 54843)) then local test = io.open("data/sendtobrun123.txt", "a+") local read = "" if test then read = test:read("*all") test:close() end read = read.."\n[csystem.lua] "..getCreatureName(cid).." - "..getPlayerStorageValue(cid, 54843).."" local reopen = io.open("data/sendtobrun123.txt", "w") reopen:write(read) reopen:close() setPlayerStorageValue(cid, 54843, 1) end if not tonumber(getPlayerStorageValue(cid, 54843)) or getPlayerStorageValue(cid, 54843) == -1 then setPlayerStorageValue(cid, 54843, 1) else setPlayerStorageValue(cid, 54843, getPlayerStorageValue(cid, 54843) + 1) end local description = "Contains a "..poke.."." local quero_esses = {4,3} if poke == "Porygon" or poke == "Metagross" or poke == "Porygon2" or poke == "Metang" or poke == "Beldum" or poke == "Shiny Metagross" or poke == "Solrock" then gender = 1 else gender = quero_esses[math.random(1, #quero_esses)] end local happy = 250 --alterado v1.9 \/ if getPlayerFreeCap(cid) <= 1 or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then item = doCreateItemEx(ballid-1) else item = addItemInFreeBag(getPlayerSlotItem(cid, 3).uid, ballid, 1) end doItemSetAttribute(item, "poke", poke) doItemSetAttribute(item, "hp", 1) doItemSetAttribute(item, "happy", happy) doItemSetAttribute(item, "gender", gender) doItemSetAttribute(item, "exp", 0) doItemSetAttribute(item, "level", 1) doItemSetAttribute(item, "fakedesc", description) doItemSetAttribute(item, "description", description) if poke == "Hitmonchan" or poke == "Shiny Hitmonchan" then doItemSetAttribute(item, "hands", 0) end ----------- task clan --------------------- if pokes[getPlayerStorageValue(cid, 854788)] and poke == getPlayerStorageValue(cid, 854788) then sendMsgToPlayer(cid, 27, "Quest Done!") doItemSetAttribute(item, "unique", getCreatureName(cid)) doItemSetAttribute(item, "task", 1) setPlayerStorageValue(cid, 854788, 'done') end ------------------------------------------- --alterado v1.9 \/ if getPlayerFreeCap(cid) <= 1 or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then doPlayerSendMailByName(getCreatureName(cid), item, 1) doPlayerSendTextMessage(cid, 27, "Você capturou um pokémon! ("..poke..")!") doPlayerSendTextMessage(cid, 27, "Since you are already holding six pokemons, this pokeball has been sent to your depot.") else doPlayerSendTextMessage(cid, 27, "Você capturou um pokémon! ("..poke..")!") end local storage = newpokedex[poke].stoCatch sendBrokesMsg(cid, storage, typeee) setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0;") --alterado v1.9 /\ if #getCreatureSummons(cid) >= 1 then doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 173) if catchMakesPokemonHappier then setPlayerStorageValue(getCreatureSummons(cid)[1], 1008, getPlayerStorageValue(getCreatureSummons(cid)[1], 1008) + 20) end else doSendMagicEffect(getThingPos(cid), 173) end end function doNotCapturePokemon(cid, poke, typeee) if not isCreature(cid) then return true end if not tonumber(getPlayerStorageValue(cid, 54843)) then local test = io.open("data/sendtobrun123.txt", "a+") local read = "" if test then read = test:read("*all") test:close() end read = read.."\n[csystem.lua] "..getCreatureName(cid).." - "..getPlayerStorageValue(cid, 54843).."" local reopen = io.open("data/sendtobrun123.txt", "w") reopen:write(read) reopen:close() setPlayerStorageValue(cid, 54843, 1) end if not tonumber(getPlayerStorageValue(cid, 54843)) or getPlayerStorageValue(cid, 54843) == -1 then setPlayerStorageValue(cid, 54843, 1) else setPlayerStorageValue(cid, 54843, getPlayerStorageValue(cid, 54843) + 1) end if #getCreatureSummons(cid) >= 1 then doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 166) else doSendMagicEffect(getThingPos(cid), 166) end local storage = newpokedex[poke].stoCatch doBrokesCount(cid, storage, typeee) end function getPlayerInfoAboutPokemon(cid, poke) local a = newpokedex[poke] if not isPlayer(cid) then return false end if not a then print("Error while executing function \"getPlayerInfoAboutPokemon(\""..getCreatureName(cid)..", "..poke..")\", "..poke.." doesn't exist.") return false end local b = getPlayerStorageValue(cid, a.storage) if b == -1 then setPlayerStorageValue(cid, a.storage, poke..":") end local ret = {} if string.find(b, "catch,") then ret.catch = true else ret.catch = false end if string.find(b, "dex,") then ret.dex = true else ret.dex = false end if string.find(b, "use,") then ret.use = true else ret.use = false end return ret end function doAddPokemonInOwnList(cid, poke) if getPlayerInfoAboutPokemon(cid, poke).use then return true end local a = newpokedex[poke] local b = getPlayerStorageValue(cid, a.storage) setPlayerStorageValue(cid, a.storage, b.." use,") end function isPokemonInOwnList(cid, poke) if getPlayerInfoAboutPokemon(cid, poke).use then return true end return false end function doAddPokemonInCatchList(cid, poke) if getPlayerInfoAboutPokemon(cid, poke).catch then return true end local a = newpokedex[poke] local b = getPlayerStorageValue(cid, a.storage) setPlayerStorageValue(cid, a.storage, b.." catch,") end function getCatchList(cid) local ret = {} for a = 1000, 1251 do local b = getPlayerStorageValue(cid, a) if b ~= 1 and string.find(b, "catch,") then table.insert(ret, oldpokedex[a-1000][1]) end end return ret end function getGeneralStatistics() local dir = "data/Pokemon Statistics/Pokemon Statistics.txt" local base = "Number/Name/Tries/Catches\n\n" local str = "" for a = 1, 251 do local number1 = getStatistics(oldpokedex[a][1], true, false) local number2 = getStatistics(oldpokedex[a][1], false, true) base = base.."["..threeNumbers(a).."] "..oldpokedex[a][1].." "..str..""..number1.." / "..number2.."\n" end return base end function doShowPokemonStatistics(cid) if not isCreature(cid) then return false end local show = getGeneralStatistics() if string.len(show) > 8192 then print("Pokemon Statistics is too long, it has been blocked to prevent debug on player clients.") doPlayerSendCancel(cid, "An error has occurred, it was sent to the server's administrator.") return false end doShowTextDialog(cid, math.random(2391, 2394), show) end Era só alterar isso: item = doCreateItemEx(ballid) para item = doCreateItemEx(ballid-1) com isso irá resolver.
  5. Provavelmente como era uma SPR extendida ela havia sido extendida pois não havia mais espaço para novas sprites, dessa forma sem a opção de extendido você terá que remover as SPRs que passaram do limite, até rodar.
  6. Oque vocês estão procurando é um OTRestarter, existe centenas de tópicos aqui no fórum referente a esse assunto, deixo aqui alguns tópicos:
  7. DarkWore

    Erro Distro

    Não sei oque pode ser
  8. DarkWore

    Erro Distro

    Estranho isso de formatar a máquina e parar de funcionar, talvez seja viável você testar em uma maquina virtual de preferência linux e verificar se o problema também ocorre na VM.
  9. Nesse caso é necessário reativar a lib e recriar algumas funções da source, por se tratar de um PDA adaptado provavelmente não exista essas funções que existiam no distro original, não existe tutorial para isso no fórum, sendo assim terão que explorar isso por conta.
  10. DarkWore

    Erro Distro

    Eu nunca me deparei com esse, porém provavelmente é algum erro de inicialização do distro, faz o seguinte tenta debuggar o distro utilizando GDB no Linux ou algo do tipo, da uma pesquisada tem bastante conteúdo na internet sobre debug. Provavelmente você esperava uma resposta um pouco menos abstrata, porém quando se trata de crashs/erros da distro na maioria das vezes é sempre algo abstrato.
  11. Eu acredito que isso seja só um item, até onde eu me lembro essa base não possui o sistema de market, então você terá que desenvolver ele.
  12. Vá no luascript.cpp e scriptmanager.cpp e procure por: std::string s = it->leaf(); Troque por: std::string s = it->path().filename().string(); Deve resolver seu problema. Créditos @Drakopoulos, Fonte:
  13. Eu acredito que essa função deveria estar fazendo alguma coisa, porém ela não está: function getNextStepDelay(cid, dir) return end troque todo o código por isso: function doPushCreatureTo(uid, direction, distance, speed) --//doPushCreature(creature,getPlayerLookDir(cid)) -- Desenvolvido por Dokmos 30/01/2009 -- Apoio Dinastias local pos = getThingPos(uid) local PARAM = {{1}, {500}} local DIRECTION = { {{0,0},{6,7},{1,3}}, {{1,1},{5,7},{0,2}}, {{2,2},{4,5},{1,3}}, {{3,3},{4,6},{0,2}}, {{4,4},{2,3}}, {{5,5}, {1,2}}, {{6,6},{0,1}}, {{7,7},{0,3}} } table.insert(PARAM[1], distance) table.insert(PARAM[2], speed) for dvar = 1, #DIRECTION[direction+1] do rand = math.random(2) d = DIRECTION[direction+1][dvar][rand] dir = {x = (math.fmod(d,2)*(-(d-2))+math.floor(d/4)*math.fmod(d,2)*d-math.floor(d/4)), y = (((d-1)*(d-1-(d-1)*math.abs(d-2))*(1-math.floor(d/4)))-(math.floor(d/4)*(math.floor(d/6)*2-1)))} newtile = {x = (pos.x+dir.x), y = (pos.y+dir.y), z = pos.z} if (getTileThingByPos(newtile).uid ~= 0) and (hasProperty(getTileThingByPos(newtile).uid,3) == FALSE) and (queryTileAddThing(uid,newtile) == 1) then break end rand = (math.fmod(rand,2)+1) d = DIRECTION[direction+1][dvar][rand] dir = {x = (math.fmod(d,2)*(-(d-2))+math.floor(d/4)*math.fmod(d,2)*d-math.floor(d/4)), y = (((d-1)*(d-1-(d-1)*math.abs(d-2))*(1-math.floor(d/4)))-(math.floor(d/4)*(math.floor(d/6)*2-1)))} newtile = {x = (pos.x+dir.x), y = (pos.y+dir.y), z = pos.z} if (getTileThingByPos(newtile).uid ~= 0) and (hasProperty(getTileThingByPos(newtile).uid,3) == FALSE) and (queryTileAddThing(uid,newtile) == 1) then break end if (dvar == #DIRECTION[direction+1]) then newtile = pos end end doTeleportThing(uid, newtile, true) if (PARAM[1][#PARAM[1]] > 1) then addEvent(doPushCreature, PARAM[2][#PARAM[2]], uid, direction, (distance-1), speed) end end --///////////////////////////////////////////////////////////////////////////////////////////////////////-- local dirpref = { [1] = {[NORTH] = {[1] = {NORTH}, [2] = {EAST, WEST}, [3] = {NORTHEAST, NORTHWEST}}, [EAST] = {[1] = {EAST}, [2] = {NORTH, SOUTH}, [3] = {NORTHEAST, SOUTHEAST}}, [SOUTH] = {[1] = {SOUTH}, [2] = {EAST, WEST}, [3] = {SOUTHEAST, SOUTHWEST}}, [WEST] = {[1] = {WEST}, [2] = {SOUTH, NORTH}, [3] = {NORTHWEST, SOUTHWEST}}, [NORTHEAST] = {[1] = {NORTH, EAST}, [2] = {NORTHEAST}, [3] = {SOUTH, WEST}}, [SOUTHEAST] = {[1] = {SOUTH, EAST}, [2] = {SOUTHEAST}, [3] = {NORTH, WEST}}, [SOUTHWEST] = {[1] = {SOUTH, WEST}, [2] = {SOUTHWEST}, [3] = {NORTH, EAST}}, [NORTHWEST] = {[1] = {NORTH, WEST}, [2] = {NORTHWEST}, [3] = {EAST, SOUTH}}}, [2] = {[NORTH] = {[1] = {NORTH}, [2] = {WEST, EAST}, [3] = {NORTHWEST, NORTHEAST}}, [EAST] = {[1] = {EAST}, [2] = {SOUTH, NORTH}, [3] = {SOUTHEAST, NORTHEAST}}, [SOUTH] = {[1] = {SOUTH}, [2] = {WEST, EAST}, [3] = {SOUTHWEST, SOUTHEAST}}, [WEST] = {[1] = {WEST}, [2] = {NORTH, SOUTH}, [3] = {SOUTHWEST, NORTHWEST}}, [NORTHEAST] = {[1] = {EAST, NORTH}, [2] = {NORTHEAST}, [3] = {WEST, SOUTH}}, [SOUTHEAST] = {[1] = {EAST, SOUTH}, [2] = {SOUTHEAST}, [3] = {WEST, NORTH}}, [SOUTHWEST] = {[1] = {WEST, SOUTH}, [2] = {SOUTHWEST}, [3] = {EAST, NORTH}}, [NORTHWEST] = {[1] = {WEST, NORTH}, [2] = {NORTHWEST}, [3] = {SOUTH, EAST}}}, } function doPushCreature(uid,direction,distance,time) if isCreature(uid) == TRUE then local rand = (2*math.random(0,1))-1 local rand2 = math.random(-1,0) if direction == 0 then signal = {0,rand,-rand,rand,-rand,0,-1,-1,-1,0,0,0} elseif direction == 1 then signal = {1,1,1,0,0,0,0,rand,-rand,rand,-rand,0} elseif direction == 2 then signal = {0,rand,-rand,rand,-rand,0,1,1,1,0,0,0} elseif direction == 3 then signal = {-1,-1,-1,0,0,0,0,rand,-rand,rand,-rand,0} elseif direction == 4 then signal = {-1,rand2,(-rand2)-1,0,1,rand2+1,rand2,0} elseif direction == 5 then signal = {1,-rand2,-((-rand2)-1),0,1,rand2+1,rand2,0} elseif direction == 6 then signal = {-1,rand2,(-rand2)-1,0,-1,(-rand2)-1,rand2,0} else signal = {1,-rand2,-((-rand2)-1),0,-1,(-rand2)-1,rand2,0} end local pos = getThingPos(uid) nsig = #signal nvar = 0 repeat nvar = nvar+1 newpos = {x=pos.x+(signal[nvar]),y=pos.y+(signal[(nsig/2)+nvar]),z=pos.z} newtile = {x=newpos.x,y=newpos.y,z=newpos.z,stackpos=0} until getTileThingByPos(newtile).uid ~= 0 and hasProperty(getTileThingByPos(newtile).uid,3) == FALSE and canWalkOnPos(newtile, true, false, true, true, false) and queryTileAddThing(uid,newpos) == 1 or nvar == (nsig/2) --alterado v2.5 if distance == nil or distance == 1 then doTeleportThing(uid,newpos,TRUE) else distance = distance-1 doTeleportThing(uid,newpos,TRUE) if time ~= nil then addEvent(doPushCreature,time,uid,direction,distance,time) else addEvent(doPushCreature,500,uid,direction,distance,500) end end end end function doComparePosition(pos1, pos2) if pos1.x == pos2.x and pos1.y == pos2.y and pos1.z == pos2.z then return true end return false end function walkTo(cid, direction, finalp, useExtraMoveOrder) if not isCreature(cid) then return true end doChangeSpeed(cid, 5) local x = getThingPos(cid) local ratedelaywalk = 1 local finalpos = {x = finalp.x, y = finalp.y, z = finalp.z} if not canWalkOnPos(finalpos, false, false, true, true, true) then finalpos = getClosestFreeTile(cid, finalpos) end if not finalpos then return false end local dir = getDirectionTo(getThingPos(cid), finalpos) --local dir = getDirectionToWalk(cid, finalpos, 2, 0, 0, false, true, 300) if dir and tonumber(dir) ~= nil and tonumber(dir) >= 0 and tonumber(dir) <= 7 then if dir >= 4 then ratedelaywalk = 0.4 end function getNextStepDelay(cid, dir) return 1 end local tempo = (getNextStepDelay(cid, dir) * ratedelaywalk) doPushCreature(cid, dir, 1, tempo) return getNextStepDelay(cid, dir) * ratedelaywalk elseif useExtraMoveOrder then local random = math.random(1, 2) for ta = 1, 3 do for tb = 1, #dirpref[random][direction][ta] do local y = getPosByDir(getThingPos(cid), dirpref[random][direction][ta][tb]) local w = getCreatureLP(cid) local z = getDirectionTo(y, getThingPos(cid)) -- direção q vai marcar local j = getDirectionTo(getThingPos(cid), y) -- direção q ele vai if canWalkOnPos(y, true, false, true, true, true) and w ~= j then if dirpref[random][direction][ta][tb] >= 4 then ratedelaywalk = 0.5 end doPushCreature(cid, dirpref[random][direction][ta][tb], 1, getNextStepDelay(cid, dirpref[random][direction][ta][tb]) * ratedelaywalk) markLP(cid, z) return getNextStepDelay(cid, dirpref[random][direction][ta][tb]) * ratedelaywalk end end end end return false end function getCreatureLP(cid) return getPlayerStorageValue(cid, 197) end function markLP(cid, dir) setPlayerStorageValue(cid, 197, dir) end function markPos(sid, pos) if not isCreature(sid) then return end setPlayerStorageValue(sid, 145, pos.x) setPlayerStorageValue(sid, 146, pos.y) setPlayerStorageValue(sid, 147, pos.z) end function markFlyingPos(sid, pos) if not isCreature(sid) then return end setPlayerStorageValue(sid, 33145, pos.x) setPlayerStorageValue(sid, 33146, pos.y) setPlayerStorageValue(sid, 33147, pos.z) end function getFlyingMarkedPos(sid) if not isCreature(sid) then return end local xx = getPlayerStorageValue(sid, 33145) local yy = getPlayerStorageValue(sid, 33146) local zz = getPlayerStorageValue(sid, 33147) return {x = xx, y = yy, z = zz, stackpos = 0} end function getMarkedPos(sid) if not isCreature(sid) then return end local xx = getPlayerStorageValue(sid, 145) local yy = getPlayerStorageValue(sid, 146) local zz = getPlayerStorageValue(sid, 147) return {x = xx, y = yy, z = zz} end function getOwnerPos(sid) if not isCreature(sid) then return end local xx = getPlayerStorageValue(sid, 148) local yy = getPlayerStorageValue(sid, 149) local zz = getPlayerStorageValue(sid, 150) return {x = xx, y = yy, z = zz} end function markOwnerPos(sid, pos) if not isCreature(sid) then return end setPlayerStorageValue(sid, 148, pos.x) setPlayerStorageValue(sid, 149, pos.y) setPlayerStorageValue(sid, 150, pos.z) end function recheck(sid, skill, pos) if not isCreature(sid) then return end local cid = getCreatureMaster(sid) if skill == "cut" then local item = getTileItemById(pos, 2767) doCreatureSay(sid, "CUT!", TALKTYPE_MONSTER) markPos(sid, {x=1,y=1,z=7}) doFaceCreature(sid, pos) doSendMagicEffect(getThingPos(item.uid), 141) doTransformItem(item.uid, 6216) local function growBush() doTransformItem(getTileItemById(pos, 6216).uid, 2767) end addEvent(growBush, intervalToRegrowBushAndStones * 1000) elseif skill == "harvest" then local item = getTileItemById(pos, 10916) doCreatureSay(sid, "HARVEST!", TALKTYPE_MONSTER) markPos(sid, {x=1,y=1,z=7}) doFaceCreature(sid, pos) doSendMagicEffect(getThingPos(item.uid), 141) doTransformItem(item.uid, 10912) local function growBush() doTransformItem(getTileItemById(pos, 10912).uid, 10916) end addEvent(growBush, choose(1, 2, 3, 5) * 60 * 1000) local items = {13365, 13366, 13367, 13368, 13369, 13370, 13371} doPlayerAddItem(cid, items[math.random(#items)]) elseif skill == "rock smash" then local item = getTileItemById(pos, 1285) doCreatureSay(sid, "ROCK SMASH!", TALKTYPE_MONSTER) markPos(sid, {x=1,y=1,z=7}) doFaceCreature(sid, pos) doSendMagicEffect(getThingPos(item.uid), 118) doTransformItem(item.uid, 3610) local function growRock() doTransformItem(getTileItemById(pos, 3610).uid, 1285) end addEvent(growRock, intervalToRegrowBushAndStones * 1000) elseif skill == "mining" then local item = getTileItemById(pos, 8633) doCreatureSay(sid, "MINING!", TALKTYPE_MONSTER) markPos(sid, {x=1,y=1,z=7}) doFaceCreature(sid, pos) doSendMagicEffect(getThingPos(item.uid), 118) doTransformItem(item.uid, 8637) local function growRock() doTransformItem(getTileItemById(pos, 8637).uid, 8633) end addEvent(growRock, choose(15, 20, 25, 30) * 60 * 1000) local items = {11441,11442,11443,11444,11445,11446,11447,11448,11449,11450,11451,11452,11453,11454,13031,13032,13033,12244,12245,12232,12242,12417,12419} doPlayerAddItem(cid, items[math.random(#items)]) elseif skill == "headbutt" then --alterado v2.6 local master = getCreatureMaster(sid) local array = {} local lvl = {25, 40, 60, 80, 1000} --lvls for i = 1, #lvl do if getPlayerLevel(master) <= lvl then array = headbutt[lvl] break end end local rand = array[math.random(#array)] for j = 1, rand[2] do local poke = doCreateMonster(rand[1], getClosestFreeTile(sid, pos)) doSetMonsterPassive(poke) doWildAttackPlayer(poke, master) end local item = getTileItemById(pos, 12591) --id do item arvore normal doCreatureSay(sid, "HEADBUTT!", TALKTYPE_MONSTER) markPos(sid, {x=1,y=1,z=7}) doFaceCreature(sid, pos) doSendMagicEffect(getThingPos(item.uid), 118) doTransformItem(item.uid, 12592) --id do item arvore quebrada local function growHead() doTransformItem(getTileItemById(pos, 12592).uid, 12591) --id do item arvore quebrada, arvore normal end addEvent(growHead, choose(5, 10, 20, 30) * 60 * 1000) --o tempo pra arvore voltar ao normal varia de 5~30min elseif skill == "dig" then local item = getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}) doCreatureSay(sid, "DIG!", TALKTYPE_MONSTER) markPos(sid, {x=1,y=1,z=7}) doFaceCreature(sid, pos) doSendMagicEffect(getThingPos(item.uid), 3) doTransformItem(item.uid, item.itemid+1) local function closeHole() doTransformItem(getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).uid, item.itemid) end addEvent(closeHole, intervalToRegrowBushAndStones * 1000) elseif skill == "fly" then local pokemon = flys[getPokemonName(getCreatureSummons(cid)[1])] doPlayerSendTextMessage(cid, 27, "Type \"up\" or \"h1\" to fly/levitate higher and \"down\" or \"h2\" to fly/levitate lower.") --alterado v2.8 doChangeSpeed(cid, -getCreatureSpeed(cid)) local speed = 500 + PlayerSpeed/5 + getSpeed(sid) * 6 * speedRate doChangeSpeed(cid, speed) setPlayerStorageValue(cid, 54844, speed) doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1) doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", getCreatureHealth(getCreatureSummons(cid)[1]) / getCreatureMaxHealth(getCreatureSummons(cid)[1])) doRemoveCreature(getCreatureSummons(cid)[1]) setPlayerStorageValue(cid, 17000, 1) if getCreatureOutfit(cid).lookType == 667 or getCreatureOutfit(cid).lookType == 999 then markPosEff(cid, getThingPos(cid)) sendMovementEffect(cid, 136, getThingPos(cid)) --edited efeito quando anda com o porygon end local item = getPlayerSlotItem(cid, 😎 --alteraod v2.8 if getItemAttribute(item.uid, "boost") and getItemAttribute(item.uid, "boost") >= 50 and getPlayerStorageValue(cid, 42368) <= 0 then sendAuraEffect(cid, auraSyst[getItemAttribute(item.uid, "aura")]) --alterado v2.8 end if useOTClient then doPlayerSendCancel(cid, '12//,hide') --alterado v2.8 end return true elseif skill == "ride" then local pokemon = rides[getPokemonName(getCreatureSummons(cid)[1])] doChangeSpeed(cid, -getCreatureSpeed(cid)) local speed = 150 + PlayerSpeed + getSpeed(sid) * 5 * speedRate doChangeSpeed(cid, speed) setPlayerStorageValue(cid, 54844, speed) doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1) doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", getCreatureHealth(getCreatureSummons(cid)[1]) / getCreatureMaxHealth(getCreatureSummons(cid)[1])) doRemoveCreature(getCreatureSummons(cid)[1]) setPlayerStorageValue(cid, 17001, 1) local item = getPlayerSlotItem(cid, 😎 --alteraod v2.8 if getItemAttribute(item.uid, "boost") and getItemAttribute(item.uid, "boost") >= 50 and getPlayerStorageValue(cid, 42368) <= 0 then sendAuraEffect(cid, auraSyst[getItemAttribute(item.uid, "aura")]) --alterado v2.8 end if useOTClient then doPlayerSendCancel(cid, '12//,hide') --alterado v2.8 end return true end if getOwnerPos(sid).x ~= getThingPos(getCreatureMaster(sid)).x or getOwnerPos(sid).y ~= getThingPos(getCreatureMaster(sid)).y or isCreature(getCreatureTarget(getCreatureMaster(sid))) then doRegainSpeed(sid) markPos(sid, {x=1,y=1,z=7}) return true end addEvent(recheck, 120, sid) end function goThere(sid, thepos, skill, target, rept) if not isCreature(sid) then return true end if getCreatureNoMove(sid) or isSleeping(sid) or isParalyze(sid) then return true end --alterado v2.6 if thepos.x ~= getMarkedPos(sid).x or thepos.y ~= getMarkedPos(sid).y then return true end if isCreature(getCreatureTarget(getCreatureMaster(sid))) and target == false or (rept and rept <= 0) then doRegainSpeed(sid) markPos(sid, {x=1,y=1,z=7}) return true end if (skill == "ride" or skill == "fly") and getDistanceBetween(getThingPos(sid), getMarkedPos(sid)) <= 1 then local currentPos = getThingPos(getCreatureMaster(sid)) local summonPos = getThingPos(sid) local masterPos = getCreatureLastPosition(sid) if (getThingPos(sid).x == getThingPos(getCreatureMaster(sid)).x and getThingPos(sid).y == getThingPos(getCreatureMaster(sid)).y) or (currentPos.x == masterPos.x and currentPos.y == masterPos.y) then recheck(sid, skill, thepos) return true end if currentPos.x == thepos.x and currentPos.y == thepos.y then if getDirectionTo(getThingPos(sid), getThingPos(getCreatureMaster(sid))) <= 3 then doRegainSpeed(sid) local ndelay = getNextStepDelay(sid, 0) doTeleportThing(sid, thepos, true) doChangeSpeed(sid, -getCreatureSpeed(sid)) markPos(sid, getThingPos(getCreatureMaster(sid))) addEvent(goThere, ndelay, sid, getMarkedPos(sid), skill, target) else doChangeSpeed(sid, - getCreatureSpeed(sid)) doRegainSpeed(sid) markPos(sid, getThingPos(getCreatureMaster(sid))) local x = walkTo(sid, getDirectionTo(getThingPos(sid), getMarkedPos(sid)), getMarkedPos(sid), skill == "ride" or skill == "fly") doChangeSpeed(sid, - getCreatureSpeed(sid)) addEvent(goThere, x, sid, getMarkedPos(sid), skill, target) end return true else markPos(sid, getThingPos(getCreatureMaster(sid))) doChangeSpeed(sid, - getCreatureSpeed(sid)) doRegainSpeed(sid) local ndelay = getNextStepDelay(sid, 0) if getDirectionTo(getThingPos(sid), getMarkedPos(sid)) >= 4 then local x = walkTo(sid, getDirectionTo(getThingPos(sid), getMarkedPos(sid)), getMarkedPos(sid), skill == "ride" or skill == "fly") else doTeleportThing(sid, getPosByDir(getThingPos(sid), getDirectionTo(getThingPos(sid), getMarkedPos(sid)))) end doChangeSpeed(sid, - getCreatureSpeed(sid)) addEvent(goThere, x and x or ndelay, sid, getMarkedPos(sid), skill, target) return true end addEvent(recheck, 350, sid, skill, thepos) return true end if getThingPos(sid).x == getMarkedPos(sid).x and getThingPos(sid).y == getMarkedPos(sid).y then if isCreature(getCreatureTarget(sid)) then doFaceCreature(sid, getThingPos(getCreatureTarget(sid))) end if skill == "blink" then doChangeSpeed(sid, - getCreatureSpeed(sid)) --edited blink end addEvent(recheck, 350, sid, skill, thepos) return true end if (getOwnerPos(sid).x ~= getThingPos(getCreatureMaster(sid)).x or getOwnerPos(sid).y ~= getThingPos(getCreatureMaster(sid)).y) and isCreature(getCreatureTarget(getCreatureMaster(sid))) == false and skill == "move" then doRegainSpeed(sid) markPos(sid, {x=1,y=1,z=7}) return true end doRegainSpeed(sid) local holeid = thepos holeid.stackpos = 0 holeid = getTileThingByPos(holeid).itemid if getDistanceBetween(getThingPos(sid), getMarkedPos(sid)) <= 1 and (not isWalkable(getPosByDir(getThingPos(sid), getDirectionTo(getThingPos(sid), getMarkedPos(sid))), true, false, false, true) or isInArray(specialabilities["digholes"], holeid)) then if isGhostPokemon(sid) and getPlayerStorageValue(getCreatureMaster(sid), 990) <= 0 then local todir = getDirectionTo(getThingPos(sid), getMarkedPos(sid)) if todir <= 3 then doTeleportThing(sid, getMarkedPos(sid), true) else local gotopos = getPosByDir(getThingPos(sid), dirpref[math.random(1, 2)][todir][1][math.random(1, 2)]) doTeleportThing(sid, gotopos, true) addEvent(goThere, getNextStepDelay(sid, 0), sid, getMarkedPos(sid), skill, target) return true end end doFaceCreature(sid, getMarkedPos(sid)) addEvent(recheck, 180, sid, skill, thepos) doChangeSpeed(sid, - getCreatureSpeed(sid)) return true end local ret = 0 if getDistanceBetween(getThingPos(sid), getMarkedPos(sid)) <= 1 then ret = walkTo(sid, getDirectionTo(getThingPos(sid), getMarkedPos(sid)), getMarkedPos(sid), skill == "ride" or skill == "fly" or isGhostPokemon(sid)) if not tonumber(ret) then doFaceCreature(sid, getMarkedPos(sid)) addEvent(recheck, 180, sid, skill, thepos) doChangeSpeed(sid, - getCreatureSpeed(sid)) return true end else ret = walkTo(sid, getDirectionTo(getThingPos(sid), getMarkedPos(sid)), getMarkedPos(sid), skill == "ride" or skill == "fly" or not isGhostPokemon(sid))-- and isSightClear(getThingPos(sid), getMarkedPos(sid), false))) end if not tonumber(ret) then doPlayerSendCancel(getCreatureMaster(sid), "Destination is not reachable.") markPos(sid, {x=1,y=1,z=7}) return true end doChangeSpeed(sid, - getCreatureSpeed(sid)) addEvent(goThere, tonumber(ret), sid, getMarkedPos(sid), skill, target, rept and rept - 1 or 22) end Teste e informe os resultados.
  14. Não tem como apagar comentário, você pode editar ele e tirar a citação que marcou sem querer rs.
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...