Ir para conteúdo
  • Cadastre-se

[Resolvido] [PEDIDO] Trainer com sistema de Kicks


Posts Recomendados

Trainer com sistema de Kicks...

 

 

Bem turma eu vim aqui hoje fazer um pedido, gostaria de implantar em meu server um sistema onde, de 15 em 15 minutos kikasse (removesse) todos os player que estão nas cabines de treinamento, e mandasse para um determinado local.

 

Ou seja, o não importa se o player esta afk ou não, ele sera automaticamente removido da sala....

 

Para que isso? É o seguinte quero fazer isso por dois motivos

* reduzir ou eliminar o uso de botter e player afk nos trainer

* Visto que [em meu server] as cidades free tem um numero muito pequeno de trainers isso ira ajudar para, que mais pessoas possam treinar seus skills.

*mais  um atrativo para colocar VIP account, pois terá centro de treinamento maiores e também que não kika o player

 

 

Bem turma preciso muito da ajuda de vocês, quem conseguir tera o meu +REP  (y)


Obrigado a todos espero respostas...

Meus Trabalhos:

 

*Spell Rajada de Flechas: http://migre.me/eI3aE

 

 

 

 

gif1705.gif

 

Link para o post
Compartilhar em outros sites
  • Administrador

Cara não é o trainer que kika é o server que kika o player após 15 minutos sem se mover

TibiaKing Team- KingTópicos
www.tibiaking.com

Link para o post
Compartilhar em outros sites

Trainer com sistema de Kicks...

 

 

Bem turma eu vim aqui hoje fazer um pedido, gostaria de implantar em meu server um sistema onde, de 15 em 15 minutos kikasse (removesse) todos os player que estão nas cabines de treinamento, e mandasse para um determinado local.

 

Ou seja, o não importa se o player esta afk ou não, ele sera automaticamente removido da sala....

 

Para que isso? É o seguinte quero fazer isso por dois motivos

* reduzir ou eliminar o uso de botter e player afk nos trainer

* Visto que [em meu server] as cidades free tem um numero muito pequeno de trainers isso ira ajudar para, que mais pessoas possam treinar seus skills.

*mais  um atrativo para colocar VIP account, pois terá centro de treinamento maiores e também que não kika o player

 

 

Bem turma preciso muito da ajuda de vocês, quem conseguir tera o meu +REP  (y)

Obrigado a todos espero respostas...

Crie um arquivo chamado trainerkick.lua na pasta data/globalevents/scripts e cole isso

 

local cfg = {
          fromPos = {x=1059, y=1034, z=7}, -- Posição do piso superior esquerdo da área que o jogador tem que estar
          toPos = {x=1062, y=1036, z=7}, -- Posição do piso inferior direito da área que o jogador tem que estar
          pos = {x=1062, y=1038, z=7} -- Posição que o jogador será teleportado (aconselho templo)
}
function onThink(interval, lastExecution, thinkInterval)
          local frompos, topos = cfg.fromPos, cfg.toPos
          for x = frompos.x, topos.x do
                    for y = frompos.y, topos.y do
                              local areapos = {x=x, y=y, z=cfg.fromPos.z}
                              getPlayer = getTopCreature(areapos).uid
                              if isPlayer(getPlayer) then
                                        doPlayerSendTextMessage(getPlayer, 18, 'You have been teleported to the temple.')
                                        doTeleportThing(getPlayer, cfg.pos)
                              end
                    end
          end
          return TRUE
end

 

Adicione a seguinte linha no arquivo globalevents.xml que se encontra na pasta data/movements

 

<globalevent name="kick" interval="900000" event="script" value="trainerkick.lua" />

 

Não testado.

Dúvidas? Me avise

(OBS: Na tag o interval esta 900000, pois meu servidor conta em milésimos, então 1000*60*15=900000. Pode ser que o seu servidor esteja em segundos, então o interval seria 900, pois 60*15=900)

 

Att.

Giovani Rodrigo

Editado por GiovaniRodrigo (veja o histórico de edições)
Spoiler

local config = {
	delrey = getPlayerCarValue(cid, DELREY),
	cigarro = getPlayerCancer(cid, DERBY),
	prostituta = getPlayerAIDS(cid, cracuda),
	tresOitao = getPlayerRevorvi(cid, 38)
}

if(delrey == "Ligado" and cigarro == "Aceso" and prostituta == "No Colo" and tresOitao == "Carregado") then
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Começou o fim de semana. #PAS")
end

 

Link para o post
Compartilhar em outros sites

cara nas posições mi explica o que significa 

Posição do piso superior esquerdo da área que o jogador tem que estar
Posição do piso inferior direito da área que o jogador tem que estar

Posição que o jogador será teleportado (aconselho templo)

piso superior esquerdo??? como assim...

Meus Trabalhos:

 

*Spell Rajada de Flechas: http://migre.me/eI3aE

 

 

 

 

gif1705.gif

 

Link para o post
Compartilhar em outros sites

cara nas posições mi explica o que significa 

Posição do piso superior esquerdo da área que o jogador tem que estar

Posição do piso inferior direito da área que o jogador tem que estar

Posição que o jogador será teleportado (aconselho templo)

piso superior esquerdo??? como assim...

Explicando:

Imagem 1

post-72403-0-22377800-1369618229_thumb.p

 

A fromPos é a posição do piso superior esquerdo ou o piso contornado de azul como mostra na Imagem 1.

A toPos é a posição do piso inferior direito ou o piso contornado de vermelho como mostra a Imagem 1.

Pergunta: Mas o que tem a ver essa fromPos e toPos com a área do trainer?

Resposta: Esses dois pisos tem uma função bem simples que é marcar a área de um quadrado ou retângulo.

Continua não entendendo? Vou explicar melhor.

Imagem 2

post-72403-0-96343400-1369618231_thumb.p
 
Veja que na Imagem 2 tem quatro linhas marcando os eixos X e Y de cada piso, veja também que as linhas se encontram formando um quadrado ou retângulo, isso faz com que os dois pisos que não era de nenhuma importância sejam as peças principais na formação de um quadrado ou retângulo.

Pergunta: Mas porque determinar essa área?

Resposta: Determinando essa área, tudo que estiver la dentro sofre a consequência do script.

Exemplo:
if isPlayer(getPlayer.uid) then
          doPlayerSendTextMessage(cid, 18, 'You have been teleported to the temple.')
          doTeleportThing(cid, cfg.pos)
end
 
Traduzindo

O código diz o seguinte:

Se é Jogador dentro da(área) faça
          Enviar Menssagem de Texto para o Jogador(jogador, tipo de menssagem, 'Mensagem')
          Teleportar para(jogador, posição)
Fim
 
Entendeu?
 
Att.
Giovani Rodrigo
Editado por GiovaniRodrigo (veja o histórico de edições)
Spoiler

local config = {
	delrey = getPlayerCarValue(cid, DELREY),
	cigarro = getPlayerCancer(cid, DERBY),
	prostituta = getPlayerAIDS(cid, cracuda),
	tresOitao = getPlayerRevorvi(cid, 38)
}

if(delrey == "Ligado" and cigarro == "Aceso" and prostituta == "No Colo" and tresOitao == "Carregado") then
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Começou o fim de semana. #PAS")
end

 

Link para o post
Compartilhar em outros sites

poxa não funcionou nada acontece

Erro distro?

Spoiler

local config = {
	delrey = getPlayerCarValue(cid, DELREY),
	cigarro = getPlayerCancer(cid, DERBY),
	prostituta = getPlayerAIDS(cid, cracuda),
	tresOitao = getPlayerRevorvi(cid, 38)
}

if(delrey == "Ligado" and cigarro == "Aceso" and prostituta == "No Colo" and tresOitao == "Carregado") then
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Começou o fim de semana. #PAS")
end

 

Link para o post
Compartilhar em outros sites

cara sem nenhum erro apenas fiz as seguintes alterações. Mais nada acontece, o char ainda permanece lá

 

local cfg = {

          fromPos = {x=141, y=662, z=7}, -- Posição do piso superior esquerdo da área que o jogador tem que estar
          toPos = {x=163, y=664, z=7}, -- Posição do piso inferior direito da área que o jogador tem que estar
          pos = {x=156, y=676, z=7} -- Posição que o jogador será teleportado (aconselho templo)
}
function onThink(interval, lastExecution)
          local fromp, top = cfg.fromPos, cfg.toPos
          for x = fromp.x, top.x do
                    for y = fromp.y, top.y do
                              local areapos = {x=x, y=y, z=cfg.fromPos.z}
                              getPlayer = getThingfromPos(areapos)
                              if isPlayer(getPlayer.uid) then
                                        doPlayerSendTextMessage(cid, 18, 'You have been teleported to the temple.')
                                        doTeleportThing(cid, cfg.pos)
                              end
                    end
          end
          return TRUE
end

 

TAG

 

<globalevent name="kick" interval="5000" event="script" value="trainerkick.lua"/>

Meus Trabalhos:

 

*Spell Rajada de Flechas: http://migre.me/eI3aE

 

 

 

 

gif1705.gif

 

Link para o post
Compartilhar em outros sites

diminui o interval pra 30000 = 30seg.

se for distro inferior a TFS 0.4 coloque apenas 30

 

 

EDIT

nao tinha visto a tag acima desculpa

Editado por ricardo3 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

cara sem nenhum erro apenas fiz as seguintes alterações. Mais nada acontece, o char ainda permanece lá

 

 

TAG

Recopie o código e troque as coordenadas.

Spoiler

local config = {
	delrey = getPlayerCarValue(cid, DELREY),
	cigarro = getPlayerCancer(cid, DERBY),
	prostituta = getPlayerAIDS(cid, cracuda),
	tresOitao = getPlayerRevorvi(cid, 38)
}

if(delrey == "Ligado" and cigarro == "Aceso" and prostituta == "No Colo" and tresOitao == "Carregado") then
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Começou o fim de semana. #PAS")
end

 

Link para o post
Compartilhar em outros sites

Vlw Cara funcionou perfeitamente agora vc é de mais segura ai meu +REP
Muito grato

Meus Trabalhos:

 

*Spell Rajada de Flechas: http://migre.me/eI3aE

 

 

 

 

gif1705.gif

 

Link para o post
Compartilhar em outros sites

Dúvida sanada, tag adicionada.

Tópico movido!

-"Supra Omnes Lux Lucis"

- Acima de todos brilha a Luz -

5VGnDyBz.png

Link para o post
Compartilhar em outros sites

Aproveitando o TOpico... Como faço para por o evento em mais trainers?? de outras cidades? devo criar outro evento ou tem como editar o evento, para o treiner de varias cidades?

Meus Trabalhos:

 

*Spell Rajada de Flechas: http://migre.me/eI3aE

 

 

 

 

gif1705.gif

 

Link para o post
Compartilhar em outros sites

Aproveitando o TOpico... Como faço para por o evento em mais trainers?? de outras cidades? devo criar outro evento ou tem como editar o evento, para o treiner de varias cidades?

Duplique o arquivo e apenas mude as coordenadas.

Spoiler

local config = {
	delrey = getPlayerCarValue(cid, DELREY),
	cigarro = getPlayerCancer(cid, DERBY),
	prostituta = getPlayerAIDS(cid, cracuda),
	tresOitao = getPlayerRevorvi(cid, 38)
}

if(delrey == "Ligado" and cigarro == "Aceso" and prostituta == "No Colo" and tresOitao == "Carregado") then
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Começou o fim de semana. #PAS")
end

 

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Shiuns
      Versão Testada: Tibia 8.60 // TFS 0.3.6 & 0.4
       
      Descrição: Evita jogadores que dão exit nos treiners upando skills. Eles são kikados automaticamente depois de alguns minutos e algumas verificações.
       
       
      exit_treiner.lua
      config_exit_treiner = { Warning = "Favor trocar seu char de direção para evitar que ele seja kikado", -- mensagem time = 3, -- a cada 3 minutos irá checar roudsKick = 3, -- se ele estiver parado na mesma direção por 3 checagem seguidas será kikado storages = {879780,879781}, -- n edite treiners = {"Trainer", "Training Monk"} -- coloque aqui os Treiners do seu ot } --[[Functions List]]-- function doAddRoundExitTreiner(cid) if not isCreature(cid) then return LUA_ERROR end setPlayerStorageValue(cid, config_exit_treiner.storages[1], getPlayerStorageValue(cid, config_exit_treiner.storages[1]) < 0 and 1 or getPlayerStorageValue(cid, config_exit_treiner.storages[1])+1) if getRoundExitTreiner(cid) >= config_exit_treiner.roudsKick then doKickExitTreiner(cid) end end function getRoundExitTreiner(cid) if not isCreature(cid) then return LUA_ERROR end return getPlayerStorageValue(cid, config_exit_treiner.storages[1]) < 0 and 1 or getPlayerStorageValue(cid, config_exit_treiner.storages[1]) end function doResetExitTreiner(cid) if not isCreature(cid) then return LUA_ERROR end return setPlayerStorageValue(cid, config_exit_treiner.storages[1], 0) end function doKickExitTreiner(cid) if not isCreature(cid) then return LUA_ERROR end if getTileInfo(getCreaturePosition(cid)).protection or not getTreinerSpectators(cid) then doResetExitTreiner(cid) setPlayerStorageValue(cid, config_exit_treiner.storages[2], 0) else doResetExitTreiner(cid) doRemoveCreature(cid) end end function getTreinerSpectators(cid) local t = getSpectators(getCreaturePosition(cid), 2, 2, false) if t then for _, cid in ipairs(t) do if isMonster(cid) and isInArray(config_exit_treiner.treiners, getCreatureName(cid)) then return true end end end return false end function doCheckLookDirExitTreiner(cid, r) if not isCreature(cid) then return LUA_ERROR end if getTreinerSpectators(cid) then local new = getCreatureLookDirection(cid) if r == new then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, config_exit_treiner.Warning) doAddRoundExitTreiner(cid) else doResetExitTreiner(cid) end addEvent(doCheckLookDirExitTreiner,config_exit_treiner.time*60*1000, cid, new) else setPlayerStorageValue(cid, config_exit_treiner.storages[2], 0) doResetExitTreiner(cid) end end --[[Script System]]-- function onLogin(cid) doResetExitTreiner(cid) setPlayerStorageValue(cid, config_exit_treiner.storages[2], 0) registerCreatureEvent(cid, "NewExitTreiner") return true end function onCombat(cid, target) if not isCreature(cid) or not isPlayer(cid) then return true end if getPlayerStorageValue(cid, config_exit_treiner.storages[2]) - os.time() > 0 then return true end if not isMonster(target) then return true end if isMonster(target) and not isInArray(config_exit_treiner.treiners, getCreatureName(target)) and getRoundExitTreiner(cid) > 0 then setPlayerStorageValue(cid, config_exit_treiner.storages[2], 0) doResetExitTreiner(cid) return true end if isMonster(target) and isInArray(config_exit_treiner.treiners, getCreatureName(target)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, config_exit_treiner.Warning) addEvent(doCheckLookDirExitTreiner, config_exit_treiner.time*60*1000, cid, getCreatureLookDirection(cid)) setPlayerStorageValue(cid, config_exit_treiner.storages[2], os.time()+5*60) end return true end  
      TAG
      <event type="login" name="ExitTreiners" event="script" value="exit_treiner.lua"/> <event type="combat" name="NewExitTreiner" event="script" value="exit_treiner.lua"/>  
    • Por feipedorp
      Galera preciso de um script's para quando os player entrar na area de trainer o summon suma ou morra.
      acontece o seguinte o player entra na area de trainer e da exit no client, quando vai entrar da erro devido o summon ficar la' erro em creaturescripts/summon.lua
      o que eu faço?
      TFS 1.3X
    • Por xWhiteWolf
      Olá meus caros do Tibia King, hoje vim trazer pra vocês um sistema que bolei pra um concurso em outro fórum mas acabei ficando descontente e nunca cheguei a disponibilizar.
      Eu gostaria de agradecer inicialmente à três acontecimentos que sem eles não seriam possíveis a criação desse sistema.
      - A otlist obrigar que os servidores utilizem anti idle 
      - Os mages do meu servidor reclamarem que não dava pra treinar ml nos trainers
      - Ao @Storm Night, que embora tenha me irritado muito nesse tópico aqui , botou a sementinha dessa idéia na minha cabeça. 
       

       
      Explicação É a combinação de dois sistemas que eu ja havia feito, o primeiro escolhe entre todas as salas de treiner aquela que está vazia pra te alocar e o segundo te mantém alimentado e rodando pra simular o anti idle. (Nota: ele não impede o anti idle de fato, se vc quiser fazer isso vc vai precisar editar o script de anti idle que vc utiliza pra ignorar players com determinado storage e adicionar o storage no player quando ele entrar na sala e tirar ao sair.. mas não sei até que ponto isso pode provocar ban da OTservlist por isso decidi não ensinar isso aqui.)

      Sem mais delongas, talk is cheap, show me the code. 
       
      Idéia Basicamente dá pra reduzir toda a idéia do código nessa foto aqui:
       

      Você tem diversas salas com trainers nesse formato (pode ser em linha reta horizontal ou vertical tb, mas assim fica melhor distribuído). Você inclusive pode criar salas no meio do void  de forma que a distancia de uma vc nao consiga ver a outra e vai ser uma experiencia muito amigável para o player ver que está treinando sozinho na paz. Ao entrar no tp ele te aloca na primeira sala vazia, se não houverem salas vazias ele retorna que não tem posições livres

       
      Instalação Você precisa criar as salinhas dos trainers equidistantemente, ou seja, tendo a mesma distância A em X e mesma distância B em Y. Sério, se vc errar nessa parte é porque vc não sabe oque significa equidistante. Vai pesquisar preguiçoso!! Já aviso que não vou dar suporte quanto à isso.

      Você vai precisar criar salas parecidas com isso daqui:
       

      Perceba que não tem como ter acesso a essa sala, não tem como ser puxado pra fora do trainer, não tem dor de cabeça nenhuma e quando o player quiser sair ele só entra no tp e volta pro templo ou pra onde vc definir.

      Nesse teleport da sala vc adiciona o actionid 14877 e não bota nenhuma posição nele.
      Naquele tile que o player irá ficar que inclusive tem id diferente vc bota actionid 14878.
      Agora seleciona a area dessa sala no rme e vai copiando e colando percebendo sempre se vc tá criando as salas com mesma distância em X. Se o ponto inicial de uma sala é 140 e vc quer que todas tenham 12 sqm de distancia vc cria em 152, 164, 178.. por aí vai. 

      Quando terminar as salas que quiser e tiver montado as linhas e colunas da forma que desejou, vc vai criar um tp principal pra alocar os players nessa sala:


      Lembrando que ele não deve ter posição no rme, vc só bota o actionID 14876 e deixa a toPos dele 0, 0, 0. Ele não tem q te teleportar pra nenhum lugar pois a posição será decidida por script.

      Se você fez tudo certo até agora vc deve ter algo +- assim:
       


      O importante é manter a distancia certinha entre cada sala. Aí no caso eu fiz rX = 11 e rY = 8 (é a terceira ou quarta vez q eu to falando isso, se vcs errarem pqp eu vou ficar muito irritado);

      Vc não bota os trainers, e ali embaixo do spawn vc tem que botar um outro obstáculo pra impedir que o player ande pra baixo e dê a sala como livre.


      Feito isso só adicionar os scripts abaixo:
      movements.xml
          <movevent type="StepIn" actionid="14876" event="script" value="trainertp.lua"/>     <movevent type="StepIn" actionid="14877" event="script" value="trainertp2.lua"/>     <movevent type="StepIn" actionid="14878" event="script" value="foodtrainer.lua"/>
      movements/scripts/trainertp.lua:

      movements/scripts/trainertp2.lua:
       


      movements/scripts/foodtrainer.lua:
       

      FIM, qualquer dúvida ou comentário ou sugestão coloquem abaixo. Se gostou REP+, se não gostou REP+ pq deu trabalho e vai ser útil pra alguém, mesmo que de estudo. 
      Abraços do Lobo. 

      E ao cara do outro fórum que ficou falando que ia dar erro e quis ficar me corrigindo e mandando scripts sem noção pra "mostrar" que sabia de lua: 
    • Por Sayadjin
      Boa Noite Meu Ot server o Distro é Real Server quando aproximadamente 10 Player Online Ou 30 minutos online o ot trava e cai , e da ai não volta mais
      Pra os players Poder Voltar a Jogar e preciso reiniciar o server. estarei no aguardo REP+
      @upadao UP
      OBS: dps que da kick. O ot fica online. Só ngm consegue logar.
       
    • Por hallz7
      Boa tarde Tibia King!

      Ja pesquisei em todo o forum, e tambem em alguns outros foruns, mas não encontro algo que supra minha necessidade. Colocarei algumas imagens para ajudar no entendimento da questão.

      Eu gostaria de um script em que o player puxe a alavanca e seja teleportado para o sqm indicado. como mostra na imagem abaixo.

       
       
       
      E o mesmo funcionamento para quando o player quiser sair.

       
       
       
      Essa alavanca não poderá funcionar se o "TRAINER SPOT" ou SQM ja estiver ocupado, e só poderá ser puxada pelo player que está la dentro.

       
      E uma questão "PLUS", eu gostaria tbm, se possivel, enquanto o player estiver naquele sqm dos trainers, ele perca SOUL por segundo, obrigando assim ele a sair eventualmente quando seu SOUL acabar.

      Aguardo um retorno do TibiaKing. VLW BOA TARDE!!!
       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo