Ir para conteúdo
  • 0

Fly/Surf proíbidos em áreas.


Amantezinho

Pergunta

Provavelmente precisa ser no actions/scripts/Moves, né não? JAHAHAHA
Então, amigos.

Preciso de um suporte, para fechar com chave de ouro o Order do meu projeto.

 

 

Eu preciso que o Fly/Surf sejam proíbidos em certas áreas, ou melhor (como serão poucas as áreas possíveis..) que sejam possíveis somente em tal área, tipo, de x, y, z, to x,y,z.

 

AGRADEÇO desde já :)

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0
Abaixo de:

if getPlayerStorageValue(cid, 17000) <= 0 and getPlayerStorageValue(cid, 17001) <= 0 and isInArray(fly, getCreatureName(getCreatureSummons(cid)[1])) then

coloque:


local fly_areas, canFly = {
--{fromPos = {posição_superior_esquerda_da_área}, toPos = {posição_inferior_direita_da_área}},
{fromPos = {x = x, y = y, z = z}, toPos = {x = x, y = y, z = z}},
{fromPos = {x = x, y = y, z = z}, toPos = {x = x, y = y, z = z}},
--etc
}

for _, coordinates in pairs(fly_areas) do
if isInRange(getThingPos(cid), coordinates.fromPos, coordinates.toPos) then
canFly = true
break
end
end

if not canFly then
return doPlayerSendCancel(cid, "You can't fly here.")
end

Já sobre o surf, as alterações serão feitas em um moveevent (data/movements/scripts). A lógica aplicada será basicamente a mesma do fly.

Link para o comentário
Compartilhar em outros sites

  • 0

Aqui amigo



 

local nao = {'4820', '4821', '4822', '4823', '4824', '4825', '1395', '1389', '1391', '1393', '460'}

local direction = {'4', '5', '6', '7'}
-- ridefly
local ridefly = {'Elder Charizard', 'Crystal Onix', 'Venusaur', 'Ninetales', 'Arcanine', 'Ponyta', 'Rapidash', 'Doduo', 'Dodrio', 'Onix', 'Rhyhorn', 'Tauros', 'Porygon', 'Aerodactyl', 'Dragonite', 'Charizard', 'Pidgeot', 'Fearow', 'Moltres', 'Zapdos', 'Articuno', 'Mew', 'Mewtwo', 'Lugia', 'Ho-Oh', 'Entei', 'Raikou', 'Suicune'}
local ride = {'Crystal Onix', 'Venusaur', 'Ninetales', 'Arcanine', 'Ponyta', 'Rapidash', 'Doduo', 'Dodrio', 'Onix', 'Rhyhorn', 'Tauros', 'Entei', 'Suicune', 'Raikou'}
local fly = {'Elder Charizard', 'Porygon', 'Aerodactyl', 'Dragonite', 'Charizard', 'Pidgeot', 'Fearow', 'Zapdos', 'Moltres', 'Articuno', 'Mew', 'Mewtwo', 'Lugia', 'Ho-Oh'}
local flys = {
[294] = {295, 2200, 525}, -- Elder Charizard
[265] = {229, 2300, 350}, -- moltres
[283] = {230, 2100, 350}, -- artic
[199] = {224, 2600, 350}, -- zapdos
[9] = {232, 2200, 525}, -- 1000
[34] = {233, 2200, 525},-- two
[210] = {221, 1300, 410},-- nite
[80] = {222, 900, 375}, -- geot
[17] = {226, 800, 400}, -- fearow
[10] = {227, 1100, 410}, -- aero
[67] = {216, 1000, 410}, -- chari
[97] = {316, 600, 440}, -- porygon
[535] = {535, 2300, 350}, -- lugia
[533] = {533, 2300, 350}, -- ho-oh
}
local rides = {
[93] = {128, 780, 400}, -- tauros
[114] = {129, 800, 375}, -- kyuubi
[220] = {130, 800, 395}, -- rapid
[16] = {131, 410, 500}, -- ponyta
[77] = {132, 400, 510}, -- rhyhorn
[88] = {12, 900, 390}, -- arcan
[493] = {492, 1000, 360}, -- shiny arca
[496] = {494, 420, 420}, -- shiny vneu
[292] = {293, 480, 430}, -- cristal onix
[248] = {126, 450, 450}, -- onix
[22] = {134, 390, 450}, -- venu
[120] = {133, 750, 380}, -- dodrio
[26] = {135, 420, 500}, -- doduo
[536] = {536, 750, 380}, -- entei
[537] = {537, 420, 500}, -- raikou
[538] = {538, 420, 500}, -- suicune
}
local bolas = {'2222', '2223', '2224'}
local ultra = {'2220', '2221', '2227'}
local etudao = 9506
local mind = 9507
-- LIGHT
local light = {"Divine Light", "Kadabra", "Alakazam", "Magnemite", "Magneton", "Drowzee", "Hypno", "Voltorb", "Electrode", "Mrmime", "Electabuzz", "Jolteon", "Porygon", "Pikachu", "Raichu"}
local exhautStorage = 9500
local time = 600
local cd = 17
-- LIGHT
-- BLINK
local blink = {"Abra", "Kadabra", "Alakazam", "Porygon", "Mew", "Mewtwo", "MrMime"}
local exhaustblink = 9501
local cdblink = 50
-- BLINK
local systems = {
["rock smash"] = {"Sandshrew", "Sandslash", "Diglett", "Dugtrio", "Primeape", "Machop", "Machoke", "Machamp", "Geodude", "Graveler", "Golem" , "Onix", "Cubone", "Marowak", "Rhyhorn", "Rhydon", "Kangaskhan", "Tauros", "Snorlax", "Poliwrath", "Hitmonlee", "Hitmonchan", "Aerodactyl", "Charizard", "Blastoise", "Typhlosion", "Feraligatr", "Furret", "Ledian", "Ampharos", "Politoed", "Quagsire", "Forretress", "Steelix", "Snubbull", "Granbull", "Sudowoodo", "Gligar", "Scizor", "Heracross", "Sneasel", "Ursaring", "Teddiursa", "Slugma", "Magcargo", "Piloswine", "Swinub", "Corsola", "Phanpy", "Donphan", "Tyrogue", "Hitmontop", "Miltank", "Blissey", "Tyranitar", "Pupitar"},
["cut"] = {"Charmander", "Raticate", "Bulbasaur", "Ivysaur", "Venusaur", "Charmeleon", "Sandshrew", "Sandslash", "Gloom", "Vileplume", "Paras", "Parasect", "Meowth", "Persian", "Bellsprout", "Weepinbell", "Victreebel", "Farfetchd", "Krabby", "Kingler", "Exeggutor", "Cubone", "Marowak", "Tangela", "Scyther", "Pinsir", "Chikorita", "Bayleef", "Meganium", "Croconow", "Feraligatr", "Furret", "Bellossom", "Hoppip", "Skiploom", "Jumpluff", "Sunkern", "Sunflora", "Scizor", "Heracross", "Sneasel", "Teddiursa", "Ursaring", "Gligar", "Skarmory"},
["digholes"] = {"468", "481", "483"},
["dig"] = {"Raticate", "Sandshrew", "Sandslash", "Diglett", "Dugtrio", "Primeape", "Machop", "Machoke", "Machamp", "Geodude", "Graveler", "Golem" , "Onix", "Cubone", "Marowak", "Rhyhorn", "Rhydon", "Kangaskhan", "Tauros", "Snorlax", "Eevee", "Dunsparce", "Flareon", "Jolteon", "Vaporeon", "Espeon", "Umbreon", "Vulpix", "Ninetales", "Nidorina", "Nidoqueen", "Nidorino", "Nidoking", "Persian", "Arcanine"},
["blink"] = {"Abra", "Kadabra", "Alakazam", "Porygon", "Porygon2", "Mew", "Mewtwo", "MrMime"}
}
-------- DITTO E CONTROL MIND ---------
function onUse(cid, item, frompos, item2, topos, item3)
if getPlayerItemCount(cid, item2.itemid) >= 1 then
return false
end
if isMonster(item2.uid) and item2.uid ~= getCreatureSummons(cid)[1] and item2.uid ~= cid then
if #getCreatureSummons(cid) == 0 then
doPlayerSendCancel(cid, "Você precisa de um pokemon para usar order.")
return true
end
if exhaustion.get(cid, mind) then
doPlayerSendCancel(cid, "Seu pokemon está exausto para usar Control MIND, Espere 2 minutos para usar esse move denovo.")
return true
end
if isPlayer(getCreatureMaster(item2.uid)) then
doPlayerSendCancel(cid, "Você só pode usar esse move em pokemons.")
return true
end
if not isInArray({"Alakazam", "Tentacruel", "Gengar", "Ditto"}, getCreatureName(getCreatureSummons(cid)[1])) then
doPlayerSendCancel(cid, "Este pokemon não tem esse move.")
return true
end
if getCreatureName(item2.uid) == "Ditto" and isMonster(item2.uid) == TRUE and getCreatureName(getCreatureSummons(cid)[1]) == "Ditto" then
doCreatureSay(cid, "Ditto, reverse transformation!", 1)
xd = doSummonCreature(getCreatureName(item2.uid), topos)
doCreatureAddHealth(xd, -getCreatureHealth(xd)+getCreatureHealth(getCreatureSummons(cid)[1]))
doTeleportThing(xd, getCreaturePosition(getCreatureSummons(cid)[1]), false)
doRemoveCreature(item2.uid)
doConvinceCreature(cid, xd)
return TRUE
end
------ \/ ditto
if isMonster(item2.uid) == TRUE and getCreatureName(getCreatureSummons(cid)[1]) == "Ditto" then
if getPlayerLevel(cid) >= pokes[getCreatureName(item2.uid)].level then
if getPlayerStorageValue(item2.uid, 202) >= 1 then
doPlayerSendTextMessage(cid, 27, "Sorry, you dont transform your ditto in GYM pokes.")
return true
end
doCreatureSay(cid, "Ditto, transformation ".. getCreatureName(item2.uid) .."!", 1)
doCreatureSay(cid, "Transform!", TALKTYPE_MONSTER)
doSendMagicEffect(getCreaturePosition(getCreatureSummons(cid)[1]), 184)
doSetCreatureOutfit(getCreatureSummons(cid)[1], getCreatureOutfit(item2.uid), -1)
movesDitto(cid, item2.uid)
doCureAllStatus(getPlayerSlotItem(cid, 8).uid)
else
doPlayerSendTextMessage(cid, 27, "Sorry, you need a level ".. pokes[getCreatureName(item2.uid)].level .. " for transform your Ditto in "..getCreatureName(item2.uid)..".")
return true
end
return TRUE
end
exhaustion.set(cid, mind, 240)
doCreatureSay(getCreatureSummons(cid)[1], "CONTROL MIND!", TALKTYPE_MONSTER)
doSendDistanceShoot(getThingPos(getCreatureSummons(cid)[1]), getThingPos(item2.uid), 39)
registerCreatureEvent(item2.uid, "Controled")
doSendMagicEffect(getThingPos(item2.uid), 136)
doSendMagicEffect(getThingPos(item2.uid), 134)
doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 133)
setPlayerStorageValue(cid, 61209, getCreatureMaxHealth(getCreatureSummons(cid)[1]))
setPlayerStorageValue(cid, 61210, getCreatureHealth(getCreatureSummons(cid)[1]))
doConvinceCreature(cid, item2.uid)
if getCreatureSpeed(item2.uid) == 0 then
doChangeSpeed(item2.uid, 180)
end
doCreatureSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", control "..string.lower(getCreatureName(item2.uid)).."'s mind!", 1)
local cmed = item2.uid
local cmname = getCreatureName(getCreatureSummons(cid)[1])
local cmpos = getThingPos(getCreatureSummons(cid)[1])
doRemoveCreature(getCreatureSummons(cid)[1])
local cmzao = doSummonCreature(""..cmname.." cm", cmpos)
doConvinceCreature(cid, cmzao)
setPlayerStorageValue(cid, 888, 1)
local function check(params)
if isCreature(params.cid) then
if getPlayerStorageValue(params.cid, 888) <= 0 then
return true
end
if not isCreature(cmed) then
local pkcmpos = getThingPos(getCreatureSummons(cid)[1])
doRemoveCreature(getCreatureSummons(cid)[1])
local item = getPlayerSlotItem(cid, 8)
local pk = doSummonCreature(getItemAttribute(item.uid, "poke"):match("This is (.-)'s pokeball."), pkcmpos)
doConvinceCreature(cid, pk)
doCreatureSetLookDir(getCreatureSummons(cid)[1], 2)
registerCreatureEvent(pk, "DiePoke")
registerCreatureEvent(pk, "Exp")
registerCreatureEvent(cid, "PlayerPokeDeath")
setCreatureMaxHealth(pk, (getPlayerStorageValue(cid, 61209)))
doCreatureAddHealth(pk, (getPlayerStorageValue(cid, 61209)))
doCreatureAddHealth(pk, (getPlayerStorageValue(cid, 61210))-(getPlayerStorageValue(cid, 61209)))
setPlayerStorageValue(cid, 888, 0)
end
if params.rod == 20 then
local lifecmed = getCreatureMaxHealth(cmed) - getCreatureHealth(cmed)
local poscmed = getThingPos(cmed)
local cmeddir = getCreatureLookDir(cmed)
local namecmed = getCreatureName(cmed)
doRemoveCreature(getCreatureSummons(cid)[1])
local back = doSummonCreature(""..namecmed.." s", poscmed)
if getCreatureSpeed(back) == 0 then
doChangeSpeed(back, 180)
end
doCreatureSetLookDir(back, cmeddir)
doCreatureAddHealth(back, -lifecmed)
local item = getPlayerSlotItem(cid, 8)
local mynewpos = getThingPos(getCreatureSummons(cid)[1])
doRemoveCreature(getCreatureSummons(cid)[1])
pk = doSummonCreature(getItemAttribute(item.uid, "poke"):match("This is (.-)'s pokeball."), mynewpos)
doConvinceCreature(cid, pk)
doCreatureSetLookDir(getCreatureSummons(cid)[1], 2)
registerCreatureEvent(pk, "DiePoke")
registerCreatureEvent(pk, "Exp")
registerCreatureEvent(cid, "PlayerPokeDeath")
setCreatureMaxHealth(pk, (getPlayerStorageValue(cid, 61209)))
doCreatureAddHealth(pk, (getPlayerStorageValue(cid, 61209)))
doCreatureAddHealth(pk, (getPlayerStorageValue(cid, 61210))-(getPlayerStorageValue(cid, 61209)))
setPlayerStorageValue(cid, 888, 0)
else
doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 220)
end
end
end
for rod = 1, 20 do
addEvent(check, rod*500, {cid = cid, rod = rod})
end
return true
end
if item2.uid == cid then
if getPlayerStorageValue(cid, 888) >= 1 then
doPlayerSendCancel(cid, "You cant fly neither ride pokemons being controled.")
return true
end
if #getCreatureSummons(cid) == 0 and getPlayerStorageValue(cid, 17000) <= 0 and getPlayerStorageValue(cid, 17001) <= 0 then
doPlayerSendCancel(cid, "You need a pokemon to use order.")
return true
end
if getPlayerStorageValue(cid, 17000) <= 0 and getPlayerStorageValue(cid, 17001) <= 0 and not isInArray(ridefly, getCreatureName(getCreatureSummons(cid)[1])) then
doPlayerSendCancel(cid, "You can't ride this pokemon nor fly with it.")
return true
end
if getPlayerStorageValue(cid, 17000) <= 0 and getPlayerStorageValue(cid, 17001) <= 0 and getCreatureSpeed(getCreatureSummons(cid)[1]) == 0 then
return true
end
-----------------------------
-------- RIDE ---------
if getPlayerStorageValue(cid, 17001) <= 0 and getPlayerStorageValue(cid, 17000) <= 0 and isInArray(ride, getCreatureName(getCreatureSummons(cid)[1])) then
local pokemon = rides[getCreatureOutfit(getCreatureSummons(cid)[1]).lookType]
if getCreatureSpeed(getCreatureSummons(cid)[1]) >= 1 then
doChangeSpeed(getCreatureSummons(cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))
end
local function ride(params)
if isCreature(params.cid) then
if isCreature(getCreatureSummons(params.cid)[1]) then
if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(cid)) <= params.d then
doChangeSpeed(cid, -250)
doChangeSpeed(cid, pokemon[2])
exhaustion.set(cid, etudao, 4)
setPlayerStorageValue(cid, 17001, 1)
doSetCreatureOutfit(cid, {lookType = pokemon[1], lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, -1)
setPlayerStorageValue(cid, 61209, getCreatureMaxHealth(getCreatureSummons(cid)[1]))
setPlayerStorageValue(cid, 61210, getCreatureHealth(getCreatureSummons(cid)[1]))
doRemoveCreature(getCreatureSummons(cid)[1])
else
dirh = getDirectionTo(getThingPos(getCreatureSummons(params.cid)[1]), getThingPos(params.cid))
if dirh == NORTHWEST then
if math.random(1,100) >= 51 then
dirh = NORTH
else
dirh = WEST
end
elseif dirh == SOUTHWEST then
if math.random(1,100) >= 51 then
dirh = SOUTH
else
dirh = WEST
end
elseif dirh == SOUTHEAST then
if math.random(1,100) >= 51 then
dirh = SOUTH
else
dirh = EAST
end
elseif dirh == NORTHEAST then
if math.random(1,100) >= 51 then
dirh = NORTH
else
dirh = EAST
end
end
local dirh = dirh
if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then
doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(cid)[1]))
doPushCreature(getCreatureSummons(params.cid)[1], dirh, 1, 0)
doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))
else
doPushCreature(getCreatureSummons(params.cid)[1], dirh, 1, 0)
doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))
end
end
end
end
end
local function speed(params)
if isCreature(params.cid) then
if isCreature(getCreatureSummons(params.cid)[1]) then
if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then
doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(cid)[1]))
end
end
end
end
doCreatureSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", let me ride you!", 1)
exhaustion.set(cid, etudao, 4)
if getPlayerGroupId(cid) >= 2 and getPlayerGroupId(cid) <= 6 then
distanc = 1
else
distanc = 0
end
local distance = distanc
for i=1,12 do
addEvent(ride, pokemon[3]*i, {cid = cid, d = distance})
addEvent(speed, ((pokemon[3]*12)+100), {cid = cid})
end
return true
end
-----------------------------
-------- FLY ---------
if getPlayerStorageValue(cid, 17001) >= 1 then
setPlayerStorageValue(cid, 17001, 0)
if getPlayerGroupId(cid) ~= 6 then
setPlayerGroupId(cid, 8)
end
doCreatureSetLookDir(cid, 2)
doChangeSpeed(cid, -(getCreatureSpeed(cid)))
if getPlayerGroupId(cid) >= 2 and getPlayerGroupId(cid) <= 7 then
doChangeSpeed(cid, 400*getPlayerGroupId(cid))
else
doChangeSpeed(cid, 250)
end
doRemoveCondition(cid, CONDITION_OUTFIT)
local item = getPlayerSlotItem(cid, 8)
doCreatureSay(cid, "" .. getItemAttribute(item.uid, "poke"):match("This is (.-)'s pokeball.")..", let me get down!", 1)
doSummonMonster(cid, getItemAttribute(item.uid, "poke"):match("This is (.-)'s pokeball."))
local pk = getCreatureSummons(cid)[1]
registerCreatureEvent(cid, "PlayerPokeDeath")
registerCreatureEvent(pk, "DiePoke")
registerCreatureEvent(pk, "Exp")
setCreatureMaxHealth(pk, (getPlayerStorageValue(cid, 61209)))
doCreatureAddHealth(pk, (getPlayerStorageValue(cid, 61209)))
doCreatureAddHealth(pk, (getPlayerStorageValue(cid, 61210))-(getPlayerStorageValue(cid, 61209)))
return true
end
if getPlayerStorageValue(cid, 17000) >= 1 then
if isInArray({460, 1022, 1023}, getTileInfo(getThingPos(cid)).itemid) then
doPlayerSendCancel(cid, "You can\'t stop flying at this height!")
return true
end
if getTileInfo(getThingPos(cid)).itemid >= 4820 and getTileInfo(getThingPos(cid)).itemid <= 4825 then
doPlayerSendCancel(cid, "Você não pode parar de voar na água!")
return true
end
if getPlayerGroupId(cid) ~= 6 then
setPlayerGroupId(cid, 8)
end
doCreatureSetLookDir(cid, 2)
setPlayerStorageValue(cid, 17000, 0)
doChangeSpeed(cid, -(getCreatureSpeed(cid)))
if getPlayerGroupId(cid) >= 2 and getPlayerGroupId(cid) <= 7 then
doChangeSpeed(cid, 200*getPlayerGroupId(cid))
else
doChangeSpeed(cid, 250)
end
doRemoveCondition(cid, CONDITION_OUTFIT)
local item = getPlayerSlotItem(cid, 8)
doCreatureSay(cid, "" .. getItemAttribute(item.uid, "poke"):match("This is (.-)'s pokeball.")..", let me get down!", 1)
doSummonMonster(cid, getItemAttribute(item.uid, "poke"):match("This is (.-)'s pokeball."))
local pk = getCreatureSummons(cid)[1]
registerCreatureEvent(cid, "PlayerPokeDeath")
registerCreatureEvent(pk, "DiePoke")
registerCreatureEvent(pk, "Exp")
setCreatureMaxHealth(pk, (getPlayerStorageValue(cid, 61209)))
doCreatureAddHealth(pk, (getPlayerStorageValue(cid, 61209)))
doCreatureAddHealth(pk, (getPlayerStorageValue(cid, 61210))-(getPlayerStorageValue(cid, 61209)))
return true
end
if getPlayerStorageValue(cid, 17000) <= 0 and getPlayerStorageValue(cid, 17001) <= 0 and isInArray(fly, getCreatureName(getCreatureSummons(cid)[1])) then
if getPlayerStorageValue(cid, 17000) <= 0 then
local pokemon = flys[getCreatureOutfit(getCreatureSummons(cid)[1]).lookType]
local function fly(params)
if isCreature(params.cid) then
if isCreature(getCreatureSummons(params.cid)[1]) then
if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(cid)) <= params.dd then
doPlayerSendTextMessage(cid, 27, "Type 'up' or 'h1' to fly higher and 'down' or 'h2' to fly lower.")
setPlayerStorageValue(cid, 61209, getCreatureMaxHealth(getCreatureSummons(cid)[1]))
setPlayerStorageValue(cid, 61210, getCreatureHealth(getCreatureSummons(cid)[1]))
setPlayerStorageValue(cid, 17000, 1)
registerCreatureEvent(cid, "Flying")
doChangeSpeed(cid, -250)
doChangeSpeed(cid, pokemon[2])
exhaustion.set(cid, etudao, 4)
doSetCreatureOutfit(cid, {lookType = pokemon[1], lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, -1)
doRemoveCreature(getCreatureSummons(cid)[1])
else
dir = getDirectionTo(getThingPos(getCreatureSummons(params.cid)[1]), getThingPos(params.cid))
if dir == NORTHWEST then
if math.random(1,100) >= 51 then
dir = NORTH
else
dir = WEST
end
elseif dir == SOUTHWEST then
if math.random(1,100) >= 51 then
dir = SOUTH
else
dir = WEST
end
elseif dir == SOUTHEAST then
if math.random(1,100) >= 51 then
dir = SOUTH
else
dir = EAST
end
elseif dir == NORTHEAST then
if math.random(1,100) >= 51 then
dir = NORTH
else
dir = EAST
end
end
local dir = dir
if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then
doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(cid)[1]))
doPushCreature(getCreatureSummons(params.cid)[1], dir, 1, 0)
doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))
else
doPushCreature(getCreatureSummons(params.cid)[1], dir, 1, 0)
doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))
end
end
end
end
end
local function speed(params)
if isCreature(params.cid) then
if isCreature(getCreatureSummons(params.cid)[1]) then
if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then
doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(cid)[1]))
end
end
end
end
doCreatureSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", let's fly!", 1)
exhaustion.set(cid, etudao, 4)
if getPlayerGroupId(cid) >= 2 and getPlayerGroupId(cid) <= 6 then
distancc = 1
else
distancc = 0
end
local distancee = distancc
for i=1,12 do
addEvent(fly, pokemon[3]*i, {cid = cid, dd = distancee})
addEvent(speed, ((pokemon[3]*12)+100), {cid = cid})
end
return true
end
return true
end
end
-----------------------------
-------- ROCK SMASH ---------
if item2.itemid == 1285 and isInArray(systems["rock smash"], getCreatureName(getCreatureSummons(cid)[1])) then
if getMarkedPos(getCreatureSummons(cid)[1]).x == topos.x and getMarkedPos(getCreatureSummons(cid)[1]).y == topos.y then
return true
end
markPos(getCreatureSummons(cid)[1], topos)
markOwnerPos(getCreatureSummons(cid)[1], getThingPos(cid))
doPlayerSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", rock smash!", 1)
addEvent(goThere, 500, getCreatureSummons(cid)[1], topos, "rock smash", isCreature(getCreatureTarget(cid)))
return true
end
-----------------------------
-------- CUT ----------------
if item2.itemid == 2767 and isInArray(systems["cut"], getCreatureName(getCreatureSummons(cid)[1])) then
if getMarkedPos(getCreatureSummons(cid)[1]).x == topos.x and getMarkedPos(getCreatureSummons(cid)[1]).y == topos.y then
return true
end
markPos(getCreatureSummons(cid)[1], topos)
markOwnerPos(getCreatureSummons(cid)[1], getThingPos(cid))
doPlayerSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", cut this!", 1)
addEvent(goThere, 500, getCreatureSummons(cid)[1], topos, "cut", isCreature(getCreatureTarget(cid)))
return true
end
-----------------------------
-------- DIG ----------------
if isInArray(systems["digholes"], item2.itemid) and isInArray(systems["dig"], getCreatureName(getCreatureSummons(cid)[1])) then
if getMarkedPos(getCreatureSummons(cid)[1]).x == topos.x and getMarkedPos(getCreatureSummons(cid)[1]).y == topos.y then
return true
end
markPos(getCreatureSummons(cid)[1], topos)
markOwnerPos(getCreatureSummons(cid)[1], getThingPos(cid))
doPlayerSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", open that hole!", 1)
addEvent(goThere, 500, getCreatureSummons(cid)[1], topos, "dig", isCreature(getCreatureTarget(cid)))
return true
end
-----------------------------
-------- BLINK ----------------
if #getCreatureSummons(cid) == 0 and getPlayerStorageValue(cid, 63215) <= 0 and getPlayerStorageValue(cid, 17000) <= 0 then
doPlayerSendCancel(cid, "You need a pokemon to use order.")
return true
end
if not isMonster(item2.uid) and getPlayerStorageValue(cid, 63215) <= 0 and getPlayerStorageValue(cid, 17000) <= 0 then
if isInArray(blink, getCreatureName(getCreatureSummons(cid)[1])) then
if exhaustion.get(cid, exhaustblink) then
doPlayerSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", move!", 1)
doChangeSpeed(getCreatureSummons(cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))
addEvent(goThere, 500, getCreatureSummons(cid)[1], topos, "move", isCreature(getCreatureTarget(cid)))
if getMarkedPos(getCreatureSummons(cid)[1]).x == topos.x and getMarkedPos(getCreatureSummons(cid)[1]).y == topos.y then
return true
end
markPos(getCreatureSummons(cid)[1], topos)
markOwnerPos(getCreatureSummons(cid)[1], getThingPos(cid))
addEvent(goThere, 500, getCreatureSummons(cid)[1], topos)
else
if not isWalkable(topos, cid, 0, 0) then
doPlayerSendCancel(cid, "Your pokemon cannot teleport there.")
return true
end
if getItemName(item2.uid) == "shallow water" then
doPlayerSendCancel(cid, "Your pokemon cannot teleport there.")
return true
end
addEvent(goThere, 500, getCreatureSummons(cid)[1], topos, "move", isCreature(getCreatureTarget(cid)))
doSendDistanceShoot(getThingPos(getCreatureSummons(cid)[1]), topos, 39)
doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 211)
doTeleportThing(getCreatureSummons(cid)[1], topos, false)
doSendMagicEffect(topos, 134)
doPlayerSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", teleport there!", 1)
doCreatureSay(getCreatureSummons(cid)[1], "BLINK!", TALKTYPE_MONSTER)
addEvent(goThere, 500, getCreatureSummons(cid)[1], topos, "move", isCreature(getCreatureTarget(cid)))
exhaustion.set(cid, exhaustblink, cdblink)
addEvent(goThere, 500, getCreatureSummons(cid)[1], topos, "move", isCreature(getCreatureTarget(cid)))
return true
end
return true
end
end
-----------------------------
-------- LIGHT ----------------
if isCreature(item2.uid) and getCreatureMaster(item2.uid) == cid and getPlayerStorageValue(cid, 63215) <= 0 and getPlayerStorageValue(cid, 17000) <= 0 and item2.uid ~= cid then
if not isInArray(light, getCreatureName(getCreatureSummons(cid)[1])) then
doPlayerSendCancel(cid, "Esse pokemon não tem LIGHT.")
return true
end
if isInArray(light, getCreatureName(getCreatureSummons(cid)[1])) then
if not isMonster(item2.uid) and getCreatureMaster(item2.uid) ~= cid then
return doPlayerSendCancel(cid,"Por Favor usar LIGHT em seu pokemon.")
end
if exhaustion.get(cid, exhautStorage) then
doPlayerSendCancel(cid,"Por Favor espere alguns segundos para usar LIGHT denovo!")
return true
end
exhaustion.set(cid, exhautStorage, cd)
doPlayerSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", use light!", 1)
doCreatureSay(getCreatureSummons(cid)[1], "LIGHT!", TALKTYPE_MONSTER)
doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 28)
doSetCreatureLight(getCreatureSummons(cid)[1], 8, 215, time*1000)
return true
end
end
-----------------------------
-------- MOVE ---------
if getMarkedPos(getCreatureSummons(cid)[1]).x == topos.x and getMarkedPos(getCreatureSummons(cid)[1]).y == topos.y then
return true
end
markPos(getCreatureSummons(cid)[1], topos)
markOwnerPos(getCreatureSummons(cid)[1], getThingPos(cid))
doPlayerSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", move!", 1)
addEvent(goThere, 500, getCreatureSummons(cid)[1], topos, "move", isCreature(getCreatureTarget(cid)))
return true
end
-----------------------------

 

 

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

  • 0

Testado e aprovado! :)

 

Porém esqueci de algo, desculpe.
O player consegue voar em x área pré selecionada, porém ele pode sair voando pra qualquer lugar após o fly.

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

  • 0

Se possível, poste o arquivo relacionado ao sistema de fly encontrado em data/movements/scripts.

 

 

local del = {'460', '1022', '1023'}
local updown = {'1', '3'}
function onStepIn(cid, item, frompos, item2, topos)
if getPlayerStorageValue(cid, 17000) <= 0 then
doTeleportThing(cid, topos, false)
doRemoveItem(getTileThingByPos(frompos).uid, 1)
if isPlayer(cid) then
doPlayerSendCancel(cid, "You can't fly.")
end
return true
end
if getPlayerStorageValue(cid, 17000) >= 1 then
if topos.z == frompos.z then
if getCreatureOutfit(cid).lookType == 316 then
effect = 136
else
effect = 2
end
doSendMagicEffect(topos, effect)
end
end
for x=-1,1 do
for y=-1,1 do
posa = {x=topos.x+x,y=topos.y+y,z=topos.z}
if isInArray(del, getTileThingByPos(posa).itemid) then
doRemoveItem(getTileThingByPos(posa).uid, 1)
end
end
end
for x=-1,1 do
for y=-1,1 do
pose = {x=frompos.x+x,y=frompos.y+y,z=frompos.z}
if getTileThingByPos(pose).itemid == 0 then
doCombatAreaHealth(cid, 0, pose, 0, 0, 0, CONST_ME_NONE)
doCreateItem(460, 1, pose)
end
end
end
doCombatAreaHealth(cid, 0, topos, 0, 0, 0, CONST_ME_NONE)
doCreateItem(460, 1, frompos)
if topos.z > frompos.z then
doCreateItem(1023, 1, frompos)
doTransformItem(getTileThingByPos(frompos).uid, 1023)
elseif topos.z < frompos.z then
doCreateItem(1022, 1, frompos)
doTransformItem(getTileThingByPos(frompos).uid, 1022)
end
return true
end

 

 

 

 

Link para o comentário
Compartilhar em outros sites

  • 0
Abaixo de:

if getPlayerStorageValue(cid, 17000) >= 1 then

coloque:

local fly_areas, canFly = {
--{fromPos = {posição_superior_esquerda_da_área}, toPos = {posição_inferior_direita_da_área}},
{fromPos = {x = x, y = y, z = z}, toPos = {x = x, y = y, z = z}},
{fromPos = {x = x, y = y, z = z}, toPos = {x = x, y = y, z = z}},
--etc
}

for _, coordinates in pairs(fly_areas) do
if isInRange(getThingPos(cid), coordinates.fromPos, coordinates.toPos) then
canFly = true
break
end
end

if not canFly then
doPlayerSendCancel(cid, "You can't fly here.")
doTeleportThing(cid, frompos)
return true
end

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...