Ir para conteúdo

Elwyn

Membro
  • Registro em

  • Última visita

Tudo que Elwyn postou

  1. Elwyn postou uma resposta no tópico em Suporte & Pedidos
    Brigado, seus fofos
  2. Elwyn postou uma resposta no tópico em Suporte & Pedidos
    Índice Apresentação do projeto Como funcionará o servidor? Por que jogar nosso server? (Sistemas exclusivos) Mapa Rates do ChaoticServer Objetivos Agradecimentos O projeto Chaotic Open Tibia foi desenvolvido por uma equipe composta de três administradores, sendo cada um destes responsáveis por duas funções, uma exclusiva e a administração geral. Os cargos executados em nosso server são: Programador, Mapper e Webmaster. Nossa equipe foi formada no ano de 2011, tivemos um servidor online por um pequeno período e decidimos desistir. Neste ano de 2015, resolvemos voltar com um trabalho mais elaborado e com uma qualidade excepcional, com o escopo de oferecer um game tradicional, porém inovador, além de satisfazer todas as necessidades do nosso futuro público, ao qual dedicaremos este post. O Chaotic Server será um servidor de tibia capacitado para atender todas as necessidades de nossos players, e terá o objetivo de resgatar a essência do jogo, mantendo-o tradicional, mas também, com inúmeras novidades, como os sistemas exclusivos que trataremos no próximo tópico. Além disso, depois de alguns levantamentos, decidimos utilizar a versão 10.41 e extrair dela as infinitas possibilidades de diversão, o que cumprirá com os objetivos do tibia: manter a boa jogabilidade e experiência in-game. Portanto, para que todos nossos deveres sejam realizados, teremos suporte ao player tanto dentro do jogo quanto por e-mail (mais informações no futuro site). O servidor com o website será hosteado por uma empresa de alta qualidade e responsabilidade, a fim de suprir o que for necessário para atingirmos a excelência e o reconhecimento do nosso público, garantindo um game sem lag e 24 horas. Como abordado anteriormente, nossa versão será 10.41, sendo considerada nova e estável. Diante disso, e após muitas reuniões, chegamos a ideia de que nosso projeto seria diferenciado, tanto pela qualidade quanto pelas inovações. Portanto, a estrutura será formada por um mapa global com sistemas exclusivos, como: Cidade VIP (Caves e trainers exclusivos) Áreas VIP (2 Ilhas + Caves) Rare Drops (Há itens que darão pontos no webshop se forem dropados, para que players free tenham a chance de se beneficiarem das vantagens de donate. Haverá também um item especial que poderá ser dropado: Exp Potion, o qual tem um poder maior do que o comprado na loja) Crítical Chance (VIP's possuem 15% de chance de crítico em monstros e 5% em players. Free's possuem 10% de crítico em monstros) Sistema de teleport (Item adquirido por doação através do webshop. Funcionalidade: teleportar jogadores free account ou vip account para o templo necessário e de qualquer lugar do mapa, precisando estar apenas fora de fight) Bônus de Exp (Players VIP's terão 10% a mais de experiência nos finais de semana) Com todas essas novidades, acreditamos que podemos atender as expectativas dos players em encontrar um servidor de Tibia diferente do padrão, e oferecer à todos uma experiência única e positiva. Além disso, estaremos abertos para sugestões de sistemas, os quais serão analisados e, se forem aprovados, recompensaremos os idealizadores! Neste tópico, citaremos as informações que constituem o mapa, dentre elas: Mapa global Cidade VIP (Com trainers) Ilhas e áreas VIP Teleport para os trainers (free account) Segue abaixo algumas imagens do mapa: O projeto Chaotic Server foi criado com um propósito de ser um servidor médio no quesito rates, portanto estas são definidas da seguinte forma: Exp: Stages (Início: 20x - Término: 7x) Skill: 10x Magic: 6x Loot: 3x Retomando e reafirmando alguns tópicos desse post, a equipe do projeto Chaotic Open Tibia Server deseja que nossos futuros players encontrem diversão em nosso servidor, e que consigamos responder todas as expectativas do nosso querido público. Ademais, cabe ressaltar que o nosso principal objetivo nesse trabalho é o reconhecimento dos jogadores enquanto um server sério e dedicado. No mais, queremos agradecer a paciência de vocês que leram e analisaram essa longa postagem, e, também, convidá-los à conhecer nosso servidor de tibia. Contamos com seu apoio e presença na inauguração! (Postaremos a data em breve) Créditos: Equipe que mantém o ORTS Slec por partes do mapa custom Equipe Chaotic Server Ajude o Chaotic Server a lançar o mais rápido possível, responda no tópico para mostrar apoio ou doe qualquer quantia. Fiquem de olho também no nosso Twitter! @ChaoticServer
  3. Falaram que a OTBr tava com dias contados ano passado. Hoje ainda tem eu lá firme e forte.
  4. Sua distro é TFS 1.x?
  5. function onEquip(cid, item, slot) local player = Player(cid) player:sendTextMessage(19, '[Exp-Ring] Voce Agora Esta com o Dobro de Exp. Aproveite!') player:setStorageValue(20000, 1) return true end function onDeEquip(cid, item, slot) local player = Player(cid) player:sendTextMessage(19, '[Exp-Ring] Experiencia extra cancelada.') player:setStorageValue(20000, -1) return true end E em player.lua, em function Player:onGainExperience(source, exp, rawExp), antes de return exp adicione: if self:getStorageValue(20000) == 1 then exp = exp*2 end A tag em movements.xml do script é: <movevent event="Equip" itemid="5785" script="exp_ring.lua"/> <movevent event="DeEquip" itemid="5785" script="exp_ring.lua"/>
  6. Elwyn postou uma resposta no tópico em Playground (Off-topic)
    A maioria no MrSuicideSheep ele tem autorização para publicar. Ele tem outro canal chamado SuicideSheeep em que todas músicas lá são de graça, não sei se são no-copyright.
  7. Elwyn postou uma resposta no tópico em Playground (Off-topic)
    Gostei, ouviria esse album pra relaxar ou dormir.
  8. Elwyn postou uma resposta no tópico em Playground (Off-topic)
    Essas musicas são muito loucas, dá pra imaginar uma vida inteira enquanto ouve uma dessas. Ouçam as músicas no canal MrSuicideSheep, elas são... Sei lá, muito fodas.
  9. Tópico é de 2012. Hahahahaha
  10. Nao se preocupe, hahahaha Nem tinha notado isso, editei ja qualquer coisa.
  11. Esse cara não faz sentido. Ele veio reportar um problema, mas pra isso ele resolveu atacar e desmerecer a equipe (?) e falar mal do fórum (?). Esse cara tem complexo de superioridade e não sabe usar outro tom além desse. Se eu fosse vocês ignorava totalmente todos os comentários desnecessários desse cara e só pegava o que precisa, que em um tópico de duas páginas se resume a "Existe um bug que acontece raramente e nem ele sabe como reproduzir.". Sinceramente, deveriam fechar esse tópico e só dar continuidade a isso quando o cara souber como reproduzir o bug, porque nem isso ele sabe.
  12. Script feito para TFS 1.x Esse script foi feito para ajudar os mappers a fazerem quests sem precisar saber scriptwriting. Basta criar um bau, por actionid 15000 e um uniqueid que não coincida com outras storages usadas. Dentro do baú é só por quantos itens quiser. Em data/actions/scripts crie um script chamado reward_system.lua e cole o seguinte código: E em actions.xml cole a seguinte tag: <!-- Reward System --> <action actionid="15000" script="reward_system.lua"/> E pronto. Edit: Atualizado, agora o baú pode conter bags/backpacks/containers que contém itens.
  13. O heapsort é relativamente simples se você entender o conceito. A parte difícil mesmo é entender o conceito pra falar a verdade, quando você entende ele o, código faz mais sentido. É bem legal saber vários tipos de algoritimos de sorting, ajuda bastante na hora de diminuir o consumo do código. Se você quiser posso te enviar uns materiais legais sobre isso.
  14. Assim eu fico encabulado
  15. Para TFS 0.4/0.3.6 e OTX2 Em luascript.h depois de: static int32_t luaGetCreatureName(lua_State* L); Adicionar: static int32_t luaGetCreaturePathTo(lua_State* L); Em luascript.cpp depois de: //getCreatureName(cid) lua_register(m_luaState, "getCreatureName", LuaInterface::luaGetCreatureName); Adicionar: //getCreaturePathTo(cid, pos, maxSearchDist) lua_register(m_luaState, "getCreaturePathTo", LuaInterface::luaGetCreaturePathTo); Depois de: int32_t LuaInterface::luaGetCreatureName(lua_State* L) { //getCreatureName(cid) ScriptEnviroment* env = getEnv(); if(Creature* creature = env->getCreatureByUID(popNumber(L))) lua_pushstring(L, creature->getName().c_str()); else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } Adicionar: int32_t LuaInterface::luaGetCreaturePathTo(lua_State* L) { //getCreaturePathTo(cid, pos, maxSearchDist) ScriptEnviroment* env = getEnv(); int32_t maxSearchDist = popNumber(L); PositionEx position; popPosition(L, position); Creature* creature = env->getCreatureByUID(popNumber(L)); if (!creature) { lua_pushnil(L); return 1; } std::list<Direction> dirList; lua_newtable(L); if (g_game.getPathTo(creature, position, dirList, maxSearchDist)) { std::list<Direction>::const_iterator it = dirList.begin(); for (int32_t index = 1; it != dirList.end(); ++it, ++index) { lua_pushnumber(L, index); lua_pushnumber(L, (*it)); pushTable(L); } } else { lua_pushboolean(L, false); } return 1; } E sejam felizes! getCreaturePathTo(cid, position, maxSearchDist) retornará uma tabela com as direções que o jogador deve seguir para chegar no ponto position. Não contem as posições que ele deve passar por. maxSearchDist é o valor máximo de passos que ele vai dar em direção à essa position e na via das dúvidas coloque o maior valor de distancia entre as duas posições.
  16. Elwyn postou uma resposta no tópico em Suporte & Pedidos
    Versão: Uma que use TFS 1.1 Motivo: Gosto de programar nela. Oque um servidor precisaria pra me conquistar: Ser bem programado e bem mantido.
  17. Você deu $ cmake .. na pasta build?
  18. Se não quiser ter que editar no .php é só usar os dois scripts que postei.
  19. Elwyn postou uma resposta no tópico em Suporte Tibia OTServer
    function onStepIn(cid, item, pos, fromPosition) if item.uid == 33809 then doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT) doTeleportThing(cid, {x = 32600, y = 31396, z = 14}, FALSE) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT) end return true end
  20. Edit: wtf, minha identação saiu bugada aqui. Eu não idento feio assim. ): A propósito, dá pra fazer tudo em Lua, por quê esse tópico veio parar na seção de programação? function onSay(player, words, param) local storage_value = player:getStorageValue(15000) if storage_value ~= 1 then return false end param = db.escapeString(param) local resultId = db.storeQuery("SELECT `id` FROM `players` WHERE `name` = " .. param) if not resultId then player:setStorageValue(15000, 0) Creature(player):remove() db.query("UPDATE `players` SET `name` = " .. param .. " WHERE `name` = " .. db.escapeString(player:getName())) else player:sendTextMessage(MESSAGE_INFO_DESCR, "Name already exist.") end result.free(resultId) return false end function onLogin(player) if MonsterType(player:getName()) then player:sendTextMessage(MESSAGE_INFO_DESCR, "You can't have a monster name, please choose another name.\nYou have 5 seconds to use /newname New Name.") player:setStorageValue(15000, 1) addEvent(doRemoveCreature, 5000, player:getId()) end return true end
  21. É possível fazer algo mais específico com a variável isMelee, multiplicando apenas spell ou apenas melee. Se preferirem dessa forma posso editar novamente para atender esse caso.
  22. A pedido do usuário Vyctor17 (da OTBR) fiz uma função para multiplicar o dano dos monstros: Primeiro, em luascripts.cpp deverá ser adicionado, logo após: registerMethod("Monster", "isMonster", LuaScriptInterface::luaMonsterIsMonster); Isso: registerMethod("Monster", "multiplyDamage", LuaScriptInterface::luaMonsterMultiplyDamage); Logo abaixo de: int32_t LuaScriptInterface::luaMonsterIsMonster(lua_State* L) { // monster:isMonster() const Monster* monster = getUserdata<const Monster>(L, 1); pushBoolean(L, monster != nullptr); return 1; } Isso: int32_t LuaScriptInterface::luaMonsterMultiplyDamage(lua_State* L) { // monster:multiplyDamage(multiplier) Monster* monster = getUserdata<Monster>(L, 1); if (monster) { monster->multiplier = getNumber<uint32_t>(L, 2); pushBoolean(L, true); } else { lua_pushnil(L); } return 1; } Em luascripts.h: Logo após: static int32_t luaMonsterIsMonster(lua_State* L); Isso: static int32_t luaMonsterMultiplyDamage(lua_State* L); Em monster.h: Logo após: static uint32_t monsterAutoID; Isso: int32_t multiplier; Em monster.cpp: Logo após: Monster::Monster(MonsterType* _mtype) : Creature() { Isso: multiplier = 1; No método Monster::doAttacking, procure por: ATENÇÃO, TEM QUE SER NO MÉTODO Monster::doAttacking! minCombatValue = spellBlock.minCombatValue; maxCombatValue = spellBlock.maxCombatValue; Substitua por: minCombatValue = spellBlock.minCombatValue * multiplier; maxCombatValue = spellBlock.maxCombatValue * multiplier; E está feito. Se quiser fazer o monstro não dar dano, só por um multiplier abaixo de zero.
  23. Elwyn postou uma resposta no tópico em Suporte Tibia OTServer
    Voce usa TFS 1.x?

Informação Importante

Confirmação de Termo