Ir para conteúdo

Líderes

Conteúdo Popular

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

  1. Primeiramente agradeço ao keviz que me deu uma força no passado Irei mostrar aqui algumas sprites que estou tentando fazer kkkk sei la por querer aprender e tals mais por falta do que fazer kkkk Eu fiz essa em TOP DOWN, mais pretendo fazer em PERSPECTIVA Primeira Sprite = Karin Fiz olhando para a imagem abaixo Criticas,Comente,Like,Dicas kkk
    2 pontos
  2. dyego2008

    Show Off [ Projeto]

    estou trabalhando nessa Montanha oque acharam?
    2 pontos
  3. willian12345

    Primeira sprite

    Eai pessoal venho aki mostra minha primeira sprite para vcs PS:aceito sugestoes e criticas..
    2 pontos
  4. beddy

    Tibia Harry Potter - By Beddy

    HARRY POTTER ONLINE - by BEDDY Servidor TIBIA HARRY POTTER Alguma vez voce pensou que poderia ser um aluno de HOGWARTS? Agora é sua chance! Venha para o Harry Potter Online e fassa amigos, pegue varinhas, voe de vassoura e muito mais! Estou disponibilizando o servidor pois meu projeto do Harry Potter Online foi por agua abaixo, por causa de um cara que conseguiu rippar as sprites do quilante... Meu projeto já estava 90% andado, mas agora ferrou-se tudo. Então estou mandando a parte do meu projeto que está pronta, porem com sprites do quilante (Já ESTA TUDO ADAPTADO) - O QUE VOCE VAI TER QUE FAZER: Ajustar o servidor... Já estou te dando quase tudo de mao beijada, agora é só fazer alguns ajustes. Como: adicionar NPC, fazer action de compra de TOGA, e coisas simples! Bem.. é isso aproveitem! Distro Totalmente Estavel Sem bugs Sem virus Sem motherfuckingthings! Apenas alegria! -O QUE TEM NO SERVIDOR: •1 Classes: Aluno •O player ao upar um level, ganha "POINTS" para trocar por LIFE OU MANA assim torna o jogo mais sensivel •Mapa Proprio •JA EXISTE VIP E DONATES - AJUSTE PARA O NESCESSARIO -O QUE FALTA NO SERVIDOR: •AJUSTAR LIFE/HIT/LOOT DE MONSTROS - AJUSTAR OS SPRITES DAS HORCRUX (MAS O SISTEMA JA ESTA FUNCIONANDO CORRETAMENTE) -SISTEMAS: • Vassoura • Preparar poçoes (voce pega o axe [iD:2386], usa-o naqueles crystais que estaão espalhados pelo servidor, e com o crystal na backpack, use a magia "preparar", isso vai fazer com que seu caldeirão tenha carga,dai voce poderá dar USE no vial em cima do caldeirão para terminar sua poção!) -SITE HTML INCLUSO! DOWNLOAD: http://depositfiles....files/csh0uuxil http://depositfiles....files/csh0uuxil (INCLUSO: SERVIDOR, CLIENTE, SITE) SCREENS: REP+ PRA MIM POW! SCAN: Por Kaspersky PRO https://www.virustotal.com/file/c5b9fb7a023599d3be295eff034717e55d6e428753164d8377bc79777e34f722/analysis/1342184200/ Por Virus Total CREDITOS: Beddy Erickrusha - fez a parte do mapa do entorno de HOGWARTS,obrigado man!
    1 ponto
  5. DinoAdmin

    TM System

    Bom já existe um Sistema de tm no forum porem o meu é diferente. Vamos lá!! Bom Funciona assim: Cada Pokemon Pode Ter 3 TMs Adicionadas, OBS: Se O Pokemon tiver 12 magias ele pode ter 15 se voce adicionar 3 TMs nele. Como Usar O Sistema: Bom Basta Seguir o Tutorial e O Comando para Usar eu Recomendo que coloquem em Hotkeys na parte Shift+f1,Shift+f2,Shift+f3 Coloque os Seguintes Comandos tm1,tm2,tm3 OBS: a TM Nao Substitui Magia e Sim Adiciona , Por isso Vai por sequencia se voce usa a primeira tm no seu pokemon, para usar ela voce vai usar o comando tm1. se voce usa a segunda tm no seu pokemon para usar ela voce vai usar o comando tm2 mesma coisa com o tm3 Lembrando que Já possui as 50 TMs funcionando perfeitamente Vamos ao Tutorial: 1°: Crie um Arquivo Em "data/action/script" Chamado tm.lua e cole este script Dentro: Agora em Data/Action/Action.xml voce vai por a seguinte tag: <action itemid="12595-12644" event="script" value="tm.lua"/> Bom Recomendo voce por esta tag no ORDER 2°: Vá em Data/Lib/Crie um Arquivo Chamado "tm lib.lua" e cole o seguinte script dentro dele: 3°: Agora vá em data/talkaction/script/ Abra seu move1.lua e apague TUDO que estiver dentro e cole isto: 4°: Agora em Talkaction/Script/ Apague Tudo que estiver dentro do Seu "cd.lua" e cole isto dentro: 5°: Agora em Data/Talkaction/Talkaction.xml Coloque estas tags: <talkaction words="tm1" case-sensitive="no" event="script" value="move1.lua"/> <talkaction words="tm2" case-sensitive="no" event="script" value="move1.lua"/> <talkaction words="tm3" case-sensitive="no" event="script" value="move1.lua"/> 6°: o item.otb e item.xml (é recomendado baixar) Apois baixar voce vai pegar o item.xml e o item.otb e vai copiar eles e depois vai em data/item/apaga o item.otb e o item.xml e cola o item.otb e o .xml que voces baixaram. neles possui as tms adicionadas ao server (as 50) e no .xml ta com o nome direitinho, das 50 tmb Link para Download: http://www.mediafire...e54ldx6gw14fo3u Bom o Sistema esta pronto Agora vamos para a Parte do Client: Eu Vou Postar o Link do Client do Meu servidor ai Voces Pega a Tibia.dat e Tibia.spr e Utiliza em seu client bom o client ja esta com sistema de taunt, novas sprites novos flys boost stone, e as 50 TMs Link Do Client: http://www.mediafire...6w2ead2c5wrwj9v Bom ai esta o sistema de TM. Caso alguem tenha duvida so perguntar aqui no topico! Creditos: Criador do Script: ZarefShirou Edito:DinoAdmin
    1 ponto
  6. Oneshot

    Monstros Passivos

    Monstros Passivos Muito bom dia, galera. Sabe, eu estava estudando como funcionam os servidores de pokémons, aqueles que ainda estão começando, embriões de bons servidores, não grandes servidores como o Poke Brasil Online (PokeBro). O problema de todos esses servidores, é que todos são dependentes de sistemas criados pelo brun123 (se não me engano) dentro das sources, ou seja, esses servidores são dependentes do executável compilado do PDA, entre outros. A pedido de um amigo, eu desenvolvi o sistema de monstros passivos. Sim aquele sistema que dá um upgrade na inteligência artificial das criaturas, onde algumas podem atacar o jogador assim que o ver, outras podem atacar apenas quando for atacadas. É um sistema muito básico mesmo, eu fiz com C++ e Lua por puro comodismo, e pretendo deixar mais avançado apenas com C++ e uso de flags nos XMLs. Se você quiser usar, sinta-se a vontade. No seu arquivo monster.h, procure por: bool isHostile() {return mType->isHostile;} Substitua por: bool isHostile() const { std::string value; if(!getStorage("hostile", value)) return mType->isHostile; return booleanString(value); } No seu arquivo monster.cpp, procure por: Monster::selectTarget Dentro da função, procure por: if(!isTarget(creature)) return false; Adicione abaixo: if(!isHostile()) return false; No diretório creaturescripts/scripts, crie um novo arquivo com nome passive.lua e adicione: PASSIVE_BEHAVIOR = {"Deer", "Rabbit"} -- Aqui ficam os monstros que não atacam, mesmo que atacados. function onCombat(cid, target) if isMonster(target) then if not isInArray(PASSIVE_BEHAVIOR, getCreatureName(target)) then doCreatureSetStorage(target, "hostile", 1) end doMonsterSetTarget(target, cid) end return true end No mesmo diretório, abra o arquivo login.lua e adicione: registerCreatureEvent(cid, "PassiveSystem") No diretório creaturescripts/, abra o arquivo creaturescripts.xml e adicione: <event type="combat" name="PassiveSystem" event="script" value="passive.lua"/> Agora é só compilar seu servidor, sem a pasta obj, ou seja, dê um Rebuild All e correr pro abraço com seu sistema de monstros passivos. Abraços, Oneshot.
    1 ponto
  7. JulynaMiiy

    PokexGeneration

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

    [ZNOTE ACC] PagSeguro automático

    Fala XTibianos! Muitas pessoas me encheram o saco pediram o sistema pagseguro para znote 100% funcional. Ai está, basta jogar o retpagseguro na pasta principal e integrar o forumulário nas paginas. Dou suporte no topico, basta informar corretamente o erro. RetPagseguro.php #Formulário <form target="pagseguro" method="post" action="https://pagseguro.uol.com.br/checkout/checkout.jhtml"> <input type="hidden" name="email_cobranca" value="EMAIL PAGSEGURO"> <input type="hidden" name="tipo" value="CP"> <input type="hidden" name="moeda" value="BRL"> <input type="hidden" name="item_id_1" value="1"> <input type="hidden" name="item_descr_1" value="Premium Points"> <input type="hidden" name="item_frete_1" value="0"> <input type="hidden" name="item_quant_1" value="1"> <input type="hidden" name="item_peso_1" value="0"> <input type="hidden" name="ref_transacao" value="<?php echo $user_data['id']; ?>"> <select name="item_valor_1"> <option value="1000">10</option> <option value="2000">20</option> <option value="3000">30</option> <option value="5000">50</option> <option value="10000">100</option> <option value="15000">150</option> <option value="20000">200</option> <option value="25000">250</option> <option value="50000">500</option> </select> <input type="submit" value="comprar" /> </form>
    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. FAZENDO SEU OT, BOTANDO ONLINE, LIBERANDO PORTAS, BOTANDO SITE ONLINE, CRIANDO IP FIXO e mais umas coisas Então pessoal, nesse SUPER HIPER MEGA DOUBLE SUPER-SONICO BLASTER 3D JACK BAUER CHUCK NORRIS tutorial, vou ensinar a vocês a como criar um OTserv do zero! (Inclusive SITE!) Primeiro, você precisa baixar esses arquivos aê: OT - Link da seção com downloads: http://www.xtibia.com/forum/forum/596-downloads-de-otserv/ Appserv - Link do download: http://www.appservnetwork.com/ SCRIPTS DO SEU SITE - Link da seção de downloads: http://www.xtibia.com/forum/forum/581-downloads-de-websites/ Só isso : ) Então vamos lá. 1º CRIANDO SEU SERVER Primeiro, extraia o conteúdo do seu OTserver em alguma pasta! Você verá que tem um arquivo com esse nome: config.lua Clique com o botão direito nele, vá em abrir com: Bloco de notas. >>>>> Dentro dele, tem várias coisas.... Só vamos configurar as seguintes coisas: -- server ip (the ip that server listens on) ip = "AQUI VOCÊ POE O SEU IP" -- monster lootrating (how much faster you get items from monsters) lootmul = AQUI VOCÊ POE A PORTECENTAGEM DE CHANCE DE LOOT QUE TEM exemplo: 20 (o máximo é 100!) -- skill multiplier (another multiplier in data/vocations.xml)[/font][/font] skillmul = AQUI TU POE QUANTAS VESES VAI MULTIPLICAR O SKILL exemplo: 6 -- manaspent multiplier (another multiplier in data/vocations.xml) manamul = AQUI TU POE QUANTAS VESES VAI MULTIPLICAR O MAGIC LEVEL exemplo: 5 Bom, alí onde você poe o seu IP, você pega o seu ip nesse site: www.whatip.com Ve seu ip e cola lá. Quando terminar é só clicar em arquivo, salvar e fechar. Pronto, lembrando que toda vez que você desligar e ligar sua internet, o ip muda. Tem que editar lá também. 2º LIBERANDO AS PORTAS 7171 Como iremos fazer isso? Fácil! primeiro você tem que saber de uma coisa, se sua internet for a RÁDIO, você não poderá ter um OTserv. APENAS VIA HAMACHI! Link ensinando a fazer server via hamachi: http://www.xtibia.com/forum/index.php?showtopic=27981 Ok, caso não seja a rádio, vamos lá. Sua internet precisa se conectar por um discador ou já vem conectado direto quando liga?! Se precisar de discador, pra liberar as portas basta fazer isso: Primeiro, Vamos ao painel de controle. Iniciar> Painel de Controle. Clique em FireWall do Windows. Clique na aba Exceções E clique em Adicionar porta. Configure da seguinte maneira. Nome: Open Tibia Porta: 7171 Protocolo: TCP IMAGEM: Dê OK. Pronto, liberou as portas! Mas se é só ligar e já conecta direto sem discador, você tem que saber o modelo de seu modem. Ai você vem nesse site: http://portforward.com/routers.htm Acha o modelo do seu modem, clica. Dai na próxima tela, procure por TIBIA. Ai é só você seguir os passos lá e pronto! Mas não se esqueça de fazer aquilo do FireWall que eu disse ali em cima eim! Pronto! 3º PONDO O OT ONLINE Como faremos isso? Basta entrar na pasta do OT e abrir o arquivo EXECUTÁVEL que tem lá! Não é o Restarter nem o Remote Control! Pronto. Seu server está online! Mas você não tá consseguindo entrar né? É porque você entra pelo ip que você pega desse jeito: Vá ao Iniciar Clique em Executar Digite: cmd Depois digite: ipconfig Ai você pega o Endereço de IP e cola no IPCHANGER e entra! Mas só você que entra por esse IP! Os outros entram por aquele do www.whatip.com 4º AUMENTANDO A EXP Mas a EXP ainda está baixa! Como vamos arrumar? Fácil! Primeiro, vamos até a pasta do OT, Vá na pasta Data Depois, abra o arquivo stages.xml Estará mais ou menos assim: <?xml version="1.0"?> <stages> <stage minlevel="1" maxlevel="999999" multiplier="35"></stage> </stages> Vou explicar: stage minlevel="1" Isso, é o level que a exp começa. No caso, isso é usado para se quiser experiências variadas. No meu caso, eu puis como level mínimo 1. E onde está maxlevel="999999" Isso é o level que a exp desejada chega. Tipo, Quando chegar no level 500, a exp para de ser tal! Entende? Essa parte é a mais importante: multiplier="35" Essa é a EXP! Se você por ali, 50, vai ficar 50 veses mais rápido de upar do que no Tibia normal! Pronto! A exp tá configurada.. Seu server tá online.. quer mais o que?!?! Arrumar a regeneração de mana e hp? Ok né, vamos lá então! 5º ARRUMANDO A REGENERAÇÃO DE MANA/HP Abra a pasta de seu OT, Depois vá na pasta Data! Agora, abra o arquivo Vocations.xml Ai lá tem todas as vocações. Ai cada uma é mais ou menos assim: <vocation id="1" name="Sorcerer" description="a sorcerer" gaincap="10" gainhp="5" gainmana="30" gainhpticks="6" gainhpamount="10" gainmanaticks="3" gainmanaamount="50" manamultiplier="1.1" attackspeed="2000" soulmax="100" gainsoulticks="120"> <skill id="0" multiplier="1.5"/> <skill id="1" multiplier="2.0"/> <skill id="2" multiplier="2.0"/> <skill id="3" multiplier="2.0"/> <skill id="4" multiplier="2.0"/> <skill id="5" multiplier="1.5"/> <skill id="6" multiplier="1.1"/> </vocation> Então, Onde está esse: gainmanaamount="50" É a quantidade de Mana que ganha. E onde está esse: gainmanaticks="3" É o tempo que irá demorar para subir a mana, Ai no caso está 3 segundos! -- E para mudar a regeneração de HP, Onde está esse: gainhpamount="10" É a quantidade de HP que ganha. E onde está esse: gainhpticks="6" É o tempo que vai demorar para subir o HP! Então é isso! Edite todas as vocações Salve, resete o Servidor e pronto! Mas po, um server sem GM não dá né?! Vamos aprender a criar um char GM! 6º CRIANDO UM CHAR GM/GOD Primeiro, Vamos ao arquivo do character que irá virar gm. Geralmente, está na pasta Players. Está mais ou menos assim: (cortado algumas partes do script para ficar menos) <?xml version="1.0" encoding="UTF-8"?> <player name=" XTibia" account="58585858" sex="1" lookdir="2" exp="4200" voc="3" level="99999999" access="0" cap="380" maglevel="256" Para mudar para GM/GOD Basta mudar o nome e o Acces! Vamos mudar o Acces para 5 (GOD) E o nome para GM XTibia <?xml version="1.0" encoding="UTF-8"?> <player name="GM XTibia" account="58585858" sex="1" lookdir="2" exp="4200" voc="3" level="99999999" access="5" cap="380" maglevel="256" Os acessos são os seguintes: 5- GOD 4- Senior GM 3- GM 2- Sênior Tutor 1- Tutor Depois de ter mudado isso, Volte a pasta players. Lá, renomeie o arquivo do character para o nome que você pois dentro do arquivo. Agora, saia da pasta players e vá para a pasta ACCOUNTS Localize a account do player que irá virar GM, E vamos editá-la. Vai estar mais ou menos assim: <?xml version="1.0"?> <account pass="senha123**" premDays="0" premEnd="0"> <characters> <character name="XTibia"/> </characters> </account> Mude o nome para o nome que você pois no arquivo do character. Ficando assim: <?xml version="1.0"?> <account pass="senha123**" premDays="0" premEnd="0"> <characters> <character name="GM XTibia"> </characters> </account> Feito! Lembrando que para editar o character, ele precisa estar offline! Tá, agora você ve aqueles IPs bonitos né? Tipo assim: mamae.servegame.com Então vamos fazer! 7º CRIANDO IP FIXO Entre no site www.no-ip.com Logo depois, registre-se. Clicando em sign-up. Preencha como desejar. Depois de ter se cadastrado, Você receberá um email com a confirmação do cadastro. Feito. Agora, entre com seu email cadastrado e senha. Na tela que aparecer, clique em Hosts/Redirects. Clique em ADD Uma nova telá irá aparecer. Em name ponha o que você quiser. APENAS O NOME! Não ponha nada mais! Só o nome. Em baixo, escolha o serviço que você quiser. Exemplo, .servegame.com Pronto. Não mecha em mais nada e clique em Create Host. Feito! Seu IP fixo está criado! Espere 5 minutos antes de usá-lo. Lembre-se de todo dia que resetar sua Internet e seu IP mudar, ir no site do no-ip.com e clicar em manage hosts Acha o seu IP Fixo e clica em modify. Daí muda seu IP! ps: o IP que vai no config.lua é o IP de números. Pronto! Seu IP agora tá bonitinho =) Tá, agora você já tem seu OT, configurado, char GM, IP fixo e server ONLINE! Vamos partir pro site?! Acho que é uma boa : ) 8º INSTALANDO E CONFIGURANDO O APPSERV (SITE) Então, sabe aquele AppServ 2.5.9 que eu falei pra você baixar no início do tutorial? Vamos usa-lo agora! Então, dê um clique duplo no ícone do setup do AppServ e vamos instalar! Siga as fotos, preencha igualzinho! Vou mandar um esquema antes! Desmarca PHP My Admin e My SQL Poe o nome do server NAO PODE TER ESPAÇO! Poe o teu EMAIL em baixo. E poe 8090 na port. Depois dá NEXT deixa ir, e no final desmarca as duas caixinhas! Fotos na seqüencia: 1 2 3 4 Pronto! Depois de instalado, Vamos liberar as portas necessárias! Que no caso é a 8090! Faça o mesmo procedimento da porta 7171! Dito láááá em cima! Sobe um montão pouquinho que você acha eu ensinando a desbloquear! Mas muda o nome da porta poe OT Site. OK? Feito, agora sabe os scripts que eu falei para você baixar?! Então, copia os arquivos do script do seu SITE e cola dentro da pasta WWW Que tá no C:\\\\\\\\Appserv\\\\\\\\www Cola dentro dessa www ai! Ai depois, você abre o config.php E configura ai. Geralmente é fácil! Se tiver algo assim: datadir Siginifica que eles querem o destino da pasta data. Qualquer dúvida na hora de configurar, pode adicionar meu msn! Tá na minha assinatura. Depois de configurar, Volte na pasta Appserv e abra a pasta Apache. Abre o arquivo apache_start Essa é a imagem de quando você abre: Pronto! Agora vai lá e testa pra ver se tá on o seu site. http://SEUIP:8090 Lembrando que os outros vão usar o IP do www.whatip.com ( ou o fixo) Mas você entra com o IP interno do executar>cmd>ipconfig Ok? Então é isso galera! Espero que tenha ficado bem explicadinho! Tirei muito tempo meu pra fazer isso! Mas valeu apena! Queria aproveitar pra mandar um beijo pro Frozen, Rickzs, Powerzin, Rustty, JV e Addict! Qualquer coisa que tenha faltado, fala que eu edito! TUTORIAL 100% BY LASTSOULS! Não tem crédito a ninguém alem de mim. PROIBIDA A CÓPIA NÃO AUTORIZADA! XTibia, a sua comunidade de Tibia e OTserv. 2008
    1 ponto
  11. Natanael Beckman

    [C++] Compilando Um Otserv

    Boa galera andei olhando e vi alguns tópicos até meio parecidos com o que estou fazendo agora, mais, eu não acho eles completos por tanto aqui vamos nois. 1° Vamos fazer todos os downloads necessários. Vamos usar um source TFS pra versão de Tibia 8.60 - Source - Stians Dev-Cpp <> 32bits - Stians Dev-Cpp <> 64bits 2° Abra o Dev-cpp: 3° Clique em Tools > Check For Updates/Packages: 4° Clique em Check For Updates and Upstairs select devpacks.org: 5° Seleciona OpenSSL 0.9.8a e clique em Dowload: 6° Em seguida irá aparecer automaticamente um processo de instalação: Agora seu Dev-cpp está no ponto pra compilar. 7° Use ctrl + o pra abri o .dev: 8° Ele vai estar dentro da pasta da sua source: 9° Então depois que abrir todos os arquivos: 10° Use alt + p logo após aparecerá uma janela ae clique em parameters e adicione, {-D__CONSOLE__} e depois OK: 11° Agora é so compilar ctrl + f9: 12º O seu executavél vai está na pasta da sua source: Pronto galera compilação concluida. Creditos: nwtr Nando Web Natan Beckman
    1 ponto
  12. dyego2008

    ShowOff © Zenfia Online ®

    Boa Noite galerinha do XTibia, estou aqui para fazer um ShowOff do pequeno mapa do Zenfia Online, que futuramente será um grande continente. As imagens aqui postadas podem ser alteradas sem prévio aviso, acompanhe aqui nosso ShowOff e novidades do Mapa, manterei este meu post sempre atualizado. Templo de Eneria, cidade inicial do jogo. Em breve mais fotos.
    1 ponto
  13. Junior001

    Website Narutibia

    Bom eu estive sem nada para fazer quando eu resolvi fazer um template para narutibia ainda está em construção mais resolve postar algumas prints de como está ficando para que você queridos amigos e amigas rsrs avaliem e possa min da umas ideias gostaram deem rep+ rsrs OBS: Eu fiz no pc da minha mãe onde eu não tinha nada para mexer com sites rsrs tive de baixar um ps portable kkk então ingnorem o POKEMON SAMPLE pois foi a unica db que achei no pc '-' prints: Creditos, Junior001 (Junior Silva) and Avuenja (Marcelo Carvalho)
    1 ponto
  14. xSONYx

    [SHOWOFF] Sony

    Estou aprendendo galera, criticas construtivas, porfavor. Tem muitas mais, mas são do meu projeto e não quero divulgar ainda mas, em breve posto. Treinando Outfits Treinando itens OBS: Me consulte caso queira usa-las.
    1 ponto
  15. DuuhCarvalho

    Potion Multi Healing ! [OMS]

    Com a Potion multi healing você cura todos os players com profissões diferentes ! bom , eu usei a potion com id 8474 " " você escolhe a cura de cada profissão .. Ex : Se você quer que druid cure mana é so coloca mana no script mais se você quer que cure life é so colocar health no script .. assim com todas as profissões ! chega de blablabla ... vá em data / actions / scripts e crie um arquivo lua com o nome : potion_multi_healing.lua.. e cole isso dentro : function onUse(cid, item, fromPosition, itemEx, toPosition) local sorc = {tipo = 'mana', min = 100, max = 200} -- tipo = tipo de cura 'mana' ou 'health'... local druid = {tipo = 'mana', min = 100, max = 200} -- min = minimo que vai curar... local pala = {tipo = 'health', min = 300, max = 400} -- max = máximo que vai curar... local kina = {tipo = 'health', min = 400, max = 600} -- configure todos com sua preferência. local storage = 12390 -- uma storage qualquer .. local time = 2 -- tempo em segundos para usar a potion novamente .. if isPlayer(itemEx.uid) then if getPlayerStorageValue(cid, storage) - os.time() <= 0 then if getPlayerVocation(itemEx.uid) == 1 then if sorc.tipo == 'mana' then doCreatureAddMana(itemEx.uid, math.random(sorc.min, sorc.max)) doSendMagicEffect(getCreaturePosition(itemEx.uid), 12) doCreatureSay(itemEx.uid, "Sobe Mana!", TALKTYPE_ORANGE_1) elseif sorc.tipo == 'health' then doCreatureAddHealth(itemEx.uid, math.random(sorc.min, sorc.max)) doSendMagicEffect(getCreaturePosition(itemEx.uid), 13) doCreatureSay(itemEx.uid, "Sobe Life!", TALKTYPE_ORANGE_1) end setPlayerStorageValue(cid, storage, os.time()+time*1) elseif getPlayerVocation(itemEx.uid) == 2 then if druid.tipo == 'mana' then doCreatureAddMana(itemEx.uid, math.random(druid.min, druid.max)) doSendMagicEffect(getCreaturePosition(itemEx.uid), 12) doCreatureSay(itemEx.uid, "Sobe Mana!", TALKTYPE_ORANGE_1) elseif druid.tipo == 'health' then doCreatureAddHealth(itemEx.uid, math.random(druid.min, druid.max)) doSendMagicEffect(getCreaturePosition(itemEx.uid), 1) doCreatureSay(itemEx.uid, "Sobe Life!", TALKTYPE_ORANGE_1) end setPlayerStorageValue(cid, storage, os.time()+time*1) elseif getPlayerVocation(itemEx.uid) == 3 then if pala.tipo == 'mana' then doCreatureAddMana(itemEx.uid, math.random(pala.min, pala.max)) doSendMagicEffect(getCreaturePosition(itemEx.uid), 12) doCreatureSay(itemEx.uid, "Sobe Mana!", TALKTYPE_ORANGE_1) elseif pala.tipo == 'health' then doCreatureAddHealth(itemEx.uid, math.random(pala.min, pala.max)) doSendMagicEffect(getCreaturePosition(itemEx.uid), 13) doCreatureSay(itemEx.uid, "Sobe Life!", TALKTYPE_ORANGE_1) end setPlayerStorageValue(cid, storage, os.time()+time*1) elseif getPlayerVocation(cid) == 4 then if kina.tipo == 'mana' then doCreatureAddMana(itemEx.uid, math.random(kina.min, kina.max)) doSendMagicEffect(getCreaturePosition(itemEx.uid), 12) doCreatureSay(itemEx.uid, "Sobe Mana!", TALKTYPE_ORANGE_1) elseif kina.tipo == 'health' then doCreatureAddHealth(itemEx.uid, math.random(kina.min, kina.max)) doSendMagicEffect(getCreaturePosition(itemEx.uid), 13) doCreatureSay(itemEx.uid, "Sobe Life!", TALKTYPE_ORANGE_1) end setPlayerStorageValue(cid, storage, os.time()+time*1) else doPlayerSendCancel(cid, "Apenas Sorceres, Druids, Paladins e Knight podem Usar essa Potion!") end else doPlayerSendCancel(cid, "Você só pode usar essa potion a cada "..time.." segundos!") end else doPlayerSendCancel(cid, "Você só pode usar a potion em players.") end return true end agora vá em data / actions / actions.xml ... e coloque a tag : <action itemid="8474" script="potion_multi_healing.lua" /> É isso pessoal ! script criado para competição o melhor script. participem : http://www.xtibia.com/forum/topic/229900-o-melhor-script-8-inscricoes/
    1 ponto
  16. Eae galera do xtibia, aqui estou eu de novo trazendo um novo tutorial... dessa vez, vou ensinar á fazer algumas coisas, que foi muito dificil encontrar, quando eu estava tentando aprender... isso quando eu encontrava né... Vou ensinar á voces, como criar uma vocaçao, colocar transformaçoes, para narutibia. Vou tentar explicar de uma forma simples, para que os iniciantes entendam. Primeiro, vamos imagina uma vocaçao.. ex: Konan. Quando voce for criar ja tem que saber quantas transformaçoes irá colocar nela. Digamos que seja 6 transformaçoes. Vá em data/xml/vocations.xml. Ja que vamos colocar 6 transformaçoes, teremos que criar 7 tags para a vocaçao, como podem ver á cima, na primeira tag, o VocationId e o FromVoc deverao ser iguais, na segunda tag só aumenta 1 numero no VocationID, e do terceiro em diante, aumenta 1 numero nos dois. Isso sera necessario, porque a primeira tag nao irá valer de nada. Ok, fazendo essa parte corretamente, sua vocaçao estará pronta. Agora vou explicar a parte de ajeitar as transformaçoes. Vá em data/talkactions/scripts/transformar.lua Essa parte Voce irá adicionar no final do script, vou explicar para que cada numero serve, e o que é. 650,651,652,653,654,655 = sao apenas exemplos, esses numeros voce deverá colocar de acordo com o seu script, digamos que a ultima transformaçao que tem la, tem o numero "430" na primeira da sua voce deverá colocar "432" e assim por diante... 50,100,150,200,250,300 = É o level necessario para a transformaçao de cada linha. 651,652,653,654,655,656 = É os Ids da vocaçao, lembra que na explicaçao de criar a vocaçao, eu disse que deveria ter 7 tags, pois a primeira n vale de nada, entao, aki na parte das transformaçoes, voce começa pelo VocationID da segunda tag, até o final... 557,558,559,560,561,562 = Sao os numeros das newtypes da vocaçao, nao esqueça de fazer na ordem certa. E por ultimo, os numeros 10, que seria o efeito que vai sair no player quando ele transformar, voce pode mudar de acordo com os numeros do comando "/z". Bom galera, por ai termina o tutorial, caso tenham feito tudo certa, nao ocorrera nenhum erro, e espero que tenham aprendido. Brevemente irei ensinar á fazer spells basicas para narutibia.. Até a proxima! Gostou do meu tutorial? Deixe seu rep+
    1 ponto
  17. Eai galera queria saber como compilar client sem ser pelo molebox. augem ai pode me ajuda do rep+
    1 ponto
  18. u n d e r

    Estrutura modificada

    Boa tarde Xtibianos, qual a boa para este final de semana? Nossa equipe está tão motivada, que não para. A cada segundo, estamos nos movimentando buscando melhorar esta comunidade que voltou a crescer. Antes de "startar" as notícias, gostaria de agradecer a cada um que dia após dia tem elogiado e também criticado de forma construtiva as nuances de nosso fórum. 1º Aprovação de downloads Uma crítica esta semana nos chamou a atenção, para ler na íntegra, acesso o link abaixo: http://www.xtibia.com/forum/topic/229440-sugestao-aprovacao-de-downloads/ Para solucionarmos a situação, estaremos analisando membros de bom desempenho, que entenda e com uma boa conduta dentro de nosso fórum para estagiar nas seções de aprovações. Queremos de uma vez por todas, evitar que tópicos se acumulem nesta área, agilizando o processo e garantindo que todo o conteúdo seja liberado, atentando-se para a qualidade e segurança dos downloads disponibilizados. Obviamente estamos expostos a diversas situações, portanto, é muito importante também a colaboração de vocês para conseguirmos rastrear qualquer conteúdo nocivo ao usuário ou visitante do fórum. 2º Área de atendimento http://www.xtibia.com/forum/topic/229602-area-de-atendimento/ Com o objetivo de evitar qualquer "desvio" na interpretação do nosso fórum de atendimento aos membros do Xtibia, optamos por alterar a tratativa do nome. O atendimento funciona mais como um "retorno dos usuários", ou seja, um "feedback" do que acontece em nossa comunidade. Certo? Partindo este principio, mudamos o título e descrição para que nenhum usuário novo possa interpretar de maneira errada e se confundir com os sub-fórums de suporte específico. 3º Suporte a otserv http://www.xtibia.com/forum/forum/988-suporte-otserv/ Opa, se melhoramos a área de atendimento, agora nomeada, Feedback, porque não melhorarmos nosso suporte a Otserv? Seguindo a linha de raciocínio, preservamos o que o Xtibia tem de exclusividade em relação a qualquer outro fórum atual. Áreas específicas para atendimento e pedidos de "n coisas". No entanto, estas áreas as vezes estão escondidas e se tornam de difícil acesso para usuários novos ou preguiçosos. Este problema deverá ser solucionado, com um novo fórum de redirecionamento, facilmente encontrado nas seções do Xtibia: 4º Open Tibia Client http://www.xtibia.com/forum/forum/917-open-tibia-client-oficial-brasileiro/ Entendemos que o Otclient é um projeto que foi idealizado pelo brasileiro Edubart. Tratando-se de um projeto, por si só, deduzimos que patrocinamos oficialmente tal área e que portanto nada melhor do que enquadrá-lo em nossa área de projetos patrocinados. "Ah Alê, fica muito escondido!" Toda semana estamos trabalhando em meios de divulgação que potencialize os acessos a concursos e projetos do Xtibia. Além do Facebook, excelente ferramenta de publicação, vocês têm acompanhado que o fórum recebeu uma tarja de anúncios no topo. Esta tarja muda a cada 3 dias mais ou menos! 5º Layout http://www.xtibia.com/forum/topic/229215-barra-negra/ A barra superior, que funciona como um breadcrumb em nosso fórum foi melhorada. Testamos em resoluções de 1024x768 alguns tópicos que possuem títulos grandes e conseguimos melhorar a exibição, evitando a "quebra do layout". Peço que continuem averiguando isso e reportem se encontrarem falhas. ____________________________________________________________________________ Importante: vocês notaram que nosso chat está desativado. Gostaria de aproveitar o ensejo para explicarmos a respeito. Nosso fórum das últimas semanas recebeu um número bem maior de visitas do que o acostumado. Estamos crescendo e isso é realmente muito bom e agradecemos o empenho de toda equipe e membros. Com este cenário, nosso chat passou a ter mais uso, "estourando" entre aspas, a capacidade de requisições. Isso tudo está sendo analisado e melhorado, não se preocupem. Neste meio tempo, pedimos que aguentem os ânimos até criarmos uma solução ideal! Deixo claro que estamos nos movimentando para resolver o mais rápido. Por hoje é só, a semana foi bem agitada. Desejo a vocês um ótimo final de semana e boa diversão!
    1 ponto
  19. Eae cara, tempo que n do uma de spriter então vi esse pedido e fui brincar um pouco! Vamos lá 1° Você precisa alinhar os ombros, pés, braços. 2° Para estar na perspectiva 45° o pé tem que traçar uma linha reta até a cabeça! ( Obs : Essa está sem perspectiva porém como a harpia anda torta acho que ficou apropiado ) 3° Finalmente finalizei e mudei alguns aspectos também como a cabeça redonda, a asa aberta, etc... Espero que goste se eu não passar dia todo estudando amanhã tento pintar e quem sabe um remake nessa outline também!
    1 ponto
  20. Wingardium

    ShowOff © Zenfia Online ®

    muito bom teu trabalho cara, o spriting e o mapping ^^
    1 ponto
  21. MANDA SCRIPT DO PRIMEIRO
    1 ponto
  22. kaizy536

    Arrumar o mapa

    Obrigado, duvida sanada. Topico reportado.
    1 ponto
  23. SmiX

    ShutDown Pc - By SmiX 1.0

    Olá! Hoje vou postar meu 2º programa em C++, chamado de "ShutDown Pc". O que faz? Desliga seu pc em um espaço tempo, determinado pelo usuário. Por enquanto está por CMD, mas logo, logo vai ter seu designer implementado. Imagem: Download Espero comentários. Até mais. -------------------------------------------- Programa atualizado, baixem e avaliem, por favor. Download
    1 ponto
  24. Madarada

    Sprites. [DuuhCarvalho]

    A outline do book está boa só está muito saturado tenta deixar um pouco menos sem esse brilho e investir mais na textura do livro em si.
    1 ponto
  25. DuuhCarvalho

    Bin Laden System 2.0

    local time = 1 -- tempo para usar a magia novamente. amigo a primeira spells que summona o monster, tem um tempo certo pra usar novamente em minutos ! se você coloca 5 só pode usar a magia novamente depois de 5 minutos mesmo que o monster tenha explodido .
    1 ponto
  26. masdead

    Arrumar o mapa

    Não muda em nada.
    1 ponto
  27. DuuhCarvalho

    Sprites. [DuuhCarvalho]

    primeiro book ^^ tentativa fail de fazer um tile . dicas por favor ..
    1 ponto
  28. Techrlz

    [Pokemon] Servidor Skyfall - Completo

    https://www.virustotal.com/pt/file/1c2cf219f9b93220981578cb1237191a909683a83246c872d37203bed79cc7c5/analysis/1394632885/
    1 ponto
  29. precisa não amigo , rrsrs' acabei de lembra a tag em talckactions.xml não pode conter espaço . Ex : modo god , não acontece nada .. tenta assim : modoGod .. vai funcionar !
    1 ponto
  30. Resultado: Spoiler Autor. H = Autor. E = Autor. I = 1° Lugar- Frenvius (H) 2° Lugar- ElderDark (E) 3° Lugar- Articfox (I) Parabéns a todos participantes e obrigado a todos que participaram da votação, e desculpe a demora.. novamente..
    1 ponto
  31. Aqui Shoguns !! Veja se ficou ao agrado eren !!
    1 ponto
  32. local tables = { "Reset Info-", "de 1-4 Resets lv - 4k", "de 5-9 resets lv - 5k", } function onSay(cid, words) return doPlayerPopupFYI(cid, table.concat(tables, "\n")) end Cada nova linha em tables representará uma nova linha na "janela de informações".
    1 ponto
  33. Se a base do seu servidor for PDA: data/lib, newStatusSyst.lua. Acima de: if isSummon(ret.id) and getPokemonBoost(ret.id) ~= 0 and math.random(1, 100) <= getPokemonBoost(ret.id) then --sistema "pegou no boost" if ret.cond and not isInArray({"Poison", "Leech", "Fear"}, ret.cond) then doSendAnimatedText(getThingPosWithDebug(ret.id), "BOOST", 215) --alterado v1.8 return true end end Adicione: local miss_imunity = {"Zapdos", "Moltres", "Articuno"} --Pokémons imunes à status negativos. if not isSummon(ret.id) then if isInArray(miss_imunity, getCreatureName(ret.id)) then return true end end
    1 ponto
  34. dyego2008

    Show Off [ Projeto]

    Sim eryrrel obrigado, todas as sprites ainda não foram finalizadas. UPDATE: Dei uma melhorada no Telhado.
    1 ponto
  35. DuuhCarvalho

    Ncp de Teleport

    shoguns muda para.. doPlayerRemoveMoney(cid, Money)
    1 ponto
  36. Shoguns

    Ncp de Teleport

    npctp.lua: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local pos = {x=152,y=58,z=7} -------------- Pos para onde o player sera levado local itemid = 2160 ----------------- Id do item que vai ser removido do player local quantia = 10 -------------Quantidade do tal item function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end if msgcontains(msg, "offer") or msgcontains(msg, "help") then selfSay("Eu posso te levar a TAL lugar por um "..getItemNameById(itemid).." item, fale {travel} se quizer viajar.", cid) talkState[cid] = 0 elseif msgcontains(msg, 'travel') then if doPlayerRemoveItem(cid, itemid, quantia, 1) then selfSay("Boa viagem.", cid) doTeleportThing(cid, pos) else selfSay("Voce não tem grana suficiente.", cid) end end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Crystal Coin: 2160 Platinum Coin: 2152 Gold Coin: 2148 Npctp.xml: <npc name="NOMEDONPC" script="data/npc/scripts/npctp.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="134" head="78" body="88" legs="0" feet="88" addons="3"/> <parameters> <parameter key="message_greet" value="Ola. Para mais informacoes de meus servicos diga {offer}." /> <parameter key="message_farewell" value="Tchau." /> <parameter key="message_walkaway" value="Tchau." /> </parameters> </npc>
    1 ponto
  37. BrunooMaciell

    [Pedido]

    aii
    1 ponto
  38. O Caipora

    Projeto (I Do It Bigger)

    Fala galera, beleza? Vou colocar imagens do que temos (no mínimo) pra hoje, logo mais posto os links para download! Primeiro, segundo e terceiro "resizes" do dia. A Big Skeleton A Big Minotaur A Big Kongra
    1 ponto
  39. HeltonMuniz2

    Galeria De LuquitossML

    Ficou bem legal, você realmente tem talento lucas, só achei que no cabo do CrossBow, ta muito escuro (achei a sombra um pouco alta), mais eu não sou spriter rsrs, Boa Sorte, e sucesso ai com as sprites.
    1 ponto
  40. o LGK

    Alissow Edited 8.6

    ALISSOW FEATURES 8.6 Créditos: Alissow Comedinha Luis Nirk TFS Team Viniply Xedegux admleonardo(eu) Sobre o OT/Mapa: Principais quests: -Annihilator -Inquisition Quest -Pits of inferno -Demon Oak -Solar axe quest -HOTA -MPA quest -The Challenger Monstros: -Total monstros: 10292 -Total spawn: 5587+ Cidades: -12 Cidades -200 Houses+- Raids/Invasões: -Rat -Orshabaal -Ghazbaran -Giant spider/The old window -Ferumbras -Morgaroth Spells: -Magias editadas para balanceamento das vocações Changelog Atualização [3.4 BETA]: Spoiler Atualização nº 2 [3.4]: Spoiler Atualização 3.5 [06/08/2009]: Spoiler Atualização Patch 3.5.1 [07/08/2009]: Spoiler Atualização 3.6 [10/08/2009]: Spoiler Atualização 3.7! Beta [18/12/2009]: Spoiler Atualização 3.7 Patch 1 [27/12/2009]: Spoiler Atualização 3.8 [17/01/2010]: Spoiler Atualização 3.8 Minor Patch 1 [17/01/2010]: Spoiler Atualização 3.9 [15/02/2010]: Spoiler Atualização 4.0 [15/02/2010]: Spoiler Atualização 4.11! [11/07/2010]: - Versão 8.6, todos os items, outfits e monstros novos (Comedinhasss, Fireelement) - Adicionados os novos monstros 8.6 (Alissow) - Bug das potions arrumado (Comedinha, Matheusmkalo, Gabriel linhares, Fireelement) - Erros das runas arrumado (Comedinha, Gabriel linhares, Matheusmkalo, fireelement) Novas screenshots da atualização 4.0 Mais tarde posto mais imagens, agora estou com um pouco de pressa :] Ta ficando grandinho heim... Download Servidor: 4shared Tamanho: 17,416 KB Download: http://www.4shared.c...ow_Ots_411.html Link protegido: http://lix.in/-8d4bc0 Scan VirusTotal: Clique aqui Atenção - Acc do God: god/god - LEIA o tópico antes de postar qualquer coisa ou duvida - Reportem se houver algum bug - A database fica na pasta schemas+Database - Proibido o uso do nosso distro sem o nosso consenso, obrigado. - Se você gostou, clique no ali embaixo ó. Andei percebendo que há muitos mapas feitos por mim em outros servidores postados aqui no xtibia, eu não sei se vocês sabem, mas isso é PLÁGIO. Eu não sou uma pessoa egoista, tudo que eu posto aqui no XTibia é para ser compartilhado, mas desde que mantenham os devidos créditos. Será denunciado qualquer tipo de "roubo" sem minha autorização para beneficio próprio. Eu sei que vocês não se importam muito com isso, eu também não deveria me importar, mas é o tempo e a dedicação de outra pessoa que vocês estão roubando, então peço gentilmente aos que tem conhecimento desses mapas, que me apontem. Não tem graça trabalhar horas e horas e ser roubado em dois minutos.
    1 ponto
  41. Alexclusive

    [Tutorial]Criando Website Com Xampp

    No próprio tópico tem a resposta!!! Tente substituir seu arquivo Pot em xampp\htdocs\pot por esse: POT. E também substitua o arquivo accountmanagement.php em xampp\htdocs\accountmanagement.php por esse: AccManagement.php. Vê se da certo...(se não...) Execute essa query: CREATE TABLE `vip_time` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `date` INT(11) NOT NULL , `text` TEXT NOT NULL ) ENGINE=MYISAM ;
    1 ponto
  42. Por saber como é stressante ficar procurando tutoriais na internet para desbloquear as portas para abrir seu OTServ... e chega a ser ainda pior quando não funcionam... Neste caso resolvi criar este tutorial... Neste tutorial, 100% criado por mim, vou ensinar todos os passos para liberar as portas para abrir seu OTServ. Portas que serão liberadas: Número das Portas: 7171 & 7172 Locais das Portas: Firewall (Windows 7 Ultimate), Modem (Thomson v6 - ST510) & Roteador D-Link Wireless' (D-Link DI-524). Programas necessários: PortFowards - Clique aqui para baixá-lo. (Site Oficial do Programa) Função: Nada demais, só serve para testar se a porta está realmente aberta. Então, vamos ao trabalho' Primeiro Passo' Vamos desbloquear as portas do "Firewall do Windows 7 Ultimate"... Clique no spoiler abaixo e siga os passos' Segundo Passo' Vamos desbloquear as portas do "Modem Thomson (V6 - ST510)"... Clique no spoiler abaixo e siga os passos' Terceiro Passo' Vamos desbloquear as portas do "Roteador D-Link (DI-524)"... Clique no spoiler abaixo e siga os passos' Quarto Passo' Vamos testar se as portas foram realmente liberadas com o programa "PortForward"... Clique no spoiler abaixo e siga os passos' Tutorial: Adriano Swatt (Gonorreia) Créditos:Adriano Swatt (Gonorreia) Espero que ajude vocês ae... Abraços e boa sorte a todos que precisam' @UP'
    1 ponto
  43. Faça o seguinte, na página da 3ª foto que me enviou, deixe somente a primeira configuração de IP, Porta e Traffic Type ativa e exclua ou desabilite o restante. A primeira ficará da seguinte forma, como imagem abaixo: E no Tutorial, em uma parte só, estou pedindo a porta 7272, mas na verdade é porta 7172... Já corrigi. No entanto, faça isso, deixe como a imagem acima e exclua o restante de configurações que você fez por conta própria. @CASO NÃO FUNCIONE, tente o abaixo: Creio que isso resolva. #Lembre-se, exclua as outras configurações que fez, pois essas podem conflitar a nova. Fico aguardando resposta.
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...