Ir para conteúdo
  • Cadastre-se

(Resolvido)[PEDIDO] MiniGame ~ Acerte o Alvo


Ir para solução Resolvido por xWhiteWolf,

Posts Recomendados

não cara.. hauhauh do jeito que eu fiz tá certíssimo e eu inclusive testei.
O paradigma utilizado em Lua é programação estruturada, isso significa que ele executa na ordem que as coisas estão colocadas:

 if getPlayerStorageValue(cid, config.recorde) <= getPlayerStorageValue(cid, config.storage) then
        setPlayerStorageValue(cid, config.recorde, getPlayerStorageValue(cid, config.storage))
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "[Bird Hunt]\nYou made ".. getPlayerStorageValue(cid, config.recorde) .." points, that\'\s your new record!")
    end
    setPlayerStorageValue(cid, config.storage, -1)

Se o storage do recorde for <= storage dos pontos então
seta o valor do recorde como valor dos pontos
manda msg do recorde
fim
seta o storage dos pontos como -1 pra permitir que vc entre novamente na sala

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

não cara.. hauhauh do jeito que eu fiz tá certíssimo e eu inclusive testei.

O paradigma utilizado em Lua é programação estruturada, isso significa que ele executa na ordem que as coisas estão colocadas:

 if getPlayerStorageValue(cid, config.recorde) <= getPlayerStorageValue(cid, config.storage) then
        setPlayerStorageValue(cid, config.recorde, getPlayerStorageValue(cid, config.storage))
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "[Bird Hunt]\nYou made ".. getPlayerStorageValue(cid, config.recorde) .." points, that\'\s your new record!")
    end
    setPlayerStorageValue(cid, config.storage, -1)

Se o storage do recorde for <= storage dos pontos então

seta o valor do recorde como valor dos pontos

manda msg do recorde

fim

seta o storage dos pontos como -1 pra permitir que vc entre novamente na sala

 

 

testei do seu jeito toda hora seta storage do cara para - 1 antes de pegar o record.. ai não sei se e a distro..mais aki so do meu jeito q funfou..

Link para o post
Compartilhar em outros sites

---EDIT---

Desculpa minha falha, esqueci de adicionar o StepOut, agora está funcionando 100% Parabéns @xWhiteWolf

 

 

 

Aqui funcionou a maior parte do script, só tem alguns probleminhas:

1 - Script não remove a Ballista
2 - Ao acabar o tempo, o player é jogado pra fora porém, ele não pode mais entrar na sala e as Ballistas citadas no erro 1 continuam na sala.

PS: O console não reporta nenhum erro, uso TFS 0.4 (8.6)
Editado por Chriistian (veja o histórico de edições)

WN4m2fS.png

 

 

Link para o post
Compartilhar em outros sites

caramba, vou ver isso fds então.. me mandem uma pm na sexta pra me lembrar por favor.

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

 

---EDIT---

Desculpa minha falha, esqueci de adicionar o StepOut, agora está funcionando 100% Parabéns @xWhiteWolf

 

 

 

Aqui funcionou a maior parte do script, só tem alguns probleminhas:

1 - Script não remove a Ballista
2 - Ao acabar o tempo, o player é jogado pra fora porém, ele não pode mais entrar na sala e as Ballistas citadas no erro 1 continuam na sala.

PS: O console não reporta nenhum erro, uso TFS 0.4 (8.6)

 

 

USE MEU SCRIPT QUE TA ACIMA QUE FUNCIONA , JA ESPLIQUEI PRO WOLF

 

QUANTO NAO REMOVER VC SO CRIOU A TAG DO  stepin e esqueceu a do stepOut

usa essa 

 

onde tem stepin e step outf muda o out por esse 

function onStepOut(cid, item, frompos, topos, lastpos)
    if math.abs(frompos.x - getCreaturePos(cid).x) <= 0 then
        return true
    end
    local movePos = {x = frompos.x, y = frompos.y, z = frompos.z}
    local posBesta = getBestaPos(frompos, config.position)
    removeBesta(movePos, config.position) -- remove a besta ao sair
    if not isPlayer(cid) then return true end
    if getPlayerStorageValue(cid, config.recorde) <= getPlayerStorageValue(cid, config.storage) then
        setPlayerStorageValue(cid, config.recorde, getPlayerStorageValue(cid, config.storage))
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "[Bird Hunt]\nYou made ".. getPlayerStorageValue(cid, config.recorde) .." points, that\'\s your new record!")
 setPlayerStorageValue(cid, config.storage, -1)
else
setPlayerStorageValue(cid, config.storage, -1)
end
 
return true
end

as tags

 

<movevent type="StepIn" actionid="actionSeu" event="script" value="Evento Bird Shot.lua"/>
<movevent type="StepOut" actionid="actionSeu" event="script" value="Evento Bird Shot.lua"/>
Editado por kbpaulo (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 3 weeks later...

ps: pro pessoal que tá alegando erros ou que teve problemas pra instalar, eu fiz um tutorial mais bem explicado só que ele está em outro fórum.. quem quiser me pede link via PM que eu passo. 

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites
  • 1 year later...

usar mais de uma vez oque?

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Belo script @xWhiteWolf.

 

Eu pensei em utilizar esse script, mas acabei desistindo.

Fiz umas modificações nele, não estava funcionando algumas coisas como: Contar os pontos feitos no final e o recorde.

 

Para quem está com problemas e quiser arrumar...

 

Mude a função onStepOut para essa.

 

function onStepOut(cid, item, frompos, topos, lastpos)
	if math.abs(frompos.x - getCreaturePos(cid).x) <= 0 then
		return true
	end
	local movePos = {x = frompos.x, y = frompos.y, z = frompos.z}
	local posBesta = getBestaPos(frompos, config.position)
	removeBesta(movePos, config.position) -- remove a besta ao sair
	if not isPlayer(cid) then return true end
	if getPlayerStorageValue(cid, config.recorde) <= getPlayerStorageValue(cid, config.storage) then
		setPlayerStorageValue(cid, config.recorde, getPlayerStorageValue(cid, config.storage))
		doPlayerPopupFYI(cid, "[Bird Hunt]\n\nVocê fez ".. getPlayerStorageValue(cid, config.storage) .." pontos! \n\nO seu recorde é: ".. getPlayerStorageValue(cid, config.recorde) .." pontos! \n\nVocê ganhou: ".. getPlayerStorageValue(cid, config.storage) * 10 .."K")
	else
	if getPlayerStorageValue(cid, config.storage) <= getPlayerStorageValue(cid, config.recorde) then
		doPlayerPopupFYI(cid, "[Bird Hunt]\n\nVocê fez ".. getPlayerStorageValue(cid, config.storage) .." pontos! \n\nO seu recorde é: ".. getPlayerStorageValue(cid, config.recorde) .." pontos \n\nVocê ganhou: ".. getPlayerStorageValue(cid, config.storage) * 10 .."K")
	end
	end
	setPlayerStorageValue(cid, config.storage, -1)
return true
end

E lembre-se de colocar para adicionar dinheiro por hit na LIB.

 

Abaixo de:

setPlayerStorageValue(uid, key, points + 1)

Coloque:

doPlayerAddItem(uid, 2160, 1)

 

Outra coisa, seria legal fazer o Seagull voar apenas no último sqm da sala em Y.

Ele nasce na frente da besta e fica voando pela sala, eu acho que isso é um problema.

Editado por The Most Amazing (veja o histórico de edições)
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 FeeTads
      SALVE rapaziada do TK, esses dias vim pensando em novos scripts pro meu OT, e em um deles eu precisava que determinada area não contasse frag pro player que matasse outros, PORÉM eu precisava que os players que morressem nessa area ainda assim tivessem as penalidades da sua morte, procurei por ai, achei alguns scripts que apenas tiravam o SKULL e não realmente o FRAG do player.

      **script atualizado 22/10/2023** - melhorado e otimizado, levei o script pra puxar as infos por .lua / creatureScripts

      vou disponibilizar o code aqui, e o que fazer pra determinada area não contar frag.

      SOURCE OTX 2 / TFS 0.x, Funciona em TFS 1.x mudando as tags e ajeitando as sintaxes.

      vá em creatureevent.cpp

      procure por:
      else if(type == "preparedeath") _type = CREATURE_EVENT_PREPAREDEATH;
      Adiciona abaixo:
      else if(type == "nocountfrag") _type = CREATURE_EVENT_NOCOUNTFRAG;

      procure por:
      case CREATURE_EVENT_PREPAREDEATH: return "onPrepareDeath";  
      Adicione abaixo: 
      case CREATURE_EVENT_NOCOUNTFRAG: return "noCountFragArea";

      procure por:
      case CREATURE_EVENT_PREPAREDEATH: return "cid, deathList";
      Adicione abaixo:
      case CREATURE_EVENT_NOCOUNTFRAG: return "cid, target";

      agora no mesmo arquivo, vá até o final do arquivo e adicione essa função:
      uint32_t CreatureEvent::executeNoCountFragArea(Creature* creature, Creature* target) { //noCountFragArea(cid, target) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(creature->getPosition()); std::ostringstream scriptstream; scriptstream << "local cid = " << env->addThing(creature) << std::endl; scriptstream << "local target = " << env->addThing(target) << std::endl; if(m_scriptData) scriptstream << *m_scriptData; bool result = true; if(m_interface->loadBuffer(scriptstream.str())) { lua_State* L = m_interface->getState(); result = m_interface->getGlobalBool(L, "_result", true); } m_interface->releaseEnv(); return result; } else { #ifdef __DEBUG_LUASCRIPTS__ std::ostringstream desc; desc << creature->getName(); env->setEvent(desc.str()); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(creature->getPosition()); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(creature)); lua_pushnumber(L, env->addThing(target)); bool result = m_interface->callFunction(2); m_interface->releaseEnv(); return result; } } else { std::clog << "[Error - CreatureEvent::noCountFragArea] Call stack overflow." << std::endl; return 0; } }

      agora vá em creatureevent.h

      procure por:
      CREATURE_EVENT_PREPAREDEATH
      adicione abaixo:
      CREATURE_EVENT_NOCOUNTFRAG

      procure por:
      uint32_t executePrepareDeath(Creature* creature, DeathList deathList);
      Adicione abaixo:
      uint32_t executeNoCountFragArea(Creature* creature, Creature* target);

      agora vá em player.cpp

      procure por:
      bool Player::onKilledCreature(Creature* target, DeathEntry& entry)
      abaixo de:
      War_t enemy; if(targetPlayer->getEnemy(this, enemy)) { if(entry.isLast()) IOGuild::getInstance()->updateWar(enemy); entry.setWar(enemy); }
      Adicione o seguinte código:
      if (targetPlayer){ CreatureEventList killEvents = getCreatureEvents(CREATURE_EVENT_NOCOUNTFRAG); for (const auto &event : killEvents) { if (!event->executeNoCountFragArea(this, target)) { return true; } } }

      //

      Feito isso, tudo completo na sua source, agora é necessário adicionar o creaturescript dentro do servidor

      vá até creaturescripts/scripts
      crie um arquivo chamado, "noCountFragInArea.lua"
      e dentro dele cole o código:
       
      --[[ script feito por feetads / TibiaKing ]]-- --[[ discord: feetads / FeeTads#0246 ]]-- -- Add positions here for which you do not want to count frags local areas = { [1] = {from = {x = 91, y = 122, z = 7}, to = {x = 98, y = 127, z = 7}}, -- from = area superior esquerda / to = area inferior direita (formando um quadrado) } local onlyKillerInArea = false -- only killer need to be in area? function noCountFragArea(cid, target) if not isCreature(cid) or not isCreature(target) then return true end local posKiller = getPlayerPosition(cid) local posTarget = getPlayerPosition(target) for i = 1, #areas do local area = areas[i] if isInArea(posKiller, area.from, area.to) then if onlyKillerInArea then return false elseif isInArea(posTarget, area.from, area.to) then return false end end end return true end
      agora em creaturescripts.xml
      <event type="nocountfrag" name="fragarea" event="script" value="noCountFragInArea.lua"/>
      agora em creaturescripts/scripts/login.lua
       procure por OU semelhante a esse:
      registerCreatureEvent(cid, "AdvanceSave")
      e abaixo adicione:
      registerCreatureEvent(cid, "fragarea")

      //


      Agora tudo certo, quando quiser adiciona uma area que não pega frag, vá até o script e apenas coloque a area, igual o demonstrado no script

      Exemplo:
      local areas = { [1] = {from = {x = 91, y = 122, z = 7}, to = {x = 98, y = 127, z = 7}}, [2] = {from = {x = 1000, y = 1000, z = 7}, to = {x = 1100, y = 1100, z = 7}}, }
      assim somente colocando a area no script e abrindo o server ou dando /reload, já funcionará a area como não pegar frag.
      Esse sistema pode ser bom pra areas de pvp ativo, onde você ainda quer que o player que morrer perca os atributos, como se fosse uma morte normal, porém não conta frag pra quem matar.
      Bom pra sistemas tipo castle 48h (guild war), onde há diversas mortes e risco de pegar red, atrapalhando a war.

      Façam bom proveito dos scripts, e deixem os créditos no script rsrs

      **Eu fiz as alterações e o simples código por isso vim disponibilizar, créditos meus**
    • Por Thiagodsw
      Olá galera do Tibia King !
      Venho por meio deste tópico, publicar a ultima versão do meu servidor derivado de Tibia NTO Battle.
       
      deixei para brincarem e verem sistemas, as sources não disponibilizarei nem o site. afinal é um projeto que fiz com carinho e está a venda as sources. Thogo#9713
       
      O que tem de diferente no NTO Battle ? 
       
      Aura System e Wings Healthbar Monster Bar Healthbar vocation Sistema Raridade Shaders Dungeons e Tasks Game Shop Entre outros Veja algumas Imagens !
       
       
      O que tem nesse Pacote de Arquivos NTO Battle? 
       
      Datapack mais recente e completa do servidor. ( compilada pra windows Client Compilado SQL
      ACC GOD - god/god


      QUALQUER MSG NO DISCORD Thogo#9713
      -source client e otserv e site.
       
      DOWNLOAD  &  SCAN


       
      Client:
      https://mega.nz/file/hbgnSDRJ#xQT-qQHWLUV2Dn8jalwMGblCWnmL0_s3rZfqbxO7znw
      Server:
      https://mega.nz/file/sSZXlZ6a#gow-Db6diNVrnnPIH7qyBqP8WmVLFxWy85-yub_f32Y


       
      Scan
      Client
      https://www.virustotal.com/gui/file/86da72135d75d826c2665bb572084c30288eea843c2cfe2f7a405cfe1ea2f59c/detection
      Servidor
      https://www.virustotal.com/gui/file/cfa4d83c8b6c12fa0daf28cefd6762a053aee7245e6be8f5c02594825a2e2c1e?nocache=1
    • Por ILex WilL
      Olá, Alguém poderia me ajudar com uns Scripts? nem que seja cobrando, dependendo eu pago para me ajudar...
    • Por Kill of sumoners
      Boa noite, estou com um erro ao atacar um player em meu sv eu nao pego pk, nem sai magia, aparece a mensagem "voce so pode usar isso em criaturas"
      obs: magia em area acerta e pega pk, apenas as targets ou hits de arma nao vao 
    • Por Ocrux
      Procuro equipe pra abrir um OT Rookgaard. 
      To terminando o mapa, acho que ta bonito e pouco grandinho.
       
      RookSmart
      Continente único, na base de Rookgaard & com cidades de referencias as do Tibia.
      Por hora tem 4 cidades Prontas: Rookgaard, Carlore, Liadahar e Akuahmun.
      Estou terminando a 5ª cidade: Dahlia (de gelo) & já to achando uma boa ideia colocar Roshamuul (já providenciei).
      O servidor ta em TFS 0.4, com sources & na versão 8.6 (creio eu que parado no tempo).
       
      Quem quiser formar uma equipe pra botar on & terminar o que falta, whatsapp: 15 935001689

      Mapa Mundi
       
       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo