Ir para conteúdo
  • 0

Script meio complicado.


SamueLGuedes

Pergunta

Iaew galera tudo bem, hj vim pedi uns script que eu acho que e meio complicado. e para pokemon.

 

1º o primeiro eo seguinte, eu queria um script que quando passase pelo teleport, ou piso. ele nao pude-se mais usar Fly nem surf, nem ride. isso seria para outland, para os players nao voarem.

 

2º eu queria saber se tem como incrementar esse script do zipter < acho que e esse o nick dele nao me lembro. que e esse aqui:

 

local function getRecorderPlayer(pos, cid)
local ret = 0
if cid and isPosEqual(getThingPos(cid), pos) 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

------------[[ Configurações. ]]------------
local cfg = {
{1, {x = 1056, y = 1056, z = 7}, {x = 1056, y = 1057, z = 7}}, --{valor da storage do clan, posição que o jogador deve ficar, posição para qual o mesmo será teleportado},
{2, {x = 1057, y = 1056, z = 7}, {x = 1056, y = 1058, z = 7}},
{3, {x = 1058, y = 1056, z = 7}, {x = 1056, y = 1059, z = 7}},
{4, {x = 1059, y = 1056, z = 7}, {x = 1056, y = 1060, z = 7}},
{5, {x = 1060, y = 1056, z = 7}, {x = 1056, y = 1061, z = 7}},
{6, {x = 1061, y = 1056, z = 7}, {x = 1056, y = 1062, z = 7}},
{7, {x = 1062, y = 1056, z = 7}, {x = 1056, y = 1063, z = 7}},
{8, {x = 1063, y = 1056, z = 7}, {x = 1056, y = 1064, z = 7}},
{9, {x = 1064, y = 1056, z = 7}, {x = 1056, y = 1065, z = 7}},
}

local rank = {
need = true, --Precisará estar em x rank? [true/sim] [false/não]
what_rank = 5, --Se colocar true acima, configure aqui o rank necessário.
}
-----------[[ Fim das configurações. ]]---------

function onUse(cid, item, frompos, item2, topos)

for a, b in pairs(cfg) do
local pos = getRecorderPlayer(b[2])
if not isPlayer(pos) then
return doPlayerSendCancel(cid, "One or more players aren't in the correct clan's place.")
elseif rank.need == true then
if getPlayerStorageValue(pos, 862281) <= (rank.what_rank - 1) then
return doPlayerSendCancel(cid, "One or more players aren't at rank "..rank.what_rank..".")
end
end
end

for c, d in pairs(cfg) do
local pos = getRecorderPlayer(d[2])
doTeleportThing(pos, d[3])
doPlayerSendTextMessage(pos, 27, "Good luck!")
doSendMagicEffect(getThingPos(pos), 14)
end
return true
end

 

 

tipo assim que quando puxa-se a alavanca sumona-se pokemons no local que os players estao indo. e tipo assim que tivesse tempo para eles aparecerem. tipo eu puxei a alavanca, ai passa 5 segundos começa a aparecer pokemons.

 

3º que quando terminasse de matar os pokes, ganha-se uma storage para poder puxar a proxima alavanca.

 

eu acho que e bem dificil de fazer esses scripts, mais sei la se alguem puder ajudar, eu agradeçeria muito. obrigado e abraçs. aguardando comentarios.

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

o

function onStepIn(cid, item, position, fromPosition)

if getPlayerStorageValue(cid, 17001) == 1 or getPlayerStorageValue(cid, 5700) >= 1 or getPlayerStorageValue(cid, 17000) == 1 then
doPlayerSendCancel(cid, "You can't do that while ride/fly/or in a bike.")
doTeleportThing(cid, fromPosition, false) --alterado v1.6
return true
end
if getPlayerStorageValue(cid, 52480) >= 1 then
doPlayerSendCancel(cid, "You are already dueling!")
doTeleportThing(cid, fromPosition, false) --alterado v1.6
return true
end

end

 

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

  • 0

o

function onStepIn(cid, item, position, fromPosition)

if getPlayerStorageValue(cid, 17001) == 1 or getPlayerStorageValue(cid, 5700) >= 1 or getPlayerStorageValue(cid, 17000) == 1 then

doPlayerSendCancel(cid, "You can't do that while ride/fly/or in a bike.")

doTeleportThing(cid, fromPosition, false) --alterado v1.6

return true

end

if getPlayerStorageValue(cid, 52480) >= 1 then

doPlayerSendCancel(cid, "You are already dueling!")

doTeleportThing(cid, fromPosition, false) --alterado v1.6

return true

end

end

 

 

 

so uma pergunta aonde eu coloco isso, eu sou muito ruim com script kk.

 

Cadê o script da alavanca?

 

ta no segundo

Link para o comentário
Compartilhar em outros sites

  • 0

Faz assim pra sumonar


function onUse(cid, item, frompos, item2, topos)

for a, b in pairs(cfg) do
local pos = getRecorderPlayer(b[2])
if not isPlayer(pos) then
return doPlayerSendCancel(cid, "One or more players aren't in the correct clan's place.")
elseif rank.need == true then
if getPlayerStorageValue(pos, 862281) <= (rank.what_rank - 1) then
return doPlayerSendCancel(cid, "One or more players aren't at rank "..rank.what_rank..".")
end
end
end

for c, d in pairs(cfg) do
local pos = getRecorderPlayer(d[2])
doTeleportThing(pos, d[3])
addEvent(doCreateMonster, 5000, "Pikachu", d[3])
doPlayerSendTextMessage(pos, 27, "Good luck!")
doSendMagicEffect(getThingPos(pos), 14)
end
return true
end
Link para o comentário
Compartilhar em outros sites

  • 0

Dexa eu ve se eu entendi, pra adicionar mais pokemons e so fazer assim:

 

addEvent(doCreateMonster, 5000, "Pikachu", d[3])

addEvent(doCreateMonster, 5000, "Golem", d[3])

addEvent(doCreateMonster, 5000, "Rhydon", d[3])

 

so pode me explicar o que eo 5000, eo d[3]?

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

  • 0

Entendi vlw, so que oq eu nao entendi foi isso:

 

 

function onStepIn(cid, item, position, fromPosition)

if getPlayerStorageValue(cid, 17001) == 1 or getPlayerStorageValue(cid, 5700) >= 1 or getPlayerStorageValue(cid, 17000) == 1 then
doPlayerSendCancel(cid, "You can't do that while ride/fly/or in a bike.")
doTeleportThing(cid, fromPosition, false) --alterado v1.6
return true
end
if getPlayerStorageValue(cid, 52480) >= 1 then
doPlayerSendCancel(cid, "You are already dueling!")
doTeleportThing(cid, fromPosition, false) --alterado v1.6
return true
end

end

 

 

agradeçeria se me explicasse kk.

Link para o comentário
Compartilhar em outros sites

  • 0

e que tipo assim eu queria que quando passase por um teleport, ou um piso que teleporte. ficasse com uma storage que nao deixasse usar fly no local que esta sendo teleportado.

 

esse eo script de fly

 

local del = {'460', '1022', '1023', '1024'}

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)

position.stackpos = 0

if isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 then return false end -- TV

if getPlayerStorageValue(cid, 17000) <= 0 then
doTeleportThing(cid, fromPosition, false)
doRemoveItem(getTileThingByPos(position).uid, 1)
doPlayerSendCancel(cid, "You can't fly.")
return true
end

doAreaCombatHealth(cid, FLYSYSTEMDAMAGE, getThingPos(cid), splash, 0, 0, 255)

local pos = getThingPos(cid)
if pos.z == 7 then return true end
pos.z = pos.z + 1

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, 3) or hasProperty(tile.uid, 7) or tile.itemid == 919 then
doTransformItem(item.uid, 11677)
end
end
end

return true
end

function onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor)

if isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 then return false end -- TV

local effect = 2

if toPosition.z == fromPosition.z and getCreatureOutfit(cid).lookType ~= 316 and getCreatureOutfit(cid).lookType ~= 648 then
doSendMagicEffect(fromPosition, effect)
end

local oldtpos = fromPosition
oldtpos.stackpos = STACKPOS_GROUND


if getTileThingByPos(oldtpos).itemid >= 1 then
doRemoveItem(getTileThingByPos(oldtpos).uid, 1)
end

return true
end

 

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

  • 0

Usa ele assim

 

local del = {'460', '1022', '1023', '1024'}

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)position.stackpos = 0if isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 then return false end -- TV        if getPlayerStorageValue(cid, 238129) == 1 then return false endif getPlayerStorageValue(cid, 17000) <= 0 thendoTeleportThing(cid, fromPosition, false)doRemoveItem(getTileThingByPos(position).uid, 1)doPlayerSendCancel(cid, "You can't fly.")return trueenddoAreaCombatHealth(cid, FLYSYSTEMDAMAGE, getThingPos(cid), splash, 0, 0, 255)local pos = getThingPos(cid)if pos.z == 7 then return true endpos.z = pos.z + 1for i = 0, 255 dopos.stackpos = ilocal tile = getTileThingByPos(pos)if tile.itemid ~= 0 and not isCreature(tile.uid) thenif hasProperty(tile.uid, 3) or hasProperty(tile.uid, 7) or tile.itemid == 919 thendoTransformItem(item.uid, 11677)endendendreturn trueendfunction onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor)if isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 then return false end -- TVlocal effect = 2if toPosition.z == fromPosition.z and getCreatureOutfit(cid).lookType ~= 316 and getCreatureOutfit(cid).lookType ~= 648 thendoSendMagicEffect(fromPosition, effect)endlocal oldtpos = fromPositionoldtpos.stackpos = STACKPOS_GROUNDif getTileThingByPos(oldtpos).itemid >= 1 thendoRemoveItem(getTileThingByPos(oldtpos).uid, 1)endreturn true 

end

 

 

E faz um arquivo.lua em movements/scripts com isso


function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
    if item.actionid == 7983 then
        doPlayerSetStorageValue(cid, 238129, 1)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You won't be able to fly, surf or ride in this area.")
    elseif item.actionid == 7894 then
        doPlayerSetStorageValue(cid, 238129, 0)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can now surf, fly and ride.")
    end
    return true
end

Tag no movements.xml

<movevent type="StepIn" actionid="7893;7894" event="script" value="ARQUIVO.lua"/>

Aí no teleport de entrada vc coloca action id 7893 e no de saida 7894.

Link para o comentário
Compartilhar em outros sites

  • 0

Vlw cara, vo testar ele aqui. so mais um pedido. akele script da outland, aquela da alavanca tipo assim, eu cliquei na alavanca, meu time foi pro local e mato os pokes, que no caso ali tava o pikachu, e so um exemplo. queria que quando termina-se de matar os pokes. aparece-se uma alavanca no meio da sala com um action id. que seria o mesmo esquema anterios, puxa-se a alavanca teleportava todo mundo e matava os pokes. so ísso..

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

  • 0

Cara fiz uma parada aqui... Testa pra gente. Cria um arquivo.lua em creaturescripts/scripts e coloca:


local fromPoss, toPoss = {x=1, y=2, z=3}, {x=1, y=2, z=3}
local posAlavanca = {x=1, y=2, z=3}
local alavancaActionId = 3231
local monstrosNaArea = 6 -- Quantos monstros precisam ser mortos ali pra aparecer a alavanca?
local tempo = 10 -- Quanto tempo a alavanca vai ficar, em segundos.

function onKill(cid, target, lastHit)
    if isPlayer(cid) and isMonster(target) then
        if isInArea(getThingPos(target), fromPoss, toPoss) then
            if getGlobalStorageValue(238192) <= monstrosNaArea-3 then
                setGlobalStorageValue(getGlobalStorageValue(238192)+1)
            elseif getGlobalStorageValue(238192) == monstrosNaArea-2 then
                local alavanca = doCreateItem(1946, 1, posAlavanca)
                doItemSetAttribute(alavanca, "aid", alavancaActionId)
                addEvent(doRemoveItem, tempo*1000, getTileItemById(posAlavanca, 1946).uid, 1)
                doCreatureSay(target, "Uma alavanca foi criada!")
                addEvent(setGlobalStorageValue, tempo*1000, 238192, 0)
            end
        end
    end
    return true
end

Tag creaturescripts.xml:

<event type="kill" name="KillAlavanca" event="script" value="ARQUIVO.lua"/>

E no login.lua bota isso junto aos outros registerCreatureEvent


registerCreatureEvent(cid, "KillAlavanca")

Vc configura assim. no local fromPoss, toPoss vc vai colocar o canto superior esquerdo e o canto inferior da área onde os monstros vão aparecer, respectivamente.

local posAlavanca é onde a alavanca vai ser criada.

Os outros já tão explicados alí

Editado por amoeba13
corrigi uma coisinha.
Link para o comentário
Compartilhar em outros sites

  • 0

@edit

 

ai eu fui testar o script de nao poder usar fly, tipo eu entro no teleport mas ainda posso usar fly. e quando eu saio ele fala que agora eu posso usar o fly de novo. entao ele nao esta funcionando.

Link para o comentário
Compartilhar em outros sites

  • 0

Tenta assim:

 

local del = {'460', '1022', '1023', '1024'}

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)position.stackpos = 0if isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 or getPlayerStorageValue(cid, 238129) == 1 then return false end -- TVif getPlayerStorageValue(cid, 17000) <= 0 thendoTeleportThing(cid, fromPosition, false)doRemoveItem(getTileThingByPos(position).uid, 1)doPlayerSendCancel(cid, "You can't fly.")return trueenddoAreaCombatHealth(cid, FLYSYSTEMDAMAGE, getThingPos(cid), splash, 0, 0, 255)local pos = getThingPos(cid)if pos.z == 7 then return true endpos.z = pos.z + 1for i = 0, 255 dopos.stackpos = ilocal tile = getTileThingByPos(pos)if tile.itemid ~= 0 and not isCreature(tile.uid) thenif hasProperty(tile.uid, 3) or hasProperty(tile.uid, 7) or tile.itemid == 919 thendoTransformItem(item.uid, 11677)endendendreturn trueendfunction onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor)if isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 or getPlayerStorageValue(cid, 238129) == 1 then return false end -- TVlocal effect = 2if toPosition.z == fromPosition.z and getCreatureOutfit(cid).lookType ~= 316 and getCreatureOutfit(cid).lookType ~= 648 thendoSendMagicEffect(fromPosition, effect)endlocal oldtpos = fromPositionoldtpos.stackpos = STACKPOS_GROUNDif getTileThingByPos(oldtpos).itemid >= 1 thendoRemoveItem(getTileThingByPos(oldtpos).uid, 1)endreturn true  

end

 

 

PS: É por movement mesmo o sistema de fly? Não tem nenhuma action?

\

Link para o comentário
Compartilhar em outros sites

  • 0

Eu vou ver se acho mais coisas do fly. ai eu edito akie

 

esse aqui esta no arquivo: order.lua na pasta actions, sistema de order pokemon.

 

 

----START FLY or RIDE or LEVITATE ---------
if (item2.uid == cid or getRecorderPlayer(topos) == cid) and (isInArray(skills["fly"], getPokemonName(mysum)) or isInArray(skills["ride"], getPokemonName(mysum)) or isInArray(skills["levitate_fly"], getPokemonName(mysum))) then
--alterado v1.8 >>
if getPlayerStorageValue(cid, 6598754) == 1 or getPlayerStorageValue(cid, 6598755) == 1 then
return doPlayerSendCancel(cid, "You can't do it while in the PVP Zone!") --alterado v1.7
end

if #getCreatureSummons(cid) > 1 then --alterado v1.9
return doPlayerSendCancel(cid, "You can't do it right now!")
end

if getPlayerStorageValue(cid, 52480) >= 1 then
return doPlayerSendCancel(cid, "You can't do it while a duel!") --alterado v1.6
end

if getPlayerStorageValue(cid, 5700) >= 1 then --alterado v1.9
doPlayerSendCancel(cid, "You can't do that while is mount in a bike!")
return true
end

if getPlayerStorageValue(cid, 22545) >= 1 and (isInArray(skills["fly"], getPokemonName(mysum)) or isInArray(skills["levitate_fly"], getPokemonName(mysum))) then
return doPlayerSendCancel(cid, "You can't do that while in the Golden Arena!") --alterado v1.8
end

local pct = getCreatureHealth(mysum) / getCreatureMaxHealth(mysum)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", 1 - pct)

if isInArray(skills["fly"], getPokemonName(mysum)) then
doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["fly"][math.random(1, #txt["fly"])].."", 1)
addEvent(goThere, 500, mysum, topos, "fly", isCreature(getCreatureTarget(cid)))
elseif isInArray(skills["levitate_fly"], getPokemonName(mysum)) then
doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["levitate_fly"][math.random(1, #txt["levitate_fly"])].."", 1) --alterado v1.8
addEvent(goThere, 500, mysum, topos, "fly", isCreature(getCreatureTarget(cid)))
else
doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["ride"][math.random(1, #txt["ride"])].."", 1)
addEvent(goThere, 500, mysum, topos, "ride", isCreature(getCreatureTarget(cid)))
end

return true
end

 

 

foi so esses que eu encontrei.

esse aqui esta no arquivo order.lua tbm, so que na pasta lib:

 

 


--if not isPremium(cid) then
--doPlayerSendCancel(cid, "Only premium members are allowed to fly.")
--return true
--end
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 v1.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, 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 v1.8
end

if useOTClient then
doPlayerSendCancel(cid, '12//,hide') --alterado v1.8
end

return true

 

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

×
×
  • Criar Novo...