-
Total de itens
702 -
Registro em
-
Última visita
-
Dias Ganhos
5
Tudo que BananaFight postou
-
Function onGainExp(cid, value) Criador: knightxd Descrição: Esta função é ativada quando uma criatura ganha EXP. E você pode retornar falso (return false) para que está criatura não ganhe EXP. Instalação: Creatureevent.h procure por : CREATURE_EVENT_OUTFIT, e adicione embaixo : CREATURE_EVENT_GAINEXP, Novamente, Procure por uint32_t executeOutfit(Creature* creature, const Outfit_t& old, const Outfit_t& current); e adicione embaixo: uint32_t executeGainExp(Player* player, int32_t value); Agora, Abra creatureevent.cpp e Procure por : else if(tmpStr == "outfit") m_type = CREATURE_EVENT_OUTFIT; e adicione embaixo: else if(tmpStr == "gainexp") m_type = CREATURE_EVENT_GAINEXP; Procure por: case CREATURE_EVENT_OUTFIT: return "onOutfit"; e adicione embaixo: case CREATURE_EVENT_GAINEXP: return "onGainExp"; Agora, Procure por: case CREATURE_EVENT_OUTFIT: return "cid, old, current";~ e adicione embaixo: case CREATURE_EVENT_GAINEXP: return "cid, value"; Agora, Procure por: std::cout << "[Error - CreatureEvent::executeStatsChange] Call stack overflow." << std::endl; return 0; } } embaixo adicione: uint32_t CreatureEvent::executeGainExp(Player* player, int32_t value) { //onGainExp(cid, value) 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; scriptstream << "local value = " << value << 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->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)); lua_pushnumber(L, value); bool result = m_interface->callFunction(2); m_interface->releaseEnv(); return result; } } else { std::clog << "[Error - CreatureEvent::executeGainExp] Call stack overflow." << std::endl; return 0; } } Agora em Player.cpp procure por bool Player::gainExperience(double& gainExp e embaixo adicione: if(gainExp >= 1) { bool deny = false; CreatureEventList gainExpEvents = this->getCreatureEvents(CREATURE_EVENT_GAINEXP); for(CreatureEventList::iterator it = gainExpEvents.begin(); it != gainExpEvents.end(); ++it) { if(!(*it)->executeGainExp(this, gainExp)) deny = true; } if(deny) return false; } Exemplo de uso: function onGainExp(cid, value) print(value) end Não esqueça de registrar o evento no onlogin Considerações finais: Sim eu sei que já existe um sistema igual no xtibia, porem ele esta errado, este funciona em qualquer source. Desculpem pessoal, mais o xtibia tinha cortado um pedaço do tutorial, e ele estava incompleto, Agora ja foi corrigido.
- 3 respostas
-
- ongainexp(cid value)
- otserv
- (e 2 mais)
-
Entendo, Você poderia ao menos mostrar o versão testada no tópico para evitar esse tipo de confusão ?
-
Tem certeza que funciona ? no getStorage o primeiro argumento é um 'uint32', um numero, e você esta tentando mandar "hostile", Só isso já causaria um bug na hora da compilação. Depois disso no creaturescript, só usando setTarget não é o suficiente para fazer com que um monstro como Rabbit ataque um player ou um summon. E se mesmo assim funcionasse, Caso duas pessoas ataquem o mesmo monstro ele iria sempre setar o target no ultimo que atacou ele, ou seja, ia ficar mudando o target, Sem contar que se sair da tela da target lost, e ele voltaria a ser passivo, Você precisaria criar uma lista com todos as criaturas que atacaram o monstro e fazer ela atacar 1 por 1 caso ainda estejam na tela, e só parar quando estiverem mortos ou tiverem re-logado.
-
Pessoal, Estas sprites estão sujeitas a mudanças, vamos tentar melhorar o máximo o nível de spriting do projeto, mais é difícil achar alguém que seja bom, tenha tempo e seja honesto. .
-
Como assim alex ? Ele votou no ultimo dia da votação, e sim já existia a regra dos 3 votos tanto é que o Gustavo comentou em baixo dizendo que faltou um voto, Acho a sua atitude uma palhaçada alex, Eu esperava mais de você, Você não foi justo comigo, e nem com as pessoas que votaram em mim, Isso poderia até ser considerado fraude, Levando em consideração as evidencias.
-
O problema é que diferente do seu caso, houve uma quebra das regras, e que acabou beneficiando outro concorrente, e me prejudicando. Não acho certo sair prejudicado por isso, e não existe isso de "Se você acha que venceu e mereceu, também vencerá essa." Eu ganhei de maneira justa e sem nada a ser contestado, e agora estou lutando pelo que é meu por direito.
-
Alex, Acho que Ouve um engano, O Tonny só tem 10 votos. O voto do JobbySantos Tonyhn Skymagnum Não deve ser levado em consideração pelo fato de não estar correto, Como um regra criada por você mesmo, era necessário o voto em 3 pessoas, o que não é o caso do jobby, e por esse motivo acho que ele não deve contar como um voto, VOCÊ DEVE VOTAR EM 3 PARTICIPANTES. E Também discordo da Hipótese de ele "completar" seu voto apos o final das votações. Espero não ser prejudicado por este ocorrido, e que vocês adm sigam as regras estipuladas antes do inicio das votações.
-
TatianeBaraldi Seu voto não deve valer, 1° por ser fake 2° Só entrou para se votar. Posts: 2 posts Obrigado a todos que votaram em mim o/
-
[X-Redação+Updates] Aniversário de 8 anos do X-tibia.
tópico respondeu ao Alexclusive de BananaFight em Noticias
Aqui Vai minha história com o Xtibia xD -
ed [Life Thread]Megami Wicked - Refugia
tópico respondeu ao Avuenja de BananaFight em Exposições de Characters
Isso é parte da nova quest de rook, Você pode dar skip tutorial no primeiro npc. -
O 5 no opcode é meramente ilustrativo '-' Sim, tem como por em um label, Só você fazer labelName:setText(buffer) Se me lembro bem é assim. Não, não voltei a ativa, só fiz pra um amigo e resolvi compartilhar com vocês.
-
getPlayerVocation para todas as versões com o opcode. Instalação Client OtClient/Modules/gamelib/game.lua function getPlayerVocation() local protocol = g_game.getProtocolGame() protocol:sendExtendedOpcode(25, 5) end e no seu script ProtocolGame.registerExtendedOpcode(26, function (protocol, opcode, buffer) vocation = buffer print(vocation) end ) Server creaturescripts/extendedopcode.lua function onExtendedOpcode(cid, opcode, buffer) if opcode == 25 then doSendPlayerExtendedOpcode(cid, 26, getPlayerVocation(cid)) end return true end
-
Você devia pensar antes de ler o que você escreve, Você sabia que o racismo em si, vem das novas gerações ?, Antes o negro era discriminado por ser diferente, e não existia esse "Racismo", onde se você chamar um negro de Negão você vai preso, Existia sim a discriminação porem ela não era 1% comparada com a de hoje. Antigamente, na época da revolução industrial, Onde a maioria de trabalhadores era branca, Se trabalhava MUITO mais tempo do que se trabalha hoje, Não Existia um legislação trabalhista como a de hoje, onde se você é demitido tem Seguro isso seguro aquilo. O ponto é, se Hitler tivesse conseguido seu objetivo hoje viveríamos em um regime ditatorial, onde o ditador diz o que é bom para você, Teríamos condições de trabalho quase comparadas com a de escravos, e não teríamos a liberdade de debater sobre esses assuntos como estamos fazendo agora. Agora antes de criar um tópico como esse, procure saber como era o regime em que o Hitler governava, e as condições das pessoas naquele regime. Como um pássaro, você não conseguiria ficar preso e sendo obrigado a fazer o que não queria, Mesmo se Hitler tivesse conseguido atingir seus objetivos, existiriam milhares de protestantes e revoluções ao longo do tempo, Buscando condições e mais liberdade para as pessoas, Mas agora imagina protestar contra o dono do mundo.
-
Na área de tutoriais, tem um tópico ensinando a compilar o otclient, nele você aprende a compilar o otclient para directx9
-
a neblina só fica no client, não existe ela no map.
-
windowWidth, windowHeight) Devem ser a largura e a altura em números . 150, 120)
-
Darei 1 dia para re-upar os links, caso contrario excluirei o tópico, E se continuar essas discussões bestas vou suspender os usuários envolvidos.
-
Falei com o Baxnie e ele me disse, que isso você pode tanto fazer pelo server ( Utilizando OpCode ), Como fazer pelo uiminimap.lua, no client.
-
Como o @GOD Gniu disse, pode trazer bug, Eu não recomendo fazer Gambiarra para depois dar um bug, e ninguém saber resolver, Então basta visitar a área de tutoriais para aprender a compilar. Duvida Sanada, Tópico fechado e movido. @off Só pra lembrar da nova regra, O titulo do tópico deve induzir aos membros sobre o assunto dentro do mesmo, Esta proibido títulos com nome que não mostram o assunto do tópico como: "Ajuda, ou Dou +REP".
-
Amigo Estou aqui para avisar que está é uma comunidade OPEN TIBIA, ou seja não se pode comercializar nada, Sei que não é isso que você esta fazendo, porem como você mesmo escreveu : OBS: Não autorizado o uso de nenhuma sprite acima, se quiser usar alguma porfavor falar comigo. Esse tipo de "pedido" não é valido na comunidade, Veja que não quero prejudicar ninguém, mais se você esta fazendo um show off é para mostrar suas sprites, Então faça como todos os outros, bote só um pedaço dela e nunca inteira, caso você não queira compartilhar ela, Então eu e nem um outro moderador estaremos aceitando reclamações de uso de sprites sem sua "Autorização". E este recado é para todos os membros. @Topic Como eu você ainda é iniciante, e tem que melhorar muito, mais vejo que esta em um bom caminho, treine mais a cabeça dos monstros e a textura dos itens, Como o Insaend me falou uma vez, Tibia é um jogo medieval, e quanto mais as cores forem puxadas para um tom mais escuro melhor.
-
Sanado, Fechado, Movido.
-
pedido [Encerrado] PDA Poketele
tópico respondeu ao markerkirito de BananaFight em Tópicos Sem Resposta
Duvida Sanada, Tópico Fechado e Movido. -
Porque diabos você ainda não compilou cara, ninguém aqui vai fazer isso pra você, ja existem tutoriais ensinando tudo isso.
-
Você recompilou as source ?
-
1° de tudo que esta na área errada 2° Que da proxima vez que você por um titulo desses eu vou deletar o tópico, Use o titulo para esclarecer o que você precisa. Voltando ao tópico: nas source do otclient, em game.cpp tem essa linha if(version >= 870) { enableFeature(Otc::GameDoubleExperience); enableFeature(Otc::GamePlayerMounts); enableFeature(Otc::GameSpellList); } creio que removendo o "enableFeature(Otc::GamePlayerMounts);" deva tirar as mounts do client. Tópico movido para a área correta.
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.