Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 12/29/15 em todas áreas
-
Isso aí você faz em Lua, não em C++. Em qualquer arquivo de data/lib, coloque: LANGUAGE_STORAGE = 4929 Languages = { --["linguagem"] = valor_da_storage, ["english"] = 1, ["portuguese"] = 2, ["spanish"] = 3, } function getPlayerLanguage(cid) if not isPlayer(cid) then return true end for lang, value in pairs(Languages) do if value == getPlayerStorageValue(cid, LANGUAGE_STORAGE) then return lang end end return "none" end function setPlayerLanguage(cid, new_language) if not isPlayer(cid) or not Languages[new_language] then return true end setPlayerStorageValue(cid, LANGUAGE_STORAGE, Languages[new_language]) end Para alterar a linguagem do jogador: setPlayerLanguage(cid, nova_linguagem) Ex.: setPlayerLanguage(cid, "english") setPlayerLanguage(cid, "portuguese") Para obter a linguagem do jogador: getPlayerLanguage(cid) Que retorna valores como: english portuguese Em login.lua, recomendo colocar, abaixo de: function onLogin(cid) o seguinte bloco de código: if getPlayerLanguage(cid) == "none" then setPlayerLanguage(cid, "portuguese") end Exemplo de uso do sistema: local test_messages = { ["portuguese"] = "Mensagem de teste.", ["english"] = "Test message.", ["spanish"] = "Mensaje de prueba." } function onSay(cid) doPlayerPopupFYI(cid, test_messages[getPlayerLanguage(cid)]) return true end2 pontos
-
Bom, eu percebi que algo que poderia deixar os servidores bem legais seria um foco maior nas guilds em si. Então, resolvi criar um sistema que fosse melhorar isso, e surgiu o Advanced Guild System. Atualizações 22/01/14 - Publicação da versão 1.0 21/04/14 - Adição de mais tratamento de erros Informações O AGS, em si, não faz nada. Isso mesmo. Ele é uma biblioteca com várias funções focadas para guilds. Além disso, ele também faz algumas modificações no seu banco de dados ao ser instalado: Cria a tabela guild_storages; Adiciona a coluna pontos na tabela guilds, se ela não existir; Adiciona a coluna balance na tabela guilds, se ela não existir; Adiciona a coluna guild_id na tabela players; Adiciona um gatilho(trigger) para atualizar a coluna guild_id toda vez que ocorrer uma mudança na tabela guilds. Para acompanhar essa biblioteca e mostrar sua utilidade, fiz alguns sistemas utilizando ela: Guild Rank; Guild Tasks; Guild Banker. Funções Instalação Código Salve-o como guildlib.lua em data/lib Problemas na Instalação? Caso uma ou mais das colunas adicionadas já existam no seu banco de dados, execute as queries manualmente: Depois disso, considere seu AGS instalado.1 ponto
-
Colossus Server 10.77 - Servidor NOVO
BrunooMaciell reagiu a overseer por um tópico no fórum
COLOSSUS SERVER 10.77 Bom Galera do XTibia, ai vai a minha primeira contribuição para o site. Espero não ter errado ai na postagem e conseguir passar todas informações necessárias para o bom entendimento do Leitor. Sem mais delongas, apresento-lhes o Colossus server. CIDADES: Colossus* Edron Ankrahmun Gnombase Mineland* Yalahar Svargrond Roshamuul Gray Beach Rathleton Alpha Base* *Cidades Novas do servidor. - Warzone 1, 2, 3; - Bank System; - Gray Beach City completa 100% (incluindo Subsolo); - Monstros 100%; - Trainer Offline 100%; - Trainer Online 100%; - Todas montarias; - Taming system funcionando 100%; - Database completa; - Wrath of Emperor Quest; - War System 100%; - Market System 100%; - Roshamull Completa100% (incluindo subsolo); - Oramond Full; - POI; - Children of a Revolution Quest; - The New Frontier Quest; - Colossus quest; - Varias quests Items Espalhadas pelo mapa; - Novos Montros. - Todas as Magias Balanceadas para um melhor desempenho. (Foi mudado todos os cálculos das magias). Essa mudança foi feita visando obter um maior empenho do jogador para crescer no jogo, pois as formulas antigas cresciam linearmente. Adotei formulas que crescem exponencialmente. Resultado, quem se dedica ao jogo, treina, upa e busca os melhores itens, sera realmente o mais forte. - Itens vips criados. - Npcs de Addon postos em uma ilha, todas as quest e execuções de addons são idênticas aos métodos do global, e todos os caminhos são direcionados no mapa. - Todas as questes requerem missão. A inquisition, por exemplo, segue o mesmo raciocínio da quest global. - Muitas Hunts novas, todo mapa foi readequado, com isso, talvez as hunts que você encontre no global, não serão as mesma deste servidor. - A Knightwatch Tower, da dream chalange quest, foi reformulada, seus teleportes levam a Incríveis desafios. - Praticamente todos os items são acessíveis. - Wands e rods readequados para uma maior exploração destes items. - Todos os monstros do Global. Os novos monstros só poderão ser acessados com a conclusão da Colossus quest, que é um desafio e tanto. - Senha do god = god/god Dediquei um pouco do meu tempo para estar criando este servidor. Baseei-me no servidor aqui postado pelo Mitsuig Porem, o mapa foi totalmente editado por mim. Cidade Colossus e Alpha Base foram criadas por mim. As demais cidades foram readequadas para suprir minhas expectativas de jogabilidade do servidor. Todas as quests Globais (Exemplo: POI, Inqui, Children of revolution, The new Frontier, etc.) foram reformuladas para proporcionar mais jogabilidade e iteração no jogo. Todo mapa foi Sinalizado para guiar os jogadores à seus devidos destinos. ATENÇÃO: O mapa Não é global, Não é Global Compacto também, Não é Baiak. Tentei construir um servidor que conduza o jogador para o maior aproveitamento. O mapa é praticamente 100% utilizável, todas as hunts e quests disponibilizam items e recompensas interessantes. Creio que criei um bom servidor pra galera por online ai. Espero que gostem!! Bom, eu ja disponibilizei com o TFS compilado em Windows. Recomendo que Compilem vocês mesmo. Esse servidor foi feito usando de modelo o do link acima. Contudo, o mais importante mesmo aquié o SERVIDOR e a DATABASE. O resto podem fazer o download de lá que vai funcionar certinho. Downloads: SERVIDOR - SCAN DATABASE - SCAN WEBSITE - SCAN TFS-SDK-2.0 - SCAN Imagens: Templo da cidade Principal. Items Vip. Sala da Reward da Colossus quest. Novos Monstros. Nova Children of a revolution quest Depot da Cidade Principal. Créditos: Os mesmos do link acima citado. OTLAND - TFS TEAM; Lucas Barreto.1 ponto -
[ModalWindow][TFS 1.2][NPC] Sistema de Diálogo
Bluester reagiu a DeCarvalho por um tópico no fórum
Esse sistema/script/sei lá o que foi desenvolvido por Karain que quis trazer um 'ar' mais moderno ao tibia.. Com esse script conversar com o npc será mais uma experiência mais amigável, continua sendo customizável mas de uma forma mais fácil! Como instalar Em data/creaturescripts/creaturescrips.xml adicione <event type="modalWindow" name="Dialogue" script="dialogue.lua"/> Em data/creaturescripts/scripts/login.lua adicione isso antes do "return true" player:registerEvent("Dialogue") Crie em data/creaturescripts o arquivo dialogue.lua e adicione player_choices = {} defaultButtons = {{id = 0x00, text = "Select", enter = true, escape = false}, {id = 0x01, text = "End", enter = false, escape = true}} function Player:getChoiceText(choice_id) if player_choices and player_choices[self:getId()] then return player_choices[self:getId()][choice_id].text else return false end end function Player:createDialogueWindowWithButtons(modalWindowId, headerText, bodyText, buttonTable, choiceTable, sendToPlayer, priority) local var = ModalWindow(modalWindowId, headerText, bodyText) for i = 1, #buttonTable do var:addButton(buttonTable[i].id, buttonTable[i].text) if buttonTable[i].enter then var:setDefaultEnterButton(buttonTable[i].id) end if buttonTable[i].escape then var:setDefaultEscapeButton(buttonTable[i].id) end end player_choices[self:getId()] = choiceTable for i = 0, #choiceTable do if choiceTable[i] ~= nil and (choiceTable[i].storage == false or self:getStorageValue(choiceTable[i].storage[1]) == choiceTable[i].storage[2]) then var:addChoice(i, choiceTable[i].text) end end if not priority then var:setPriority(false) end if sendToPlayer then var:sendToPlayer(self) end end function onModalWindow(player, modalWindowId, buttonId, choiceId) -- be careful here if you have other modalwindow scripts if buttonId == 0x00 then player:say(player:getChoiceText(choiceId),TALKTYPE_SAY) elseif buttonId == 0x01 then player:say("Good Bye.",TALKTYPE_SAY) end return true end Crie em data/npc/scripts o arquivo dialogue.lua e adicione local npc_dialogue = { [1] = { message="This is the message that shows up before the choices, make sure it's long enough if you are having long choices.", choices= { [1]={text="Choice 1", storage=false, dialogue=1, script="end"}, [2]={text="Choice 2",storage=false, dialogue=2, script="script1"}, [3]={text="Choice 3",storage={1234,1}, dialogue=3, script="trade"}, [4]={text="Choice 4",storage=false, dialogue=3, script="quest"}, [5]={text="Choice 5",storage=false, dialogue=false, script="quest2"}}}, [2] = { message="Bla bla bla bla bla bla bla.", choices= { [1]={text="Choice 1",storage=false, dialogue=1, script="end"}, [2]={text="Choice 2",storage=false, dialogue=2, script="end"}, [3]={text="Choice 3",storage={1234,1}, dialogue=false, script="end"}, [4]={text="Choice 4",storage=false, dialogue=false, script="end"}, [5]={text="Choice 5",storage=false, dialogue=3, script="end"}}}, [3] = { message="Brought to you by Matt Shadowwing.", choices= { [1]={text="Choice 1",storage={1245,2}, dialogue=false, script="end"}, [2]={text="Choice 2",storage=false, dialogue=false, script="end"}, [3]={text="Choice 3",storage={1234,1}, dialogue=false, script="end"}, [4]={text="Choice 4",storage=false, dialogue=1, script="end"}, [5]={text="Choice 5",storage=false, dialogue=2, script="end"}}} } local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) 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 local talkstate = {} local function greetCallback(cid) local player = Player(cid) local npc = Npc(getNpcCid()) npcHandler:setMessage(MESSAGE_GREET, npc_dialogue[1].message) player:createDialogueWindowWithButtons(1, npc:getName(), npc_dialogue[1].message, defaultButtons, npc_dialogue[1].choices, true, false) talkstate[player:getId()] = 1 return true end local function creatureSayCallback(cid, type, msg) local player = Player(cid) local npc = Npc(getNpcCid()) if not npcHandler:isFocused(cid) then return false elseif talkstate[player:getId()] then for _, v in pairs(npc_dialogue[talkstate[player:getId()]].choices) do if msgcontains(msg, v.text) and (v.storage == false or player:getStorageValue(v.storage[1]) == v.storage[2]) then if v.script == "end" then talkstate[player:getId()] = v.dialogue npcHandler:say(npc_dialogue[v.dialogue].message, cid) player:createDialogueWindowWithButtons(1, npc:getName(), npc_dialogue[v.dialogue].message, defaultButtons, npc_dialogue[v.dialogue].choices, true, false) elseif v.script == "trade" then -- trading script here talkstate[player:getId()] = v.dialogue npcHandler:say(npc_dialogue[v.dialogue].message, cid) player:createDialogueWindowWithButtons(1, npc:getName(), npc_dialogue[v.dialogue].message, defaultButtons, npc_dialogue[v.dialogue].choices, true, false) elseif v.script == "quest" then -- quest script here talkstate[player:getId()] = v.dialogue npcHandler:say(npc_dialogue[v.dialogue].message, cid) player:createDialogueWindowWithButtons(1, npc:getName(), npc_dialogue[v.dialogue].message, defaultButtons, npc_dialogue[v.dialogue].choices, true, false) end end end end return true end npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Em data/npc/lib/npcsystem/npchandler.lua altere todos os TALKTYPE_PRIVATE_PN para TALKTYPE_SAY Depois é só criar seu npc.xml referenciar o lua e seja feliz.. Qualquer problema eu terei que repassar para o criador pois não sou apto a dar suporte.. Estou somente trazendo para cá!1 ponto -
Pokemon Online X Com Sources
hoshik4ge reagiu a RodriigoRobson por um tópico no fórum
•Link Reupload •Motivo: Formatei meu Pc e tinha perdido no fundo da Cova do meu HD ksaopksapok Estava no meio das minhas 10giga de musica que passei pro meu HD •Tive que cria outra conta no 4shared.com que perdi a antiga conta =s Eae Galera tudo na Paz! Vou postar Um servidor Antigo de Pokemon que estava no Meu pendrive a Anos e resolvi postar para voces ! •Como o Servidor e antigo vai conter sistemas basicos sem Novidades, so que Com Source o mais importante. E espero que usem como Base para Projetos futuras! •Distro Proprio •Client dentro da Pasta •Servidor Estavel sem Crashs •5 Balls •151 Pokemons + Shinys •Servidor com Sources •Systems •Pokemon With Gender: •Catch System: •Go/Back System: •Nick Name: •Ride System: •Surf System: •Fly System: •Evolution System: •Level On Pokemon's ball System: •Pokedex System: •Pokemons Balanced: •Blink System: •Fishing System: •M1-12 System: •Rare Candy System [Adiciona Level ao Pokemon] •Npc Nurse Joy System: •Portrait System: •Duel system •Order System: •Cut System: •Dig System: •Rock Smash System: •Teleport System: •Flash System: •Limit 6 Pokemons System: •Poke-Look System: •Novo Link: http://www.4shared.com/rar/VxNsv1zA/Pokemon_Online_x.html?1 ponto -
Distros Compiladas 1.0 | 1.2
Danihcv reagiu a Marco Oliveira por um tópico no fórum
The Forgontten Server 1.2 10.91 | 32 Bits: Download | Scan 10.91 | 64 Bits: Download | Scan 10.90 | 32 Bits: Download | Scan 10.90 | 64 Bits: Download | Scan 10.78 | 32 Bits: Download | Scan 10.78 | 64 Bits: Download | Scan The Forgontten Server 1.0 10.78 | 32 Bits: Download | Scan 10.78 | 64 Bits: Download | Scan 10.78: 64 Bits Ubunto 14.04: Download | Scan Colaboradores Bruno Minervino MitsuigFireelementMarco Oliveira1 ponto -
[Pokemon] Servidor Skyfall - Completo
Josemir rosendo reagiu a Gabrieltxu por um tópico no fórum
Conteudo Retirado.1 ponto -
Perfect nick system 100%
dragonittao reagiu a Strogman por um tópico no fórum
exclusividade xtibia porfavor não postar em outro forum system exclusivo para o xtibia Bom vi muito gente a traz desse sistema e, então resolvi fazer esse nick para ajudar a galera que quer sair do Lixo do pda e começar um projeto bom com os open source. para quem não sabe, nick system é um system muito popular na família dos poketibias, é um system que muda o nome/adiciona um apelido no personagem, muda o nome de exibição no client o nome que fica em cima do personagem no jogo. fulano: Gristony como essa função funciona? Gristony: exatamente igual a do pda! Em ProtocolGame.cpp em baixo de: void ProtocolGameAddShopItem(NetworkMessage_ptr msg, const ShopInfo item){ const ItemType& it = Itemitems[item.itemId]; msg->AddU16(it.clientId); if(it.isSplash() || it.isFluidContainer()) msg->AddByte(fluidMap[item.subType % 8]); else if(it.stackable || it.charges) msg->AddByte(item.subType); else msg->AddByte(0x01); msg->AddString(item.itemName); msg->AddU32(uint32_t(it.weight * 100)); msg->AddU32(item.buyPrice); msg->AddU32(item.sellPrice);} adicione: void ProtocolGamereloadCreature(const Creature* creature){ if(!canSee(creature)) return; // we are cheating the client in here! uint32_t stackpos = creature->getTile()->getClientIndexOfThing(player, creature); if(stackpos >= 10) return; NetworkMessage_ptr msg = getOutputBuffer(); if(msg) { TRACK_MESSAGE(msg); stdlist<uint32_t>iterator it = stdfind(knownCreatureList.begin(), knownCreatureList.end(), creature->getID()); if(it != knownCreatureList.end()) { RemoveTileItem(msg, creature->getPosition(), stackpos); msg->AddByte(0x6A); msg->AddPosition(creature->getPosition()); msg->AddByte(stackpos); AddCreature(msg, creature, false, creature->getID()); } else AddTileCreature(msg, creature->getPosition(), stackpos, creature); }}void ProtocolGamesendCreatureNick(const Creature* creature){ reloadCreature(creature);} Em ProtocolGame.h em baixo de: void sendQuestInfo(Quest* quest); adicione: void reloadCreature(const Creature* creature);void sendCreatureNick(const Creature* creature); Em Player.h em baixo de: void sendCreatureShield(const Creature* creature) {if(client) client->sendCreatureShield(creature);} adicione: void sendCreatureNick(const Creature* creature) {if(client) client->sendCreatureNick(creature);} Em Creature.cpp em baixo de: partyShield = SHIELD_NONE; adicione: Nick = ""; Em Creature.h em baixo de: virtual const Monster* getMonster() const {return NULL;} adicione: stdstring Nick; Luascript.cpp em baixo de: //doPlayerSendCancel(cid, text) lua_register(m_luaState, "doPlayerSendCancel", LuaScriptInterfaceluaDoPlayerSendCancel); adicione: //doCreatureSetNick(cid, nick) lua_register(m_luaState, "doCreatureSetNick", LuaScriptInterfaceluaDoCreatureSetNick); em baixo de: int32_t LuaScriptInterfaceluaDoPlayerSendCancel(lua_State* L){ //doPlayerSendCancel(cid, text) stdstring text = popString(L); ScriptEnviroment* env = getEnv(); if(const Player* player = env->getPlayerByUID(popNumber(L))) { player->sendCancel(text); lua_pushboolean(L, true); } else { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); } return 1;} adicione: int32_t LuaScriptInterfaceluaDoCreatureSetNick(lua_State* L){ //doCreatureSetNick(cid, nick) ScriptEnviroment* env = getEnv(); stdstring nick = popString(L); Creature* creature = env->getCreatureByUID(popNumber(L)); if(creature) { SpectatorVec list; g_game.getSpectators(list, creature->getPosition()); Player* player = NULL; creature->Nick = nick; for(SpectatorVecconst_iterator it = list.begin(); it != list.end(); ++it) { if(player = (*it)->getPlayer()) { player->sendCreatureNick(creature); break; } } }else{ lua_pushnil(L); } return 1;} Em Luascript.h em baixo de: static int32_t luaDoRemoveItem(lua_State* L); adicione: static int32_t luaDoCreatureSetNick(lua_State* L); Em Protocolgame.cpp procure por: void ProtocolGameAddCreature(NetworkMessage_ptr msg, const Creature* creature, bool known, uint32_t remove){ if(!known) { em baixo de: msg->AddU32(creature->getID()); adicione: stdstring nick = creature->getName(); if (creature->Nick != "") nick = creature->Nick; substitua: msg->AddString(creature->getHideName() ? "" : creature->getName()); por: msg->AddString(creature->getHideName() ? "" : nick); Obs: compilar em rebuild all ou sem os arquivos .obj exemplo de uso: doCreatureSetNick(getCreatureSummons(cid)[1], "Gristony") Creditos Gristony façam bom uso do code pequenos grilos1 ponto -
Hoje decidi entrar no XTibia, e percebi que tudo mudou. Fiquei tão feliz quando vi essa revolução, essas mudanças que o Daniel vêm propondo juntamente com sua equipe, quero apenas parabeniza-lo por esse feito, algo que eu mesmo tentei a algum tempo atrás e você finalmente conseguiu. Fico grato por cuidar do fórum, onde várias portas se abriram para mim, e para outras pessoas também cujo tiveram seu inicio aqui. Aqui fica meu sincero obrigado.1 ponto
-
Pokemon PDA XTIBIA
RodriigoRobson reagiu a deglorio por um tópico no fórum
Pessoal, não darei suporte para sqlite, o servidor esta configurado para mysql Vocês perceberam que a TV é conectada pela database? as vezes em sqlite da bug, pq a database sqlite demora um pouquinho para atualizar. Ai vai do critério de vocês, tudo que for relacionado a SQLITE não responderei. Servidor ATUALIZADO 29/12/2015.1 ponto -
Pokemon PDA XTIBIA
Drakopoulos reagiu a notle2012 por um tópico no fórum
quem não ta conseguindo logar só ir em data\creaturescripts.xml remover essa linha <event type="login" name="AntiMC" event="script" value="AntiMC.lua"/> e data\globalevents.xml remover essa linha <globalevent name="shop" interval="2" script="shop.lua" /> e config.lua procura por accountManager primeira linha provavelmente deixa accountManager = true1 ponto -
Spell Que Faz Monstro Trocar Cor Da Outfit Aleatoriamente.
Developer Berg reagiu a zipter98 por uma questão
Abaixo de: elseif pokemon.spell == "StickSlash" then doAreaCombatHealth(sumomdonego, element, getThingPos(getCreatureTarget(cid)), 0, -((num1)+(lvpokemon*(num3))), -((num2)+(lvpokemon*(num3))), 212) return 0 coloque: elseif pokemon.spell == "nome_da_spell" then local Kecleon_config = { {lookBody = 113, lookHead = 110, lookLegs = 115, lookFeet = 113}, {lookBody = 107, lookHead = 106, lookLegs = 107, lookFeet = 105}, {lookBody = xxx, lookHead = xxx, lookLegs = xxx, lookFeet = xxx}, --etc } if getCreatureName(sumomdonego) ~= "Kecleon" then return false end local color = Kecleon_config[math.random(#Kecleon_config)] color.lookType = getCreatureOutfit(sumomdonego).lookType doSetCreatureOutfit(sumomdonego, color, -1) return true1 ponto -
data/globalevents e apague o arquivo do shop.lua1 ponto
-
Para arrumar esse spam é só desativar a tag do shop.lua em globalevents.xml, mas isso não deveria te impedir de acessar o servidor1 ponto
-
Erro no install.php(etapa5)
Evergol reagiu a VictorWEBMaster por uma questão
Sete uma senha para a administração do website em si. Após isso apague o install.php1 ponto -
Spell Que Faz Monstro Trocar Cor Da Outfit Aleatoriamente.
Developer Berg reagiu a zipter98 por uma questão
Eu sei. Eu basicamente peguei o bloco de código que havia escrito inicialmente e taquei no novo código. Não estava preocupado com a funcionalidade do código, onde uma simples função resolveria o problema, mas sim em ele ser ou não executado. E, como você pôde ver, não estava. :^) @@ricardoberg Vou fazer a spell dentro de dois minutos e posto. Não sei como as spells da sua base funcionam, então fiz um código à maneira tradicional: local Kecleon_config = { {lookBody = 113, lookHead = 110, lookLegs = 115, lookFeet = 113}, {lookBody = 107, lookHead = 106, lookLegs = 107, lookFeet = 105}, {lookBody = xxx, lookHead = xxx, lookLegs = xxx, lookFeet = xxx}, --etc } function onCastSpell(cid) local caster = cid if isPlayer(cid) then if #getCreatureSummons(cid) == 0 then doPlayerSendCancel(cid, "You don't have summons.") return false end caster = getCreatureSummons(cid)[1] end if getCreatureName(caster) ~= "Kecleon" then return false end local color = Kecleon_config[math.random(#Kecleon_config)] color.lookType = getCreatureOutfit(caster).lookType doSetCreatureOutfit(caster, color, -1) return true end1 ponto -
Spell Que Faz Monstro Trocar Cor Da Outfit Aleatoriamente.
Developer Berg reagiu a zipter98 por uma questão
De qualquer maneira a coloração será sortida. Pergunto se você quer configurar as cores que podem ser sorteadas ou se prefere que as opções sejam todas as cores possíveis do Tibia. A primeira opção seria mais esteticamente viável, porque, ao invés de cores totalmente aleatórias, você poderia escolher as combinações de cor que o Kecleon pode assumir.1 ponto -
Spell Que Faz Monstro Trocar Cor Da Outfit Aleatoriamente.
Developer Berg reagiu a zipter98 por uma questão
Tem sim. Você prefere configurar as cores possíveis, bem como combinações, ou sortir valores aleatórios que correspondem as colorações possíveis do Tibia?1 ponto -
[Encerrado] Ajuda erro na Distro
ADM Jeff reagiu a RodriigoRobson por um tópico no fórum
- No Primeiro Erro nao existe o Monstro na Hora de dar o Respawn (Provavelmente pode ser um Shiny) - No Segundo Erro o Monstro nao Esta em uma Tabela onde seu Pokemon Ganha Exp. (Provavelmente e o mesmo Monstro do Primeiro Erro)1 ponto -
Erro no install.php(etapa5)
Evergol reagiu a alissonxzff2 por uma questão
é só botar page acess 3 no phpmyadmin, nas accounts, e retirar o acess da 1 (pra poder usar acc manager) alias tente botar page acess numa conta e entrar no site, tira das config o yes de instalar o gesior1 ponto -
[LINUX] Montando OTserver em Debian perfeito.
Drakopoulos reagiu a Natanael Beckman por um tópico no fórum
Linux Debian 7.5 Porque Debian? O sistema operacional Debian é bem mais leve que os outros atuais, por exemplo, eu estava utilizando, Ubuntu Server 14.04 64bits e migrei pra Debian 7.5 stable (wheezy)(64bits) o processamento da CPU caiu cerca de 25% meu TFS está trabalhando mais tranquilo isso é maravilhoso pois algo que me atormentava muito era o exagero de alto processamento da CPU. Claro que teve varias outras melhorias, porém vou deixa como destaque principal essa do processamento que ficou bem mais leve. Downloads necessarios: http://ip.da.maquina/phpmyadmin acesse seu phpmyadmin usando user: root e a senha é a que você botou na instalação do mysql, crie o seu banco de dados e vamos já upa a database.... Via ftp na pasta var/www/ renomeie usando o f2 o nome da pasta phpmyadmin para outro nome, qualquer um, eu particularmente sempre boto outros nomes, não deixo phpmyadmin, exemplo, 65fs98a97ds56aq. Upando a database, usando o shell vamos para a pasta onde se encontra o seu banco de dados, que enviamos via ftp, no caso, a pasta home: cd /home psenha Ae você bota a senha do seu mysql se você não sabe entre em contato com quem você alugou seu dedicado. mysql -u root -psenha No comando abaixo você bota o nome da sua database que criamos agora pouco na web. USE seubancodedados Aqui você bota o nome do arquivo.sql que enviamos por ftp: source arquivo.sql Só esperar finalizar após concluir ok, database upada pode conferir pelo seu navegador de internet como todas as tabelas estarão la do jeito que você configurou no windows. Galera ai o resto vocês já sabem sobre o config.lua,dados da database, senha, ip, rates, feito isso vamos pro site. Via ftp acesse sua pasta htdocs selecione todos os arquivos dentro dela e mande para a pasta var/www, quando concluir apenas altere o a seguinte arquivo, config.ini, em server path, altere, no caso ali o nome da pasta do meu OT é otserver: install = "no" server_path = "/home/otserver/" signatures = "0" Se tiver feito até agora tudo certo, o seu site vai estar funcionando perfeitamente. Go go go! Você já testou o server em sua casa, configurou a pasta data utilizando a mesma REV, pronto enviar a pasta via ftp substituindo a pasta que existe la. Feito isso vamos para o shell acesse a pasta do ot: cd /home/otserver./theforgottenserver Se aparecer algo bla bla (Y or N?) digita Y e da enter. Ai vai abri normalmente aparece carregando o server se der algum erro vai dizer pra quem sabe ler vai ser moleza! Abriu o server entrou com seu god testou tudo ok, feche o server, ctrl+c, agora vamos abrir o server oficial pra não cair e poder fechar o shell sem cair o ot. Vamos nós, no shell volte para o root usando: Até voltar ao root: cd / Vamos adicionar um usuario: adduser tfs No caso ai o nome do usuário que estou adicionando é tfs, pode ser otserver, seu nome, você escolhe, quando você executa o comando vai pedi uma senha bote mesma da sua maquina da enter vai pedi seu nome pais e talz bota nada não só da enter ate finalizar o processo feito isso, OK. Agora baixe esse arquivo em seu computador extraia ele e envia por ftp para a pasta home/otserver: TFS.SH cd /home/otserverchmod 777 -R tfs.sh Feito né? Ok agora vamos abrir o OT pra ele não fechar e quando ele cair por algum erro ele volta sozinho. Em root utilizando o shell execute os comandos: Isso indica que você esta utilizando o usuario tfs: su tfs cd /home/otserver ./theforgottenserver.sh& Ai ele começa a carrega normal e pronto THE END. Caso queria fechar o server: su tfs cd /home/otserver ps x Vai aparece uma lista de coisas abertas e cada uma com o numero do processo: Pra fechar o server vai ter que mata dois processo, o bash e o tfs, ambos com interrogação do lado veja que tem dois bash killa somente o com a interrogação(?). Sempre primeiro o bash: kill -9 21748 Depois o server: kill -9 21750 Pronto. Recomendo para a proteção do seu site: Prevent DOS attacks on apache webserver for DEBIAN linux with mod_evasive1 ponto -
Nas sources: game.cpp: No código da função: bool Game::playerSay Abaixo de: if(!player || player->isRemoved()) return false; Coloque: if(channelId == 10) return false;1 ponto