Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Ola amigo. deu certo sim tanto o site quanto o rme.

só que ta acontecendo o seguinte quando o player desloga nao ta salvando nada e ta dando ums erros no distro.

sabe o que poderia ser???

tenta mudar de distro

VENHAM JOGAR O MELHOR BAIAK JÁ CRIADO DE 2022!!

 

CRIE SUA CONTA AGORA MESMO!

 

www.baiakudo.com

Link para o post
Compartilhar em outros sites
  • Respostas 126
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Eae Galera do     TibiaKing        É o seguinte Hoje trago a vocês o Baiak Rox Editado por Min Espero que Gostem         Oque eu Fiz ?        | Novo Visual do Templo  Totalmente ICE  | Critical

Hey amigo, me desculpa duplicar a resposta aqui no tópico, mas, você poderia me ajudar em uma coisa? Eu queria saber como que eu dou donate para um player... Pode me ajudar? Agradeço desde já.     

Ótimo ot!!! Ganhou meu REP, continue assim.     

Posted Images

Otimo ot parabéns , mas descobri alguns bugs e erros 

 

*Bug Master Armor - Giant Spider Localizado No Tp De Dwarven

*Bug Vip 2 - Ponte Pz

*Reformulação Vip Poi - Vip Helmet Melhor Que Master Helmet , Dando Super Soft (Boots Donate)

*Dodge & Critical - Dodge Só Tem Limite Até 51 , Critical Tem Ate 100 , As Vezes Buga e Da Para Adiquirir Varios Skill Usando Apenas Uma Pedra , Fora Que o Systema Não Ta Funcionando Realmente

*Account Manager - Ao Criar Uma Account e Desloga Pra Criar Character Da Password Incorreto

*Tomorrow Cap - Da Para Usar Em Todas Vocações , Fora Que Da Pra Usar No Lugar Do Shild , Armor e Flecha

*Master Itens Hero Itens - Master Itens Não Dão Skill : Master Armor, Master Sword, Master SlingShot, Master Club, Master Axe, Master Set Mage, Hero Set Ek e Mage

*Master Set Hero Set - Da Para Usar Em Qualquer Vocação

*Castle War - Não Ta Avisando Sobre Os Invasores

 

fiz isso para lhe ajudar , caso fiz algo errado desculpe-me sou novato no forum não era minha intenção , mas ta show o ot vlw

Link para o post
Compartilhar em outros sites

Otimo ot parabéns , mas descobri alguns bugs e erros 

 

*Bug Master Armor - Giant Spider Localizado No Tp De Dwarven

*Bug Vip 2 - Ponte Pz

*Reformulação Vip Poi - Vip Helmet Melhor Que Master Helmet , Dando Super Soft (Boots Donate)

*Dodge & Critical - Dodge Só Tem Limite Até 51 , Critical Tem Ate 100 , As Vezes Buga e Da Para Adiquirir Varios Skill Usando Apenas Uma Pedra , Fora Que o Systema Não Ta Funcionando Realmente

*Account Manager - Ao Criar Uma Account e Desloga Pra Criar Character Da Password Incorreto

*Tomorrow Cap - Da Para Usar Em Todas Vocações , Fora Que Da Pra Usar No Lugar Do Shild , Armor e Flecha

*Master Itens Hero Itens - Master Itens Não Dão Skill : Master Armor, Master Sword, Master SlingShot, Master Club, Master Axe, Master Set Mage, Hero Set Ek e Mage

*Master Set Hero Set - Da Para Usar Em Qualquer Vocação

*Castle War - Não Ta Avisando Sobre Os Invasores

 

fiz isso para lhe ajudar , caso fiz algo errado desculpe-me sou novato no forum não era minha intenção , mas ta show o ot vlw

obrigado por reportar próxima atualização vou arruma-los

alguns destes "bugs" não são bugs basta apenas prestar atenção

 

#Edit são erros básicos e facil de arrumar você mesmo pode arruma-los

e aconselho usar mysql

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

VENHAM JOGAR O MELHOR BAIAK JÁ CRIADO DE 2022!!

 

CRIE SUA CONTA AGORA MESMO!

 

www.baiakudo.com

Link para o post
Compartilhar em outros sites

outro erro,quando alguem tem guild,e matam o mesmo,ele buga não consegue se meche,desloga,e ficando saindo Owned!

Que Ajuda? Me Contate.

Sou:

Programador

Script

Mapper

WebMaster

WebDesigner

E Muito Mais ;D 

 

Você tem o direito de falar o que pensa
Mas não tem o direito de julgar quem não conhece
Liberdade de expressão é um direito de todos
Mas em vez de falar, então faça algo que preste

 

~Charlie Brown Jr

Link para o post
Compartilhar em outros sites

outro erro,quando alguem tem guild,e matam o mesmo,ele buga não consegue se meche,desloga,e ficando saindo Owned!

tenta executar estas query no banco de dados

ALTER TABLE `guilds` ADD `frags` INT(11) NOT NULL DEFAULT 0;

ALTER TABLE `guilds` ADD `acesstime` INT(15) NOT NULL DEFAULT 0;

VENHAM JOGAR O MELHOR BAIAK JÁ CRIADO DE 2022!!

 

CRIE SUA CONTA AGORA MESMO!

 

www.baiakudo.com

Link para o post
Compartilhar em outros sites

como faço para remover o reset system ou pelomenos remover o comando !reset. ajuda pf.

Link para o post
Compartilhar em outros sites

tenta executar estas query no banco de dados

ALTER TABLE `guilds` ADD `frags` INT(11) NOT NULL DEFAULT 0;

ALTER TABLE `guilds` ADD `acesstime` INT(15) NOT NULL DEFAULT 0;

eu to usando sqlite tem problema??

@edit

onde eu acho uma database mysql pra esse server?

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

Que Ajuda? Me Contate.

Sou:

Programador

Script

Mapper

WebMaster

WebDesigner

E Muito Mais ;D 

 

Você tem o direito de falar o que pensa
Mas não tem o direito de julgar quem não conhece
Liberdade de expressão é um direito de todos
Mas em vez de falar, então faça algo que preste

 

~Charlie Brown Jr

Link para o post
Compartilhar em outros sites

eu to usando sqlite tem problema??

@edit

onde eu acho uma database mysql pra esse server?

nao tem problema 

pegue do baiak rox original

VENHAM JOGAR O MELHOR BAIAK JÁ CRIADO DE 2022!!

 

CRIE SUA CONTA AGORA MESMO!

 

www.baiakudo.com

Link para o post
Compartilhar em outros sites

@DeathRocks, não ta dando pra acessar a área do player com 4 reset,tem jogador com + de 15 resets e ainda não conseguiram entrar lá... 

Que Ajuda? Me Contate.

Sou:

Programador

Script

Mapper

WebMaster

WebDesigner

E Muito Mais ;D 

 

Você tem o direito de falar o que pensa
Mas não tem o direito de julgar quem não conhece
Liberdade de expressão é um direito de todos
Mas em vez de falar, então faça algo que preste

 

~Charlie Brown Jr

Link para o post
Compartilhar em outros sites

@DeathRocks, não ta dando pra acessar a área do player com 4 reset,tem jogador com + de 15 resets e ainda não conseguiram entrar lá... 

confere este topico

http://www.tibiaking.com/forum/topic/19325-mod-reset-system/

VENHAM JOGAR O MELHOR BAIAK JÁ CRIADO DE 2022!!

 

CRIE SUA CONTA AGORA MESMO!

 

www.baiakudo.com

Link para o post
Compartilhar em outros sites

cara eu to falando que não importa o reset que o player tenha ele n consegue entra aki

nwclMgO.png

Que Ajuda? Me Contate.

Sou:

Programador

Script

Mapper

WebMaster

WebDesigner

E Muito Mais ;D 

 

Você tem o direito de falar o que pensa
Mas não tem o direito de julgar quem não conhece
Liberdade de expressão é um direito de todos
Mas em vez de falar, então faça algo que preste

 

~Charlie Brown Jr

Link para o post
Compartilhar em outros sites

cara eu to falando que não importa o reset que o player tenha ele n consegue entra aki

nwclMgO.png

conferiu o script e a porta ?

VENHAM JOGAR O MELHOR BAIAK JÁ CRIADO DE 2022!!

 

CRIE SUA CONTA AGORA MESMO!

 

www.baiakudo.com

Link para o post
Compartilhar em outros sites

conferiu o script e a porta ?

o script da porta eu não achei nos actions,nem moviments em lugar nenhum...

@edit

script

<?xml version="1.0" encoding="UTF-8"?>
<mod name="Reset System" version="1.0" author="Kimoszin" contact="tibiaking.com" enabled="yes">
 
    <!-- Configuracao -->
        <config name="reset_config"><![CDATA[
                config = {
                        level = 300,                      -- Level minimo para resetar
                        premium = false,         -- Precisa de premium, sim = true, nao = false
                        storage = 54676,
                }
 
                function reset(cid)
                        if (config.premium and not(isPremium(cid)) ) then
                                return doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You need have a premium account.")
                        end
 
                        if (getPlayerLevel(cid) < config.level) then
                                return doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You must be at least level "..config.level..".")
                        end
 
                        if not(getTilePzInfo(getCreaturePosition(cid))) then
                                return doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You must be in protect zone.")
                        end
                       
                        doPlayerAddLevel(cid, - (getPlayerLevel(cid) - 8))
                        doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_GREEN)
                        doCreatureSetStorage(cid, config.storage, getResets(cid))
                        return doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Congratulations, you have been reset. Now you have "..getResets(cid).." resets.")
                end
 
                function getResets(cid)
                        return (isPlayer(cid) and getCreatureStorage(cid, config.storage) + 1)
                end
        ]]></config>
 
        <!-- Talkaction para resetar -->
        <talkaction words="!reset" event="buffer"><![CDATA[
                domodlib('reset_config')
                reset(cid)
        ]]></talkaction>
 
        <!-- Talkaction para ver quantos resets tem -->
        <talkaction words="!myresets" event="buffer"><![CDATA[
                domodlib('reset_config')
                return doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You have "..getResets(cid).." resets.")
        ]]></talkaction>
 
        <!-- Tile -->
        <movevent type="StepIn" actionid="9991" event="script"><![CDATA[
                domodlib('reset_config')
                function onStepIn(cid, item, position, fromPosition)
                        local minResets = 1
 
                        if (not(getResets(cid) >= minResets)) then
                                doPlayerSendCancel(cid, "Sorry, you need "..minResets.." resets")
                                return doTeleportThing(cid, fromPosition)
                        end
 
                        doPlayerSendCancel(cid, "Welcome")
                end
        ]]></movevent>
 
        <!-- Porta -->
        <action actionid="9990" event="script"><![CDATA[
                domodlib('reset_config')
                function onUse(cid, item, position, fromPosition)
                        local minResets = 4
 
                        if not(getResets(cid) >= minResets) then
                                return doPlayerSendCancel(cid, "Desculpa,voce presisa de "..minResets.." resets")
                        end
 
                        doPlayerSendCancel(cid, "Bem Vindo")
                end
        ]]></action>
</mod>

erro

X3HXqyV.png

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

Que Ajuda? Me Contate.

Sou:

Programador

Script

Mapper

WebMaster

WebDesigner

E Muito Mais ;D 

 

Você tem o direito de falar o que pensa
Mas não tem o direito de julgar quem não conhece
Liberdade de expressão é um direito de todos
Mas em vez de falar, então faça algo que preste

 

~Charlie Brown Jr

Link para o post
Compartilhar em outros sites

 

o script da porta eu não achei nos actions,nem moviments em lugar nenhum...

@edit

script

<?xml version="1.0" encoding="UTF-8"?>
<mod name="Reset System" version="1.0" author="Kimoszin" contact="tibiaking.com" enabled="yes">
 
    <!-- Configuracao -->
        <config name="reset_config"><![CDATA[
                config = {
                        level = 300,                      -- Level minimo para resetar
                        premium = false,         -- Precisa de premium, sim = true, nao = false
                        storage = 54676,
                }
 
                function reset(cid)
                        if (config.premium and not(isPremium(cid)) ) then
                                return doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You need have a premium account.")
                        end
 
                        if (getPlayerLevel(cid) < config.level) then
                                return doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You must be at least level "..config.level..".")
                        end
 
                        if not(getTilePzInfo(getCreaturePosition(cid))) then
                                return doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You must be in protect zone.")
                        end
                       
                        doPlayerAddLevel(cid, - (getPlayerLevel(cid) - 8))
                        doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_GREEN)
                        doCreatureSetStorage(cid, config.storage, getResets(cid))
                        return doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Congratulations, you have been reset. Now you have "..getResets(cid).." resets.")
                end
 
                function getResets(cid)
                        return (isPlayer(cid) and getCreatureStorage(cid, config.storage) + 1)
                end
        ]]></config>
 
        <!-- Talkaction para resetar -->
        <talkaction words="!reset" event="buffer"><![CDATA[
                domodlib('reset_config')
                reset(cid)
        ]]></talkaction>
 
        <!-- Talkaction para ver quantos resets tem -->
        <talkaction words="!myresets" event="buffer"><![CDATA[
                domodlib('reset_config')
                return doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You have "..getResets(cid).." resets.")
        ]]></talkaction>
 
        <!-- Tile -->
        <movevent type="StepIn" actionid="9991" event="script"><![CDATA[
                domodlib('reset_config')
                function onStepIn(cid, item, position, fromPosition)
                        local minResets = 1
 
                        if (not(getResets(cid) >= minResets)) then
                                doPlayerSendCancel(cid, "Sorry, you need "..minResets.." resets")
                                return doTeleportThing(cid, fromPosition)
                        end
 
                        doPlayerSendCancel(cid, "Welcome")
                end
        ]]></movevent>
 
        <!-- Porta -->
        <action actionid="9990" event="script"><![CDATA[
                domodlib('reset_config')
                function onUse(cid, item, position, fromPosition)
                        local minResets = 4
 
                        if not(getResets(cid) >= minResets) then
                                return doPlayerSendCancel(cid, "Desculpa,voce presisa de "..minResets.." resets")
                        end
 
                        doPlayerSendCancel(cid, "Bem Vindo")
                end
        ]]></action>
</mod>

erro

X3HXqyV.png

 

mais aparece em baixo a mensagem

2º da lock na porta com o adm...

e ve se em action ID esta 9990

VENHAM JOGAR O MELHOR BAIAK JÁ CRIADO DE 2022!!

 

CRIE SUA CONTA AGORA MESMO!

 

www.baiakudo.com

Link para o post
Compartilhar em outros sites

Reset system funcionando 100%? 

Ajudei??? Rep + ae! :D

gtYFjO8.gif

 

1iiu7Gw.png

Facebook: Béria Alternative Server

Link para o post
Compartilhar em outros sites

Reset system funcionando 100%? 

funcionando ta unico problema é a porta que não abre...

 

@EDIT: tire a porta e coloca no chão e não esqueça do ActionID 9991 e UniqueID 9991

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

VENHAM JOGAR O MELHOR BAIAK JÁ CRIADO DE 2022!!

 

CRIE SUA CONTA AGORA MESMO!

 

www.baiakudo.com

Link para o post
Compartilhar em outros sites

Blz, eu não consigo abrir meu OT com IP Fixo! eu boto o IP da maquina no .lua ele entra normal mas n entra cm o Fixo, e se eu boto o Fixo ele dá o seguinte erro no Console: "ERROR: Cannot resolve baiak24horas.no-ip.info!"

Erro de distro? Já desativei Firewall, reeniciei Cloud e os krl! :c

Ajudei??? Rep + ae! :D

gtYFjO8.gif

 

1iiu7Gw.png

Facebook: Béria Alternative Server

Link para o post
Compartilhar em outros sites

@DeathRocks  o sistema blatefild funciona corretamente ? 

sim 

VENHAM JOGAR O MELHOR BAIAK JÁ CRIADO DE 2022!!

 

CRIE SUA CONTA AGORA MESMO!

 

www.baiakudo.com

Link para o post
Compartilhar em outros sites

Não consigo usar o Mysql! Não está importando para o banco de dados as schemas! Tens como me passar?

Ajudei??? Rep + ae! :D

gtYFjO8.gif

 

1iiu7Gw.png

Facebook: Béria Alternative Server

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 L3K0T
      Se você está enfrentando o problema de jogadores ganhando experiência ao matar outros jogadores em um servidor PVP, e já tentou várias soluções sem sucesso, este tutorial vai te ajudar a resolver isso. A modificação que vou mostrar foi eficaz para mim e pode ser a solução para o seu servidor também.
       
      Passo 1: Acesse o arquivo creature.cpp
      Primeiro, abra o arquivo creature.cpp, que está localizado na pasta src ou sources do seu servidor. Esse arquivo contém a lógica das criaturas, incluindo a parte de quando um jogador mata outra criatura.
       
      Passo 2: Localize o  onAttackedCreatureKilled
      Dentro do arquivo, procure pela função onAttackedCreatureKilled:
       
      void Creature::onAttackedCreatureKilled(Creature* target) { if(target == this) return; double gainExp = target->getGainedExperience(this); onGainExperience(gainExp, !target->getPlayer(), false); }  
      Altere para
       
      void Creature::onAttackedCreatureKilled(Creature* target) { if (target == this) return; // Verifica se o atacante e o alvo são jogadores Player* attackerPlayer = this->getPlayer(); Player* targetPlayer = target->getPlayer(); if (attackerPlayer && targetPlayer) return; if (!attackerPlayer && targetPlayer) { double gainExp = target->getGainedExperience(this); onGainExperience(gainExp, !target->getPlayer(), false); } else if (attackerPlayer) { double gainExp = target->getGainedExperience(this); onGainExperience(gainExp, true, false); } }  
      Agora Recompile modo Rebuilder (LIMPA) e pronto!!!
       
      Aqui está o que mudou:
      *A primeira modificação verifica se o atacante e o alvo são jogadores. Se ambos forem jogadores, não será concedida experiência.
      *Se o atacante for um monstro, a experiência será concedida normalmente ao jogador.
      *Se o atacante for um jogador, ele ganhará a experiência normalmente.
       
      Créditos @L3K0T
    • Por Emooooo
      gostaria de um sistema em que o player usar um item nele, e quando ele bater no monstro ou outro player ele enchesse um pouco da mana e do life por porcentagem do dano causado, e com tempo de duração de duas horas depois tem que usar o item novamente.
      tfs 0.3.6
       
       
      +rep
    • Por L3K0T
      Sistema de Drop Personalizado
       
      Esse sistema de loot foi projetado para adicionar um elemento de sorte e surpresa ao derrotar monstros. Sempre que um jogador derrota um monstro, há uma chance configurada para que ele solte entre 1 a 3 itens especiais, garantindo recompensas valiosas ao jogador.
       
      O sistema realiza as seguintes ações:
      Chance de Drop: A cada morte de um monstro, há uma chance configurada para dropar itens específicos. O sistema permite que sejam dropados entre 1 a 3 unidades do item, tornando o sistema mais dinâmico.
       
      Efeito Visual: Quando o loot é bem-sucedido, um efeito visual especial (ID 231) é exibido na posição exata onde o monstro foi derrotado, criando uma animação visual que destaca a recompensa.
       
      Notificação ao Jogador: Após o drop, o jogador recebe uma mensagem personalizada informando a quantidade de itens obtidos. Essa notificação aparece após 3 segundos, adicionando uma camada de imersão e evitando sobrecarregar o chat imediatamente após a morte do monstro.
       
      *Ótimo para fazer eventos de dropar certo itens para alguma missão ou resgates.
      *Uso no meu TIBIA HARRY POTTER ORIGIN
       
      VAi em creaturescripts/scripts.lua
      local function findCorpse(position) for i = 1, 255 do position.stackpos = i local corpse = getThingfromPos(position) if isCorpse(corpse.uid) then return corpse.uid end end return false end local function dropLoot(position, killer) local corpse = findCorpse(position) if not corpse then return false end local itemId = 2160 local chance = 23 if math.random(100) <= chance then local amountToDrop = math.random(1, 3) doAddContainerItem(corpse, itemId, amountToDrop) local corpsePosition = getThingPos(corpse) doSendMagicEffect(corpsePosition, 7) local function sendMessage() if isPlayer(killer) then local message = string.format("Você dropou %d Crystal Coin(s).", amountToDrop) doPlayerSendTextMessage(killer, MESSAGE_INFO_DESCR, message) end end addEvent(sendMessage, 2500) end return true end function onKill(cid, target) local position = getCreaturePosition(target) addEvent(dropLoot, 100, position, cid) return true end  
      creaturescripts.xml
      <event type="kill" name="GlobalDrops" registerTo ="GlobalDrops" event="script" value="globalDrops.lua"/> ou depende do tfs
      <event type="kill" name="GlobalDrops" event="script" value="globalDrops.lua"/>  
      Para ambos TFS registra o evento no login.lua
      registerTo ="GlobalDrops"
      feito isso.. agora todos os monstros do mapa vai cair os crystal coins de 1 há 3.
    • Por L3K0T
      TUTORIAL BY L3K0T PT~EN
       
      Olá pessoal, trago a vocês uma atualização que fiz no sistema, contendo 3 novas funcionalidades de movimentação de itens e uma proteção contra Elf Bot. Estas adições foram cuidadosamente implementadas para aperfeiçoar a experiência de jogo e manter a integridade do seu servidor.
      As novas funcionalidades têm a função vital de impedir que jogadores deixem itens indesejados em locais inapropriados, como na entrada de sua casa, em cima de seus depósitos ou em teleportes. Agora, apenas proprietários, subproprietários e convidados têm permissão para manipular itens nesses locais.
      Este pacote de atualização foi meticulosamente revisado para evitar abusos por parte de jogadores mal-intencionados e garantir um ambiente de jogo justo e equilibrado para todos os usuários.
       
       
       
      Iniciando o Tutorial
      1Abra o arquivo "creatureevents.cpp" com o editor de sua preferência. Eu pessoalmente recomendo o Notepad++. 
       
       
      Em creatureevents.cpp:
      return "onPrepareDeath"; Adicione abaixo:
      case CREATURE_EVENT_MOVEITEM: return "onMoveItem"; case CREATURE_EVENT_MOVEITEM2: return "onMoveItem2";  
      Em:
      return "cid, deathList"; Adicione abaixo:
      case CREATURE_EVENT_MOVEITEM: return "moveItem, frompos, topos, cid"; case CREATURE_EVENT_MOVEITEM2: return "cid, item, count, toContainer, fromContainer, fromPos, toPos";  
      Em:
      m_type = CREATURE_EVENT_PREPAREDEATH; Adicione abaixo:
      else if(tmpStr == "moveitem") m_type = CREATURE_EVENT_MOVEITEM; else if(tmpStr == "moveitem2") m_type = CREATURE_EVENT_MOVEITEM2;  
      Procure por:
      bool CreatureEvents::playerLogout(Player* player, bool forceLogout) { //fire global event if is registered bool result = true; for(CreatureEventList::iterator it = m_creatureEvents.begin(); it != m_creatureEvents.end(); ++it) { if((*it)->getEventType() == CREATURE_EVENT_LOGOUT && (*it)->isLoaded() && !(*it)->executeLogout(player, forceLogout) && result) result = false; } return result; } Adicione abaixo:
      uint32_t CreatureEvents::executeMoveItems(Creature* actor, Item* item, const Position& frompos, const Position& pos) { // fire global event if is registered for(CreatureEventList::iterator it = m_creatureEvents.begin(); it != m_creatureEvents.end(); ++it) { if((*it)->getEventType() == CREATURE_EVENT_MOVEITEM) { if(!(*it)->executeMoveItem(actor, item, frompos, pos)) return 0; } } return 1; }  
      Em:
      bool CreatureEvents::playerLogin(Player* player) { //fire global event if is registered bool result = true; for(CreatureEventList::iterator it = m_creatureEvents.begin(); it != m_creatureEvents.end(); ++it) { if((*it)->getEventType() == CREATURE_EVENT_LOGIN && (*it)->isLoaded() && !(*it)->executeLogin(player) && result) result = false; } if (result) { for(CreatureEventList::iterator it = m_creatureEvents.begin(); it != m_creatureEvents.end(); ++it) { CreatureEvent* event = *it; if(event->isLoaded() && ( event->getRegister() == "player" || event->getRegister() == "all") ) player->registerCreatureEvent(event->getName()); } } return result; } Adicione Abaixo:
      uint32_t CreatureEvent::executeMoveItem(Creature* actor, Item* item, const Position& frompos, const Position& pos) { //onMoveItem(moveItem, frompos, position, cid) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(pos); std::stringstream scriptstream; env->streamThing(scriptstream, "moveItem", item, env->addThing(item)); env->streamPosition(scriptstream, "position", frompos, 0); env->streamPosition(scriptstream, "position", pos, 0); scriptstream << "local cid = " << env->addThing(actor) << std::endl; 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__ char desc[35]; sprintf(desc, "%s", player->getName().c_str()); env->setEventDesc(desc); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(pos); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); LuaInterface::pushThing(L, item, env->addThing(item)); LuaInterface::pushPosition(L, frompos, 0); LuaInterface::pushPosition(L, pos, 0); lua_pushnumber(L, env->addThing(actor)); bool result = m_interface->callFunction(4); m_interface->releaseEnv(); return result; } } else { std::clog << "[Error - CreatureEvent::executeMoveItem] Call stack overflow." << std::endl; return 0; } } uint32_t CreatureEvent::executeMoveItem2(Player* player, Item* item, uint8_t count, const Position& fromPos, const Position& toPos, Item* toContainer, Item* fromContainer, int16_t fstack) { //onMoveItem2(cid, item, count, toContainer, fromContainer, fromPos, toPos) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(player->getPosition()); std::stringstream scriptstream; scriptstream << "local cid = " << env->addThing(player) << std::endl; env->streamThing(scriptstream, "item", item, env->addThing(item)); scriptstream << "local count = " << count << std::endl; env->streamThing(scriptstream, "toContainer", toContainer, env->addThing(toContainer)); env->streamThing(scriptstream, "fromContainer", fromContainer, env->addThing(fromContainer)); env->streamPosition(scriptstream, "fromPos", fromPos, fstack); env->streamPosition(scriptstream, "toPos", toPos, 0); 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__ char desc[30]; sprintf(desc, "%s", player->getName().c_str()); env->setEvent(desc); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(player->getPosition()); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(player)); LuaInterface::pushThing(L, item, env->addThing(item)); lua_pushnumber(L, count); LuaInterface::pushThing(L, toContainer, env->addThing(toContainer)); LuaInterface::pushThing(L, fromContainer, env->addThing(fromContainer)); LuaInterface::pushPosition(L, fromPos, fstack); LuaInterface::pushPosition(L, toPos, 0); //lua_pushnumber(L, env->addThing(actor)); bool result = m_interface->callFunction(7); m_interface->releaseEnv(); return result; } } else { std::clog << "[Error - CreatureEvent::executeMoveItem] Call stack overflow." << std::endl; return 0; } }  
       
       
      Agora em em creatureevents.h:
      CREATURE_EVENT_PREPAREDEATH, Adicione abaixo:
      CREATURE_EVENT_MOVEITEM, CREATURE_EVENT_MOVEITEM2  
      Em:
      uint32_t executePrepareDeath(Creature* creature, DeathList deathList); Adicione abaixo:
      uint32_t executeMoveItem(Creature* actor, Item* item, const Position& frompos, const Position& pos); uint32_t executeMoveItem2(Player* player, Item* item, uint8_t count, const Position& fromPos, const Position& toPos, Item* toContainer, Item* fromContainer, int16_t fstack);  
      Em:
      bool playerLogout(Player* player, bool forceLogout); Abaixo adicone também
      uint32_t executeMoveItems(Creature* actor, Item* item, const Position& frompos, const Position& pos); uint32_t executeMoveItem2(Player* player, Item* item, uint8_t count, const Position& fromPos, const Position& toPos, Item* toContainer, Item* fromContainer, int16_t fstack);  
       
      Agora em em game.cpp:
      if(!canThrowObjectTo(mapFromPos, mapToPos) && !player->hasCustomFlag(PlayerCustomFlag_CanThrowAnywhere)) { player->sendCancelMessage(RET_CANNOTTHROW); return false; } ReturnValue ret = internalMoveItem(player, fromCylinder, toCylinder, toIndex, item, count, NULL); if(ret == RET_NOERROR) return true; player->sendCancelMessage(ret); return false; } Altere para:
      if (!canThrowObjectTo(mapFromPos, mapToPos) && !player->hasCustomFlag(PlayerCustomFlag_CanThrowAnywhere)) { player->sendCancelMessage(RET_CANNOTTHROW); return false; } bool success = true; CreatureEventList moveitemEvents = player->getCreatureEvents(CREATURE_EVENT_MOVEITEM2); for (CreatureEventList::iterator it = moveitemEvents.begin(); it != moveitemEvents.end(); ++it) { Item* toContainer = toCylinder->getItem(); Item* fromContainer = fromCylinder->getItem(); if (!(*it)->executeMoveItem2(player, item, count, fromPos, toPos, (toContainer ? toContainer : 0), (fromContainer ? fromContainer : 0), fromStackpos) && success) success = false; } if (!success) return false; if (g_config.getBool(ConfigManager::ANTI_PUSH)) { std::string antiPushItems = g_config.getString(ConfigManager::ANTI_PUSH_ITEMS); IntegerVec tmpVec = vectorAtoi(explodeString(antiPushItems, ",")); if (tmpVec[0] != 0) { for (IntegerVec::iterator it = tmpVec.begin(); it != tmpVec.end(); ++it) { if (item->getID() == uint32_t(*it) && player->hasCondition(CONDITION_EXHAUST, 1)) { player->sendTextMessage(MSG_STATUS_SMALL, "Please wait a few seconds to move this item."); return false; } } } } int32_t delay = g_config.getNumber(ConfigManager::ANTI_PUSH_DELAY); if (Condition* condition = Condition::createCondition(CONDITIONID_DEFAULT, CONDITION_EXHAUST, delay, 0, false, 1)) player->addCondition(condition); if (!g_creatureEvents->executeMoveItems(player, item, mapFromPos, mapToPos)) return false; ReturnValue ret = internalMoveItem(player, fromCylinder, toCylinder, toIndex, item, count, NULL); if (ret != RET_NOERROR) { player->sendCancelMessage(ret); return false; } player->setNextAction(OTSYS_TIME() + g_config.getNumber(ConfigManager::ACTIONS_DELAY_INTERVAL) - 10); return true; }  
      Agora em configmanager.h
      ADMIN_ENCRYPTION_DATA Adicione abaixo:
      ANTI_PUSH_ITEMS,  
      em:
      STAMINA_DESTROY_LOOT, Adicione abaixo:
      ANTI_PUSH_DELAY,  
      em:
      ADDONS_PREMIUM, Adicione abaixo:
      ANTI_PUSH  
      Agora você pode compilar a Source.
       
       
      Configurando no servidor:
       
      Abra seu config.lua do servidor e adicione isso dentro qualquer lugar:
      -- Anti-Push useAntiPush = true antiPushItems = "2148,2152,2160,3976" antiPushDelay = 500  
       
      Navegue até o diretório 'creaturescripts' e localize o arquivo 'login.lua'.
      em resgistros de eventos adicione:
      login.lua
      registerCreatureEvent(cid, "MoveItem") registerCreatureEvent(cid, "MoveItem2")  
      Agora abra o aquivo creaturescript .xml
      <event type="moveitem" name="MoveItem" event="script" value="houseprotecao.lua"/> <event type="moveitem2" name="MoveItem2" event="script" value="moveitem2.lua"/>  
      Crie um novo arquivo lua em scripts com o nome houseprotecao.lua e adicione isso:
      function onMoveItem(moveItem, frompos, position, cid) if position.x == CONTAINER_POSITION then return true end local house = getHouseFromPos(frompos) or getHouseFromPos(position) --correção 100% if type(house) == "number" then local owner = getHouseOwner(house) if owner == 0 then return false, doPlayerSendCancel(cid, "Isso não é Possível.") end if owner ~= getPlayerGUID(cid) then local sub = getHouseAccessList(house, 0x101):explode("\n") local guest = getHouseAccessList(house, 0x100):explode("\n") local isInvited = false if (#sub > 0) and isInArray(sub, getCreatureName(cid)) then isInvited = true end if (#guest > 0) and isInArray(guest, getCreatureName(cid)) then isInvited = true end if not isInvited then return false, doPlayerSendCancel(cid, "Desculpe, você não está invitado.") end end end return true end  
      Crie um novo arquivo lua em scripts com o nome moveitem2.lua e adicione isso abaixo:
      local depottiles = {} --piso pra n jogar local depots = {2589} --id dos dps local group = 3 --id dos group 6 é todos. local function checkIfThrow(pos,topos) if topos.x == 0xffff then return false end local thing = getThingFromPos(pos) if isInArray(depottiles,thing.itemid) then if not isInArea(topos,{x=pos.x-1,y=pos.y-1,z=pos.z},{x=pos.x+1,y=pos.y+1, z=pos.z}) then return true end else for i = 1, #depots do if depots[i] == getTileItemById(topos,depots[i]).itemid or getTileInfo(topos).actionid == 7483 then return true end end end return false end function onMoveItem2(cid, item, count, toContainer, fromContainer, fromPos, toPos) if isPlayer(cid) then local pos = getThingPos(cid) if getPlayerGroupId(cid) > group then return true end if checkIfThrow({x=pos.x,y=pos.y,z=pos.z,stackpos=0},toPos) then doPlayerSendCancel(cid,"Não jogue item ai!!") doSendMagicEffect(getThingPos(cid),CONST_ME_POFF) return false end end return true end  
      ajudei?? REP+
      CRÉDITOS:
      @L3K0T
      Fir3element
      Summ
      Wise
      GOD Wille
      Yan Lima
       
       
       
       
    • Por L3K0T
      Não jogar itens pelo teleportes C++
       

       

       
       
      Bom.. o nome já diz, qualquer um que jogar itens nos teleportes do seu otserv, o mesmo será removido, como aquelas lixeiras, porem esse sistema é pela source, descartando scripts .LUA.
       
       
      Em teleporte.cpp ache:
       
      void Teleport::__addThing(Creature* actor, int32_t, Thing* thing) { if(!thing || thing->isRemoved()) return; Tile* destTile = g_game.getTile(destination); if(!destTile) return; if(Creature* creature = thing->getCreature()) { g_game.addMagicEffect(creature->getPosition(), MAGIC_EFFECT_TELEPORT, creature->isGhost()); creature->getTile()->moveCreature(actor, creature, destTile); g_game.addMagicEffect(destTile->getPosition(), MAGIC_EFFECT_TELEPORT, creature->isGhost()); } else if(Item* item = thing->getItem()) { g_game.addMagicEffect(item->getPosition(), MAGIC_EFFECT_TELEPORT); g_game.internalMoveItem(actor, item->getTile(), destTile, INDEX_WHEREEVER, item, item->getItemCount(), NULL); g_game.addMagicEffect(destTile->getPosition(), MAGIC_EFFECT_TELEPORT); } }  
      Altere ele todo para:
       
      void Teleport::__addThing(Creature* actor, int32_t, Thing* thing) { if (!thing || thing->isRemoved()) return; Tile* destTile = g_game.getTile(destination); if (!destTile) return; if (Creature* creature = thing->getCreature()) { g_game.addMagicEffect(creature->getPosition(), MAGIC_EFFECT_TELEPORT, creature->isGhost()); creature->getTile()->moveCreature(actor, creature, destTile); g_game.addMagicEffect(destTile->getPosition(), MAGIC_EFFECT_TELEPORT, creature->isGhost()); } else { Player* player = dynamic_cast<Player*>(actor); if (player) { player->sendTextMessage(MSG_STATUS_SMALL, "You cannot teleport items."); // Remover o item Item* item = dynamic_cast<Item*>(thing); if (item) { g_game.internalRemoveItem(actor, item); } } return; } } agora é só compilar no modo Rebuilder e ligar o servidor, créditos a mim L3K0T pela alterações.



×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo