Ir para conteúdo

Líderes

Conteúdo Popular

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

  1. Frenvius

    Fairy Tail Online [FTO]

    Mais um exemplar, ainda não atualizado
    3 pontos
  2. Voltando a atualizar este tópico deixo uma imagem desta quest magnificamente lixo, depois de 5 horas fazendo a quest com um rl eu terminei
    2 pontos
  3. MunizFelipe

    OBD - Object Builder Data

    Muito bom, ótimo Tutorial!
    2 pontos
  4. MunizFelipe

    Object Builder

    Muito bom, ótimo programa! Muito bom, ótimo programa!
    2 pontos
  5. Benny

    Um Avatar

    oi maionese tbm tentei fazer, mas acho qe o do podim fico melhor mas ai vai do teu gosto
    2 pontos
  6. ferreira998

    Um Avatar

    Eae blz? não sou um Alex da vida mais tentei fazer, depois que fui ver que não fiz 300x300 mais o tamanho que fiz é adequado para avatar.
    2 pontos
  7. dyego2008

    Show Off [ Projeto]

    Uma montanha simples, ainda falta as bordas dela, quando terminar posto ela completa.
    2 pontos
  8. akira021

    Fairy Tail Online [FTO]

    Opa, boa sorte ai Frenvius! So foi eu tocar no assunto e a galera se manifestou, kkkkkkk tenho super poderes? Kkkkkk Achei estranho o seu comentario sobre a demora a no atendimento do Xtibia, pois sempre que eu precisei de algo eu fui muito bem atendido e com muita rapidez. Alessandro, sei que administrar o Xtibia eh muito puxado, principalmente pelas mudancas que o site esta tendo, ao analisar isso eu consegui compreender a demora para responder ao projeto, pois todos nos tempos vida pessoa e as vezes eh dificil conciliar uma com a outra, enfim eu espero que voce continue com o otimo trabalho que esta fazendo, voce eh o cara! A equipe do FTO boa sorte e continuem com o trabalho, gogo BETA!
    2 pontos
  9. De qualquer modo... Vá no na pasta MODS e abra Firstitems.xml. E nessa linha, apaga o 7385. Agora, vai no items.xml E procura a ball EX: Great Ball: Pra revive é a mesma coisa, só botar: <attribute key="slotType" value="ring" /> Só vai funcionar em chares novos.
    2 pontos
  10. HenrikDiamond

    [DOWNLOAD] Server PokeZot

    Galerinha do Xtibia... Hoje vim postar o Servidor "PokeZot" - Com base do PDA by Bolz e Edições feitas por mim!! Lista Completa de Pokemon Adicionados!! Sistemas Quests Alterações Prints Creditos---- A equipe que criou o PDA Bolz --> Pela maravilhosa Editada no Server A Mim--> Pelo Trabalho de Adicionar os pokemon e fazer mudanças sozinho!! Downloads!! Isso Ai Galerinha!! Foi isso Até a próxima. Talvez saia uma proxima atualização do Zot! Lembrando Conta do God : luh/123 Flw! Até Mais... Gostou do Serv? Da Rep + entao que me ajuda!! kk
    1 ponto
  11. Wend ll

    PDA By: Bolz:: Versão [GOD anna]

    Fala galera do xtibia, Hoje estou trazendo o servidor PDA by: Bolz editado por mim, Passei um bom tempo Editando ele Espero que gostem;; • Menu: ├ Informações; ├ Ediçoes; ├ Erros; ├ Prints; ├ Download; └ Creditos. • Informações Basicas • • Erros do servidor • • PrintScreen • • Download's • Servidor PDA by: Bolz [Editado Por Mim ] http://www.4shared.com/rar/06OG8lB5ba/pda_by_bolz_verso_god_anna.html? OTClient:: http://www.4shared.com/rar/x5LgTQKLce/OTclient.html? @Atualizado 02/04/2014 • Menu: ├ Ediçoes; ├ Prints; ├ Download; • Edições / ajustes • • PrintScreen • • Download's • Servidor PDA by: Bolz [Editado Por Mim v2 ] http://www.4shared.com/rar/_lB31rwxba/PDA_By_Bolz_Verso_GOD_anna_v2.html? OTclient v2:: http://www.4shared.com/rar/aiqka_kQce/OTclient_v2.html? • Creditos • Slicer (pelo servidor) Brun123 (por alguns scripts, e por criar o pda) Stylo Maldoso (pelo mapa) Bolz (por editar Maior Parte do Server) Eu ( por Corrigir Varios bugs e Editar varias coisas no Servidor) Gabrielsales ( pelos Systemas:: "Held item", "Ditto system" ) valakas ( Por ter ajudado a resolve o Bug da Barra de Ataques do OTclient v2) Xtibia (por alguns scripts) Cometem OQ acharam do Server Tou parando com as atualizações por enquanto POr causa das Provas (Tenho que Passa) Mais quando terminar as Aulas posto Nova atualiazação... Obrigado a Todos que Elogiaram minha edição nesse Belo servidor
    1 ponto
  12. 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
  13. Conteudo Retirado.
    1 ponto
  14. curruwilliam

    [Gesior] Azure

    Olá, Ser ambulante que anda pra la e pra ka e não sabe o que fazer. Tudo certo ? Vou postar aqui um [Gesior] que eu tava alterando o design(Layout) mais mudei de ideia e fiquei com o original. Imagens: Tem mais alterações não vou postar tudo, baixem e confiram! Ta pela metade , continuem de onde parei e terminem de editar Download: http://www.4shared.com/rar/T_LwzmrZba/gesior_azure__1_.html Scan: https://www.virustotal.com/pt/file/c6cb59132f0dcb73c5ce9ef50e3c0d9a17c18995de49c88451e548aeb3a46e33/analysis/1396303034/ até mais ;p
    1 ponto
  15. Killua

    Projeto Tutores de Scripting

    Introdução Neste tópico, eu e os outros responsáveis da área de scripting (@zipter98 e Omega) vamos auxiliar aqueles que querem aprender a scriptear, seja dando dicas, ajudando com códigos e até mesmo dando explicações. A intenção deste projeto é incentivar todos aqueles que têm vontade de aprender a scriptear. Como vai funcionar? Diferentemente da Fábrica do Garou, nós não iremos fazer os códigos para vocês. Nós vamos ajudá-los a fazer vocês mesmos. Para ser auxiliado, basta postar aqui o código que está fazendo e dizer onde está sua dificuldade. Se você tem uma idéia de código/sistema para fazer e não sabe nem como começar, você pode postar aqui sua idéia que iremos ajudá-lo a começar e a desenvolver seu código/sistema. Resumindo Aqui nós iremos te ajudar a fazer seu código/sistema, vamos te dar dicas e explicações sobre como fazer e até indicar tutoriais para vocês lerem. Espero realmente que tenham interessados, ficarei feliz em ajudar todos.
    1 ponto
  16. Olá a todos!! Printer decidiu lançar o servidor que esta hospedado há algum tempo, que se baseia em Teckman datapack , mas um monte de correções e alterações foi feita. Como Prometido servidor sendo atualizado frequentemente com varias correções e totalmente atualizado, aproveite um servidor dessa qualidade você encontra aqui no xtibia !!! Download & Atualizações do Servidor !!!: https://github.com/PrinterLUA/FORGOTTENSERVER-ORTS Scan: https://www.virustotal.com/sv/file/...d6565fc24ae5e4d494eadca4/analysis/1385914637/ (Usar para rodar o ): [10.31] The Forgotten Server 1.0 (#915) Download: https://github.com/otland/forgottenserver Download 32 e 64 The gorgotten Server 1.0 (#915): MEGA | SendSpace | Scan-MEGA: https://www.virustotal.com/sv/url/274b18e83a3b2b1db2350782fdb36e225aa3d656f350d26269233ac115c82f67/analysis/ Scan-SENDSPACE: https://www.virustotal.com/sv/url/86be830199f995576350318af3fecfa1334301e9c9de05798056df42152eb2fd/analysis/1393992362/ (10.37) The Forgotten Server 1.0 64 E 32 DOWNLOAD 64: http://sourceforge.net/projects/compiledtfs10/files/The%20Forgotten%20Server%20x64.7z/download SCAN:https://www.virustotal.com/en/file/...0d8c85a7557718523f49bee1/analysis/1395871095/ DOWNLOAD 32: http://sourceforge.net/projects/compiledtfs10/files/The%20Forgotten%20Server%20x32.7z/download SCAN:https://www.virustotal.com/en/file/...9cb1e34b31612508504c6a56/analysis/1395870574/ Websites Recomendados: 1: https://github.com/Znote/ZnoteAAC/archive/master.zip 2: https://github.com/gesior/Gesior2012/tree/TFS-1.0 Baixe: 32-bit C++ redistributable package: http://www.microsoft.com/en-us/download/details.aspx?id=5555 64-bit C++ redistributable package: http://www.microsoft.com/en-us/download/details.aspx?id=14632 Dlls: https://mega.co.nz/#!t0hmURgR!zCrGwU41CbVT0mUi4MZ0Xlqu56fWwayJaH6VVK9Kyus Creditos: Printer da (Otland) Se ficar alguem fora dos creditos ficarei feliz em colocalos. PROIBIDO COPIAR E COLAR EM QUALQUER OUTRO FORUM QUE NÃO ESTE!!!
    1 ponto
  17. Killua

    [SDT] Script de terça

    Olá a todos, eu decidi que, para contribuir com a comunidade, vou fazer e postar um novo script toda terça-feira. Assim também fica mais organizado e padronizado. Esse tópico servirá apenas para listar todos os scripts que eu postei para o SDT, será uma lista. DATA - SCRIPT [19/02/2014] - [Action] Cassino interativo [26/02/2014] - [Talkaction] !teleport com lista [04/03/2014] - [Action] Mineração - Bronson Server [11/03/2014] - [Action] Killua Fishing System - Pesca diferente [18/03/2014] - [Creaturescript] Itens ganhando exp e upando (upgrade system) [25/03/2014] - [Action] Sistema de Cultivo (plantação) [08/04/2014] - [sistema] Monster Hunter Event [15/04/2014] - [MOD] Cart System (Andando de carrinho) [25/04/2014] - [sistema] Dice Arena Event * Os dois primeiros foram postados em Quartas-feiras, mas achei melhor colocá-los aqui também. Fiquem de olho, toda terça tem um novo! Se tiver alguma sugestão de script para ser feito, sinta-se a vontade para postar.
    1 ponto
  18. Codding4Life

    Visual G [Gamming]

    Olá pessoal, sou programador nível intermediário, faço Ciência da Computação na UEL, porém sou novo no fórum.... Gostaria de ter uma ideia do conhecimento dos usuários que frequentam a área de programação e tive a ideia de criar um tópico para que cada usuário que "manje" de programação, faça um jogo e poste-o aqui. Porque VisualG? R:Bom o visualg, para ingressantes na área de programação que não possuem base e não faziam ideia do que significava uma linguagem de programação é uma ótima linguagem para aprender Dicas:Para você que vai participar, utilize vetores, matrizes, laços de iterações, condições, procedimentos, funções, variáveis e sempre, sempre comentando seu código e edentando ele. OBS:Use sua criatividade, você pode fazer até mesmo um rpg. Bom trabalho! Vejam alguns exemplos de sources existentes na internet: Jogo da Forca - Edilson Spalaor Jogo da Forca - Thiago Aguiar Jogo da Velha
    1 ponto
  19. RastaLegion

    Tutorial Poison/Subsolo.

    1- Dirt/Stone Wall. Faça com calma , com formatos variados, evitando o formato escadinha ou reto demais. 2-Grounds. Coloque os grounds de poison nos cantos da cave com formatos variados visualizando como ficará depois de colocar a borda, já os dirts de uma variada para não ficar entediante. 3-Bordas/detalhes. Coloque as bordas e comece a detalhar, você pode usar plantas que lembre pantano, cogumelos, gravels, pedras de musgo se for cave de spiders pode colocar teias, ovos de aranha entre outras coisas. Bom Pessoal ,espero ter ajudado e que clique no botãozinho de curtir =).
    1 ponto
  20. JustinnoTibianno

    Water Elementals!

    Water Elementals! Um local de caça especial para os sorcerers, você pode começar a upar aqui no level 50, e mais pra frente se você tiver sem opções de caça, poderá vir aqui até um level 130~140 que a xp continua boa. Informações da Hunt Localização: Port Hope Respawn: Médio, da pra duas pessoas caçar no local, mas que isso pode prejudicar a xp. Exp/hora: 120k/hora com bônus Gold/hora: 4k/hora Perigo: Elevado Ocupação:Média Vocação, level e skills Vocação: Sorcerer Level: 50 Magic Level: 45 - Eis a explicação para o nível mínimo ser o 50 Informações da Criatura Nome: Water Elemental HP: 550 XP: 650 Forte Contra: Físico, Holy e Death. Neutro Contra: Nada. Fraco Contra: Energy. Imune Contra: Fire, Ice e Earth (por isso não é recomendado para druids). Loots - Além do loot normal (aquele que você pega dentro do loot da criatura) existe o loot que você consegue usando uma Fishing Rod no compro do water (10 segundos após o water morrer). 0-100 gold coins platinum coin (1 no máximo) strong health potion (em média, 75gp no market). strong mana potion (em média, 75gp no market). energy ring (100gp no npc). life ring (50gp no npc). small diamond (300gp no npc). 0-2 small emerald (250gp no npc). Com Fishing Rod giant shimmering pearl (3.000gp no npc). white pearl (320gp no npc). small sapphire (250gp no npc). small emerald (250gp no npc). leviathan's amulet (3.000gp no npc). Nota: na maioria das vezes não irá dropar nada com a Fishing Rod, todos os itens são rares. Quando não dropar nada irá aparecer a imagem abaixo: Equipamentos Recomendados Helmet of the Deep (obrigatório). Focus cape para nível menores que 80, Calopteryx Cape para níveis maiores ou igual a 80 Zaoan Legs, ou se você for nível 75+ pode usar uma Grasshopper Legs BoH, ou uma Soft Boots Demon Shield Wand of Startormpara níveis menores que 65, Wand of Defiance para níveis maiores ou igual a 65 Suprimentos Food 130 Strong Mana Potions para uma hora em média. Spells Úteis Exura: cura básica. Exura Gran: é de provavel uso quando haver 2 ou mais waters. Exura Vita: quando estiver no red. Exana Pox: Para tirar o envenenamento dos waters. Exori Vis: dano básico Exori Amp Vis: dano complementar. Exevo Vis Hur: para matar 2 ou mais. Exevo Gran Vis Lux: para matar 2 ou mais. Exevo Gran Mas Vis: para emergências em questão de número de criaturas. Utani Gran Hur: para fujir se você perder o controle da situação, ou para descolar dos waters. Como chegar lá Vamos partir do barco de Port Hope. Mapa da Hunt - A área circulada é o ponto de mais perigo, há 5 water elementals lá. Dicas: - Como de sempre, use o mapa ao seu favor, sempre rode para matar os waters, se não houver nada para rodar, vá matando a criatura e caminhe para o local que você tenha acabado de limpar: Abaixo tem dois exemplos de pontos rodáveis. - Não é difícil encontrar/lurar 2 waters, por isso, fique com a atenção redobrada, não deixe 1 deles colar para não levar altos danos. A Exura Gran provavelmente será usada. Espero que este tutorial vos tenha ajudado!
    1 ponto
  21. fsg

    [Tutorial] Visualg

    Oláaa pessoal, voltando para o XTibia depois de um tempinho ausente... Hoje na escola o professor nos ensinou a usar o VisualG, quer fazer seus primeiros programinhas com LP, aprenda aqui! Apoio Informática Ltda. Download do programa aqui Agora vou disponibilizar duas apostilas para que vocês possam aprender, o professor que deixou para nós... Apostila VisualG - Orientações.pdf Apostila número 1 - Orintações, aprenda como funciona o VisualG. Apostila VisualG - Explicação.pdf Apostila número 2 - Explicação, aprenda a fazer programinhas no VisualG. Agora, vou ensinar vocês a fazerem um programinha básico... Algoritmo "Média 1" var Men, Bim, Media : Real Inicio Escreva ("Este programinha é uma introdução do tutorial de VisualG do XTibia.com") Escreva ("Digite a sua nota mensal:") Leia (Men) Escreva ("Agora digite a sua nota bimestral:") Leia (Bim) Media = (Men+Bim)/2 Escreva ("A sua média é:", Media) FimAlgoritmo Explicando o Algoritmo, ele vai três variáveis, Mensal, Bimestral e Média. Depois, receberá o valor da média mensal, depois da bimestral... Dividi por dois, e recebe o valor da média! Ée isso pessoal, espero que gostem
    1 ponto
  22. quero muito esse serve para começa [PyO 0.2] Padventures !
    1 ponto
  23. Junior001

    Instalando modern acc

    Editei o post tenta dnv.
    1 ponto
  24. Junior001

    ALGUEM PASSA UM DBKO OU WODBO?

    amigo poderia passa 1 8.54 ? pq os outro da erro no xampp 8.54 bons temos esses http://www.xtibia.com/forum/topic/222291-wodbo-dbviolent-com-sources-e-sprdat/ http://www.xtibia.com/forum/topic/230019-854-dragon-ball-last-war-com-sourcecompleto/ http://www.xtibia.com/forum/topic/222287-wodbo-dbwarrior-re-up/
    1 ponto
  25. Boa noite. Faz alguns meses que não mexo com OTServ, mas se não me engano a tag de registro que está tentando adicionar, deve ficar junto com as outras. Ou seja, esta tag: registerCreatureEvent(cid, "maxml") Deve estar dentro dessas: registerCreatureEvent(cid, "Mail") registerCreatureEvent(cid, "GuildMotd") registerCreatureEvent(cid, "Idle") if(config.useFragHandler) then registerCreatureEvent(cid, "SkullCheck") end registerCreatureEvent(cid, "ProtDeath") registerCreatureEvent(cid, "Biohazard") registerCreatureEvent(cid, "ZombieAttack") registerCreatureEvent(cid, "WeaponMana") registerCreatureEvent(cid, "showVoc") registerCreatureEvent(cid, "ReportBug") registerCreatureEvent(cid, "AdvanceSave") return true end Pois onde finaliza o "return true" e "end" finaliza onde o script estará lendo... Sendo assim, a sua tag não será lida e interpretada pelo Script. O correto seria: Espero que dê certo. Boa sorte, pois não testei, apenas coloquei os arquivos em seu devido lugar.
    1 ponto
  26. Eu encontrei essa aqui: getCreatureMaster(cid), vou testar a sua para ver se tem algum diferença valeu! Nao manjo muito de summons, mas foi essa a function que encontrei. =)
    1 ponto
  27. Tonynh

    [Pedido] Video Tutoriais

    Beeki, do CS4 até o último da versão CC são tecnicamente a mesma coisa. Só vai mudar os recursos em um trabalho mais high, mas a princípio, você pode seguir tutoriais de CS4 acima. Basicamente a edição de fotos se resume a trabalhos com iluminação. Mas vou deixar alguns vídeos pra ti aqui. 1. Tratamento 1.1 Tratamento 2. Manipulação (não é bem um tutorial, mas se você prestar bastante atenção, vai conseguir reproduzir os passos)
    1 ponto
  28. Wend ll

    PDA By: Bolz:: Versão [GOD anna]

    Bolz Obrigado ae!! Mais é PQ todos eles estão usando o novo programa que Substituir o "Dat editor", ai com esse novo programa eles não sabem onde pegar o Locktype.. Vou ver se faço uma video-aula depois para eles, com esse novo Programa
    1 ponto
  29. getCreatureSummons(cid) --retorna em array os summons do player ou monstro Essa linha retorna os summons do player. Fora isso não sei mais nada.
    1 ponto
  30. dyego2008

    [DUVIDA]Como mudar sprites do server

    Vai na área de tutoriais de spriting que você deve encontrar, para substituir as sprites use o object builder que é muito bom.
    1 ponto
  31. dyego2008

    [Encerrado] duvidas a respeito de mapa

    O mapa não influência em nada disso e sim a distro e os scripts.
    1 ponto
  32. Slicer

    getStorage

    std::string strValue; if( player->getStorage(89612, strValue) ){ if ( strValue == "-1" ){ ... } }
    1 ponto
  33. A função onDeath é composta por: function onDeath(cid, corpse, lastHitKiller, mostDamageKiller) Correto. Já na database, é salvo os players que morrem, nessa ordem: id do player, hora, level, morto por, ajudado por. Se possível +REP -GstavoLiber
    1 ponto
  34. function onUse(cid, item, frompos, item2, topos) positiOn = {x=1022,y=912,z=5} --Posicao onde o player sera teleportado local p = getTopCreature({x=positiOn.x, y=positiOn.y, z=5}).uid if p~= 0 and isPlayer(p) then return doPlayerSendCancel(cid, "Ja tem um player no local.") else doTeleportThing(cid, positiOn, true) doSendMagicEffect(getPlayerPosition(cid), 19) end return true end <action actionid="ACTIONIDAQUI" event="script" value="nomedoscript.lua"/> É em actions. Depois vá na porta, coloque o ACTIONID que voce escolheu na tag na porta.
    1 ponto
  35. dyego2008

    ShowOff © Zenfia Online ®

    Bom galera kkkk, vim postar uma foto de uma área que imaginei aqui agora HAuhue, Obrigado a Todos pelos Comentários. Krex, claro né cara huahua são minhas.
    1 ponto
  36. Tredfg

    [ERROR] PDA EDIT BY BOLZ

    Para botar spoiler faça isso [.spoiler] e o texo aqui dentro e [./spoiler] feixa,exemplo (Sem os pontos)
    1 ponto
  37. BrenoNeto

    BrenoNeto ShowOFF

    Sprites pro projeto World of Piece (Chopper) Vou tentar, se conseguir vo usar no bio uhashusahusa
    1 ponto
  38. u n d e r

    Fairy Tail Online [FTO]

    Frenvius, Peço desculpas pela demora. Em atenção a uma mensagem recebida pelo Avuenja, não esperei mais nenhum minuto para acompanhar o seu projeto. Podemos bater um papo via skype? under.xtibia Um abraço, parabéns pelo projeto!
    1 ponto
  39. 1 ponto
  40. AnneMotta

    [Life Thread] Transloko

    Eae seu lindo, voltei a brincar em calmera Vendi minha soft pra tentar comprar uma p.a vou ver se alguem vender por 1,2kk porque é o que eu tenho porem ta tenso achar alguém que venda por esse preço \:
    1 ponto
  41. Crie 1 arquivo chamado noloot.lua em data/creaturescripts/scripts e coloque isso: Em creaturescripts.xml: Agora vá em login.lua dentro da mesma pasta e adicione isso:
    1 ponto
  42. EdMignari

    [DUVIDA]Sprites PxG

    .
    1 ponto
  43. JonPiress

    [ Pedido ] Sprite / Held Itens.

    Nesse link contem os sprites dos Helds . . . Só que está em obd , para fazer as alterações na spr com esse formato utilize o Object Builder. http://www.4shared.com/rar/v_jsZD_wce/Held_Itens.html (Obs: 4 Shared ja tem scan)
    1 ponto
  44. 1 ponto
  45. lazarocp

    Novidade: Poketibia 9.60

    .
    1 ponto
  46. Eu uso x64 mas vou tentar resolver isso com o x32. Versão x32 funcionando: Download Scan
    1 ponto
  47. O mesmo erro do antigo projeto, colocando os jogadores como os personagens do anime, limitando as possibilidades.
    1 ponto
  48. Olá vou postar aqui como criar 1 client sem o .spr, .dat, .pic. Para fazer seu client você vai precisar: 1º Cliente (Pode ser qualquer Client Wodbo - Tibia - Naruto - Pokemon) 2º MoleBox (pode ser encontrado no baixaki) VIDEO AULA No Final Postarei os Links. Primeiramente: NÂO TEM COMO BLOQUEAR PARA NINGUEM COPIAR SUAS SPRITES! Existem Vários programas que desfazem essa Compilação. Como exemplo vou compilar o Tibia 8.60 Tutorial em Imagens! ________________________________________________________________________________________ Abra o Molebox Entre em Package Options Em seguida selecione o executável do teu Cliente No próximo passo selecione um local para salvar seu novo Cliente Em seguida marque a opção "compress" Pressione o botão "Add Files" Selecione os Arquivos mostrados na imagem Aperte OK Em seguida aperte "Pack" Aguarde até que todos os arquivos sejam Compilados _________________________________________________________________________________ Links: http://www.2shared.c..._By_Babidy.html http://www.4shared.com/rar/vO-M74MG/MoleBox_Ultra_By_Babidy.html http://www.multiupload.nl/0LE7I45F06 SENHA: babidy SCAN: https://www.virustot...sis/1355177552/ [EDIT: Atualizei os Links e coloquei a vídeo aula] Espero te Ajudado. Créditos: Babidy Skype: Babidy4
    1 ponto
  49. Olá, Vi já aqui no fórum, que várias pessoas pedem npcs do sistema Jiddo, ou para TFS! Bom, o TFS usa sistema Jiddo, então resolvi fazer um que compra itens para vocês! :smile_positivo: Ele compra todos itens do Rashid + Todos itens blue, green, djinn, incluindo os rings, tudo mesmo! Funcionamento: Bom, ele tem o sistema novo de "Hi-Trade" e abrir a janela de buy e sell. Só que ele não responde via o chat dos Npc's, pois ainda não descobri como fazer, caso alguém saiba, por favor, poste, eu edito o tópico, e ainda dou créditos a quem ajudou! Script: Vá na pasta: data\npc\scripts, copie qualquer arquivo, e renomei-o com o nome: default.lua, e cole isso dentro: *Explicando: eu uso esse default para redirecionar todos scripts de npc no TFS, em Jiddo. Pois, você trabalha direto no xml com as coisas que o npc faz. Agora vá na pasta: data\npc, copie qualquer arquivo, e renomeie para: Jessica.xml, e cole tudo isso dentro dele: Bastante coisa, não? Mas chegamos ao fim! :smile_positivo: Finalizando: Bom, esse npc foi feito 100% by me, se quiserem copiar, colocar os créditos por favor. Testado em TFS Mystic Spirit 8.22, e funcionou perfeitamente, sem erros! Mas, caso encontrem erros, podem postar, que faço muita questão em ajuda-los! Até mais, :positive:
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...