1ª parte:
TAG movements.xml:
<movevent type="StepIn" actionid="26282" event="script" value="premiumtp.lua"/> <movevent type="StepIn" actionid="26283" event="script" value="premiumtp.lua"/>
premiumtp.lua em movements/scripts:
function onStepIn(cid, item, position, fromPos)
local config = {
pos_cidade1 = {x=160,y=50,z=7},
nome_cidade1 = "Angola",
pos_cidade2 = {x=180,y=1080,z=7},
nome_cidade2 = "Vila Mimosa"
}
if item.actionid == 26282 then
if isPremium(cid) then
doTeleportThing(cid, config.pos_cidade1)
doSendMagicEffect(config.pos_cidade1, 10)
doPlayerSendTextMessage(cid, 27, "Voce chegou em "..config.nome_cidade1".")
else
doPlayerSendCancel(cid, "Apenas jogadores premium podem usar esse teleporte.")
doTeleportThing(cid, fromPos)
doSendMagicEffect(fromPos,2)
end
elseif item.actionid == 26283 then
if isPremium(cid) then
doTeleportThing(cid, config.pos_cidade2)
doSendMagicEffect(config.pos_cidade2, 10)
doPlayerSendTextMessage(cid, 27, "Voce chegou em "..config.nome_cidade2".")
else
doPlayerSendCancel(cid, "Apenas jogadores premium podem usar esse teleporte.")
doTeleportThing(cid, fromPos)
doSendMagicEffect(fromPos,2)
end
end
return true
end
2ª parte:
Cara, aqui eu me compliquei um pouco. Tentei pensar em um jeito melhor de checar se o cara estava em uma área PA, mas não consegui:
- Você vai definir no script 4 posições:
- Pos1 será a área de início da primeira área PA (escolha o canto superior esquerdo da área e z=7)
- Pos2 será o fim da área PA (canto inferior direito, z=7)
- Pos3 e 4 serão a mesma coisa, mas para a segunda área PA
- A cada 5min (configurável), o servidor vai checar se os jogadores free estão na área definida (embaixo e acima também) e vai remover os que estiverem.
Alguns possíveis problemas:
- O código, imagino eu, terá um grande custo no desempenho por checar uma área bem grande, então é melhor que o tempo de checagem não seja muito baixo (testa você mesmo pra ver se trava ou não aí)
- Possivelmente os jogadores poderão se esquivar da checagem geral, então você pode usar uma função no login (particularmente, eu acho desnecessário)
- Não fiz a parte do aviso antecipado porque iria criar mais problemas do que vale a pena, mas é fácil de colocar, se você fizer questão
- Ele checa do z=2 até z=12, se tiver alguma área acima ou abaixo disso, procura isInAreaMultifloor(...,5) e muda o 5 pra 7.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TAG no globalevents.xml:
<globalevent name="PremiumAreaCheck" interval="300000" event="script" value="PACheck.lua"/> -- intervalo de 5 minutos em milissegundos para chamar o código. Se o seu servidor considerar o intervalo em segundos, divida o tempo por 1000
Arquivo PACheck.lua em globalevents/scripts:
function isInAreaMultifloor(pos,pos1,pos2,var)
for Floor = (pos1.z-var), (pos1.z+var) do
if isInArea({x=pos.x,y=posy,z=Floor}, {x=pos1.x,y=pos1.y,z=Floor}, {x=pos2.x,y=pos2.y,z=Floor}) then
return true
end
end
return false
end
function onThink()
local pos1,pos2 = {x=1,y=1,z=1}, {x=2,y=2,z=2}
local pos3,pos4 = {x=3,y,3,z=3}, {x=4,y=4,z=4}
local players = getPlayersOnline()
for _,pid in ipairs(players) do
if not isPremium(pid) then
if isInAreaMultifloor(getCreaturePosition(pid), pos1, pos2, 5) or isInAreaMultifloor(getCreaturePosition(pid), pos3, pos4, 5) then
doPlayerSendTextMessage(pid,21,'Sua PA expirou e voce estava em uma area premium. Por favor, para continuar acessando aquela area, renove sua PA.')
doTeleportThing(pid, getTownTemplePosition(1))
doSendMagicEffect(getTownTemplePosition(1), 10)
end
end
end
return true
end






info
Grupo: Campones
Registrado: 23/08/13
Posts: 12
Reputação: 0
parte 1°
tipo queria um sistema de Premium Account, na minha cidade templo tem 2 teleportes que levao a cidades exclusivas para ''P.A'' queria que so'' P.A ''entrassem nesse teleportes
apos o tempo da sua p.a acabar se ele voltar para cidade templo nao poder mais entrar nesse teleportes ''P.A'' ate renovar sua ''P.A''
quando o tempo da sua ''P.A'' acabar se o player tiver logado dentro das areas ''P.A'' ele ser teletansportado de volta para a cidade templo.
pf queria o mais rapido possivel a 1° parte
parte 2°
queria que tive-se um limite de tempo para sair de lá
ex:. minha p.a acabo mais o player tem +1 hora para sair ou sera teletransportado de volta para templo estandotando online ou nao ou ate mesmo caçando...
Editado Setembro 3 por s2dieginho