-
Total de itens
859 -
Registro em
-
Última visita
-
Dias Ganhos
22
Tudo que Skulls postou
-
Acho que entendi, fazer vários mapas mas instanciados somente para aquela ação e durante aquela execução, sem sair fazendo ctrl c ctrl v no map editor, isso? É possível, não é exatamente o que eu queria, mas resolve. Valeu!
-
Não tenho ideia de como poderia ser feito, poderia me dar uma luz? Não tem problema se der trabalho, rs Não entendi muito bem o que quis dizer, não achei esse tópico/sistema, pode postá-lo? Abraços,
-
Na verdade o que eu queria era que eles compartilhassem o mapa (e suas funcionalidades/recursos) sem competir pelos mesmo. Por exemplo, dois grupos de jogadores no mesmo local, enfrentando um mesmo boss, porem sem um enxergar o outro nem o boss, corpos, animações da lita que não lhe diz respeito.
-
Segundo o lottery.lua do baiak 10.10, o wolf tem razão: for i, tid in ipairs(getPlayersOnline()) do list = tid end O id, nesse caso, é o conteúdo das células da tabela retornada por getPlayersOnline() (ele usa ipairs, mas não vem ao caso)
-
É, vc tem razão.. na verdade é pq tive uma ideia legal.. rs acho que vou fazer atoa e compartilho la nos scripts De qualquer forma, fiz a minha ideia por hobbie. http://www.xtibia.com/forum/topic/238734-luna-event-bonus-spell-inspirado-no-sot-01/
-
Se prorrogassem eu animava de participar..
-
Bom, se realmente retornar uma lista de ids, eu estava certo. Mas se ele retorna uma lista de nomes indexada por ids, o código dele faz sentido. Vai depender do return do getPlayersOnline(). Valeu pela explicação, deixou mais claro ainda pra mim. E, pelo que entendi da leitura, a diferença entre o ipairs e o pairs é que o ipairs é em ordem e o pairs aleatório, assim sendo, no pairs você consegue fazer a leitura de tabelas com a indexação sem ordem (como tab = { [123] = "Lucas", [16123] = "Goulart"}, o que não é possível pelo ipairs, (é possível, mas ele não retorna esses indexes aleatórios, ele vai retornar o número do elemento) correto? Abraços
-
Sim, mas na época que eu trabalhei com o turtle a quest ainda não existia. Não sei como foi feito, rs. Inclusive, na época, foram feitas várias arenas de batalha pois não houve solução para isso naquele momento. A quest do barco fantasma também, se não me engano. Mas nada impede de eles estarem usando vários mapas e ninguém saber, rs Acredito que talvez só tenha solução via c++, sendo difícil fazer por scripts.
-
Ah, era isso mesmo que eu tinha pensado. Mas pra mim o getOnlinePlayers retornava outra coisa, pra mim o value dele era o ID e o key era arbitrário. Muito obrigado, agora fez sentido. Ps: a solução que eu fiz pra adicionar vários itens na hora x também funcionaria, certo? Abraços
-
Fala galera, tudo bem? Eu estava querendo fazer uma coisa diferente e para isso eu precisava que a mesma área fosse utilizada por diferentes players simultaneamente, porém, em paralelo. Como assim? Bom, basicamente eu queria ter um pedaço de mapa X e jogar vários players lá em um determinado momento, porém sem que os players dividam aquele espaço, como se cada um (ou cada grupo) estivesse em um mapa separado, ou seja, mesmo dividindo a mesma área eles não estariam no mesmo lugar. Claro, é possível fazer isso criando várias e várias áreas iguais aquela e jogando cada player/grupo de players pra uma área diferente. Mas há alguma possibilidade de fazer isso via código, de uma forma mais bonita, que não dependesse de quantas vezes eu repeti aquele mapa no map editor e que não envolva vários servidores em paralelo? rs Desde já valeu ai. Abraços,
-
Ainda não consegui entender pq você usa K e não V no getOnlinePlayers(), rola de explicar?
-
Saquei, é ele não vai aceitar dois index iguais na tabela. Faz o seguinte então: Troca: doPlayerAddItem(k, tab[i][1], tab[i][2]) Por: for j = #tab, 0, -2 do doPlayerAddItem(k, tab[j], tab[j-1]) end E na sua tabela você pode fazer: [1] = {2160, 10, ITEM2, Quant2, Item3, Quant3}, --So lembre que você precisa colocar sempre um número para de elementos, isto é, sempre um item e sua quantidade, se não vai dar pau. Eu ainda acho que o doPlayerAddItem tem que receber como player o V e nao o K, mas vou deixar isso pro dono do código, pois estou enferrujado e posso estar falando bobagem.
-
local tab {-- Siga o exemplo: --[hora] = {id do item, quantidade}, [1] = {2160, 10}, [2] = {2160, 25}, [Tempo_Online_Necessario] = {ITEM, QUANTIDADE}, } Então, se voce quer adicionar 20 vezes o item 104912 quando o player tiver 5 horas online: [5] = {104912, 20},
-
Caronte, belo script. Custei a entender algumas coisas devido à falta de prática/proximidade com lua. Mas gostei, o nível ta legal aqui. rs Só uma pergunta, ele checa só de hora em hora, correto? (pq no meu aqui quando interval = 60000 ele vai checar de 60 em 60 segundos, mas você deve ter feito pensando no seu que é em segundos e nao ms). E com relação a morrer, eu acho que ele quebra o ciclo sim. Apesar de morrer ser outro evento, acho que ele chama o logout sozinho, o que zeraria o tempo de login. Pq você colocou, em login.lua, dentro de lastLogin > 0? Outra coisa, acredito que o zerar ao logar é "desnecessário", não? Pq toda vez que ele logar ele vai alterar o storage, e vc so checa os storages de players online, então tanto faz. Mais uma coisa (rs to aproveitando e tirando minhas duvidas), pq você usou o k em doPlayerAddItem(k, tab[i][1], tab[i][2]) e não o v? Quando você chama getOnlinePlayers() o que te interessa ali é o value, não?
-
Po cara, foi mal, mas essa parte de magia e dano eu nunca mexi muito, achava chato e nunca precisei. Alguém saberá responder
-
kkk Tranquilo, faz parte! ^^ Galera ta mandando bem nos scripts por aqui, na época que eu era um frequentador assíduo dos fóruns (pra lá de 2008, cof cof) ninguém manjava desses paranauê, era só dúvida basicona. Hoje tem uns scripts bem bons sendo pedidos/feitos, achei bacana! hahaha
-
Ah, bem pontuado. Não sabia que era em miliseconds. Obrigado por ajustar bonitinho e colocar a tag do logout. Tenho um pouco de preguiça, mas acho que passei a ideia que queria, falta de prática é triste rs. Com relação a mudança que você fez, acredito que seja o storage - os.time mesmo, pois se o tempo não acabou (isto é, storage diferente de -1) então significa que o os.time atual é menor do que o valor do storage, o que resultaria num valor negativo se realizarmos os.time - storage, não?
-
Tudo erro simples de sintaxe. No caso, falta fechar a string. Ou seja, feche aspas depois de teleportar. ("Você ... teleportar.")
-
Funcionou do jeito que você queria? Eu tb estou tendo alguns warnings como este quando mexo com a parte de creature scripts (principalmente quando envolve remover/sumonar criatura). Eu acredito que seja alguns deslizes na hora de verificar a existência da criatura. Tipo, não vai interferir no servidor, mas é chato ficar recebendo esses warnings. Eu ainda não consegui solucionar aqui no meu, se eu descobrir eu te dou ideia. Mas basicamente, ele tenta executar uma funcao pra uma criatura que não existe mais.
-
Eu bobiei aqui, do jeito que eu fiz ele ta convencendo a criatura para ela mesmo ser owner dela. (o cid, nessa função é a creatura prestes a morrer e não o player). Tem que ver se tem alguma função que retorna o id dono da criatura ou algum outro jeito de pegar o id do player. Se eu achar/lembrar de algo edito aqui. Edited, achei algo que faz o que eu queria. Deve funcionar. Mas basicamente é aquilo que eu falei, só que fica assim: doConvinceCreature(getCreatureMaster(cid), doCreateMonster(creature, getCreaturePosition(cid)))
-
Caronte, eu entendo seu lado. Se o cara usou o trem que esteja apto a fazê-lo naquele momento. Mas por outro lado, imagina você em um jogo que você curte pra caramba, realizou uma tarefa difícil e ganhou 15 minutos em um respaw único. Ai, por infelicidade, 2 minutos após entrar no respaw o transformador da sua rua explode. Seria legal se conseguissem recuperar os 13 minutos restantes pra você, né? hauehuaehuae Eu imaginei mesmo que tinha um jeito mais fácil. 7 anos sem mexer, jamais lembraria do os.time Me ajuda a relembrar aqui, eu uso ele pra comparar 2 instantes de tempo, correto? A diferença entre o instante 1 e o instante 2 é a diferença, em segundos, dos dois instantes de tempo. É isso mesmo? Editado: Se eu me lembro direito do os.time, acho que tem algumas inconsistências no script que você passou. 1. doCreatureSetStorage(cid, 5834, os.time()+tempo) deveria ser doCreatureSetStorage(cid, 5834, os.time()+tempo*1000) 2. O que você fez na verdade não devolve o tempo ao player, só garante que ele vai ter 15 minutos corridos de hunt após usar o item. Então, caso a casa dele exploda e ele queira fazer a hunt amanhã, ele perdeu o tempo do mesmo jeito, correto? Acho que um jeito simples de resolver isso seria fazer quando o player deslogar a verificação do storage. Se ele não for -1, sinal que o tempo não acabou, então ao deslogar ele faz a comparação entre o storage armazenado e o os.time no instante de logout e encontra o tempo restante, altera o storage para esse tempo. Quando ele logar novamente, ele verifica que o storage não é -1, logo esta em uso, pega o os.time daquele instante soma ao valor do storage (que é o valor em segundos do tempo restante), altera novamente o storage para esse novo valor e chama um novo evento com o novo valor de tempo (o que foi guardado no logout). Basicamente: onLogout() if getCreatureStorage(cid, 5834) ~= -1 then doCreatureSetStorage(cid, 5834, getCreatureStorage(cid, 5834) - os.time()) end onLogin() if getCreatureStorage(cid, 5834) ~= -1 then tempoRestante = getCreatureStorage(cid, 5834) doCreatureSetStorage(cid, 5834, tempoRestante + os.time()) addEvent( function() doTeleportThing(cid, templepos) doPlayerSendTextMessage(cid, 22, "Seu tempo acabou, e foi transportado de volta ao templo!") doCreatureSetStorage(cid, 5834, -1) end, tempoRestante) end Acredito que algo assim funcione. Caso eu tenha entendido errado, por favor me explique!
-
Cara, eu tenho quase certeza que o problema ta nas aspas. Quando você define o keyword: "h"phenac" ele fecha aspas e perde a noção do que ta acontecendo dali pra frente pq tem uma aspas sobrando. Faz o que o sekk sugeriu e nos de retorno. Abraços
-
@ Sim, mas a partir do momento que ele loga o addevent para de valer, então quando ele voltar ele ainda vai ter o storage value 1, ou seja, acesso à hunt, mas sem a contagem regressiva que faria com que ele fosse retirado de lá ao final do tempo. Faz o seguinte, cria um storage pra controlar o tempo. local position = {x = 123, y = 456, z = 7} local templepos = {x = 123, y = 456, z = 7} local tempo = 10 * 60 function reduceTime() doCreatureSetStorage(cid, 5835, getCreatureStorage(cid, 5835) - 1) addEvent(reduceTime, 1000) end function onUse(cid) doTeleportThing(cid, position) doCreatureSetStorage(cid, 5834, 1) doCreatureSetStorage(cid, 5835, tempo) addEvent( function() doTeleportThing(cid, templepos) doPlayerSendTextMessage(cid, 22, "Seu tempo acabou, e foi transportado de volta ao templo!") doCreatureSetStorage(cid, 5834, -1) end, 1000 * tempo) addEvent(reduceTime, 1000) return true end E la em login você altera pra isso: tempo = getCreatureStorage(cid, 5834) if getCreatureStorage(cid, 5834) == 1 then addEvent( function() doTeleportThing(cid, templepos) doPlayerSendTextMessage(cid, 22, "Seu tempo acabou, e foi transportado de volta ao templo!") doCreatureSetStorage(cid, 5834, -1) end, 1000 * tempo) addEvent(reduceTime, 1000) end Não testei, mas isso deve dar, acredito eu.
-
acho que tneho uma solução
-
Acho que o que ele ta falando é que é um pouco injusto, caso eu precise logar e acabei de entrar na hunt, eu perdê-la.
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.