Jump to content

Recommended Posts

  • Director

Genial os créditos kkk

Muito bom conteúdo e ótimo tópico, obrigado!

Tutoriais, lives, suporte, desafios, classificados e freelancer você encontra na Academia de Otserver.

separa10.png

 

Conheça nossos grupos:

 

academiaicone1.png                        academiaicone2.png

Academia de Mapping!        Academia de Coding!

 

academiaicone3.png

Academia de Design!

---------------------------------------------

 

 

Precisando de Sprites?

 

 

Academia de Spriting

Academia de Spriting - Baixe Sprites gratuitas (FREE) em nosso blog!

 

 

---------------------------

« Mapas do Nolis »

 

 

 

 

Link to post
Share on other sites

  • 2 weeks later...
3 horas atrás, Old tibians disse:

Vou tentar colocar pra tfs1x. o movie é preguiçoso kkkk

 

Edit1: Se eu conseguir vou deixar aqui neste mesmo tópico á versão

Ando muito ocupado, as vezes que entro no fórum ou no discord da academia de codding estou pelo celular.

De qualquer forma, irei disponibilizar isso gratuitamente, portanto faço no meu tempo.

 

Espero que consiga trazer logo pro 1.x, daí não vou ter que terminar de passar :) 

Link to post
Share on other sites

  • 2 weeks later...

@LeandroRissa Eita, não precisa se estressar não, pronto coloquei seus créditos.

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link to post
Share on other sites

  • 3 weeks later...

Tive um ERRO na instalação no OTX, nessa parte:

        doSetItemActionId(teleport, zombieEvent.config.teleportAid)

Para resolver, substitui por essa:

        doItemSetAttribute(teleport, "aid", zombieEvent.config.teleportAid)

 

Para quem tiver o mesmo problema, está ai.

 

Coloquei no meu servidor e ficou muito bacana, parabéns pela ideia..

 

Dicas de melhorias futuras:

A mensagem de inicio poderia se repetir a cada 1 min falando o tempo que falta para fechar o teleport e

aparecer uma mensagem falando quantos players falta para a quantidade mínima de pessoas necessária

Link to post
Share on other sites

12 horas atrás, FeehLoveCes disse:

Tive um ERRO na instalação no OTX, nessa parte:

        doSetItemActionId(teleport, zombieEvent.config.teleportAid)

Para resolver, substitui por essa:

        doItemSetAttribute(teleport, "aid", zombieEvent.config.teleportAid)

 

Para quem tiver o mesmo problema, está ai.

 

Coloquei no meu servidor e ficou muito bacana, parabéns pela ideia..

 

Dicas de melhorias futuras:

A mensagem de inicio poderia se repetir a cada 1 min falando o tempo que falta para fechar o teleport e

aparecer uma mensagem falando quantos players falta para a quantidade mínima de pessoas necessária

Você provavelmente não tem a lib 100-shortcut.lua no seu servidor, é uma maneira mais curta de usar essa mesma função.

function doSetItemActionId(uid, aid)
	return doItemSetAttribute(uid, "aid", aid)
end

 

Curti as ideias de melhorias, quem sabe mais pra frente eu não adiciono :wink:

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link to post
Share on other sites

  • 2 months later...
Em 12/09/2020 em 21:33, WooX disse:

Zombie Event

VlVKQKC.png&key=d5c17620ae9567a1f898dd7a

Zombie Event é um evento já muito conhecido em que os participantes são jogados em uma arena e zombies são invocados até que reste apenas um jogador, quando um jogador é tocado por um zombie ele é teleportado para o templo, o ultimo jogador a ficar na arena é definido como vencedor e o evento é finalizado ai. Já faz um bom tempo que tive a ideia de mudar o funcionamento deste tradicional evento e finalmente decidi por a mão na massa, irei explicar melhor o que foi alterado abaixo.

 

 

Sobre o sistema

Oj5H4Xi.png

O sistema foi testado apenas em OTX2, mas provavelmente também funcione em TFS 0.4

 

Pra quem quiser esse evento funcional para TFS 1.x, o @Movie se comprometeu a fazer a adaptação, então podem mandar mensagem privada pra ele cobrando que ele gosta.

 

Quem é familiar com filmes e séries de zombies sabe que quando um zombie morde alguém a pessoa que foi mordida não simplesmente morre, mas ela se torna um zombie, é isso que torna a ideia de um apocalipse zombie tão aterrorizante. Pensando nisso eu tive a ideia de alterar o sistema pra que quando algum player fosse pego por um zombie ele também se transformasse em um e não fosse simplesmente teleportado para o templo. Essa alteração deixa a interação entre os jogadores no evento mais dinâmica pois eventualmente se torna um jogo de Player vs Player ao invés de Player vs Maquina, embora no fim continue sendo uma batalha entre vivos e mortos.

 

Irei listar abaixo mais algumas características do evento.

 

  • É possivel configurar para que seja permitido ou não o uso de MCs.
  • Todos os jogadores ao entrar na arena ficam com a mesma velocidade.
  • Para tornar mais competitivo e divertido, não é permitido utilizar a função Follow dentro do evento.
  • O jogador que foi transformado em zombie que mais contaminar outros jogadores também recebe uma recompensa.
  • Os jogadores que forem transformados em zombies podem subir de rank conforme forem contaminando outros jogadores, alterando assim sua aparência e velocidade na arena.

 

Vídeozinho

  Mostrar conteúdo oculto

 

Instalação

Oj5H4Xi.png

Este sistema utiliza de funções contidas na lib do link abaixo, então antes de mais nada é necessário adicionar esta lib no servidor.

  Ocultar conteúdo

 

 

Todos os arquivos necessários para instalação do evento estão anexados no tópico, irei apenas mostrar como deve ser configurado.

 

Toda configuração do sistema se encontra na lib do mesmo, segue abaixo explicação de como configurar.

  Ocultar conteúdo


-- Lib Zombie-Event by WooX

zombieEvent = {
	config = {
		startTime = {
			[1] = {"09:00", "15:00"}, -- domingo
			[2] = {"09:00", "15:00"}, -- segunda
			[3] = {"09:00", "15:00"}, -- terça
			[4] = {"09:00", "15:00"}, -- quarta
			[5] = {"09:00", "15:00"}, -- quinta
			[6] = {"09:00", "15:00"}, -- sexta
			[7] = {"09:00", "15:00"}  -- sabado
		},
		
		messages = {
			announcement = "O ataque de zombies esta prestes a começar, o teleporte será fechado em %d minuto",
			startEvent = "O teleporte fechou, boa sorte aos participantes!",
			playerBitten = "O jogador %s acaba de ser mordido e agora está no time dos zombies!",
			endEvent = "%s foi o sobrevivente do ataque de zombies! Párabens!",
			notEnoughPlayers = "Apenas %d jogadores não é o suficiente para se defender de um ataque zombie, os zombies venceram antes mesmo do ataque começar",
			
			zombiesRant = {"Mst.... klll....", "Whrrrr... ssss.... mmm.... grrrrl", "Dnnnt... cmmm... clsrrr....", "Httt.... hmnnsss...", "Uhhhhhhh!", "Aaaaahhhh!", "Hoooohhh!", "Chhhhhhh!"}
		},
		
		minOnlinePlayers = 50, -- Quantidade minima de jogadores online para iniciar o evento
		minPlayers = 15, -- Quantidade minima de jogadores para iniciar o evento
		
		closeTeleportTime = 5, -- Tempo em minutos para fechar o teleporte de entrada do evento apos aviso de inicio
		countDownTime = 30, -- Tempo em segundos para iniciar o evento apos o fechamento do teleporte de entrada
		
		zombieRatio = 0.3, -- Quantidade inicial de Zombies = [quantidade de players no evento multiplicado pelo valor definido aqui]
		playerSpeed = 300,
		delayToTransform = 3, -- Tempo em segundos para o jogador que foi mordido virar um zombie
		allowMultiClient = false,
		
		rewards = {
			human = {{2160, 10}, {6527, 20}}, -- {id, count}
			zombie = {{6527, 5}} -- {id, count}
		},
		
		zombiesRank = {
			[0] = {lookType = 100, speed = 250},
			[{1, 2}] = {lookType = 18, speed = 270},
			[{3, 4}] = {lookType = 68, speed = 290},
			[{5, math.huge}] = {lookType = 246, speed = 310}
		},
		
		area = {
			fromPos = {x = 560, y = 176}, -- Coordenadas ponto superior-esquerdo
			toPos = {x = 599, y = 216}, -- Coordenadas ponto inferior-direito
			z = 7,
		},
		
		teleportAid = 1800,
		teleportPos = {x = 166, y = 52, z = 7}, -- Onde o teleporte pra entrada do evento vai ser criado.
	},
}

 

 

  • startTime: configuração de horários para inicio do evento a depender do dia da semana (para cada horário diferente definido aqui um registro extra é necessário no globalevents.xml)
  • announcement: mensagem a ser exibida quando o teleporte para o evento for aberto.
  • startEvent: mensagem a ser exibida quando o teleporte para o evento for fechado e o evento iniciado.
  • playerBitten: mensagem a ser exibida quando um jogador for mordido por um zombie.
  • endEvent: mensagem a ser exibida quando o evento for finalizado.
  • notEnoughPlayers: mensagem a ser exibida quando não houver players suficiente para o evento.
  • zombiesRant: falas que serão randomicamente selecionadas para um jogador que foi transformado em zombie falar.

 

  • minOnlinePlayers: define a quantidade minima de jogadores online para o teleporte do evento ser aberto.
  • minPlayers: define a quantidade minima de jogadores na arena para o evento ser iniciado.
  • closeTeleportTime: tempo para fechar o teleporte após o anuncio (o valor deve ser definido em minutos).
  • countDownTime: tempo para iniciar o evento após o fechamento do teleporte (o valor deve ser definido em segundos).

 

  • zombieRatio: define a quantidade inicial de zombies baseado na quantidade de jogadores participando do evento.
  • playerSpeed: define a velocidade que o jogador terá durante o evento (valido apenas para jogadores que não foram transformados em zombies).
  • delayToTransform: define o intervalo para um jogador que foi mordido se transformar em um zombie (o valor deve ser definido em segundos).
  • allowMultiClient: pode ser definido como true ou false, se definido como falso não irá permitir a entrada de jogadores com o mesmo IP no evento.

 

  • rewards: define as recompensas a serem entregues tanto para o ultimo sobrevivente na arena como para o zombie que mais contaminar outros jogadores.
  • zombiesRank: define os ranks dos zombies, a quantidade de pontos necessária para avançar de rank, aparência e velocidade (valido apenas para jogadores que foram transformados em zombies).
  • area: define a área onde ocorrerá o evento, deve ser preenchido as coordenadas do ponto superior-esquerdo, ponto inferior-direito e o andar do local.
  • teleportAid: define a actionID a ser adicionado no teleporte de entrada do evento (este valor deve ser o mesmo a ser registrado na tag XML do script de movements).
  • teleportPos: define as coordenadas onde deve ser criado o teleporte de entrada para o evento.

 

Créditos

Oj5H4Xi.png

@LeandroRissa por testar todo o sistema.

event zombie.xml 1 kB · 42 downloads lib_zombie.lua 11 kB · 41 downloads zombieEvent.lua 150 B · 40 downloads zombieEvent_creature.lua 2 kB · 42 downloads zombieEvent_movement.lua 1 kB · 39 downloads

seria possível coloca o o player male com o lookType male e a jogadora female com o look female exemplo a imagens abaixo

Screenshot_1.png

Link to post
Share on other sites

Em 10/01/2021 em 20:26, DarkRed disse:

seria possível coloca o o player male com o lookType male e a jogadora female com o look female exemplo a imagens abaixo

Screenshot_1.png

Seria possível sim, mas o Tibia não tem lookTypes de zombies ou semelhantes para female, como fiz pensando no Tibia o script não possui essa função, seria necessário modificar.

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link to post
Share on other sites

Em 16/01/2021 em 23:22, XGaduX disse:

TFS 0.4 não tem o callback onThrow, teria que remover essa função do script.

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link to post
Share on other sites

9 minutos atrás, XGaduX disse:

tem como você adaptar para 0.4? att

Não tem o que fazer em relação ao script nesse caso, teria que modificar a source.

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link to post
Share on other sites

Em 18/01/2021 em 14:49, XGaduX disse:

caso eu mude na source, prejudicaria o meu serve? se não. COmo que eu faço? 

Não prejudicaria em nada. Acho que passei os arquivos que precisam ser alterados pra outra pessoa um outro caso.

 

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link to post
Share on other sites

1 minuto atrás, WooX disse:

Não prejudicaria em nada. Acho que passei os arquivos que precisam ser alterados pra outra pessoa um outro caso.

 

Lá você só cita que "Vai ter que mexer em creatureevent.cpp, creatureevent.h e game.cpp", mas oque muda lá?... 

Link to post
Share on other sites

5 minutos atrás, XGaduX disse:

Lá você só cita que "Vai ter que mexer em creatureevent.cpp, creatureevent.h e game.cpp", mas oque muda lá?... 

Vai ter que extrair o código e implementar em sua source, busque por onThrow nos arquivos. Se você não sabe o que fazer, segue a mesma recomendação que eu passei pra ele.

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link to post
Share on other sites

Legal essa interação, seria legal se o player infectado usa-se um comando !infec, e assim sairia um magia entorno dele de 1 sqm de distancia e quem fosse pego no raio dela fosse eliminado. E o player deixava de ser infectado.

Assinatura retirada pela direção!

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • By ITALOx
      Olá rapaziada.
      Hoje tô trazendo sistema de skin por comando.
      Já vi muita gente pedindo por aqui e nunca teve resultado.
       
      Então vamos lá!
       
       
      Lib:
      Crie um arquivo lua com o nome
      210-skins
       
      Actions.xml
       
      <action itemid="11225" event="script" value="skin.lua"/>  
      Actions/scripts
      Crie um arquivo com o nome skin.lua e coloque isso aqui dentro:
      local skin = { [11204] = 1, -- [itemid] = skinid, } function onUse(cid, item, frompos, item2, topos) if not skin[item.itemid] then return false end if doPlayerAddSkin(cid, skin[item.itemid]) then doRemoveItem(item.uid,1) end return true end  
      Agora vá em talkactions.xml e coloque isso aqui lá:
      <talkaction words="!skin" event="script" value="skin.lua"/>  
      Em talkactions/scripts crie um arquivo com o nome skin.lua
      e coloquei isso aqui:
      function onSay(cid, words, param, channel) if param ~= "remover" or param ~= "remove" then doPlayerUseSkin(cid, tonumber(param)) elseif param == "remover" or param == "remove" then doPlayerRemoveSkin(cid) end return true end  
    • By Tottin
      Explicação do Sistema
       
      Recentemente foi levantada uma ideia de Sistema no Discord da Academia de Programação: 
      O sistema consiste em dar maior liberdade pro mercado e tirar a parte monótona dos NPCS que basicamente sempre vendem/compram tudo ao mesmo preço, assim ficando muito longe da realidade de 1 verdadeiro vendedor.
      A ideia é que o NPC venda produtos com base no que ele tenha em estoque, logo para ele vender 1 Blusa ele 1° irá precisar comprá-la de alguém.
      Exemplificando:
      O NPC só irá vender aquilo que comprar, se ele comprar 1 Blusa ele irá disponibilizar para vender 1 Blusa, se ele comprar 7 Blusas, ele irá disponibilizar pra vender 7 Blusas, ao acabar elas, o seu estoque fica vazio e ele deixa de vender até comprar mais.
      O preço que o NPC paga pelo seus produtos é baseado na quantidade de seu estoque, e o valor que ele cobra ao vender os produtos é definido previamente em 1 configuração.
      Exemplo: Quanto + item do mesmo produto o NPC tiver, + barato ele irá pagar nos mesmos, visto que ele já possui 1 estoque grande e na teoria esse produto não é um produto que possui 1 saída muito fácil. Ao mesmo tempo, quanto menor a quantidade de 1 mesmo produto em seu estoque, mais caro ele irá pagar, já que seu estoque sobre aquele produto é pequeno, o que indica que: Ou ele é muito raro, ou ele vende muito fácil, por isso o NPC irá demonstrar + interesse por ele.
      O preço que o NPC cobra é definido previamente e pode ser alterado sempre que desejar.

      Abaixo, o preço de 1 Pearl Shield que o NPC não possui em estoque:
       

      E agora, após o NPC ter comprado 10 Shields do mesmo:


      Enfim, agora que o sistema já foi previamente explicado, vamos a instalação:

      1º Vá para data/lib/ e crie 1 arquivo chamado npc_system.lua, nele você irá adicionar o seguinte código:
       

      2º Agora vá para  data/npcs, crie 1 arquivo chamado: negociante.xml, nele você irá adicionar o seguinte código:
       
      3º Agora vá para data/npcs/scripts, crie 1 arquivo chamado: negociante.lua, nele você irá adicionar o seguinte código:
       
      Instalação finalizada, as áreas configuráveis do sistema estão informadas na lib.
                              Créditos:
      Academia de Programação: Por ter levantado a ideia do sistema.
      @Endless: Por ter ajudado em uma questão de lógica.
      E a mim por ter feito. (Eu acho).

                     Informações adicionais:
      -> O sistema foi testado e não apresentou problemas, porém se vierem a encontrar falhas, favor reportar para que eu possa manter o tópico atualizado/corrigido.
      -> Eu faço correções no sistema caso esteja errado, mas não faço adaptações pro seu servidor. Caso queira variações do sistema, favor enviar seu pedido no discord da Academia de Programação, ou em meu privado: Admin#9865.
    • By thiagobji
      Olá galerinha do TK, hoje venho trazer aqui para vocês um dos melhores e mais famoso evento da atualidade, é o famoso: War of Emperium (WOE), estou disponibilizando ele aqui de graça para vocês, bom aproveito!
      #Descrição: Este evento consiste em dominar o castelo através da destruição de alguns geradores.
      #O que possui?
      - Totalmente automatizado (Script: Abertura, Entrega do prêmio, Designação do vencedor e Encerramento).
      - Página interativa (PHP: Possui explicação do evento e os 5 últimos vencedores do castle).
      - Talkactions (Script: Comandos que informam quanto tempo falta para fechar e puxam membros para dentro do castelo).
      - Tutorial (Arquivo: Explicando passo a passo a instalação).
      - Castelo com 4 andares (Mapa).
      - Entre outras coisas….
      *OBS: Este evento só funciona em TFS 0.4.
       
      DOWNLOAD: CLICK AQUI
       
      Download Direto:
      war_of_emperium__completo.zip
      Scan: https://www.virustotal.com/gui/file/c7883cad9208371272d3609c007c2e53a669f86b64e556f90e625b10b7c6f91e/detection
       
      Créditos:
      ChaitoSoft
      Jhon
      Thiagobji
    • By Vodkart
      08/01/2017
      SISTEMA ATUALIZADO PARA 4.0:
       
       
       
       
      Mods:
    • By luanluciano93
      Olá pessoal, tudo bom? Então, estou trazendo um evento que criei: o Duca Evento. A uns 10 anos atrás joguei um ot pvp enforced que funcionava quase da mesma forma desse evento e recentemente resolvi criar um evento dessa forma ...

      Como funciona:
      • Primeiramente abre um teleport onde os jogadores que estão acima do level estipulado podem entrar (lembrando que o teleport fica aberto até o final do evento, ou seja, você pode morrer dentro do evento e entrar novamente quantas vezes quiser).
      • Ao entrar no teleport você será enviado para uma equipe: azul ou rosa (lembrando que o objetivo é você matar jogadores da outra equipe e não poderá atacar os da mesma equipe).
      • Existe uma pontuação dentro do evento, ou seja, a cada jogador que matar da outra equipe você ganha 1 duca ponto (lembrando que se você morrer você é teleportado para fora do evento e seus duca pontos zeram.)
      • A cada morte dentro do evento é atualizada uma LISTA RANK, onde é gerado um rank de acordo com a pontuação dentro do evento.
      • O evento começa ficar bom quando existem mais de 11 jogadores dentro dele, pois é quando o sistema verifica os jogadores da "lista rank" que estão nas posições de segundo a décimo primeiro (2º a 11º) e coloca eles em uma equipe diferente: a vermelha, e é ai que o "bicho pega", pois fora os outros jogadores das outras equipes, existem 10 jogadores dessa equipe, e o melhor, quem mata-los recebe 10 duca pontos.
      • Como dito acima, ao ter mais de 11 jogadores dentro do evento é criado automaticamente a equipe vermelha (2º a 11º do rank), pois bem, para quem leu certinho viu que pulamos o 1º do rank: é ai que entra a equipe verde, sim, esta equipe será composta apenas por 1 jogador, sempre o que tiver mais pontos no evento (lembrando que essa função do sistema atualiza a cada morte dentro do evento), e é claro quem mata-lo ganhará 30 pontos dentro do evento.
      • Aconselho a colocar sempre o tempo do evento superior a 30 minutos para melhor jogabilidade e rivalidade.
      • O objetivo do evento é ser do time verde ao terminar o evento e ganhar o premio (configurei para os do time vermelho tbem ganhar premio, mas inferior ao do verde).

      Observações:
      • As cores das equipes que citei são represetativas, lá você pode editar as que quiserem.
      • Um mapa opcional esta disponivel para download no tópico.
      • Não ensinarei detalhes minimos de instalação no servidor porque você deve ao menos ter uma noção básica de otserv.

      Como instalar: 

      • Primeiramente o arquivo que ficará na lib, ele é o coração do evento, tudo que você precisar configurar é nele. Nomeie de DUCA.lua: 

      • Depois na pasta creaturescripts/scripts/ crie o arquivo DUCA_creaturescripts.lua: (lembrando que as tags para colocar no creaturescripts.xml esta como comentário no começo do código)

      • Depois na pasta globalevents/scripts/ crie o arquivo DUCA_globalevents.lua: (lembrando que as tags para colocar no globalevents.xml esta como comentário no começo do código)

      • Depois na pasta movements/scripts/ crie o arquivo DUCA_movements.lua: (lembrando que as tags para colocar no movements.xml esta como comentário no começo do código)


      Espero que gostem! D  U   C  A
      ducaMap.otbm
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...

Important Information

Confirmação de Termo