Ir para conteúdo

Guilherme

Héroi
  • Registro em

  • Última visita

Tudo que Guilherme postou

  1. Guilherme postou uma resposta no tópico em Suporte Tibia OTServer
    pokemonstro
  2. piada mais velha que minha vó
  3. java é coisa de otario
  4. O tópico foi movido para a área correta, preste mais atenção da próxima vez! Leia as regras do fórum: http://tibiaking.com/forum/topic/1281-regras-gerais/?p=7680 Este tópico foi movido: De: "Tibia King → Atendimento Geral" Para: "OTServ → Suporte OTServ → Suporte de Scripts"
  5. Guilherme postou uma resposta no tópico em Playground (Off-topic)
    é o cara que vai te curar
  6. Guilherme postou uma resposta no tópico em Playground (Off-topic)
    eu tenho amigo gay que já comeu mais que vc e mesmo assim ele continua gostando de rok
  7. Guilherme postou uma resposta no tópico em Playground (Off-topic)
    eu ia comentar uma coisa, mas as vezes eu esqueço que você é gay
  8. Guilherme postou uma resposta no tópico em Playground (Off-topic)
    realmente cara, estou morrendo de dar gargalhadas
  9. 292 Sou filho do Chuck Norris...
  10. Guilherme postou uma resposta no tópico em Suporte Tibia OTServer
    Esse erro acontece pq vc não configurou o config.lua corretamente. Tire as linhas comentadas e coloque o tipo de sql pra mysql.
  11. Guilherme postou uma resposta no tópico em Suporte Tibia OTServer
    ajudou bastante ein. @topic: até onde eu sei, você tem que desbloquear esse limite no .spr editando o seu hex. uma alternativa é utilizar uma versão superior ao que está sendo usado.
  12. Guilherme postou uma resposta no tópico em Playground (Off-topic)
    prefiro o meu
  13. Guilherme postou uma resposta no tópico em Suporte Tibia OTServer
    sim... a não ser que alguém tenha pego a source e modificado e propositalmente tirado o arquivo pra compilar no linux
  14. Parabéns cara. Você tem a source pra compartilhar? Você sabe se foi feito alguma edição na source?
  15. Guilherme postou uma resposta no tópico em Ouvidoria
    Infelizmente eu recebo bilhares de mensagens por dia de nego pedindo ajuda, e não da pra atender a todos no mesmo instante. Como o pessoal falou, todo mundo tem uma vida fora do fórum e estou incluso nisso ai.
  16. o Renato já ta fazendo um
  17. usando o otinfo nao trabalhei nos detalhes, flw
  18. Guilherme postou uma resposta no tópico em Playground (Off-topic)
    Bem vindo cara.
  19. dependendo de alguns modens, é impossível visualizar seu site utilizando um ip externo (no-ip). e não é possível configurar o "endereço" do xampp, já que ele é um webserver que pega automaticamente o seu ip, restando apenas abrir a porta 80.
  20. Também acho que o preço dos vps na serversoft tem um valor bem elevado. Seria interessante a redução destes valores para atrair mais clientes.
  21. Guilherme postou uma resposta no tópico em Playground (Off-topic)
    as vezes eu esqueço que vc é gay,
  22. Guilherme postou uma resposta no tópico em Playground (Off-topic)
    vou deletar quem postar merda, só aviso. aberto a sugestões sobre o gênero https://www.youtube.com/watch?v=nx_HSxYYEW4
  23. Guilherme postou uma resposta no tópico em Códigos C++
    Por: BananaFight > DragonElement Adaptação pra source 8.54+ LEMBRE-SE, ISSO É NA SOURCE DO SERVIDOR Vamos ao código. protocolgame.h Embaixo de void AddShopItem(NetworkMessage_ptr msg, const ShopInfo item); Adicione void parseExtendedOpcode(NetworkMessage& msg); void sendExtendedOpcode(uint8_t opcode, const std::string& buffer); protocolgame.cpp Embaixo de uint32_t key[4] = {msg.GetU32(), msg.GetU32(), msg.GetU32(), msg.GetU32()}; enableXTEAEncryption(); setXTEAKey(key); Adicione // notifies to otclient that this server can receive extended game protocol opcodes if(operatingSystem >= CLIENTOS_OTCLIENT_LINUX) sendExtendedOpcode(0x00, std::string()); Embaixo de void ProtocolGame::AddShopItem(NetworkMessage_ptr msg, const ShopInfo item) { const ItemType& it = Item::items[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 ProtocolGame::parseExtendedOpcode(NetworkMessage& msg) { uint8_t opcode = msg.GetByte(); std::string buffer = msg.GetString(); // process additional opcodes via lua script event addGameTask(&Game::parsePlayerExtendedOpcode, player->getID(), opcode, buffer); } void ProtocolGame::sendExtendedOpcode(uint8_t opcode, const std::string& buffer) { // extended opcodes can only be send to players using otclient, cipsoft's tibia can't understand them NetworkMessage_ptr msg = getOutputBuffer(); if(msg) { TRACK_MESSAGE(msg); msg->AddByte(0x32); msg->AddByte(opcode); msg->AddString(buffer); } } Embaixo de case 0x1E: // keep alive / ping response parseReceivePing(msg); break; Adicione case 0x32: // otclient extended opcode parseExtendedOpcode(msg); break; enums.h Embaixo de enum GuildLevel_t { GUILDLEVEL_NONE = 0, GUILDLEVEL_MEMBER, GUILDLEVEL_VICE, GUILDLEVEL_LEADER }; Substitua o OperatingSystem por este enum OperatingSystem_t { CLIENTOS_LINUX = 0x01, CLIENTOS_WINDOWS = 0x02, CLIENTOS_OTCLIENT_LINUX = 0x0A, CLIENTOS_OTCLIENT_WINDOWS = 0x0B, CLIENTOS_OTCLIENT_MAC = 0x0C, };/ player.h Embaixo de void sendCreatureShield(const Creature* creature) Adicione void sendExtendedOpcode(uint8_t opcode, const std::string& buffer) {if(client) client->sendExtendedOpcode(opcode, buffer);} luascript.cpp Embaixo de void LuaScriptInterface::registerFunctions() { Adicione //doSendPlayerExtendedOpcode(cid, opcode, buffer) lua_register(m_luaState, "doSendPlayerExtendedOpcode", LuaScriptInterface::luaDoSendPlayerExtendedOpcode); Embaixo de SHIFT_OPERATOR(int32_t, LeftShift, <<) SHIFT_OPERATOR(int32_t, RightShift, >>) SHIFT_OPERATOR(uint32_t, ULeftShift, <<) SHIFT_OPERATOR(uint32_t, URightShift, >>) #undef SHIFT_OPERATOR Adicione int32_t LuaScriptInterface::luaDoSendPlayerExtendedOpcode(lua_State* L) { //doSendPlayerExtendedOpcode(cid, opcode, buffer) std::string buffer = popString(L); int opcode = popNumber(L); ScriptEnviroment* env = getEnv(); if(Player* player = env->getPlayerByUID(popNumber(L))) { player->sendExtendedOpcode(opcode, buffer); lua_pushboolean(L, true); } lua_pushboolean(L, false); return 1; } luascript.h Embaixo de virtual void registerFunctions(); Adicione static int32_t luaDoSendPlayerExtendedOpcode(lua_State* L); creatureevent.h . Substitua CREATURE_EVENT_PREPAREDEATH Por isso CREATURE_EVENT_PREPAREDEATH, CREATURE_EVENT_EXTENDED_OPCODE // otclient additional network opcodes Embaixo de uint32_t executePrepareDeath(Creature* creature, DeathList deathList); Adicione uint32_t executeExtendedOpcode(Creature* creature, uint8_t opcode, const std::string& buffer); creatureevent.cpp Embaixo de else if(tmpStr == "death") m_type = CREATURE_EVENT_DEATH; Adicione else if(tmpStr == "extendedopcode") m_type = CREATURE_EVENT_EXTENDED_OPCODE; Embaixo de case CREATURE_EVENT_DEATH: return "onDeath"; Adicione case CREATURE_EVENT_EXTENDED_OPCODE: return "onExtendedOpcode"; Embaixo de case CREATURE_EVENT_DEATH: return "cid, corpse, deathList"; Adicione case CREATURE_EVENT_EXTENDED_OPCODE: return "cid, opcode, buffer"; Embaixo de std::cout << "[Error - CreatureEvent::executeFollow] Call stack overflow." << std::endl; return 0; } } Adicione uint32_t CreatureEvent::executeExtendedOpcode(Creature* creature, uint8_t opcode, const std::string& buffer) { //onExtendedOpcode(cid, opcode, buffer) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(creature->getPosition()); std::stringstream scriptstream; scriptstream << "local cid = " << env->addThing(creature) << std::endl; scriptstream << "local opcode = " << (int)opcode << std::endl; scriptstream << "local buffer = " << buffer.c_str() << 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->setEvent(desc); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(creature->getPosition()); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(creature)); lua_pushnumber(L, opcode); lua_pushlstring(L, buffer.c_str(), buffer.length()); bool result = m_interface->callFunction(3); m_interface->releaseEnv(); return result; } } else { std::cout << "[Error - CreatureEvent::executeRemoved] Call stack overflow." << std::endl; return 0; } } game.h Embaixo de int32_t getLightHour() {return lightHour;} void startDecay(Item* item); Adicione void parsePlayerExtendedOpcode(uint32_t playerId, uint8_t opcode, const std::string& buffer); game.cpp Embaixo de player->sendTextMessage(MSG_INFO_DESCR, buffer); } Adicione void Game::parsePlayerExtendedOpcode(uint32_t playerId, uint8_t opcode, const std::string& buffer) { Player* player = getPlayerByID(playerId); if(!player || player->isRemoved()) return; CreatureEventList extendedOpcodeEvents = player->getCreatureEvents(CREATURE_EVENT_EXTENDED_OPCODE); for(CreatureEventList::iterator it = extendedOpcodeEvents.begin(); it != extendedOpcodeEvents.end(); ++it) (*it)->executeExtendedOpcode(player, opcode, buffer); } /creaturescripts/creaturescrips.xml <event type="extendedopcode" name="ExtendedOpcode" event="script" value="extendedopcode.lua"/> /creaturescripts/extendedopcode.lua OPCODE_LANGUAGE = 1 function onExtendedOpcode(cid, opcode, buffer) if opcode == OPCODE_LANGUAGE then -- otclient language if buffer == 'en' or buffer == 'pt' then -- example, setting player language, because otclient is multi-language... --doCreatureSetStorage(cid, CREATURE_STORAGE_LANGUAGE, buffer) end else -- other opcodes can be ignored, and the server will just work fine... end end Créditos : MaXwEllDeN 100% por adaptar o código
  24. Por: BananaFight > DragonElement Bom, como acho que todos ja viram o map do servidor de poketibia (Pxg) ele mostra icones, nomes etc no minimap, e hoje vim trazer isso para vocês Nome: Map Icon Descrição: Adiciona um icone no minimap Autor: Eduardo Vicente (Banana Fight) Versão 1.0 Features: Criar Icones no minimap Instalação dentro de modules/game_minimap/minimap.lua embaixo de : function toggle() if minimapButton:isOn() then minimapWindow:close() minimapButton:setOn(false) else minimapWindow:open() minimapButton:setOn(true) end end Você adiciona a função : function setMonsterCave(posx, posy, posz, icon, description) local pos = {} pos.x = posx pos.y = posy pos.z = posz minimapWidget:addFlag(pos, icon, description) end function removeMonsterCave(posx, posy, posz, icon, description) local pos = {} pos.x = posx pos.y = posy pos.z = posz minimapWidget:removeFlag(pos, icon, description) end Como usar setMonsterCave(Posição X do map, Posição Y do map,Posição Z do map, "Nome da Imagem", "Descrição que vai aparecer") Obs: como eu usei uma função que já existe você vai te que seguir um padrão na hora de adicionar o nome da sua imagem. Exemplo: O nome da minha imagem é "dragonicon.png", para que eu possa usar ela no script eu tenho que adicionar essa imagem dentro da pasta "data/images/game/minimap/", e vou ter que renomear essa imagem para "flagdragonicon.png", Ai depois de ter feito isso dentro do meu script quando eu for fazer o script adicionar essa imagem eu vou fazer da seguinte maneira : setMonsterCave(32238, 32240, 7, "dragonicon", "Dragon Cave") Se você ainda não entendeu é da seguinte forma, você tem uma imagem com nome "test.png", você vai adiciona a imagem no lugar certo, com o nome "flagtest.png", ai dentro do script você só usa "test", pois o script já sabe que vai ter que juntar flag+nome da imagem que você adicionou+.png. Obs 2: Sua imagem tem que ter o fundo transparente Obs 3: quando mais transparente for a imagem, mais do map aparece e causa o efeito igual ao do PXG, do map se abrindo. Exemplo de uso : arquivo : minimap.lua function init() minimapButton = modules.client_topmenu.addRightGameToggleButton('minimapButton', tr('Minimap') .. ' (Ctrl+M)', '/images/topbuttons/minimap', toggle) minimapButton:setOn(true) minimapWindow = g_ui.loadUI('minimap', modules.game_interface.getRightPanel()) minimapWindow:setContentMinimumHeight(64) minimapWidget = minimapWindow:recursiveGetChildById('minimap') local gameRootPanel = modules.game_interface.getRootPanel() g_keyboard.bindKeyPress('Alt+Left', function() minimapWidget:move(1,0) end, gameRootPanel) g_keyboard.bindKeyPress('Alt+Right', function() minimapWidget:move(-1,0) end, gameRootPanel) g_keyboard.bindKeyPress('Alt+Up', function() minimapWidget:move(0,1) end, gameRootPanel) g_keyboard.bindKeyPress('Alt+Down', function() minimapWidget:move(0,-1) end, gameRootPanel) g_keyboard.bindKeyDown('Ctrl+M', toggle) g_keyboard.bindKeyDown('Ctrl+Shift+M', toggleFullMap) minimapWindow:setup() connect(g_game, { onGameStart = online, onGameEnd = offline, }) connect(LocalPlayer, { onPositionChange = updateCameraPosition }) if g_game.isOnline() then online() setMonsterCave(32239, 32240, 7, "dragon", "hihi") removeMonsterCave(32239, 32240, 7, "dragon", "hihi") end end
  25. Guilherme postou uma resposta no tópico em Códigos C++
    Por: BananaFight > DragonElement Depois de ver muitos pedidos, Resolvi doar em nome da equipe DigiWo o código que muda a cor do nome dos monstros. Este é uma versão 1.0 que não serve mais para o DigiWo por ja termos um sistema mais avançado. Instalação Creature.cpp procure por if(healthPercent > 92) Embaixo você muda para if (m_name == "Banana Fight"){ m_informationColor = Color(0xB2, 0x22, 0x22); }else{ m_informationColor = Color(0x00, 0xBC, 0x00); } Acho que deu de entender o que tem que fazer, Adicionando Nomes Isto representa o nome do monstro/player que terá a cor do nome alterada. (Sim, vai ter que cadastrar nome por nome nesse sistema.) if (m_name == "Banana Fight") Para adicionar mais nomes é só seguindo a logica if (m_name == "Banana Fight"){ m_informationColor = Color(0xB2, 0x22, 0x22); }else if (m_name == "Demon"){ m_informationColor = Color(0xFF, 0xFF, 0xFF); }else{ m_informationColor = Color(0x00, 0xBC, 0x00); } E para colorir o resto das porcentagens a mesma coisa else if(healthPercent > 60) if (m_name == "Banana Fight"){ m_informationColor = Color(0xB2, 0x22, 0x22); }else{ m_informationColor = Color(0x50, 0xA1, 0x50); } Só recomendo que não mecha no ultimo, pois se não souber mexer pode dar erro. else m_informationColor = Color(0x85, 0x0C, 0x0C); Adicionando Cores Isto representa a porcentagem de hp que o player ou monstro vai estar m_informationColor = Color(0x00, 0xBC, 0x00); Para mudar a cor você edita aqui : Color(0x00, 0xBC, 0x00) As corer funcionam da seguinte maneira (RGB) 00 BC 00 < Está é uma cor RGB Hexadecimal Aqui um link com uma tabela: http://shibolete.tripod.com/RGB.html Você tem que pegar a cor hexadecimal e dividir em 3 partes #FFFF00 > FF FF 00 Ai é só você preencher, Color(0xFF, 0xFF, 0x00) com cada letra/numero. Exemplo Final void Creature::setHealthPercent(uint8 healthPercent)[/center] { if(healthPercent > 92) if (m_name == "Banana Fight"){ m_informationColor = Color(0xB2, 0x22, 0x22); }else{ m_informationColor = Color(0x00, 0xBC, 0x00); } else if(healthPercent > 60) if (m_name == "Banana Fight"){ m_informationColor = Color(0xB2, 0x22, 0x22); }else{ m_informationColor = Color(0x50, 0xA1, 0x50); } else if(healthPercent > 30) if (m_name == "Banana Fight"){ m_informationColor = Color(0xB2, 0x22, 0x22); }else{ m_informationColor = Color(0xA1, 0xA1, 0x00); } else if(healthPercent > 8) if (m_name == "Banana Fight"){ m_informationColor = Color(0xB2, 0x22, 0x22); }else{ m_informationColor = Color(0xBF, 0x0A, 0x0A); } else if(healthPercent > 3) if (m_name == "Banana Fight"){ m_informationColor = Color(0xB2, 0x22, 0x22); }else{ m_informationColor = Color(0x91, 0x0F, 0x0F); } else m_informationColor = Color(0x85, 0x0C, 0x0C); m_healthPercent = healthPercent; callLuaField("onHealthPercentChange", healthPercent); if(healthPercent <= 0) onDeath(); }

Informação Importante

Confirmação de Termo