Ir para conteúdo
  • 0

Scripting = Verificar Players Em Certa Área !


Derlexy

Pergunta

Primeiramente, meu nome é João e eu estou fazendo um pedido de um script que creio eu não seja nada mais dificil de se fazer.



- Bom, o Script é o seguinte:

 

• Para ficar melhor explicado, aqui vai a foto da minha "forjaria":

forjaria.png

 

- Seria o seguinte:

• 1º = A Área circulada em vermelho na foto, seria o local onde ficaria a possivel fila para entrar na forjaria.

• 2º = A Área amarela é são os 2 tiles que vão verificar se há alguem dentro da forjaria.

• 3º = A Área verde é o local da forjaria.



- Como funcioná o Script:

• Quando o player for entrar na forjaria, ele sera obrigado a pisar nos tiles circulados pela cor AMARELA, fasendo assim a verificação para ver se há algum player dentro da forjaria. Caso não haja um player dentro da forjaria, o player conseguirá passar para dentro dela. Se ele conseguir passar aparecerá a mensagem: "Você entrou na forjaria. Você tem 10 minutos antes de ser teleportado de volta".

• Quando o player tentar entrar na forjaria e pisar nos tiles representados pela cor AMARELA mas já houver alguem la dentro o player receberá a mensagem: "Desculpa, a Forjaria ja esta ocupada, espere um momento", e o player voltara para a sua posição na fila.

 

- Resumo doque precisa ter no Script:

• O Verificador nos tiles representados pela marcação AMARELA;

• As mensagens que aparecerão;

• Um timer contando os segundos que faltam para acabar o tempo do player na forjaria. (O timer da seguinte forma: 600seg - 599seg - 598seg, nesse padrão, saindo do centro da área circulada em VERDE.

 

- Observações:

• O autor do Script ganhará seus devidos créditos onde quer que o seu Script ande...

• O Mapa eu já possuo, como vcs podem ver, então no script eu precisaria poder configurar apenas as posições ({x=..,y=..,z=..}).

• Não creio que quem qusier me ajudar irá demorar muito tempo, até porque não acredito que seja algo tão complicado de se fazer.

 

-- Desde já agradeço a todos aqui do fórum que tentarem ou forem me ajudar, ficarei e ja estou muito grato a todos vocês, qualquer coisa mandem PM para mim. Obrigado pela atenção !!!



Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 0

vodkart gostei mto xD

mais no lugar do storage de player vc poderia setar uma storage global, fazer um while com addEvents de sendAnimatedText com o tempo restando =D

 

ai concluiria o pedido dele (

• Um timer contando os segundos que faltam para acabar o tempo do player na forjaria. (O timer da seguinte forma: 600seg - 599seg - 598seg, nesse padrão, saindo do centro da área circulada em VERDE.
)

 

ao Derlexy: belo tópico, não vejo um tão organizado na seção de pedidos a varios meses.

caso o vodkart nao conclua com o timer sipá eu tento fazer pa vc pela organização do tópico =d

Link para o comentário
Compartilhar em outros sites

  • 0

• Realmente, eu bato palmas para você. Testado e APROVADO. Muito obrigado pela ajuda, você é bom (Y). Créditos totalmente seus, se quiser postar em algum lugar ou qualquer coisa do tipo, precisando de SS's do sistema funcionando só me contatar ;D.



• Só mais uma coisinha, se não for abusar da sua bondade :p... Quem sabe uma v0.2 HDAHDUIHADAD. Tipo, não estou reclamando de nada, até porque ficou otimo, mas se você pudesse me ajudar (no caso fazer IUDAHUIHDAAD) só mais 2 melhoriasinhas: Quando o tempo acaba eu percebi que a mensagem " Você saiu da sala" não aparece. E a outra coisa seria o seguinte: - Eu colocaria um reloginho no chão, e dai apareceria o tempo contanto (mesmo sistema de portal falante, que fika subinho as palavras), mas em ves de palavras os segundos restantes =D...

 

É isso ae, GRATISSIMO pela sua ajuda, so teu fã :p

Link para o comentário
Compartilhar em outros sites

  • 0

claro draky se eu soubesse usar while eu faria sim

que tal vc me ensinar ?

já que você aprensentou uma ideia boa e parace que sabe desenvolve-la, poderia ter atendido o pedido...

abraços

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

  • 0
claro draky se eu soubesse usar while eu faria sim

que tal vc me ensinar ?

já que você aprensentou uma ideia boa e parace que sabe desenvolve-la, poderia ter atendido o pedido...

abraços

 

eu nao quis ser grosso....

 

fazer o que você fez de checar posiçao eu nao sei mais pow while é facil =d

vc setaria a global storage como vc fez (só que em segundos)

setGlobalStorageValue(storage, time)

e no msmo script após setar poderia colocar isso

 

local i = getGlobalStorageValue(storage)

local msg = ''.. getGlobalStorageValue(storage) ..' sec'

local zero = 0

while i >= zero do

 

addEvent(doSendAnimatedText,1000,{x = 222, y = 65, z = 7}, msg, math.random(1,255)) -- NAO SEI A COR QUE É VERDE.

addEvent(setGlobalStorageValue,1000,storage, getGlobalStorageValue(storage) - 1)

end

 

ai nao precisaria do global event..

duvido mto que o vodkart nao saiba fazer isso.. ele ta me zuando ctz =d

eu nao quis dizer que seu sistema tava ruim e que podia melhora-lo, quis dizer que havia uma maneira mais facil =d

 

se eu ofendi me desculpe =d

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

  • 0

@UP

 

tem um jeito mais facil e tudo em movements que soh vai começa a conta o tempo depois que o player subi no tile assim:

 

function onStepIn(cid, item, position, fromPosition)

if (item.actionid == 13731) then
for check_forjax = 217,223 do -- check X começo e final da sala
for check_forjay = 64,65 do -- check Y começo e final da sala
forjapos = {x=check_forjax, y=check_forjay, z=7, stackpos=253}
room_forja = getThingfromPos(forjapos )
if room_forja.itemid > 0 then
doTeleportThing(cid, fromPosition, true)
doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
doPlayerSendCancel(cid,"Espere o Jogador sair da forja.")
return TRUE
end
end
end

elseif (item.actionid == 13732) then

local function SecondForja(cid)
pos = {x = 222, y = 65, z = 7} -- Coordenadas da onde vai subir o tempo 
storage = 18370 -- não mexa aqui
local seconds = math.floor((getGlobalStorageValue(storage) - os.time())) 
local msg = ''.. (seconds < 0 and 0 or seconds) ..''    
if isCreature(cid) == TRUE then   
doSendAnimatedText(pos, msg, math.random(1,140))    
second = addEvent(SecondForja, 1000, cid)    
end   
end 

teleport = {x=160, y=54, z=7} -- para onde o player vai se nao sair em 10 minutos 
time = 1 -- em minutos 
storage = 18370 -- não mexa aqui 
if isPlayer(cid) == TRUE and getGlobalStorageValue(storage) <= os.time() then 
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "".. getCreatureName(cid) .. " você tem " .. time .. " minutos dentro da sala.") 
kick = addEvent(doTeleportThing, time*60*1000, cid, teleport) 
kick2 = addEvent(doPlayerSendTextMessage, time*60*1000, cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você saiu da sala de forja!")
second = addEvent(SecondForja, 1000, cid)
setGlobalStorageValue(storage, os.time()+time*60)   
end 

elseif (item.actionid == 13733) then
storage = 18370 -- não mexa aqui
if isPlayer(cid) == TRUE and getGlobalStorageValue(storage) >= os.time() then   
setGlobalStorageValue(storage, -1)  
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você saiu da sala de forja!")  
stopEvent(kick)  
stopEvent(kick2)
stopEvent(second) 
end  
end

end

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

  • 0

• Bom, script (edited) pelo vodkart logo á cima já testado, e funcionando. Ficou ótimo =D



• Aqui uma SS pra vocês verem como que ficou com o timer funcionando:

forja.png

• Mais uma vez agradeço a voçês que deram atenção a tópico ^^

 

• Dúvida: Eu criei a Forjaria e como vocês podem ver está funcionando perfeitamente o script. Minha dúvida é: Também tenho uma area de criação de poções (alquimistas), onde também é nescessario usar esse sistema... Como devo proceder para não dar bugs? Vlws...

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

  • 0

• Beleza, vlw... Final da tarde ou denoite eu tento =D Abraço.



 

TÓPICO RESOLVIDOScript de Verificação feito !!!

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

  • 0

Caso o autor do tópico necessite de futura ajuda, poderá pedir suporte neste mesmo tópico que poderá ser encontrado nesta área, na subseção de resolvidos.

 

Tópico movido icon_seta.jpg

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

  • 0

nao consigo inserir no meu...

 

fiz um tópico de duvidas, mas se puder me responder aqui mesmo tbm pode ser

 

 

http://www.xtibia.com/forum/topic/158031-duvida-outra-de-tile-script-do-vodka/

 

 

não entendi essa variavel stackpos.

 

preciso que entre só um player por vez.

 

 

action ID eu coloco no tile pelo map editor correto? o segundo action coloco aonde? no TP?

 

 

tenho um tile q teletransporta para a proxima posição, e o jogador mata um monstro e é teletransportado para a proxima posição, até chegar a sala de premiação, porem nenhum outro jogador pode entrar em nenhuma das outras 6 salas até todas estarem vazias, a 7 sala é irrelevante.

 

questd.jpg

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

×
×
  • Criar Novo...