Ir para conteúdo

tibiaa4e

Conde
  • Total de itens

    912
  • Registro em

  • Última visita

  • Dias Ganhos

    1

Tudo que tibiaa4e postou

  1. @up sim essa função tira gold è possivel tbm fazer ela teleporta nums eria dificil flws :hi:
  2. Lembrando q se tem q dar use no scarab coin Eu vou tentar fazer uma por movements em 7.9 100% @down num funfa evo 0.6.3 cvs 0.5.0 sux num tem movements flws :hi:
  3. Nem tem dessa maneira naum Ta mto boa msm para ficar + complicado pode colocar a 2º alavanca num lugar + fechado ou + longe Vai fazendo q depois se fará actions incriveis Q seja a primeira de muitas flws :hi:
  4. Olha do xikeots 7.9 pra cima é msm coisa os skills podem compraavr por vcs msm flws :hi:
  5. ora lgl meu msm eu num entendendo nada disso (meu rl q faz site) agr q eu uso sql vai ser bom qdo ele me explica eu posso comentar melhor o funcionamento flws :hi:
  6. Num acho q as skills estejam bugadas Pois vem da svn e funciona perfeitamente só se o xidaozu meteu o dedo e fez ##### pra muda o up skill é no vocation.xml flws :hi:
  7. sim funfa com certeza pois é um function onuse e existe desde a 7.5 em qualquer ot 7.8 + funfa seja nova ou velha svn flws :hi:
  8. Tutorial dedicado ao SOULBLASTER ia ensinar a ele (Milagre eu ensinando algo pra ele em ots o0) ai resolvi fazer um tuto pra quem usa ele tbm pode fazer suas quest aparecerem no quest log Forgotten e zorzin ot possuem por enquanto portanto vamos lá Na pasta data/actions/XML se localiza o arquivo quest.xml passo 1: Ele é baseado em storage value portanto funciona assim explicando: quest name:Nome q ira aparecer no quest log startstorageid :o storage q ira prescisar para aparecer a missão startstoragevalue :value do storage q ira usar mission name: nome da missão q ira aparecer storageid :storage para aparecer a missão startvalue: 1º value necessario para aparecer o status da missão endvalue: value q sera necessario para aparecer "completed" a missão missionstate id :id da missão (tem q estar entre os do start value e endvalue) description :O q aparecera para o player que tiver o storage e o value Acho q muita gente entendeu + agora vamos dar um exemplo vc fala com um npc chamado Sam e qdo se fala quest ele add o storage value 1000 value 1 ai ele pede uma halberd para poder faze-lá Qdo vc da o halberd a ele,ele troca seu value para 2 ai aparece no quest log q vc ja deu o halberd pra ele Ai ele pede 10 gp se da ele troca seu value para 3 e aparece no quest log "Voce termino a missao ". Ai a missão 1 aparece "completed" Na missão 2 segue quase o msm esquema de npc Ai qdo se termina a ultima missão da quest aparece "completed" Espero q entendam se num poste suas duvidas nunca fui muito bom professor + tentei ajudar comentem flws :hi:
  9. Obrigado pelo coments e fiquem de olho para correções de bugs E por favor reportem todos q acharem flws :hi:
  10. Bem terminei o q eu acho q foi a primeira parte de um trabalho dificultoso Pois as actions ate então são faceis é a segunda parte das coisas q irei fazer para a new svn Apesar q se vc entender um pouco de spells podera deixar as da svn antiga tbm real Calculos feitos pelo calculadora do ###### Creditos:Ta4e Vinii (me ajudou a fazer heal friend e mass healing) Correções feitas: Usei as spells da svn 17/12 e corrigi testei elas e ate enjoei Naum coloquei magias de mosntros,portanto naum substitua seus spells.xml apenas troque as tags 0.0.0 Spells 0.0.0 0.0.1 Spells 0.0.1 0.0.2 Spells 0.0.2 0.0.3 Spells 0.0.3 0.0.4 Spells 0.0.4 Comentem Reporte bugs q eu vou corrigir e add aki embaixo 0.0.1 poison storm corrigida 0.0.1 Energy wall corrigida 0.0.2 adicionada magias de casa (alana sio) 0.0.3 spells.xml bug arrumado 0.0.4 Spells.xml arrumado por erro de Svn 0.0.4 Force Strike com dano arrumado 0.0.4 Walls retirado dano por magic level 0.0.4 Poison Storm agora apenas da poison 0.0.4 magias de luz dão o efeito magico --/-- bugs a corrigir aki comentem flws :hi:
  11. seria em suporte/duvidas explique melhor e diga qual ot usa flws :hi:
  12. Mais uma action 7.92 Elas são as surprise bag se da use elas dão itens As azuis dão em loot de bichos de 70xp + As vermelhas dão em loot de warlock,behmoth,hydra e bichos novos As azuis tem como melhor loot piggy bank as vermelha panda teddy e teddy bear sem delongas surprise bag blue.lua surprise bag red.lua e em actions.xml add comentem flws :hi:
  13. o0 mto bom agr com o peso fico melhor ainda Muito boa msm principalmente pq é em lua parabens flws :hi:
  14. é igual no rl qdo se da use nele ele da um efeito magico sorteado se tiver na bp ou na mão ele tira um dano de 10 e 2 efeito magico um de explosão e o dos fogos flws :hi:
  15. tibiaa4e

    Evolutions 0.7.3 7.92

    Sem tempo para delongas New CVS Features A whole new condition engine to handle all kind of conditions. A whole new battle engine. The new engine is closer to Tibia's formulas. The script interface has been rewriten and improved alot. You can now script all kind of things. Weapons, movement, talkactions, spells. You name it. Monsters have been recoded to use the new condition and battle engine. And they now act more like the tibia monsters. Vocations are now configurable with vocations.xml And alot more. Try it yourself and find out. Some codes of all other versions may not be implented (yet). Version 0.7.3 (BETA)** Protocol 7.92 (CVS, Xidaozu) Graphical User Interface (GUI)(Junkfood, Xidaozu) Prevent Loss System (Xidaozu) New Premium System (Xidaozu) Players.xml not needed (Xidaozu) Premium Spells (Xidaozu) Hotkey aimbot (Xidaozu) Xml SQL Ele tem tbm party system,guild system,skull e outros q num da pra add pois ele num especificou muito bem Esse site é estranho + é o q ta no post original /o/ flws :hi:
  16. sim Existe o forgotten 0.0.6 e o evolutions 0.7.3 q o xidaozu adapto num sei se tem aki s enum tiver coloco agora flws :hi:
  17. primeira action 7.92 ta ai Ia lançar depois + resolvi libera agora Fireworks.lua e em actions.xml NAUM TENTE COLOCAR EM SERVER 7.9 OU - POIS NAUM EXISTE OS MAGICS EFFECTS comentem flws :hi:
  18. meu deus eu testei esse system na versão antiga e ja era bom agr ixi Parabens msm Ta mto bom Num é complexo Nada q é bom é facil flws :hi:
  19. Ae parabens a preguissa saiu heim fora q mando tanto spam q qdo entrei no msn travo o pc + tudo bem tirou duvidas minhas E me ajudo agora vem + 4 actions (pensei q ia ser facil + vais er + dificil do q pensei ) @pão O pão no rl tibia se da use msm naum arrasta 2º vez q vejo isso e me deixa irritado Boa pra fazer tapestrie system merece fix msm flws :hi:
  20. @up funfa em qualquer versão 7.6 + Vc deve ter feito algo errado flws :hi:
  21. Uptade para protocolo 7.92 100% rl tibia @topic obrigado pelos coments flws :hi:
  22. Nota 7 Sinceramente sem criatividade Todas as cidades são assim isso enjoa Só axei 2 cidades legais em ot a do Soulblaster e do Server do vini taka flws :hi:
  23. Mto bom Apesar q de eu axar ilha de gelo em ot besteira pq tem poucos bichos Posta fotos de eprto pq de longe é ruim flws :hi:
  24. Segundo os post do otfans funciona Só q tem um problema nos fluids Axo q ele é igual ao antigo flws :hi:
  25. O codigo + esperado esta aki Codigo do Rappa Carnauba e Black Demon modificado pelo Kuja_Back para funcionar fluids e foods começando Em game.cpp troque: bool Game::playerUseItemEx(Player* player, const Position& fromPos, uint8_t fromStackPos, uint16_t fromSpriteId, const Position& toPos, uint8_t toStackPos, uint16_t toSpriteId) { OTSYS_THREAD_LOCK_CLASS lockClass(gameLock, "Game::playerUseItemEx()"); if(player->isRemoved()) return false; ReturnValue ret = RET_NOERROR; if((ret = Actions::canUse(player, fromPos)) != RET_NOERROR){ player->sendCancelMessage(ret); return false; } Thing* thing = internalGetThing(player, fromPos, fromStackPos); if(!thing){ player->sendCancelMessage(RET_NOTPOSSIBLE); return false; } Item* item = thing->getItem(); if(!item || item->getClientID() != fromSpriteId || !item->isUseable()){ player->sendCancelMessage(RET_CANNOTUSETHISOBJECT); return false; } return internalUseItemEx(player, fromPos, item, toPos, toStackPos, toSpriteId); } por : bool Game::playerUseItemEx(Player* player, const Position& fromPos, uint8_t fromStackPos, uint16_t fromSpriteId, const Position& toPos, uint8_t toStackPos, uint16_t toSpriteId) { OTSYS_THREAD_LOCK_CLASS lockClass(gameLock, "Game::playerUseItemEx()"); if(player->isRemoved()) return false; ReturnValue ret = RET_NOERROR; if((ret = Actions::canUse(player, fromPos)) != RET_NOERROR){ player->sendCancelMessage(ret); return false; } Item* item = dynamic_cast<Item*>(internalGetThing(player, fromPos, fromStackPos)); player->usedHotkey = false; if(!item && fromPos == Position(0xFFFF, 0, 0)){ item = player->getHotkeyItem(fromSpriteId, fromStackPos); if(!item){ player->sendCancelMessage(RET_NOERROR); return false; } Cylinder* cylinder = item->getParent(); if(cylinder == NULL){ return false; } fromStackPos = cylinder->__getIndexOfThing(item); player->usedHotkey = true; } if(!item || item->getClientID() != fromSpriteId || !item->isUseable()){ player->sendCancelMessage(RET_CANNOTUSETHISOBJECT); return false; } return internalUseItemEx(player, fromPos, item, toPos, toStackPos, toSpriteId); } troque tambem: bool Game::playerUseBattleWindow(Player* player, const Position& fromPos, uint8_t fromStackPos, uint32_t creatureId, uint16_t spriteId) { OTSYS_THREAD_LOCK_CLASS lockClass(gameLock, "Game::playerUseBattleWindow"); if(player->isRemoved()) return false; Creature* creature = getCreatureByID(creatureId); if(!creature){ return false; } if(!Position::areInRange<7,5,0>(creature->getPosition(), player->getPosition())){ return false; } if(creature->getPlayer()){ player->sendCancelMessage(RET_DIRECTPLAYERSHOOT); return false; } ReturnValue ret = RET_NOERROR; if((ret = Actions::canUse(player, fromPos)) != RET_NOERROR){ player->sendCancelMessage(ret); return false; } Thing* thing = internalGetThing(player, fromPos, STACKPOS_USE); if(!thing){ return false; } Item* item = thing->getItem(); if(!item){ player->sendCancelMessage(RET_CANNOTUSETHISOBJECT); return false; } return internalUseItemEx(player, fromPos, item, creature->getPosition(), 0, 0); } por: bool Game::playerUseBattleWindow(Player* player, const Position& fromPos, uint8_t fromStackPos, uint32_t creatureId, uint16_t spriteId) { OTSYS_THREAD_LOCK_CLASS lockClass(gameLock, "Game::playerUseBattleWindow"); if(player->isRemoved()) return false; Creature* creature = getCreatureByID(creatureId); if(!creature){ return false; } if(!Position::areInRange<7,5,0>(creature->getPosition(), player->getPosition())){ return false; } if(creature->getPlayer()){ player->sendCancelMessage(RET_DIRECTPLAYERSHOOT); return false; } ReturnValue ret = RET_NOERROR; if((ret = Actions::canUse(player, fromPos)) != RET_NOERROR){ player->sendCancelMessage(ret); return false; } Item* item = dynamic_cast<Item*>(internalGetThing(player, fromPos, STACKPOS_USE)); player->usedHotkey = false; if(!item && fromPos == Position(0xFFFF, 0, 0)){ item = player->getHotkeyItem(spriteId, fromStackPos); if(!item){ player->sendCancelMessage(RET_NOERROR); return false; } Cylinder* cylinder = item->getParent(); if(cylinder == NULL){ return false; } fromStackPos = cylinder->__getIndexOfThing(item); player->usedHotkey = true; } if(!item){ player->sendCancelMessage(RET_CANNOTUSETHISOBJECT); return false; } return internalUseItemEx(player, fromPos, item, creature->getPosition(), 0, 0); } Em spells.cpp troque: bool RuneSpell::executeUse(Player* player, Item* item, const PositionEx& posFrom, const PositionEx& posTo, bool extendedUse) { if(!playerRuneSpellCheck(player, posTo)){ return false; } bool result = false; if(m_scripted){ LuaVariant var; var.type = VARIANT_POSITION; var.pos = posTo; result = internalCastSpell(player, var); } else{ if(function){ result = function(this, player, item, posFrom, posTo); } } if(result){ Spell::postCastSpell(player); if(hasCharges && item){ int32_t newCharge = std::max(0, item->getItemCharge() - 1); g_game.transformItem(item, item->getID(), newCharge); } } return result; } para: bool RuneSpell::executeUse(Player* player, Item* item, const PositionEx& posFrom, const PositionEx& posTo, bool extendedUse) { if(!playerRuneSpellCheck(player, posTo)){ return false; } bool result = false; if(m_scripted){ LuaVariant var; var.type = VARIANT_POSITION; var.pos = posTo; result = internalCastSpell(player, var); } else{ if(function){ result = function(this, player, item, posFrom, posTo); } } if(result){ Spell::postCastSpell(player); if(hasCharges && item){ int32_t newCharge = std::max(0, item->getItemCharge() - 1); bool usedHotkey = player->usedHotkey; g_game.transformItem(item, item->getID(), newCharge); if(usedHotkey){ uint16_t totalCharges = player->getTotalCharges(item->getID()); if(totalCharges == 0){ player->sendTextMessage(MSG_INFO_DESCR, "That was your last rune!"); } else{ std::stringstream chargeStream; chargeStream << totalCharges << " charges left..."; player->sendTextMessage(MSG_INFO_DESCR, chargeStream.str().c_str()); } } } } return result; } Em player.cpp depois de: chaseMode = CHASEMODE_STANDSTILL; Adicione: usedHotkey = false; E no final de game.cpp adicione: Item* Player::getHotkeyItem(uint16_t itemId, uint8_t itemType) { const long fluidMap[] = {FLUID_EMPTY_1, FLUID_BLUE_1, FLUID_RED_1, FLUID_BROWN_1, FLUID_GREEN_1, FLUID_YELLOW_1, FLUID_WHITE_1, FLUID_PURPLE_1, FLUID_RED_2, FLUID_BROWN_2, FLUID_PURPLE_2}; std::list<const Container*> listContainer; ItemList::const_iterator cit; Container* tmpContainer = NULL; Item* item = NULL; for(int i = SLOT_FIRST; i < SLOT_LAST; i++){ if(item = inventory[i]){ if(item->getClientID() == itemId){ if(item->isFluidContainer() && fluidMap[item->getFluidType()] == itemType){ return item; } else if(!item->isFluidContainer()){ return item; } } if(tmpContainer = item->getContainer()){ listContainer.push_back(tmpContainer); } } } while(listContainer.size() > 0){ const Container* container = listContainer.front(); listContainer.pop_front(); for(cit = container->getItems(); cit != container->getEnd(); ++ cit){ if((*cit)->getClientID() == itemId){ if((*cit)->isFluidContainer() && fluidMap[(*cit)->getFluidType()] == itemType){ return (*cit); } else if(!(*cit)->isFluidContainer()){ return (*cit); } } if(tmpContainer = (*cit)->getContainer()){ listContainer.push_back(tmpContainer); } } } return NULL; } uint32_t Player::getTotalCharges(Cylinder* cylinder) const { if(cylinder == NULL) return 0; std::list<Container*> listContainer; ItemList::const_iterator it; Container* tmpContainer = NULL; Thing* thing = NULL; Item* item = NULL; uint32_t charges = 0; for(int i = cylinder->__getFirstIndex(); i < cylinder->__getLastIndex(); ++i){ if(!(thing = cylinder->__getThing(i))) continue; if(!(item = thing->getItem())) continue; if(tmpContainer = item->getContainer()){ listContainer.push_back(tmpContainer); } else{ if(item->isRune()){ charges += item->getItemCharge(); } } } while(listContainer.size() > 0) { Container* container = listContainer.front(); listContainer.pop_front(); for(it = container->getItem(); it != container->getEnd(); ++it) { Item* item = (*it); if(listContainer = item->getContainer()){ listContainer.push_back(tmpContainer); } else{ if(item->isRune()){ charges += item->getItemCharges(); } } } return charges; } Em player.h Nos includes add: #include "networkmessage.h" E em public adicione: Item* getHotkeyItem(uint16_t itemId, uint8_t itemType); uint32_t Player::getTotalCharges(uint16_t itemId) const; bool usedHotkey; De rebuild all e parabens vc tem hotkey comentem flws :hi:
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...