Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 04/29/14 em todas áreas

  1. Gabriel Couto

    Colorindo o Próprio Rosto

    Colorindo o Próprio Rosto Essas imagens abaixo são do espanhol Eloy Morales, e resolvi trazer pra cá pois achei bem interessante! Morales gosta de mostrar seu próprio rosto pintado de variadas maneiras.. Ele pinta o próprio rosto com cores diferentes vibrantes. Porém, agora vem a parte mais interessante! Observe bem a imagem abaixo! Todas as imagens acima, na realidade, são pinturas do espanhol retratando seu próprio rosto, com um realismo tremendo! Mas ele também fez isso com outros rostos, confira alguns! Curtiu as pinturas dele? Confira mais trabalhos no site pessoal do artista! Abraços
    2 pontos
  2. Kluivert

    Pokemon - PGalaxy 0.9

    Olá Xtibianos, hoje venho disponibilizar para todos o PGalaxy 0.9 a pedido de 2 membros aqui do fórum (Existia um tópico aqui no fórum mas se não me engano o link esta quebrado). • Menu : ├ Informações; ├ Erros; ├ Print's; ├ Download; └ Creditos. Informações: Mapa Padventures 100% Mapa johto padventures incompleto 40% TM System Barco, Trem System Cloneds Pokemon 1° e 2° Geração Outros System 90% Erros: Existem alguns erros que não recordo agora! Prints: Look: Alguns pokemon cloneds: Moon Stone Em breve mais Download: Client e Servidor! https://www.mediafire.com/?b7pia747n0f0b43 Creditos: StyloMaldoso Padventures Pgalaxy Kluivert Outros
    2 pontos
  3. Benny

    [X] PACK DE STOCKS

    Opa galera, tranquilo? rs. Estou aqui novamente para trazer um pack de stocks que eu fiz .. •PREVIEW• •Download• LINK •Informações• Tema : Stocks Imagens : 40 Tamanho : 17MB Exclusivo ? : Sim Novamente, agradeço ao google =) Abraços, Beeny.
    2 pontos
  4. Benny

    [X] PACK DE TEXTURAS

    Fala galerinha, tranquilo ? Bem, hoje eu trago a vocês um pack de texturas. As texturas tem uma qualidade ótima, escolidas a mão por mim ... Bem, para não enrolar mais.. vamos ao preview (abra o spoiler) •Informações• Tema : TEXTURAS Tamanho : 9MB Total de imagens : 20 Exclusivo ? : sim DOWNLOAD: LINK Agradeço ao google haha.
    2 pontos
  5. beto06

    [Show Off] Beto

    Típica casa abandonada de Swamp Trolls http://2.imgland.net/QZj5VV.png
    2 pontos
  6. Neto009

    [Release] Dbko Arena V2!

    O Que Contem Nela : Imagem Client: OBS: Nao Poste Sem Minha Autorizaçao !!!! E Nao Postarei Site Peguem o Antigo Mesmo !!! Creditos: Neto009 Download: Server:http://www.4shared.c...BKO_Arena.html? Scan:https://www.virustot...sis/1329142646/ Client:http://www.4shared.c...allvile_2.html? Map Editor: http://www.4shared.com/rar/BX4f9vOo/Map_Editor.html? Senha God e : god/god!!!! Sera Ultima Vez Que posta Esse tipo de Servidor !!!
    1 ponto
  7. Bem, eu vim aqui postar a resolução de um problema que eu percebi ser bem comum, o erro que nós vamos consertar é o do Unable to load items.otbVamos lá: Vá na pasta onde ficam as sources do seu executavel e procure por items.ccp, abra ele pelo modo editor(ou pelo seu programa de compilar) e procure por: if(Items::dwMajorVersion == 0xFFFFFFFF) std::clog << "[Warning - Items::loadFromOtb] items.otb using generic client version." << std::endl; else if(Items::dwMajorVersion < 3) { std::clog << "[Error - Items::loadFromOtb] Old version detected, a newer version of items.otb is required." << std::endl; return ERROR_INVALID_FORMAT; } else if(Items::dwMajorVersion > 3) { std::clog << "[Error - Items::loadFromOtb] New version detected, an older version of items.otb is required." << std::endl; return ERROR_INVALID_FORMAT; } else if(Items::dwMinorVersion != CLIENT_VERSION_861) { std::clog << "[Error - Items::loadFromOtb] Another (client) version of items.otb is required." << std::endl; return ERROR_INVALID_FORMAT; e substitua por esse: /*if(Items::dwMajorVersion == 0xFFFFFFFF) std::clog << "[Warning - Items::loadFromOtb] items.otb using generic client version." << std::endl; else if(Items::dwMajorVersion < 3) { std::clog << "[Error - Items::loadFromOtb] Old version detected, a newer version of items.otb is required." << std::endl; return ERROR_INVALID_FORMAT; } else if(Items::dwMajorVersion > 3) { std::clog << "[Error - Items::loadFromOtb] New version detected, an older version of items.otb is required." << std::endl; return ERROR_INVALID_FORMAT; } else if(Items::dwMinorVersion != CLIENT_VERSION_861) { std::clog << "[Error - Items::loadFromOtb] Another (client) version of items.otb is required." << std::endl; return ERROR_INVALID_FORMAT; }*/ e agora é só compilar. Explicação: Foi apenas adicionado a tag /**/ no script para anular essas linhas, ou seja inutilizar elas, fazendo assim com que ao ligar o server o seu distro não verifique a versão do items.otb, (e lembrando que nesses servidores mais recentes já existe uma opção no próprio config.lua que anula a verificação do items.otb) Comentem e postem qualquer problema ou dúvida. OBS: Não olhei se ja existia um tópico com essa explicação. Créditos : Matheus tk ~
    1 ponto
  8. comedinhasss

    [TFS 1.0] Mapa global 10.41

    Olá galera, ultimamente está saindo várias novidades para os servidores e eu estou atualizando para os brasileiros :3 Novidades: - Nova Ab'Dendriel - Nova Venore - Nova Defia - Novas cidades incluindo Zao, Gray Beach e Gnome Base! - Todos NPCs - Razachai & Quirefang - Tasks - Warzones - Todas as novas spells - Barcos e tapetes voadores 100% - Offline training - Montarias - Sistema de Kazordoon Wagons - Sistema de banco - 100% quests with missions: Annihilator, Demon Helmet, Pits of Inferno, The Inquisition Quest, In Service of Yalahar, Isle of Evil, The Djinn War, The Ancient Tombs, Dreamer's Challenge, Bright Sword, The Unnatural Selection quest, Banshee Quest, Demon Oak, Svargrond Arena e muito mais! Download: Info: Client: 41 TFS: 1.1 Detalhe: Este servidor foi compilado num windows 7 64x. Servidor https://github.com/PrinterLUA/FORGOTTENSERVER-ORTS/archive/master.zip Github https://github.com/PrinterLUA/FORGOTTENSERVER-ORTS Executavel http://www.xtibia.com/forum/topic/232870-the-forgotten-server-11/ Source https://github.com/otland/forgottenserver Créditos Printer Comedinha Tópico original: http://otland.net/threads/best-released-real-map-10-22-based-1-0.204514/
    1 ponto
  9. 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
  10. Iae Galera Do Xtibia Blz? *Como Prometido Venho Trazer Para Vocês a Versão 2.0 Do WebSite OTPokemon.com Obs: Arrumado Apenas Bugs, Nenhuma Alteração Drástica Foi Feita! • Informações Basicas • • Ajustes • • Erros Concertados • • Erros Encontrados • • Prints • • Download • Servidor (MediaFire) Senha: otpokemon! • Scan • • Creditos • Modern AAC & Kranzix -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- • Leia-me •
    1 ponto
  11. Iae Xtibianos!! Desenvolvi esse WebSite Para Vocês. Espero Que Gostem!! • Menu: ├ Informações; ├ Ediçoes; ├ Erros; ├ Prints; ├ Download; └ Creditos. • Informações • • Edições • • Erros • • PrintScreen • • Download's • Servidor ( Media Fire ) Creditos Kranzix Modern Aac
    1 ponto
  12. Olá comunidade do XTibia! Apresento a vocês o mais novo projeto em desenvolvimento: PokéChronicles: Johto Legends O projeto consiste no desenvolvimento de um servidor alternativo baseado no mundo Pokémon, onde a história se passa no continente, mais precisamente na região de Johto! Informações do Servidor ┌ Mapa próprio MASSIVO e bem desenvolvido baseado na região de Johto. (em desenvolvimento) ├ Sistemas únicos e exclusivos. (em desenvolvimento) ├ Pokémons da Primeira e Segunda geração (+shinies!) ├ Servidor com rates de XP, Catch, Shinies e Drop moderadas! (Mid Rate) ├ Storyline bem desenvolvido, também baseado em Johto. ├ Quests conhecidas + quests exclusivas! ├ VIP Shop e Vantagens bem balanceadas e não abusivas. ├ Dedicado 24h └ Servidor sem fins lucrativos, portanto a VIP Shop é necessária apenas para manter os gastos com o servidor. Previews Sistema de Held Items já implantado e funcionando: Insígneas de Johto no Client: Novos Shinies: Gym de Violet City: E muito mais vindo pela frente! Créditos Vagas Disponíveis Necessitamos candidatos experientes e dispostos a contribuir com o desenvolvimento do servidor. Não exigiremos carga horária muito extensa, nem rapidez nas tarefas contanto que o usuário seja RESPONSÁVEL e DEDICADO. Pedimos para aqueles que os que aplicarem para alguma das vagas que tenham disponibilidade de ajudar no desenvolvimento primordialmente de Segunda a Sexta. ┌ Scripter (Urgente) ├ 01 vaga. └ Experiência em criação de de scripts para este tipo de servidor. ┌ OTClient Editor (Urgente) ├ 01 vaga. └ Experiência em edição de OTClient, como adição de mods e etc. ┌ Spriter ├ 01 vaga. └ Experiência em criação de outfits, e possivelmente na recriação de sprites de pokémons, bem como na inserção dos mesmos no servidor. ┌ Webdesigner ├ 01 vaga. └ Experiência em criação e edição de websites, mais especificamente na programação. (Não é necessário conhecimentos gráficos) Vantagens Oferecidas Participação nos testes do servidor, sempre que houver. Integrar a equipe de administração (GM/Tutor) quando o servidor lançar, conforme a disponibilidade do usuário. Caso não queira integrar a equipe como Tutor ou GM, o usuário receberá conta VIP grátis e vitalícia para jogar no servidor! Formulário de Inscrição Basta postar no tópico as informações listadas no formulário acima. É PREFERÍVEL que em "Experiência na área" sejam apresentados tópicos ou links que mencionem seus trabalhos. O contato pode ser feito por Skype, Facebook ou e-mail, contanto que o candidato envie resposta quando solicitado. Att, Equipe PokéChronicles.
    1 ponto
  13. Insaend

    Spriting Insaend

    Madarada Quer coisa cria um topico para duelos ai e me manda por PM o link não quero mais estes tipos de respostas aqui não cara... na moral se vc quiser algo mesmo fala, mais para de postar essas mensagem aii no meu Show Off ou terei que criar outro! Você iniciou esses dias ai e ja ta querendo me deixar puto man faz o seguinte para de comentar aqui e vai discutir essas coisas com quem te atura pois eu se não for uma coisa plausível vou reputar sempre como negativo! Geral sabe que guando eu não gosto de um cara man realmente o bicho pega, não para você mais sim para mim mesmo com a forma que vou ver tudo que você faz. Abraço!
    1 ponto
  14. Alexclusive

    Minhas fotografias [iPhone]

    haha tenho algumas ne? Olha essa que tirei ano passado em um show aéreo que tem aqui todo ano.
    1 ponto
  15. u n d e r

    Meu usuario bugo!

    http://www.xtibia.com/forum/topic/180828-1-regras-gerais/
    1 ponto
  16. --config by uotl£ local config = { limite = 10, -- aqui limite 1 por segundos effect = 78 -- aqui efeito } --config by uotl£ function onUse(cid, item, frompos, item2, topos) if getTilePzInfo(getCreaturePosition(item2.uid)) then return true end if isPlayer (item2.uid) then doCreatureSetNoMove(item2.uid, true) for i = 0,config.limite-1 do addEvent(timeMana,i*1000,cid,item2,i*1000) end return true end return true end function timeMana (cid,item2,x) doCreatureAddMana(item2.uid, -50) doSendMagicEffect(getPlayerPosition(item2.uid),config.effect) if x == ((config.limite-1)*1000) then doCreatureSetNoMove(item2.uid, false) return true end end actions.xml <action itemid="ID_DO_ITEM" script="nome_do_arquivo.lua" allowfaruse="1"/>
    1 ponto
  17. Pareçe ter futuro , boa sorte !
    1 ponto
  18. 1 Bilhão de desculpas a todos,vou estar passando o servidor com o Item Otb.eu estava editando o mapa,por isso ocorreu isso.1 bilhão de desculpas @updt Adicionado o servidor correto Otclient no v 9.0 e oldclient no v 9.1
    1 ponto
  19. Tonynh

    07# X-INSPIRE-SE! DIORAMAS!

    Saudações xtibianos! =) Hoje venho trazer uma edição interessantíssima sobre Dioramas. Você sabe o que é? Diorama é um modo de apresentação artística, de maneira muito realista, de cenas da vida real para exposição com finalidades de instrução ou entretenimento. A cena é pintada sobre uma tela de fundo curvo, de tal maneira que simulem um contorno real. A tela colocada na obscuridade e iluminada de maneira adequada dá uma ilusão de profundidade e de movimento, dando a impressão de tridimensionalidade. O modelo é pintado de tal forma que cria uma perspectiva falsa, modificando com cuidado a escala dos objetos para reforçar a ilusão de realismo. Todas estas técnicas são modos de apresentar uma vista realística de uma cena grande em um espaço compacto. Wikipedia. Deepti Nair e Harikrishnan Panicker são dois artistas que criam dioramas com papeis super detalhados e criativos, que depois de montados e com os efeitos de luz que Hari & Deepti aplicam, colocam sobre eles uma forma incrivelmente encantadora que nos remete aos contos de fada/lendas que eram contados antigamente. Se quiser conhecer um pouco mais do trabalho dos caras, clique aqui. Por hoje é só, espero que tenham gostado! :hi: Confira as edições mais antigas:
    1 ponto
  20. Pelo Jeito Vai Ficar Bom Boa Sorte"
    1 ponto
  21. Tonynh

    PokexDiamond [PDA]

    #LuizHenriqueSmania Os créditos ao usuário @murluka deverão ser apresentados. Conforme foi solicitado, houve comprovação de que as outlands encontradas em seu servidor são as mesmas deste tópico: http://www.xtibia.com/forum/topic/208561-outland-completa-para-pokemon-ilhas-para-pokemon/ Peço que os créditos sejam adicionados o mais rápido possível, caso contrário o tópico não será aprovado, e será removido. Abraços.
    1 ponto
  22. curruwilliam

    Gesior tfs 1.0 erro acconts

    Resolvido: Adicionar isso: date_default_timezone_set("America/Sao_Paulo"); Embaixo de session_start(); no arquivo: load.init.php Fico um erro ainda: Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in C:\xampp\htdocs\classes\databaselist.php on line 105 =x
    1 ponto
  23. grilado13

    Ip's diferentes

    Por exemplo, quero que meu site seja www.tibiagrilo.com Vou comprar o domínio do TibiaGrilo.com Após receber o domínio, irei configurar meu DNS para "" irá para o ip "site-tibiagrilo.no-ip.com" para "www" irá para o ip "site-tibiagrilo.no-ip.com" para "sv1" irá para o ip "servidor-tibiagrilo.no-ip.com" Acho que dá para entender
    1 ponto
  24. grilado13

    Ajuda tirar house site

    No ModernAAC é fácil. Vá na pasta do seu website e depois vá em 'system/application/views' Delete os seguintes arquivos: view_house.php house_list.php join_house_auction.php start_house_auction.php trade_house.php Também o houses.php em 'system/application/controllers' e o house_model.php em 'system/applicatoin/models' Agora seu Modern não tem mais nada relacionado a houses do servidor Ainda há mais alguns arquivos relacionados a houses caso também queira retirá-los, mas não acho necessário: em 'system/application/libraries/POT' OTS_House.php OTS_HousesList.php Caso não seja isso que esteja pedindo, poste novamente
    1 ponto
  25. Techrlz

    [POKETIBIA] Server Base + Source

    3- Pesquise em outros servidores as novidades, pesquise aqui no forum sobre discussoes sobre pokemon e sempre ligado no forum da PxG.. O resto me recuso a responder..
    1 ponto
  26. narazaky

    Monster no hit/attack

    é simples, substitua esse flag: <flag attackable="1"/> Por esse: <flag attackable="0"/> Ele ficará assim:
    1 ponto
  27. MatheusEnjoy

    Lista de Códigos Prontos 1.0

    [Modificações Servidor-Side] Anti-Palavrão E Anti-Spam Limite de Peso ao Enviar Parcels Capacidade de Sobrecargada Player Online Spoof ElfBot Anti-Push (Anti-Crash) Heal com Cores Diferentes Reset System Log do Chat [Modificações Cliente-Side] Andar Com WASD No Teclado [Funções Lua] Clipboardcopy(Text) Dochallengeplayer(Cid, Target) Dosavehouse(Houseid) [Outros]
    1 ponto
  28. Junior001

    Erro com reborn

    Qual a versão de seu servidor ?
    1 ponto
  29. Bom eu e um colega meu fizemos este sistema para um antigo projeto nosso, e faz muito tempo e achei aqui no PC e como nunca tinha visto um igual resolvi postar nesta comunidade que de forma direta e/ou indireta sempre tem me ajudado, O que faz? Ao chegar em tal level (determinado pelo admin) o player receber uma nova vocacao e uma nova outfit. É o mesmo que o /transformar dos narutibias só que este só de chegar no level o cara ja transforma. Vamos ao código. Dentro da Pasta "data/creaturescripts/scripts" Crie um arquivo chamado Promovido.lua com o Seguinte Conteudo: local config = { --[vocation id] = { nova voc, looktype, efeito} [1] = { 1, 31, 111}, [ID da Vocacao Inicial] = { ID da Nova Vocacao, LookType da nova vocacao, Efeito}, } local lvlGain = Level em que ira alterar a vocacao. function onAdvance(cid, skill, oldLevel, newLevel) if (getPlayerLevel(cid) == lvlGain and getPlayerStorageValue(cid, 2012) ~= 1) then local voc = config[getPlayerVocation(cid)] if voc then doPlayerSetVocation(cid, voc[1]) doSendMagicEffect(getCreaturePosition(cid), voc[3]) local outfit = {lookType = voc[2]} doCreatureChangeOutfit(cid, outfit) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Parabéns, você agora é um Shippuden") setPlayerStorageValue(cid, 2012, 1) end return true end end Abra o Arquivo "data/creaturescripts/creaturescripts.xml" e adicione na penultima linha: <event type="advance" name="Promovido" event="script" value="promovido.lua"/> Créditos Me and Flaah
    1 ponto
  30. Tonynh

    20 PACK's - Brushes "Marcas de Tinta"

    Olá xtibianos =) Hoje estou trazendo uma série de packs, um total de 20 packs. Resolvi não unificar todos eles para deixar que vocês escolham os que mais agradam. Para baixar, clique na imagem que você será redirecionado ao site com o link de download. É isso pessoal, espero que tenham gostado =) :hi:
    1 ponto
  31. Tonynh

    Logo para time

    Pokerangers, o tópico está resolvido? Tópico atendido e movido para a seção de pedidos entregues.
    1 ponto
  32. grilado13

    Ajuda tirar house site

    Você quer apenas tirar a função de comprar houses pelo site ou tudo relacionado a house?
    1 ponto
  33. Junior001

    Erro com reborn

    verifique-se no vocations.xml na vocação do Brolly tem o fromvoc = "ID"
    1 ponto
  34. http://www.xtibia.com/forum/topic/145300-c-compilando-um-otserv/ Faz do 2º ao 6º passo.
    1 ponto
  35. Tenta assim:
    1 ponto
  36. Killua

    Dice Arena

    Valeu vitão
    1 ponto
  37. beto06

    [Show Off] Beto

    Entrada para a Dragon Lair http://2.imgland.net/vP1CI.png http://2.imgland.net/dPoJ01.png
    1 ponto
  38. Killua

    !teleport com lista

    É um comando normal que mostra uma lista de lugares disponíveis e teleporta para o local escolhido Crie teleportvip.lua em data/talkactions/scripts e coloque: Agora em data/talkactions/talkactions.xml coloque essa tag: <talkaction words="!teleport" script="teleportvip.lua"/>
    1 ponto
  39. Killua

    Cassino Interativo

    Eu fiz esse código a pedido do usuário @igorlabanca e tive ajuda do @zipter98 pra fazer. Não vou explicar oq ele faz, vou somente postar o vídeo que o igor fez mostrando como funciona. O código faz exatamente oq está no vídeo. @EDIT algumas pessoas vieram até mim para dizer que estava dando para usar mesmo sem dinheiro. Esse problema já foi resolvido. Crie Killua Cassino.lua em data/actions/scripts e coloque: Se você usa a versão do 0.3 ou 0.4 do TFS, use assim: Se você usa o TFS 1.0, use assim: E coloque essa tag no actions.xml <action actionid="2142" script="Killua Cassino.lua"/> Daí basta colocar actionID 2141 na alavanca e pronto =) Espero que gostem.
    1 ponto
  40. Ele pesca somente itens
    1 ponto
  41. Maroak

    Arton - Classes e Spells (Atualizado 9/11)

    Fala galera! estou trazendo esse tópico para mostrar algumas magias já desenvolvidas para o Arton. A intenção é vocês darem um feedback, seja positivo ou negativo; Sintam-se a vontade para darem sugestões também. MΛGΣ: Sobre: O mage será uma classe focada para magias ofensiva, tanto em área quanto single target (único alvo), mas terá também magias de suporte, porem, apenas para si próprio, tornando o uma classe frágil, mas agressiva em questão de dano. Spells Ofensivas: > Single Target (único alvo) < • Burnout • Earthbound • Electrocute • Snowball > Multiple Target (AoE) < • Blizzard • Eruption • Sismic • Storm Spells Defensivas: • Firewall • Elementalist • Recover Wɑʀʀiѳʀ: Sobre: Os warriors terão um grande poder para magias ofensiva single target (único alvo). O seu forte serão magias defensivas que o tornaram um grande blocker, possibilitando-os a aguentaram uma grande quantia de monstros ao seu redor. Spells Ofensivas: • Bash • Impetuous Hand • Retaliation • (Em construção) Spell Defensivas: • Reflect • Recover • Increase Def ~ ESTAREI ATUALIZANDO ASSIM QUE FOREM SENDO TERMINADAS AS DEMAIS. ~
    1 ponto
  42. Para os que me perturbam com isso, de o botão do apache nao ligar ou ligar e desligar sozinho, fica ai uma sulução pra quem usa skype e uma rapida saida alternativa no webserver! Espero ter ajudado! em caso de persistencia tente o metodo passado pelo Raizen Créditos: PiabetaMan01 parte 1 RaizenUrameshi parte 2
    1 ponto
  43. Animal Pak

    DHA Server

    Informações: 12 Cidades; Quests; Items Vip; Items Premium; Premium Scroll; Novos Comandos; Zona Premium; Novas Magias; Addons e Montarias; Servidor 100% Estável; E Mais! Imagens: Download Server: http://www.mediafire.com/?buwn6jw4j7q3s8q Scan Server: https://www.virustotal.com/file/5bd416ba3cd16bf15ebd1ad36646847fa435d4f837231a53ef098858bd2997fe/analysis/1343922929/ Créditos: DHA soldoran Galaxi BT SmoOkeR
    1 ponto
  44. 1877799

    [Encerrado] Itens Iniciais, Como Mudar?

    Vá em \Otserver\data\creaturescripts\scripts e lá terá um arquivo chamado firstitems.lua , é ai que tem o ID dos items que o player vai iniciar. Exemplo: local firstItems = {} firstItems[0] = { 2173, 2525, 3965, 2124, 2457, 2647, 2643 } firstItems[1] = { 2173, 2525, 2190, 2124, 2457, 2647, 2643 } firstItems[2] = { 2173, 2525, 2182, 2124, 2457, 2647, 2643 } firstItems[3] = { 2173, 2525, 2399, 2124, 2457, 2647, 2643 } firstItems[4] = { 2173, 2525, 2428, 2124, 2457, 2647, 2643 } function onLogin(cid) if getPlayerStorageValue(cid, 30001) == -1 then for i = 1, table.maxn(firstItems[getPlayerVocation(cid)]) do doPlayerAddItem(cid, firstItems[getPlayerVocation(cid)][i], 1) end if getPlayerSex(cid) == 0 then doPlayerAddItem(cid, 2463, 1) else doPlayerAddItem(cid, 2463, 1) end local bag = doPlayerAddItem(cid, 11257, 1) doAddContainerItem(bag, 2160, 2) doAddContainerItem(bag, 2554, 1) doAddContainerItem(bag, 2120, 1) doAddContainerItem(bag, 7618, 1) setPlayerStorageValue(cid, 30001, 1) end return TRUE end firstItems[0] - A Vocação "0" irá iniciar com esses items. { 2173, 2525, 3965, 2124, 2457, 2647, 2643 } firstItems[1] - A Vocação "1" irá iniciar com esses items. { 2173, 2525, 2190, 2124, 2457, 2647, 2643 } Assim em diante... Já que você quer mudar quantas "Crystal Coin" o player iniciara aonde tem: doAddContainerItem(bag, 2160, 2) 2160 é o ID da "Crystal Coin" e o 2 é a quantidade, como você quer 5 mude o 2 para 5 Te ajudei ? dá um REP+
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...