Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 04/07/14 em %

  1. Lucasmml

    Obrigado pelos serviços, Lucasmml!

    Obrigado à todos do fórum por todo o apoio que me deram nesse percurso, obrigado á equipe do Xtibia pela oportunidade de trabalhar e de certa forma "conviver" com um ótimo pessoal, todos muito bons no que fazem, foi bom, foi lindo.. mas como citado á cima, minha vida agora está corrida e eu acredito que a minha missão aqui no xtibia foi cumprida, eu peguei a área de spiting completamente morta ano passado e hoje ela é uma área de grande destaque no fórum. Não vou deixar de frequentar o fórum, estou apenas deixando a carga da moderação de lado.
    8 pontos
  2. Gabrieltxu

    [Pokémon] Titanium

    Conteudo Retirado.
    7 pontos
  3. Fiz esse script a pedido do querido Kluivert. o titulo já diz tudo você cria um item com descrição . é muito simples , mais é bem útil para eventos premiações manualmente de eventos. Exemplo : /d 5785, Medalha Ganha no #1 AMA -- exemplo. Vá em data / talkactions / scripts. cria um arquivo lua e cola isso dentro : Coloque a tag em data / talkactions / talkactions.xml : <talkaction log="yes" words="/d" access="4" event="script" value="NomeDoArquivo.lua"/> Bem Simples
    3 pontos
  4. Nome: Blue Blizzard Nome: Zeh Sergipano Nome: Don Kichotte Vocation: No Vocation Vocation: Knight Vocation: Druid Mundo: Calmera Mundo: Shanera Mundo: Shanera Banco: 0 Gold Banco: 0 Gold Banco: 1951 Gold
    2 pontos
  5. "Se cair levante se deslizar se segure mas nunca pense em desistir por que o quanto mas amarga for a sua queda mas doce sera a sua vitoria"
    2 pontos
  6. Sera que o SVKE pensava dessa mesma maneira? Nada eh perfeito e nao dura para sempre, porem eh bom enquanto dura... se o seu servidor acabou rapido, nao quer dizer que todos vao acabar do mesmo jeito e quem disse que aqui nos nao aprendemos algo de valor? Muitos projetados cai por conta de passar uma falsa beleza, todos querem deixar o mapa incrivel, bonito, sistemas novos, inovadores, sprites novas etc, e esquecem do principal, o que os players querem... Amigo a sua ideia eh otima, pois para mim a PXG nao eh um servidor de pokemon... continue com o projeto e nao desista. "Nao deixe que lhe fale que nao vale a pena acreditar no sonho que se tem...Se quer confiar em alguem, confie em si mesmo... quem acredita sempre alcanca..." - Renato Russo. Boa sorte ai amigo!
    2 pontos
  7. EdMignari

    OBD - Object Builder Data

    OBD é o formato usado pelo programa Object Builder para exportar e importar objetos no cliente. O tutorial pretende dar dicas básicas para melhor aproveitamento do formato. Exportando um OBD 1 - Abra seus arquivos do cliente no Object Builder. 2 - Clique no botão exportar que fica abaixo da visualização do objeto ou clique com o direito do mouse sobre o objeto na lista. 3 - Selecione o formato OBD e a versão do cliente. Importando um arquivo OBD 1 - Clique no botão importar que fica abaixo da visualização do objeto. 2 - Na janela Import Object, selecione o arquivo que deseja importar. Para importar mais de um objeto por vez, arraste os objetos direto do seus arquivos para dentro do programa e solte-os na área de visualização ou na lista de objetos. Editando OBD Se você precisa editar apenas um ou alguns OBDs. 1 - Crie novos arquivos spr e dat no Object Builder para sua versão de cliente. 2 - Importe o OBD que você deseja editar. 3 - Faça as alterações necessárias. 3 - Exporte o objeto modificado novamente como OBD. IDC para OBD Se você tem alguns IDCs e gostaria de converter pra OBD. 1 - Crie novos arquivos spr e dat no Object Builder para sua versão de cliente. 2 - Compile os arquivos. 3 - Abra os arquivos criados em um editor que suporta IDC e importe os IDCs que você precisa. 4 - Compile os arquivos. 5 - Abra os arquivos compilados novamente no Object Builder e exporte como OBD. Visualizando o conteúdo dos OBDs Use o programa Object Viewer para visualizar arquivos OBDs. Estrutura dos arquivos OBDs (Para desenvolvedores) Créditos Edmignari (edmignari@xtibia.com)
    1 ponto
  8. EdMignari

    Aumentando o Limite de Sprites

    Clientes com versões anteriores à 9.60 têm um limite de sprites de 65.535. Parece muito, mas logo esse limite é atingido e ficamos impossibilitados de adicionar novos objetos para o servidor/cliente a não ser substituindo alguns sprites. Esse tutorial pretende ensinar como configurar as principais ferramentas para aumentar o limite. A versão utilizada no tutorial foi a 8.60. Conhecimentos Necessários: Básico nas ferramentas utilizadas. Ferramentas Utilizadas: Object Builder (edita os arquivos dat e spr do cliente) ItemEditor (edita o arquivo otb, que contém os itens usados no servidor) OTClient 0.6.5 Remere's Map Editor Um programa para abrir arquivos LUA. Compilando os Arquivos Estendidos: 1.Abra seus arquivos spr e dat no Object Builder. 2.Compile os arquivos com a opção extended selecionada. Obs: Uma vez compilado estendido, a opção extended deverá estar sempre selecionada tanto ao abrir, quanto ao compilar. Configurando o ItemEditor: 1. Abra a janela preferences no menu File > Preferences ou pelo atalho Crtl + P 2. Selecione a opção extended e a pasta do cliente. Pode ser preciso reiniciar o aplicativo. Configurando OTClient: 1. Abra o arquivo things.lua encontrado em modules/game_things 2. Adicione esta linha de código na função load: function load() local version = g_game.getClientVersion() g_game.enableFeature(GameSpritesU32) -- Linha Adicionada local datPath, sprPath . . . 3.Adicione uma cópia dos arquivos dat e spr estendidos na pasta data/things. Remere's Map Editor : Abra a janela de preferências no menu File > Preferences e selecione a aba Client Version. 1 - Selecione a versão do cliente que será usada como padrão. 2 - Selecione a opção extended. 3 - Selecione a pasta onde se encontram os arquivos do cliente. OBS.: Quando a opção extended está selecionada, ocorrerá um erro se tentar abrir arquivos não estendidos ( arquivos com versão menores que 9.60) Perguntas Frequentes: P: Qual o novo limite de sprites após ser estendido? R: 4.294.967.295 P: Depois que compilar estendido, pode ser usando no cliente da Cip? R: Não! Seria preciso modificar o cliente para que consiga ler os arquivos. P: Posso usar o dat editor para modificar os arquivos depois? R: O ObjectBuilder é um dat/spr editor, mas se você quer usar outro editor, é pouco provável que funcione. Não custa tentar. Créditos: EdMignari (edmignari@xtibia.com)
    1 ponto
  9. Omega

    [AGS] Guild Task

    Aviso Esse script precisa do Advanced Guild System instalado corretamente para funcionar. Informações Esse sistema de scripts funciona como uma task para toda a guild. Assim, qualquer membro da guilda pode aceitar uma task e cada monstro morto por qualquer membro irá contar para completar a task. Ao terminar a task, um membro deve falar com o NPC, que dará guild points e depositará o dinheiro na conta da guilda. Para melhor usufruto, use em conjunto com o Guild Banker. Códigos data/lib/guildtask_lib.lua data/creaturescripts/scripts/guild_onKill.lua data/npcs/scripts/guild_task_npc.lua data/lib/npc/Arthur.xml Configurações Para acrescentar monstros:Abra o arquivo guildtask_lib.lua e adicione {names = {"nome da task", "nome do monstro(1)", "nome do monstro(2), etc...}, totalKills = numero de monstros para completar a task, money = recompensa(dinheiro), points = recompensa(pontos), minPoints = mínimo de pontos para habilitar a task}, Logo abaixo dos demais monstros. Por exemplo, para acrescentar uma task para matar vários tipos de dragons, ficaria assim (o primeiro nome é o nome do task): -- Monsters monsters = { {names = {"dragon"}, totalKills = 5, money = 5000, points = 3, minPoints = 0}, {names = {"dragon lord"}, totalKills = 5, money = 15000, points = 5, minPoints = 1}, {names = {"dragon hunter task", "dragon lord", "dragon", "frost dragon", "undead dragon"}, totalKills = 500, money = 150000, points = 5, minPoints = 10}, }, Para configurar o tempo entre uma task e outra, utilize a variável waitTime (guildtask_lib.lua): -- Other variables waitTime = 1440, -- Tempo de espera para começar outra task após entregar uma } Para que não haja tempo de espera, coloque o valor 0. Esse tempo é em minutos.
    1 ponto
  10. JulynaMiiy

    PokexGeneration

    • Menu: ├ Informações; ├ Ediçoes; ├ Prints; ├ Download; └ Creditos. • Informações; • Edições; • PrintScreen; • Download; • Créditos; - Brun123. - Slicer. - ZerefShirou. - Zipter98. - StyloMaldoso. - JulynaMiiy. - Murluka.
    1 ponto
  11. caotic

    TV System by caotic

    Eae galeerrra xtibiana. Venho disponibilizar o famoso sistema de televisão poketibiano completo o sistema foi feito para ambos os clients tibianos. O sistema permite você assistir outro players jogando assim você fica sem usar itens,falar(so pm), se movimentar e etc... Vamos la: Vá em luascript.cpp e procure: int32_t LuaScriptInterface::luaGetTopCreature(lua_State* L) { //getTopCreature(pos) PositionEx pos; popPosition(L, pos); ScriptEnviroment* env = getEnv(); Tile* tile = g_game.getTile(pos); if(!tile) { pushThing(L, NULL, 0); return 1; } Thing* thing = tile->getTopCreature(); if(!thing || !thing->getCreature()) { pushThing(L, NULL, 0); return 1; } pushThing(L, thing, env->addThing(thing)); return 1; } E coloque embaixo: int32_t LuaScriptInterface::luaGetAllsTvs(lua_State* L) { //getAllsTvs(cid) ScriptEnviroment* env = getEnv(); Player* player = env->getPlayerByUID(popNumber(L)); if (!player) { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); return 1; } Tvlist::iterator it; it = player->tv.begin(); lua_newtable(L); uint32_t tableplayers = 1; for(uint32_t i = 1; it != player->tv.end(); ++it, ++i) { Player* players = env->getPlayerByUID(*it); if (players) { lua_pushnumber(L, tableplayers); lua_pushnumber(L, env->addThing(players)); pushTable(L); tableplayers = tableplayers+1; } } return 1; } int32_t LuaScriptInterface::luaSetPlayerTv(lua_State* L) { ScriptEnviroment* env = getEnv(); Player* player_tv = env->getPlayerByUID(popNumber(L)); Creature* creature = env->getCreatureByUID(popNumber(L)); if (!creature) { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } Player* player = creature->getPlayer(); if (!player) { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); return 1; } if (!player_tv) { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); return 1; } player_tv->tv.push_back(player->getID()); SpectatorVec::iterator it; SpectatorVec list = g_game.getSpectators(player->getPosition()); Player* tmpPlayer = NULL; Condition* condition = NULL; if((condition = Condition::createCondition(CONDITIONID_DEFAULT, CONDITION_GAMEMASTER, -1, 0, false, GAMEMASTER_INVISIBLE))) { creature->setHideName(false); player->addCondition(condition); g_game.internalCreatureChangeVisible(creature, VISIBLE_GHOST_DISAPPEAR); for(it = list.begin(); it != list.end(); ++it) { if((tmpPlayer = (*it)->getPlayer()) && !tmpPlayer->canSeeCreature(player)) tmpPlayer->sendMagicEffect(player->getPosition(), MAGIC_EFFECT_POFF); } for(AutoList<Player>::iterator pit = Player::autoList.begin(); pit != Player::autoList.end(); ++pit) { if(!pit->second->canSeeCreature(player)) pit->second->notifyLogOut(player); } IOLoginData::getInstance()->updateOnlineStatus(player->getGUID(), false); if(player->isTrading()) g_game.internalCloseTrade(player); player->clearPartyInvitations(); if(player->getParty()) player->getParty()->leave(player); g_game.internalTeleport(player, player_tv->getPosition(), true); } lua_pushboolean(L, true); } int32_t LuaScriptInterface::luaDoSendChannelsTv(lua_State* L) { ScriptEnviroment* env = getEnv(); Player* player = env->getPlayerByUID(popNumber(L)); if (!player) { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); return 1; } player->sendChannelsDialog(true); lua_pushboolean(L, true); return 1; } int32_t LuaScriptInterface::luaDoRemovePlayerTv(lua_State* L) { ScriptEnviroment* env = getEnv(); Player* player = env->getPlayerByUID(popNumber(L)); Player* creature = env->getPlayerByUID(popNumber(L)); if (!player) { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); return 1; } for(std::list<uint32_t>::iterator it = player->tv.begin(); it != player->tv.end(); ++it) { if ((*it) == creature->getID()) { Tvlist tv = player->tv; if (!creature) { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); return 1; } Player* player_tv = creature->getPlayer(); if (!player) { return 1; } SpectatorVec::iterator its; SpectatorVec list = g_game.getSpectators(player_tv->getPosition()); Player* tmpPlayer = NULL; Condition* condition = NULL; creature->setHideName(false); if((condition = player_tv->getCondition(CONDITION_GAMEMASTER, CONDITIONID_DEFAULT, GAMEMASTER_INVISIBLE))) { IOLoginData::getInstance()->updateOnlineStatus(player_tv->getGUID(), true); for(AutoList<Player>::iterator pit = Player::autoList.begin(); pit != Player::autoList.end(); ++pit) { if(!pit->second->canSeeCreature(player_tv)) pit->second->notifyLogIn(player_tv); } for(its = list.begin(); its != list.end(); ++its) { if((tmpPlayer = (*its)->getPlayer()) && !tmpPlayer->canSeeCreature(player_tv)) tmpPlayer->sendMagicEffect(player_tv->getPosition(), MAGIC_EFFECT_TELEPORT); } player_tv->removeCondition(condition); g_game.internalCreatureChangeVisible(creature, VISIBLE_GHOST_APPEAR); *it = NULL; } } } lua_pushboolean(L, true); } Continuando em luascript.cpp procure: //doCreatureSay(uid, text[, type = SPEAK_SAY[, ghost = false[, cid = 0[, pos]]]]) lua_register(m_luaState, "doCreatureSay", LuaScriptInterface::luaDoCreatureSay); Coloque embaixo: //doRemovePlayerTv(cid, id) lua_register(m_luaState, "removePlayerTv", LuaScriptInterface::luaDoRemovePlayerTv); //getAllsTv() lua_register(m_luaState, "getTvs", LuaScriptInterface::luaGetAllsTvs); //setPlayerTv(cid, player) lua_register(m_luaState, "setPlayerTv", LuaScriptInterface::luaSetPlayerTv); //doSendChannelstTv(cid) lua_register(m_luaState, "doSendChannelsTv", LuaScriptInterface::luaDoSendChannelsTv); Em luascript.h procure: static int32_t luaGetPlayerParty(lua_State* L); Coloque embaixo: static int32_t luaGetAllsTvs(lua_State* L); static int32_t luaSetPlayerTv(lua_State* L); static int32_t luaDoSendChannelsTv(lua_State* L); static int32_t luaDoRemovePlayerTv(lua_State* L); Vamos agora em game.cpp: Procure: bool Game::playerSay(uint32_t playerId, uint16_t channelId, SpeakClasses type, const std::string& receiver, const std::string& text) E substitua função por esta nova função: bool Game::playerSay(uint32_t playerId, uint16_t channelId, SpeakClasses type, const std::string& receiver, const std::string& text) { Player* player = getPlayerByID(playerId); if(!player || player->isRemoved()) return false; std::string str; if (player->getStorage(34421, str) && str == "true") { if (type == SPEAK_SAY) { player->getStorage(292924, str); player->sendTextMessage(MSG_STATUS_SMALL, str.c_str()); return false; } switch(type) { case SPEAK_WHISPER: return playerWhisper(player, text); case SPEAK_YELL: return playerYell(player, text); case SPEAK_PRIVATE: case SPEAK_PRIVATE_RED: case SPEAK_RVR_ANSWER: return playerSpeakTo(player, type, receiver, text); case SPEAK_CHANNEL_O: case SPEAK_CHANNEL_Y: case SPEAK_CHANNEL_RN: case SPEAK_CHANNEL_RA: case SPEAK_CHANNEL_W: { if(playerTalkToChannel(player, type, text, channelId)) return true; return playerSay(playerId, 0, SPEAK_SAY, receiver, text); } case SPEAK_BROADCAST: return playerBroadcastMessage(player, SPEAK_BROADCAST, text); case SPEAK_RVR_CHANNEL: return playerReportRuleViolation(player, text); case SPEAK_RVR_CONTINUE: return playerContinueReport(player, text); default: break; } internalCreatureSay(player, SPEAK_SAY, text, false); return false; } uint32_t muteTime = 0; bool muted = player->isMuted(channelId, type, muteTime); if(muted) { char buffer[75]; sprintf(buffer, "You are still muted for %d seconds.", muteTime); player->sendTextMessage(MSG_STATUS_SMALL, buffer); return false; } if(player->isAccountManager()) { player->removeMessageBuffer(); return internalCreatureSay(player, SPEAK_SAY, text, false); } if(g_talkActions->onPlayerSay(player, type == SPEAK_SAY ? CHANNEL_DEFAULT : channelId, text, false)) return true; if(!muted) { ReturnValue ret = RET_NOERROR; if(!muteTime) { ret = g_spells->onPlayerSay(player, text); if(ret == RET_NOERROR || (ret == RET_NEEDEXCHANGE && !g_config.getBool(ConfigManager::BUFFER_SPELL_FAILURE))) return true; } player->removeMessageBuffer(); if(ret == RET_NEEDEXCHANGE) return true; } switch(type) { case SPEAK_SAY: return internalCreatureSay(player, SPEAK_SAY, text, false); case SPEAK_WHISPER: return playerWhisper(player, text); case SPEAK_YELL: return playerYell(player, text); case SPEAK_PRIVATE: case SPEAK_PRIVATE_RED: case SPEAK_RVR_ANSWER: return playerSpeakTo(player, type, receiver, text); case SPEAK_CHANNEL_O: case SPEAK_CHANNEL_Y: case SPEAK_CHANNEL_RN: case SPEAK_CHANNEL_RA: case SPEAK_CHANNEL_W: { if(playerTalkToChannel(player, type, text, channelId)) return true; return playerSay(playerId, 0, SPEAK_SAY, receiver, text); } case SPEAK_PRIVATE_PN: return playerSpeakToNpc(player, text); case SPEAK_BROADCAST: return playerBroadcastMessage(player, SPEAK_BROADCAST, text); case SPEAK_RVR_CHANNEL: return playerReportRuleViolation(player, text); case SPEAK_RVR_CONTINUE: return playerContinueReport(player, text); default: break; } return false; } Continuando em game.cpp procure a função: ReturnValue Game::internalMoveCreature(Creature* creature, Direction direction, uint32_t flags/* = 0*/) E substitua por esta função: ReturnValue Game::internalMoveCreature(Creature* creature, Direction direction, uint32_t flags/* = 0*/) { const Position& currentPos = creature->getPosition(); Cylinder* fromTile = creature->getTile(); Cylinder* toTile = NULL; Position destPos = getNextPosition(direction, currentPos); if(direction < SOUTHWEST && creature->getPlayer()) { Tile* tmpTile = NULL; if(currentPos.z != 8 && creature->getTile()->hasHeight(3)) //try go up { if((!(tmpTile = map->getTile(Position(currentPos.x, currentPos.y, currentPos.z - 1))) || (!tmpTile->ground && !tmpTile->hasProperty(BLOCKSOLID))) && (tmpTile = map->getTile(Position(destPos.x, destPos.y, destPos.z - 1))) && tmpTile->ground && !tmpTile->hasProperty(BLOCKSOLID)) { flags = flags | FLAG_IGNOREBLOCKITEM | FLAG_IGNOREBLOCKCREATURE; destPos.z--; } } else if(currentPos.z != 7 && (!(tmpTile = map->getTile(destPos)) || (!tmpTile->ground && !tmpTile->hasProperty(BLOCKSOLID))) && (tmpTile = map->getTile(Position( destPos.x, destPos.y, destPos.z + 1))) && tmpTile->hasHeight(3)) //try go down { flags = flags | FLAG_IGNOREBLOCKITEM | FLAG_IGNOREBLOCKCREATURE; destPos.z++; } } ReturnValue ret = RET_NOTPOSSIBLE; if((toTile = map->getTile(destPos))) ret = internalMoveCreature(NULL, creature, fromTile, toTile, flags); if(ret != RET_NOERROR) { if(Player* player = creature->getPlayer()) { player->sendCancelMessage(ret); player->sendCancelWalk(); } } Player* player = creature->getPlayer(); if (player) { Tvlist::iterator it; it = player->tv.begin(); for(uint32_t i = 1; it != player->tv.end(); ++it, ++i) { Player* players = getPlayerByID(*it); if (players) { internalTeleport(players, player->getPosition(), true, 0); } } } return ret; } Procure a função: bool Game::playerRequestChannels(uint32_t playerId) Substitua a função por: bool Game::playerRequestChannels(uint32_t playerId) { Player* player = getPlayerByID(playerId); if(!player || player->isRemoved()) return false; player->sendChannelsDialog(false); return true; } Agora vamos a protocolgame.cpp e procure a função; void ProtocolGame::sendChannelsDialog(bool tv) E substitua por esta função: void ProtocolGame::sendChannelsDialog(bool tv) { NetworkMessage_ptr msg = getOutputBuffer(); std::string str; if(msg) { if (tv) { uint16_t bytes = 0; for(AutoList<Player>::iterator it = Player::autoList.begin(); it != Player::autoList.end(); ++it) { it->second->getStorage(22120, str); if (str == "true") { bytes = bytes+1; } } if (bytes < 1) { player->sendCancel("Não há nenhuma tv online"); return; } TRACK_MESSAGE(msg); msg->AddByte(0xAB); msg->AddByte(bytes); uint16_t id = 200; for(AutoList<Player>::iterator it = Player::autoList.begin(); it != Player::autoList.end(); ++it) { it->second->getStorage(22120, str); if (str == "true") { id = id+1; it->second->getStorage(12121, str); msg->AddU16(id); msg->AddString(str); } } return; } TRACK_MESSAGE(msg); msg->AddByte(0xAB); ChannelList list = g_chat.getChannelList(player); msg->AddByte(list.size()); for(ChannelList::iterator it = list.begin(); it != list.end(); ++it) { if(ChatChannel* channel = (*it)) { msg->AddU16(channel->getId()); msg->AddString(channel->getName()); } } } } Procure em protocolgame.h a seguinta declaração: void sendChannelsDialog(); Substitua por: void sendChannelsDialog(bool tv); Agora vamos em player.h e procure: void sendChannelsDialog() {if(client) client->sendChannelsDialog();} E substitua por: void sendChannelsDialog(bool tv) {if(client) client->sendChannelsDialog(tv);} Procure denovo em player.h: typedef std::list<Party*> PartyList; E adicione embaixo: typedef std::list<uint32_t> Tvlist; Continuando em player.h procure: AttackedSet attackedSet; Coloque embaixo: Tvlist tv; Vamos denovo a protocolgame.cpp e procure: if(player->isAccountManager()) { switch(recvbyte) { case 0x14: parseLogout(msg); break; case 0x96: parseSay(msg); break; default: sendCancelWalk(); break; } } Coloque embaixo: std::string str; if (player->getStorage(34421, str) && str == "true") { player->getStorage(292924, str); switch(recvbyte) { case 0x14: parseLogout(msg); break; case 0x96: parseSay(msg); break; case 0x97: // request channels parseGetChannels(msg); break; case 0x98: // open channel parseOpenChannel(msg); break; case 0x99: // close channel parseCloseChannel(msg); break; case 0x9A: // open priv parseOpenPriv(msg); break; case 0x1E: // keep alive / ping response parseReceivePing(msg); break; default: player->sendTextMessage(MSG_INFO_DESCR, str); break; } Seguidamente vá em creatureevent.cpp e procure: else if(tmpStr == "preparedeath") m_type = CREATURE_EVENT_PREPAREDEATH; Coloque embaixo: else if(tmpStr == "selecttv") m_type = CREATURE_EVENT_SELECTTV; Procure depois: case CREATURE_EVENT_PREPAREDEATH: return "onPrepareDeath"; Coloque embaixo: case CREATURE_EVENT_SELECTTV: return "onSelectTv"; Procure: case CREATURE_EVENT_PREPAREDEATH: return "cid, deathList"; Coloque embaixo: case CREATURE_EVENT_SELECTTV: return "cid, id"; Procure: uint32_t CreatureEvent::executeChannelJoin(Player* player, uint16_t channelId, UsersMap usersMap) { //onJoinChannel(cid, channel, users) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { std::stringstream scriptstream; scriptstream << "local cid = " << env->addThing(player) << std::endl; scriptstream << "local channel = " << channelId << std::endl; scriptstream << "local users = {}" << std::endl; for(UsersMap::iterator it = usersMap.begin(); it != usersMap.end(); ++it) scriptstream << "users:insert(" << env->addThing(it->second) << ")" << 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); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(player)); lua_pushnumber(L, channelId); UsersMap::iterator it = usersMap.begin(); lua_newtable(L); for(int32_t i = 1; it != usersMap.end(); ++it, ++i) { lua_pushnumber(L, i); lua_pushnumber(L, env->addThing(it->second)); lua_settable(L, -3); } bool result = m_interface->callFunction(3); m_interface->releaseEnv(); return result; } } else { std::cout << "[Error - CreatureEvent::executeChannelJoin] Call stack overflow." << std::endl; return 0; } } Coloque embaixo: uint32_t CreatureEvent::executeSelectTv(Player* player, uint16_t id) { //onSelectTv(cid, id) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { std::stringstream scriptstream; scriptstream << "local cid = " << env->addThing(player) << std::endl; scriptstream << "local id = " << id << 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); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(player)); lua_pushnumber(L, id); bool result = m_interface->callFunction(2); m_interface->releaseEnv(); return result; } } else { std::cout << "[Error - CreatureEvent::executeChannelJoin] Call stack overflow." << std::endl; return 0; } } Vá em creatureevent.h e procure: CREATURE_EVENT_ATTACK, Coloque embaixo: CREATURE_EVENT_SELECTTV Procure continuando em creatureevent.h: uint32_t executeCombat(Creature* creature, Creature* target); Coloque embaixo: uint32_t executeSelectTv(Player* player, uint16_t id); Vá agora em game.cpp denovo e procure a função: bool Game::playerOpenChannel(uint32_t playerId, uint16_t channelId) Substitua a função por: bool Game::playerOpenChannel(uint32_t playerId, uint16_t channelId) { Player* player = getPlayerByID(playerId); if(!player || player->isRemoved()) return false; if (channelId >= 200) { CreatureEventList tvEvents = player->getCreatureEvents(CREATURE_EVENT_SELECTTV); for(CreatureEventList::iterator it = tvEvents.begin(); it != tvEvents.end(); ++it) (*it)->executeSelectTv(player, channelId); return true; } ChatChannel* channel = g_chat.addUserToChannel(player, channelId); if(!channel) { #ifdef __DEBUG_CHAT__ std::cout << "Game::playerOpenChannel - failed adding user to channel." << std::endl; #endif return false; } if(channel->getId() != CHANNEL_RVR) player->sendChannel(channel->getId(), channel->getName()); else player->sendRuleViolationsChannel(channel->getId()); return true; } Vá em data/lib e crie um novo arquivo lua chamado tv system: names = {} storage_hastv = 22120 storage_watchtv = 34421 storage_nametv = 12121 storage_idwatchtv = 21213 storage_msgwatch = 292924 storage_namewatchtv = 21923 storage_save_group_id = 63732 smallerros = false ERROR_ID_NOT_FOUND = "ERROR\nPLAYER NOT FOUND\nSet Storage FALSE ON LOGIN" MSG_TV_SYSTEM = "Esta ação não e possivel você esta assistindo" MSG_CREATE_TV = "Parabéns, você criou sua TV " MSG_LOGOUT_TV = "Você saiu da tv " MSG_LOGOUT_TV_TOWN = "Você retornou a sua cidade " ID_ITEM_TV = 1949 ---- IMPORTANTE ID DA SUA CAM(CAMERA) MSG_WATCH_TV = "Você esta assitindo a uma tv" MSG_HAS_TV = "Você ja tem tv" MSG_NO_HAS_TV = "Você não tem tv" MSG_ENTER_PLAYER = "Um novo player entrou - " MININUM_STRING_CARACTER = 4 HAS_TV = "Você ja tem uma tv" MSG_DELETE_TV = "Você deletou sua channel com sucesso" MSG_WATCH_TV_ENTER_TV = "Você entrou na channel " NAME_WRONG = "Nome incorreto" MSG_HAS_NAME_TV = "Desculpe, ja existe uma tv com este nome escolha outro por favor" function setBooleanStorage(cid, storage, bool) if not bool then setPlayerStorageValue(cid, storage, -1) return true end setPlayerStorageValue(cid, storage, "true") return true end function checkFindStrings(str, array) for i=1, #array do if string.find(str, array[i]) then return true end end return false end function playerHasTv(cid) return getPlayerStorageValue(cid, storage_hastv) == "true" and true end function playerWatchTv(cid) return getPlayerStorageValue(cid, storage_watchtv) == "true" and true end function getTvOnlines() local t = {} local online = getPlayersOnline() for i=1, #online do if playerHasTv(online[i]) then table.insert(t, online[i]) end end return t end function getNamesTv(sep) local tvs = getTvOnlines() str = "" for i=1, #tvs do str = str..sep..getTvName(tvs[i]) end return str end function getIdByTvName(name) local tvs = getTvOnlines() for i=1, #tvs do if tvs[i] == name then return name end end return false end function stopWatchAllsPlayerTv(id) local onlines = getTvs(id) for i=1, #onlines do playerStopWatchTv(onlines[i]) end return true end function getNameTv(id) if not isPlayer(id) then print(ERROR_ID_NOT_FOUND) return false end local storage = getPlayerStorageValue(id, storage_nametv) if storage ~= -1 then return storage end return "" end function createNewTv(cid, name) if #name < MININUM_STRING_CARACTER or checkFindStrings(name, names) then doPlayerSendCancel(cid, NAME_WRONG) return false end local tvs = getTvOnlines() for i=1, #tvs do if getNameTv(tvs[i]) == name then doPlayerSendCancel(cid, MSG_HAS_NAME_TV) return false end end if playerHasTv(cid) then doPlayerSendCancel(cid, MSG_HAS_TV) return false end if playerWatchTv(cid) then doPlayerSendCancel(cid, MSG_WATCH_TV) return false end setBooleanStorage(cid, storage_hastv, true) setPlayerStorageValue(cid, storage_nametv, name) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, MSG_CREATE_TV..name) return true end function getTvNameById(id) if not isPlayer(id) then print(ERROR_ID_NOT_FOUND) return false end return getPlayerStorageValue(id, storage_nametv) end function playerWatchTv(cid, id) if not isPlayer(id) then if smallerros then print(ERROR_ID_NOT_FOUND) end return false end if playerHasTv(cid) then doPlayerSendCancel(cid, MSG_HAS_TV) return false end if playerWatchTv(cid) then doPlayerSendCancel(cid, MSG_WATCH_TV) return false end local name = getTvNameById(id) setBooleanStorage(cid, storage_watchtv, true) setPlayerStorageValue(cid, storage_msgwatch, MSG_TV_SYSTEM) setPlayerStorageValue(cid, storage_idwatchtv, id) setPlayerStorageValue(cid, storage_namewatchtv, name) setPlayerStorageValue(cid, storage_save_group_id, getPlayerGroupId(cid)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, MSG_WATCH_TV_ENTER_TV) doPlayerSendTextMessage(id, MESSAGE_STATUS_CONSOLE_BLUE, MSG_ENTER_PLAYER..getCreatureName(cid)) setPlayerTv(cid, id) return true end function playerStopWatchTv(cid) local id = getPlayerStorageValue(cid, storage_idwatchtv) local name = getPlayerStorageValue(cid, storage_namewatchtv) local town = getPlayerTown(cid) local namet = getTownName(town) local post = getTownTemplePosition(town) if getPlayerStorageValue(cid, storage_watchtv) ~= "true" then return true end removePlayerTv(cid, id) setBooleanStorage(cid, storage_watchtv, false) setPlayerStorageValue(cid, storage_idwatchtv, -1) setPlayerStorageValue(cid, storage_namewatchtv, -1) setPlayerGroupId(cid, getPlayerStorageValue(cid, storage_save_group_id)) doTeleportThing(cid, post) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, MSG_LOGOUT_TV..name) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, MSG_LOGOUT_TV_TOWN..namet) return true end function deleteTv(cid) if getPlayerStorageValue(cid, 22120) ~= "true" then return false end stopWatchAllsPlayerTv(cid) setBooleanStorage(cid, storage_hastv) setPlayerStorageValue(cid, storage_nametv, -1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, MSG_DELETE_TV) return true end Agora vamos em actions e crie um arquivo lua chamado tv e coloque: function onUse(cid, item, fromPosition, itemEx, toPosition) doSendChannelsTv(cid) end Vá em actions.xml e coloque a seguinte configurando com o id da sua tv: Agora vamos em talkactions e crie um novo arquivo lua chamado delete e coloque isto: function onSay(cid, words, param, channel) deleteTv(cid) return true end Agora vamos em talkactions.xml e coloque a seguinte tag: <talkaction words="/delete" event="script" value="delete.lua"/> Agora vamos a creaturescripts e crie um arquivo lua chamado createTv e coloque: function onTextEdit(cid, it:em, newText) if item.itemid == ID_ITEM_TV then createNewTv(cid, newText) return true end return true end Crie outro chamado de tv e coloque: function onSelectTv(cid, id) local tv = getTvOnlines() local idstarter = 200 for i=1, #tv do local tv = tv[i] local sub_id = i+idstarter if sub_id == id then playerWatchTv(cid, tv) end end return true end Crie outro chamado de tvlogout : function onLogout(cid) if isPlayer(cid) then deleteTv(cid) playerStopWatchTv(cid) end return true end Vá em creaturescripts.xml e coloque as seguintes as tags: <event type="textedit" name="newTv" event="script" value="createTv.lua"/> <event type="selecttv" name="selecttv" event="script" value="tv.lua"/> <event type="logout" name="tvlogout" event="script" value="tvlogout.lua"/> Vá em data/xml/group.xml e abra o arquivo e coloque o novo group: <group id="8" name="Tv" flags="3845069447162" customFlags="2097151" access="1" violationReasons="4" nameViolationFlags="2"/> Video do sistema em execução: E recomendavel NUNCA modificar as storages porques estão ligados aos codigos. Para mudar o id da camera e so mudar a variavel ID_ITEM_TV Para deletar uma tv diga o comand /delete
    1 ponto
  12. SamueLGuedes

    Alguns tutoriais de PDA Slicer

    Galera hoje vou lhes mostrar alguns tutorias para PDA, que eu vi e alguns queriam saber. 1° Como configurar o exp do seu server. 2°como adicionar um novo fly, ride e etc, OBS: nao vou mostrar como adicionar no dat editor, eu irei ensinar como configurar ele no script: vá em data/lib/configuration.lua, e procure essa linha: 3° pokemons e items iniciais (creio que muitos ainda nao sabem como modificar) 4° Como adicionar uma nova ball para o PDA (ajuda do stylomaldoso) 5° Como aumentar e diminuir o Cauth do pokemon. 6° Golden arena: 7° como aumentar o drop de loots: 8° como aumentar a velocidade do player: 9° como modificar seu rme para poketibia. 10° como mudar o efeito do emoticon. 11° como deixar o pokemon passivo, ou agressivo. 12° como mudar a efetividade de um pokemon 13° como adicionar ou remover um pokemon do HeadButt 14° Como adicionar um Passive no Pokemon: Creditos: Slicer (pelo servidor que eu estou pegando essas informaçoes) Eu (por criar o tutorial) StyloMaldoso (por um tutorial que me ajudou) por enquanto é só esses tutoriais, se alguém tiver mais alguma duvida, pergunte aqui no tópico mesmo. OBS: se tiver faltando alguém nos créditos que eu não saiba, me avisem. Abraços, e comentem.
    1 ponto
  13. Outland completa para POKÉMON. Atualizado 26/11/2013 DOWNLOAD: http://www.4shared.com/rar/VaQnQ718/Outlands_26112013.html? O 4shared já faz o scan. Outlands Leaf Ghost Psychic Fire (East) Bug Rock Fire (South) Normal Fly Ice Electric Earth Fight Dragon SE GOSTOU, DÁ UM CURTIR E DEIXE SEU COMENTÁRIO Créditos: murluka
    1 ponto
  14. gabrielbsales

    [PDA] New Ditto System[PXG]

    Bom, esse ditto system: -Copia o pokemon e o balanceia sem necessidade de puxa-lo. -Copias Habilidades... Primeiramente, vá no some functions.lua - Localizado na pasta lib. E adicione isto no final(depois do ultimo end): Bom, essas são as funções de transformar e destransformar. Agora, vá no order.lua - Localizado no actions/scripts. E procure por: -------- TRANSFORM ---------- Apague tudo aqui dentro, até o: -------- LIGHT -------------- Ali dentro, bote: Pronto, ditto ja está tranformando, agora falta o !revert, para isso vá em talkactions/scripts e crie um arquivo(.lua) com nome de dittorevert, e dentro coloque: Agora, no talkactions.xml adicione esta linha: <talkaction words = "!revert;/revert" hide="yes" event = "script" value = "dittorevert.lua"/> Se fizer tudo corretamente, funcionará normalmente. Gif: Créditos: Gabrielbsales(sou op faço tudo solo)
    1 ponto
  15. curruwilliam

    [Gesior] Azure V2

    Saudações terráqueos, Outro layout pro server Azure. Layout parecido com o do [Modern ACC] Imagens: Ainda terminando ele.. até mais Download: http://www.xtibia.com/forum/topic/231725-gesior-azure-v2/
    1 ponto
  16. eltoo

    Weto Showoff

    Nenhuma delas está disponível para usar. Algumas sprites feita no decorrer da minha experiência. Atualizações:
    1 ponto
  17. Frenvius

    [Arquivado]Fairy Tail Online - Show-off

    Gráfico Olá, eu sou Frenvius, Spriter/Desginer do projeto Fairy Tail Online. Fará um mês desde que voltamos com o projeto, estamos focados, trabalhando dia e noite para um melhor desempenho do servidor. Até então, estivemos acumulando conteúdo para mostrarmos a vocês durante um certo período. Este é apenas um exemplo Gráfico do nosso game, toda parte gráfica será desenvolvida por mim. Estaremos trabalhando com o gráfico para que ele fique agradável aos olhos de todos, escolhemos muito bem as cores, para assim termos um gráfico bonito fugindo do padrão de outros servidores e da temática do Tibia. Sugestões são sempre bem vindas, o game é feito a gosto de quem joga. Guild System - Level O Guild System é um dos sistemas mais importantes, o jogo inteiro está ligado nele [Praticamente]. Cada usuário poderá se ingressar ou criar uma nova guilda, para executar uma das ações, ele não poderá ser membro de nenhuma. Para criar uma guilda, será necessário no mínimo alcançar o nível 30 [valor ainda não definido]; Individualmente, cada guilda possuirá seu level e experiência. A cada monstro morto por um membro, a guilda receberá 10% da experiência total da criatura morta (Não será descontado no que o player ganhará). Como este é um sistema muito longo, ele será dividido em três partes e a cada dois dias será lançado um novo teaser sobre ele. Dica: Quanto mais usuários ativos em sua guilda, mais experiência ela receberá, mais level ela terá. Guild System - Request Board Como na série Fairy Tail, os magos que pertencem as guildas fazem trabalhos pela comissão. Esses trabalhos estão expostos em um quadro, qualquer um pode pega-los. Um esquema de como funcionará no jogo: Qualquer jogador poderá pegar uma task no Request Board de sua guilda. - Ninguém poderá fazer duas tasks ao mesmo tempo. - Após o jogador pegar a task no quadro, ela nunca mais poderá ser feita. [Existe exceções]; - As tasks irão aparecer no quadro de acordo com o nível da Guilda. Quanto maior for o nível dela, maior vai ser a dificuldade delas e maior a quantidade de tasks para serem realizadas. Guild System - Flags A ideia desse sistema veio de um jogo chamado Ragnarök. O que queremos propor é que as guildas com as maiores influências no jogo terá sua marca exposta para todos os jogadores em bandeiras que estarão nas cidades. Um dos fatores que contribuirá é o level da guilda. - Não será necessário baixar uma nova atualização a cada nova influência. - Os jogadores poderão fazer upload do ícone de suas guildas pelo site, para representar a guilda no site. [sem perspectiva 45º] - A ideia desse sistema foi para que tivesse uma valorização na força das guildas, não que seja a única. Paperdoll System Paperdoll é a representação dos equipamentos utilizados pelo personagem possibilitando a criação das mais variadas combinações, desde os cabelos, roupas, armas, acessórios e outros. Próximo Teaser: --/--/-- Forum
    1 ponto
  18. Frenvius

    Fairy Tail Online [FTO]

    Gráfico Olá, eu sou Frenvius, Spriter/Desginer do projeto Fairy Tail Online. Fará um mês desde que voltamos com o projeto, estamos focados, trabalhando dia e noite para um melhor desempenho do servidor. Até então, estivemos acumulando conteúdo para mostrarmos a vocês durante um certo período. Este é apenas um exemplo Gráfico do nosso game, toda parte gráfica será desenvolvida por mim. Estaremos trabalhando com o gráfico para que ele fique agradável aos olhos de todos, escolhemos muito bem as cores, para assim termos um gráfico bonito fugindo do padrão de outros servidores e da temática do Tibia. Sugestões são sempre bem vindas, o game é feito a gosto de quem joga. Guild System - Level O Guild System é um dos sistemas mais importantes, o jogo inteiro está ligado nele [Praticamente]. Cada usuário poderá se ingressar ou criar uma nova guilda, para executar uma das ações, ele não poderá ser membro de nenhuma. Para criar uma guilda, será necessário no mínimo alcançar o nível 30 [valor ainda não definido]; Individualmente, cada guilda possuirá seu level e experiência. A cada monstro morto por um membro, a guilda receberá 10% da experiência total da criatura morta (Não será descontado no que o player ganhará). Como este é um sistema muito longo, ele será dividido em três partes e a cada dois dias será lançado um novo teaser sobre ele. Dica: Quanto mais usuários ativos em sua guilda, mais experiência ela receberá, mais level ela terá. Guild System - Request Board Como na série Fairy Tail, os magos que pertencem as guildas fazem trabalhos pela comissão. Esses trabalhos estão expostos em um quadro, qualquer um pode pega-los. Um esquema de como funcionará no jogo: Qualquer jogador poderá pegar uma task no Request Board de sua guilda. - Ninguém poderá fazer duas tasks ao mesmo tempo. - Após o jogador pegar a task no quadro, ela nunca mais poderá ser feita. [Existe exceções]; - As tasks irão aparecer no quadro de acordo com o nível da Guilda. Quanto maior for o nível dela, maior vai ser a dificuldade delas e maior a quantidade de tasks para serem realizadas. Guild System - Flags A ideia desse sistema veio de um jogo chamado Ragnarök. O que queremos propor é que as guildas com as maiores influências no jogo terá sua marca exposta para todos os jogadores em bandeiras que estarão nas cidades. Um dos fatores que contribuirá é o level da guilda. - Não será necessário baixar uma nova atualização a cada nova influência. - Os jogadores poderão fazer upload do ícone de suas guildas pelo site, para representar a guilda no site. [sem perspectiva 45º] - A ideia desse sistema foi para que tivesse uma valorização na força das guildas, não que seja a única. Paperdoll System Paperdoll é a representação dos equipamentos utilizados pelo personagem possibilitando a criação das mais variadas combinações, desde os cabelos, roupas, armas, acessórios e outros. Próximo Teaser: --/--/-- Forum
    1 ponto
  19. Kluivert

    [PPO] Project Pokemon Online

    Ola, meu nome é Kluivert Davi, e hoje venho aqui através deste tópico apresentar a você o Project Pokemon Online (PPO). Ao contrario de muitos servidores sobre Pokemon o nosso objetivo é inovar o máximo possível o jeito de jogar pokemon trazendo você mais perto possível anime, sendo assim o principal objetivo da nossa equipe e a diversão de todos! Mapa próprio 100% ......... Por enquanto esses são os sistemas que temos até agora (esses são básico) em breve vamos adicionas mais sistemas! Catch 100% Fly 100% Surf 100% Ride 100% Rock Smash 100% Cut 100% Teleport 100% Control Mind 100% Goback 100% Portrait 100% Pokedex 100% Icon System 100% Torneios Semanais 100% Tasks Diarias 100% Held Items 100% Addons Items 100% Sistema de Televisão 100% • Administrador: [Techrlz] • Mapper: [Techrlz] • Spriter:[Techrlz] • Scripter: [Techrlz] • Programador:[Techrlz] • Designer Geral: [Kluivert] Atualmente só temos uma vaga na equipe que é a de spriter, caso você se garante/sabe spriting e se interesse em entrar na equipe preencha o formulário abaixo e poste aqui no tópico ou mande por PM! Background do client e preview do launcher!
    1 ponto
  20. [ spoiler] Poin Scripts Dentro Tira o Espaço
    1 ponto
  21. grilado13

    Ajuda com pop-up flutuante?

    http://www.xtibia.com/forum/topic/231426-janela-de-promocoes-quando-entra-no-site/
    1 ponto
  22. Sim Nunca Pensse que Nada Sera Impossivel Porque o Impossivel Se Torna Possivel As Vezes Nos Desistimos por Causa De uma Pessoa que fala que nós não temos Capacidade mas O Engraçado Que Eles so faz nós nus Superar ja teve muita gente falando que eu não ia conseguir e eu conseguir Boa Sorte no Seu Trabalho
    1 ponto
  23. estava vendo esse video no youtube sobre todas ferramentas básicas e resolvi compartilhar aqui no xtibia espero que gostem CRÉDITOS: Lr Tutoriais e Design
    1 ponto
  24. drigobo

    Obrigado pelos serviços, Lucasmml!

    A gente nunca se falou, mas você me ajudou muito aqui no Xtibia (nunca soube né hruhrauhh), todo o sucesso a você, e agradeço pela ajuda na seção de sprite ( que é a mais foda u.u). Att, Drigobo. Abraços
    1 ponto
  25. EdMignari

    Aumentando o Limite de Sprites

    A transparência será na próxima versão, que só terá isso de novidade mesmo. Continua sendo free e continuará não abrindo os novos arquivos da PxG. Eles modificaram novamente a estrutura e não vou adaptar o OB só pra isso!
    1 ponto
  26. grilado13

    Ajudana Porta 80

    Verifique se algum outro aplicativo não está usando a porta 80 como padrão
    1 ponto
  27. LR Tutoriais.. ahaha Já encontrei muito vídeo dele no passado =p Realmente quem estiver começando, o canal é um grande passo inicial. Obrigado por compartilhar o vídeo. =)
    1 ponto
  28. EEee, ai Sim, REP+, tendi, já até consegui balancear 3 pokémons em 1 hora kkkk, e fico foda, de acordo com a EXP do serve, balanciei os pokémons, ^^ fico bem foda. e achei o servidor de voces foda, parabens ^^
    1 ponto
  29. Novidades do Photoshop CC • Descubra os novos recursos do Photoshop CC neste vídeo. Esta video-aula faz parte de uma série de vídeos que apresenta um overview dos novos recursos e novidades do novo Photoshop CC, onde a Adobe além das melhorias do programa, também mudou a nomeclatura que antes era Photoshop CS6, Photoshop CS5, Photoshop CS4, Photoshop CS3... e agora passou a ser chamado apenas de Photoshop CC. INSCREVA-SE: Este vídeo é integrante do curso gratuito de photoshop completo que estamos oferecendo em nosso canal do youtube, então inscreva-se para gratuitamente para participar das aulas de photoshop. TAGs Relacionadas: Novidades do Photoshop CC, Novos recursos do Photoshop CC, Overview do Photoshop CC, curso grátis de photoshop, fotoshop, curso completo de photoshop, Tutorial Photoshop, Online, treinamento, tutorial, dicas de photoshop, computação gráfica, design, webdesign, motion design, adobe photoshop, Layer, computação gráfica, tutorial photoshop, tutorial photo shop, fotoshop, Modos de Mesclagem, illustrator, indesign, photoshop online, Modos de Mesclagem, Camadas, computação gráfica, cs5, cs6, cs4, adobe master collection, tutorial master, Bruno Cesar, Bruno Alecrim. Vídeos desta série: PHOTOSHOP CC • Compilado dos Novos Recursos e Novidades 1/6 http://youtu.be/lF2_E8TBGK4 PHOTOSHOP CC • Novos Recursos 2/6 • Shapes • Cantos arredondados editáveis http://youtu.be/daX5Cl8rz4E PHOTOSHOP CC • Novos Recursos 3/6 • Smart Sharpen + Nitidez e menos Ruído http://youtu.be/BUMo-mD4PYA PHOTOSHOP CC • Novos Recursos 4/6 • UPSAMPLE + Resolução as imagens http://youtu.be/A2KgHX1zZlQ créditos: TutorialMaster.com.br(foi quem fez o vídeo) JônatasLucasf(por trazer o vídeo ao xtibia)
    1 ponto
  30. eltoo

    Weto Showoff

    Fear dah beholder!
    1 ponto
  31. Só estou citando exemplos de comentários destrutivos. E quem melhor do que você? Bem, se você os ajuda, parabéns. continue, esta fazendo um belo trabalho.
    1 ponto
  32. Não é um WebSite para cada versão de server quase todos tem as mesmas DBs ModernAAC v02 http://www.xtibia.com/forum/topic/221047-modern-aac-por-avuenja-v02/ ModernAAC v03 http://www.xtibia.com/forum/topic/229220-modern-acc-modern-acc-latest-updates/
    1 ponto
  33. Fala XTibia,estou postando este tutorial porque vejo que muitos nao sabem como por as vocações de wodbo,em sites como ModernACC. Bom,por isso estou fazendo este tutorial. OBS:O Tópico encina passo-a-passo com imagens. 1°Passo: Primeiro de Tudo abra seu banco de dados e sua database,e abra sua tabela players,conforme a imagem. Bom,voces tao vendo que tem as vocaçoes Sample,precisa criar elas,para usar como base,para por criar no site. Para criar faça o seguinte vá ate alguma e clique em Copiar.Vai abrir uma pagina para vc configurar o nova vocação Sample,vou fazer um Test para fazer com Shenron. Olha as imagens abaixo. Depois so ir em executar. Pronto Acabo? Claro que não amigo. Abra seu config.inc do seu htdocs. Vai na parte das vocations. Procure por isso: /*List of vocation available to choose when creating new character*/ O meu está assim. $config['vocations'] = array(1=>"Goku", 2=>"Vegeta", 3=>"Namekjin", 5=>"Brolly", 6=>"Goten"); Explicando Pronto. Agora pensa que acabo? Ainda nao amigo,falta a ultima parte o metodo acima é para criar um novo personagem ja com ACC Logada.Para fazer para aparecer o personagem que deseja criar quando vai criar uma conta nova,tem que fazer isso. Vá na pasta htdocs\system\application\views e abra o arquivo create.php. e procure por <select name="vocation" class="keyboardInput" id="vocation"> Abaixo vai ver as vocaçoes. No meu ficou assim. <option value="1">Goku</option> <option value="2">Vegeta</option> <option value="3">Namekjin</option> <option value="5">Brolly</option> <option value="6">Goten</option> Ali nos numeros,é o ID,da vocation sample,da database. Pronto so salvar e deu. Fim Do tutorial. Créditos: Mozark001.
    1 ponto
  34. grilado13

    Gesior - ip fixo

    No XAMPP Control, XAMPP Controller, XAMPP Panel, algo do gênero, não me lembro do nome exato. Ou, na própria pasta do XAMPP, há os .bat's para você iniciar, parar, reiniciar o apache,mysql, etc
    1 ponto
  35. Basta pesquisar... http://www.xtibia.com/forum/topic/199203-modernacc-como-adicionar-vocations-no-sitepara-wodbo/ Tenho quase certeza que a única diferença entre a Database do WoDBO e do TFS deve ser as Vocations boa sorte
    1 ponto
  36. Tonynh

    X-SKIN TUTORIAL [2014]

    Saudações xtibianos! Como é de costume, desde 2010, todo ano venho trazer uma nova skin de tutoriais para a comunidade. E esse ano não poderia ser diferente certo? =) Informações e Funcionalidades: - Skin totalmente editável; - Fácil manuseio - Toda separada em pastas; - Contém instruções de uso; - Suporte (Utilize este tópico para qualquer dúvida) DOWNLOAD (2,28MB) Espero que gostem
    1 ponto
  37. Tonynh

    Obrigado pelos serviços, Lucasmml!

    Sem dúvidas um dos caras mais incríveis que já encontrei aqui nesse fórum. Desejo sorte em seus projetos pessoais Lucas, tenho certeza absoluta que o que quer que seja... terá um futuro brilhante em suas mãos. Apenas faça como você sempre fez, nunca desista dos seus objetivos. E claro, saiba que qualquer coisa que precisar, e que eu puder ajudar.. conte comigo =) Forte abraço!
    1 ponto
  38. MaXwEllDeN

    [CTF] Capture The Flag 2.0(Automático)

    Perdão, a maioria dos erros já foram corrigidos. Acabei deletando o antigo do meu repositório e esqueci de fazer a edição aqui no tópico. Obrigado, já editei o link.
    1 ponto
  39. se foir igual da pxg não tem como atacar o skarmory, donphan, miltank etc. enquanto eles usam a spell... então seria um efeito e o poke desapareceria, se for pda nao tem como colocar os efeitos da pxg enquanto ele ta no ar sem tirar nenhum efeito ja colocado no client... então a idéia seria essa: @topic bom segue o pedido do tópico... vai em data/lib/pokemon moves.lua em cima de: --/////////////////////// PASSIVAS /////////////////////////-- coloca assim: Cannon Ball: Steel Wing: em areas no lib mesmo adicione: ai é so adicionar uma spell normal.
    1 ponto
  40. DuuhCarvalho

    duvida com onAttack

    creio que não e to pelo celular nem tem como ver agr.. mais onCombat funciona com spells.
    1 ponto
  41. Gabrieltxu

    [Pokémon] Titanium

    Sim mais não hoje por que vou sair agora de noite
    1 ponto
  42. Kluivert

    [Encerrado] Efferus The Game.

    Aqui mano o datapack --> https://mega.co.nz/#!1U1lQQ5T!dhinCgfFsVlueQShtZFIMWb6SXZZF80UCWwf8pAZDX4 Agora e só você achar o tfs/sources(.exe) para roda esse serv 8.0 !
    1 ponto
  43. Omega

    Tour Mod

    Informações Apresento-lhes um mod simples, mas muito útil para servidores com mapas próprios. Ele faz com que o jogador passe por certos locais, sem poder se mexer nem entrar em combate, recebendo caixas de diálogo com informações sobre cada local Basta adicionar o código na pasta mods do seu servidor como tourMod.xml O comando é ativado in-game usando /tour ou !tour Só pode ser ativado em PZ A duração de cada posição é configurável Caso haja algum erro, GMs podem usar o comando /tour debug para finalizar o tour de todos os jogadores online Código Configuração As posições para as quais o jogador será levado e o tempo pelo qual ele ficará em cada posição são configuráveis em tourLocations, seguindo o padrão Depois de cada duração, você deve configurar a mensagem que o jogador irá receber em tourDesc, usando a mesma numeração
    1 ponto
  44. Omega

    [AGS] Guild Task

    Obrigado pela força, pessoal! A recompensa não é por membro, e sim para a guild. Quando uma task é entregue, a guilda recebe a recompensa em dinheiro em sua conta. Por isso eu recomendo usar em conjunto com o Guild Banker. Além disso, a guilda também recebe points. Por enquanto, o que fazer com esses points fica a cargo de cada um, mas em breve desenvolvo algo relacionado a isso também.
    1 ponto
  45. EddyHavaiano

    Qual Melhor Filme?

    American Pie 1 ao 7 Mansão da Playboy 2013 300 Resident Evil
    1 ponto
  46. Deadpool

    Troca de mapa

    Creio que o Problema foi Resolvido, pois passaram-se 3 dias e o Criador do Tópico mão deu Noticias. #Reportado para moverem.
    1 ponto
  47. Deadpool

    [Arquivado]O que você procura?

    QUAL O SEU OBJETIVO AQUI DENTRO? O QUE FALTA NA SUA SEÇÃO FAVORITA? O QUE SERIA UM CONTEÚDO MAIS ATRATIVO? 1- Eu fico aqui pra ajudar no que posso, respondendo duvidas, e pra ter uma quantia de REP( eu sei que nao vale nada, mas eu gosto). 2- Inovação (Servidores Derivados), tem um Projeto ai, o Hunter Online, to Torcendo demais por aquele Projeto, até porque sou Fã de SPN, e pelo menos, eu acho, que aquele serve sim, é Inovador. Muitos chegam ai com novidades, novos Projetos, novas Inocações, mas TODOS param, e nao dao Continuidade ai Projeto. 3- Sei lá kkk, como eu disse, novas inovações seria dahora, pq tipo, só vejo assunto de Pokémon, sem Inovações e tals:c #E Eu me considero um usuário que não só busca, mas que também fornece informações
    1 ponto
  48. Na pasta Data/Talkactions/Scripts crie um script chamado: shinytable.lua, e cole o código abaixo dentro: local tables = { "Pokemon - Shiny Stones:", "Elder Charizard - 5", "Shiny Venusaur - 5", } function onSay(cid, words) return doPlayerPopupFYI(cid, table.concat(tables, "\n")) end Agora em Data/Talkactions abra o arquivo Talkaction.xml e adicione a tag: <talkaction log="no" words="!shinystone" event="script" value="shinytable.lua"/> Configurando: Repita essa linha varias vezes "Shiny Name - 5",. embaixo de "Shiny Venusaur - 5", Vermelho: Nome do Shiny Azul: Stones Necessárias. Exemplo: local tables = { "Pokemon - Shiny Stones:", "Elder Charizard - 5", "Shiny Venusaur - 5", "Shiny Name - 5", "Shiny Name - 5", "Shiny Name - 5", "Shiny Name - 5", } function onSay(cid, words) return doPlayerPopupFYI(cid, table.concat(tables, "\n")) end
    1 ponto
  49. RastaLegion

    {SHOW OFF} RastaLegion

    Inacabado ,não liguem para as paredes eu sei que estão horríveis é que estou sem tempo pra edita-lo. OMM #54 Tutorial Nature Inacabado.
    1 ponto
  50. Pelo Que Eu Sei, Você Deve Diminuir Um Pouco o Tamaho do Mapa, Por Exemplo, Normalmente Mapas Globais Tem 100 e poucos megas... Quando um Exe. é compilado em sistemas 32 bits, pode ser o PC que for que não vai Rodar o Mapa... Há 2 soluções, sendo: 1 - Recompilar em um sitemas 64-bits ou 2 - Excluir partes do mapa que não serve pra nada diminuindo o tamanho em megas do mapa, deixando-o com menos de 100MB, deixando com +/- 95MB... Espero Que Tenha Ajudado em Alguma Coisa... Abraços.
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...