SA
pedido

Script meio complicado.

Por SamueLGuedes, 09 de jan. de 2014 em Scripts

..
script
37
2.4k
SamueLGuedesS
09 de janeiro de 2014 às 23:11

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.

10 de janeiro de 2014 às 00:03

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 Janeiro 10 por Nextbr

KilluaK
10 de janeiro de 2014 às 02:34

Cadê o script da alavanca?

SamueLGuedesS
10 de janeiro de 2014 às 08:55

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

KilluaK
10 de janeiro de 2014 às 12:45

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
SamueLGuedesS
10 de janeiro de 2014 às 13:39

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 Janeiro 10 por Bolz

KilluaK
10 de janeiro de 2014 às 13:50

5000 é o tempo em milisegundos até o monstro ser sumonado. d[3] é a posição para onde o player vai ser teleportado e de onde o monstro vai ser criado.

SamueLGuedesS
10 de janeiro de 2014 às 13:56

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.

KilluaK
10 de janeiro de 2014 às 14:01

Faz o seguinte, manda pra mim o seu script de fly, surf e ride que eu já dou um jeito

SamueLGuedesS
10 de janeiro de 2014 às 14:02

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 Janeiro 10 por Bolz

KilluaK
10 de janeiro de 2014 às 14:10

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.

SamueLGuedesS
10 de janeiro de 2014 às 14:13

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 Janeiro 10 por Bolz

KilluaK
10 de janeiro de 2014 às 14:41

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 Janeiro 10 por amoeba13

corrigi uma coisinha.

SamueLGuedesS
10 de janeiro de 2014 às 14:44

@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.

KilluaK
10 de janeiro de 2014 às 14:55

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?

\