Ir para conteúdo

lSainty

Conde
  • Total de itens

    509
  • Registro em

  • Última visita

  • Dias Ganhos

    25

Tudo que lSainty postou

  1. Também me perguntei isso, afinal são servidores totalmente diferentes kkkkkk -- Edit Ao retirar o mount system vocês não pensaram que seria um bom sistema que se o player tivesse por exemplo um Venusaur ele pode simpleste apertar Ctrl+R (se não me engano) e dar ride nele? O mesmo vale para o fly '-'
  2. Pode me dizer mais ou menos como funciona isso? Não achei nada parecido no meu exp.lua ;-; Porque ao invés de pedir você mesmo não cria? O cara ja fez MUITO ao colocar até a 4ª geração, se fosse eu colocava apenas a 1ª e mesmo assim vem os ot-admin da vida pedindo para colocar mais, e ainda tem coragem de colocar que é scripter -.-
  3. O PField by SmiX? O Nick System la não funciona :s
  4. Mas é a mesma coisa do que quando se abre um 8.54/8.60 e etc... se você não conseguiu logar é porque fez algo errado.
  5. O único jeito seria salvando cada nick em um txt igual nos primeiros Nick System... Falei com o Cristofer sobre como uma função desse tipo poderia ser feita ja que o client "salva" o nome do monstro e ele disse que a unica explicação para o doCreatureSetNick do brun123 é que quando você solta o monstro, ele é teleportado para algum lugar e volta rapidamente, assim o nome dele mudaria kkk, tentei de varias formas criar essa função nas sources mas não consegui, ou da algum erro ou o nome não muda, o jeito era se o brun123 liberasse o código mesmo... A maioria quer mas não sabe nem o que as sources fazem hasuhashuas -- Edit @Gabrieltxu O melhor a se fazer no momento é aprimorar os sistemas ja feitos (catch, goback e afins), ja que Nick System nem é tão util assim kkk, o ideal se tivesse as sources era colocar onSpawn, para colocar Gender System e quem sabe até Level System para quem gosta :b
  6. Sem a função doCreatureSetNick? Boa sorte fazendo gambiarra de salvar o nick do pokemon em um arquivo .txt =3 @Topic Ótimo servidor para usar como base, mas sem as sources se tornou um PDA nº 2 kkk, whatever, rep+
  7. Essa folha é muito estranha cara, antes colocar uma folha de marijuana ._.
  8. Sinto seu drama da mesma forma. Tentei até refazer um server com base nas sources do DASH, mas elas são muito 'primitivas', e, como não sei nada de C++ e fui procurando tudo no google (xd), a não ser que tenha conhecimento de C++, é muito difícil conseguir fazer uma jogavel, compativel de certa forma com o PDA. Faltam muitas funções de fly, move, camera, ispokeball e etc. Pouquissimas eu consegui achar, que foram a onSpawn e alguns outros detalhes. Cara, basta estudar um pouco que você faz essa funções facilmente... Sobre o fly, você pode fazer seu próprio order, sobre os moves, comigo não deu nenhum erro, TV/Cam system é inútil, e a função isPokeball só é necessária no PDA (consegui usar o catch do PDA em outro servidor sem a função isPokeball).
  9. Essa função é executada sempre que o monstro da respawn, em um poketibia por exemplo ela pode ser usada para ter uma chanse de o pokemon nascer shiny, ou até mesmo mandar uma mensagem quando o monstro nascer: function onSpawn(cid) doBroadcastMessage("Monster ".. getCreatureName(cid).." was created.") return true end Entendeu? Corrigido, eu tinha esquecido uma parte do código
  10. Eae galera, estava passando aqui por essa seção e vi que só havia a função onSpawn para TFS 0.4, então resolvi trazer para 0.3.6 Primeiramente, va em Creatureevent.h e procure por: uint32_t executePrepareDeath(Creature* creature, DeathList deathList); E cole embaixo: uint32_t executeOnSpawn(Creature* creature); Procure por: CREATURE_EVENT_DEATH, E cole isso por cima da linha de baixo: CREATURE_EVENT_PREPAREDEATH, CREATURE_EVENT_SPAWN Agora va em creatureevent.cpp e procure por: else if(tmpStr == "preparedeath") m_type = CREATURE_EVENT_PREPAREDEATH; E cole embaixo: else if(tmpStr == "spawn") m_type = CREATURE_EVENT_SPAWN; Procure por: case CREATURE_EVENT_PREPAREDEATH: return "onPrepareDeath"; E cole embaixo: case CREATURE_EVENT_SPAWN: return "onSpawn"; Procure por: case CREATURE_EVENT_PREPAREDEATH: return "cid, deathList"; E cole embaixo: case CREATURE_EVENT_SPAWN: return "cid"; Va ao fim do arquivo e cole isso: uint32_t CreatureEvent::executeOnSpawn(Creature* creature) { //onSpawn(cid) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(creature->getPosition()); std::stringstream scriptstream; scriptstream << "local cid = " << env->addThing(creature) << 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__ std::stringstream 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)); bool result = m_interface->callFunction(1); m_interface->releaseEnv(); return result; } } else { std::clog << "[Error - CreatureEvent::executeCast] Call stack overflow." << std::endl; return 0; } } Va em monster.cpp e procure por: void Monster::onCreatureAppear(const Creature* creature) { Creature::onCreatureAppear(creature); if(creature == this) { //We just spawned lets look around to see who is there. if(isSummon()) isMasterInRange = canSee(master->getPosition()); Embaixo pressione enter 2x e cole: CreatureEventList spawn = getCreatureEvents(CREATURE_EVENT_SPAWN); for(CreatureEventList::iterator it = spawn.begin(); it != spawn.end(); ++it) (*it)->executeOnSpawn(this); E pronto, basta compilar agora Exemplos de como usar essa função: -- EDIT -- Para fazer com que o evento seja iniciado junto com o servidor ao invés de somente quando o monstro der RESPAWN, va em spawn.cpp e procure por: bool Spawn::spawnMonster(uint32_t spawnId, MonsterType* mType, const Position& pos, Direction dir, bool startup /*= false*/) { Monster* monster = Monster::createMonster(mType); if(!monster) return false; if(startup) { //No need to send out events to the surrounding since there is no one out there to listen! if(!g_game.internalPlaceCreature(monster, pos, false, true)) { delete monster; return false; } } else { if(!g_game.placeCreature(monster, pos, false, true)) { delete monster; return false; } } monster->setSpawn(this); monster->addRef(); monster->setMasterPosition(pos, radius); monster->setDirection(dir); spawnedMap.insert(SpawnedPair(spawnId, monster)); spawnMap[spawnId].lastSpawn = OTSYS_TIME(); return true; } e apague essa parte: { //No need to send out events to the surrounding since there is no one out there to listen! if(!g_game.internalPlaceCreature(monster, pos, false, true)) { delete monster; return false; } } else Pronto, agora a função é executada assim que o servidor inicia Se os monstros pararem de dar respawn, ao invés de apagarem a parte que citei acima, troquem isso: bool Spawn::spawnMonster(uint32_t spawnId, MonsterType* mType, const Position& pos, Direction dir, bool startup /*= false*/) { Monster* monster = Monster::createMonster(mType); if(!monster) return false; if(startup) { //No need to send out events to the surrounding since there is no one out there to listen! if(!g_game.internalPlaceCreature(monster, pos, false, true)) { delete monster; return false; } } else { if(!g_game.placeCreature(monster, pos, false, true)) { delete monster; return false; } } monster->setSpawn(this); monster->addRef(); monster->setMasterPosition(pos, radius); monster->setDirection(dir); spawnedMap.insert(SpawnedPair(spawnId, monster)); spawnMap[spawnId].lastSpawn = OTSYS_TIME(); return true; } Por isso: bool Spawn::spawnMonster(uint32_t spawnId, MonsterType* mType, const Position& pos, Direction dir, bool startup /*= false*/) { Monster* monster = Monster::createMonster(mType); if(!monster) return false; if(startup) { //No need to send out events to the surrounding since there is no one out there to listen! if(!g_game.internalPlaceCreature(monster, pos, false, true)) { delete monster; return false; } else { monster->onCreatureAppear(monster); } } else { if(!g_game.placeCreature(monster, pos, false, true)) { delete monster; return false; } } monster->setSpawn(this); monster->addRef(); monster->setMasterPosition(pos, radius); monster->setDirection(dir); spawnedMap.insert(SpawnedPair(spawnId, monster)); spawnMap[spawnId].lastSpawn = OTSYS_TIME(); return true; } Créditos: Doggynub por fazer a função (OTIlha) ArkSeyonet por adaptar para 0.3.6 (OTIlha) Eu por pequenas edições :3 Slicer
  11. Para poder usar pokémons enquanto esta na bike é só tirar o storage dela no goback. Para fazer com que ela tenha um slot fixo no lugar do Cassino Coins basta trocar o id do Cassino Coins pelo id da bike no firstitems.xml, lembrando que ela tem que ser Not Moveable para ficar parada no slot :b
  12. No Dat Editor marque as stone como Amountable, simples xD
  13. PDA é impossivel, mas não compenssa usar PDA como base, use outro, de preferencia com sources... Ai é só adicionar os pokémons que você quiser
  14. Como não esta bem explicado? Esta super bem explicado
  15. Você pode criar um poketibia em qualquer versão do tibia, basta adicionar novas funções e races nas sources... E porque diabos ele não suportaria novas sprites? -.- Muitas funções mudam de uma versão para a outra... Maioria dos scripts tem que ser refeitos para funcionarem (se você copia de um poketibia para o tibia), mas se você pegar um sistema gambiarra de invocar o pokemon funciona sim
  16. Malz, jurava que era em Pedidos e dúvidas - Scripting... Na próxima vou prestar atenção ;-; @Up
  17. Fala galera o/, estou usando um server do SmiX (PField, não é PDA não ._.) e estou com o seguinte problema: quando o icon system esta desativado posso curar os pokémons normalmente, mas quando esta ativado a nurse não cura eles, pois ela funciona de acordo com o id da pokeball, e como cada icon é um id diferente daria muito trabalho fazer 1 por 1 Script da nurse: Se alguém puder me ajudar dou Rep+ ;-;
  18. Na verdade isso é simples, basta ter as funçoes certas xD
  19. E quem não ajuda vai é mesmo ficar aguardando, e muito! E o projeto contará só com scripts básicos de poketibia. Depois será parado de ser postado as versões com os scripts mais avançados - motivo: a pouca ajuda, pois só querem pronto e não querem ajudar- que ficarão estas versões melhores só com quem esta ajudando regularmente. Eu tentei ajudar na v2, mas o tópico tava morto e eu ficava no vacuo -.-
  20. @Slicer Você é do mal cara ;-; @Alexclusive Sdds =/
  21. Vai em data/XML/vocations.xml, procura o pally e edita: Só editar o attackspeed, tipo, attackspeed="100"
  22. Achei que o projeto tinha é acabado, desde o ano passado esperando a v2 ;-;
  23. Que porcaria hein? =X,prevejo ot-admins em depressão e_e
  • Quem Está Navegando   0 membros estão online

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