

Baxnie
Campones-
Total de itens
17 -
Registro em
-
Última visita
Tudo que Baxnie postou
-
Deve ter algum erro no protocolo 9.1. Nem todos foram bem testados. Da uma olhada no opcode 122 e vê como ele é no 9.1.
-
[Arquivado]Erro ao compilar no Fedora
tópico respondeu ao DominusIgnis de Baxnie em Noticias - Arquivo
E está em /usr/lib/boost* com as 3 libs requeridas? -
Pode sim, mas não aconselho, visto que terá problemas com o otitemeditor.
-
void Game::useWith(const ItemPtr& item, const ThingPtr& toThing) { if(!canPerformGameAction() || !item || !toThing) return; Position pos = item->getPosition(); if(!pos.isValid()) // virtual item pos = Position(0xFFFF, 0, 0); // means that is a item in inventory if(toThing->isCreature()) m_protocolGame->sendUseOnCreature(pos, item->getId(), item->getStackPos(), toThing->getId()); else m_protocolGame->sendUseItemWith(pos, item->getId(), item->getStackPos(), toThing->getPosition(), toThing->getId(), toThing->getStackPos()); } Caso seja criatura, ele envia outro pacote, ou seja, players com lag ainda conseguiriam acertar caso cliquem em uma criatura. Para atingir o que você quer, uma opção é tirar o sendUseOnCreature.
-
Em modules/gamelib/protocolgame.lua existe essa função: function ProtocolGame.registerExtendedOpcode(opcode, callback) Um exemplo de como utiliza-la: local function test(protocol, opcode, buffer) print('received something from server!') end ProtocolGame.registerExtendedOpcode(100, test)
-
Como exemplo de uso, o modulo client_locales utiliza para enviar o locale escolhido para o servidor.
-
Acho que o efeito desejado é esse: -- Library function function inherit(self, ...) local objects = {...} for i=1,#objects do for key,value in pairs(objects[i]) do if not self[key] then self[key] = value end end end end -- Creature.lua file Creature = { name = 'Unknown', level = 0, } function Creature:setName(name) self.name = name end function Creature:getName() return self.name end -- Npc.lua file Npc = {} function Npc.create() local obj = {} setmetatable(obj, { __index = Npc }) return obj end function Npc:getName() return 'Npc: ' .. self.name end inherit(Npc, Creature) -- Monster.lua file Monster = {} function Monster.create() local obj = {} setmetatable(obj, { __index = Monster }) return obj end function Monster:getName() return 'Monster: ' .. self.name end inherit(Monster, Creature) -- Test.lua file -- Creature is an abstract class, we can't create it alone. --local creature = Creature.create() --print(creature:getName()) local npc = Npc.create() npc:setName('Dalvo') print(npc:getName()) local monster = Monster.create() monster:setName('Pato Donald') print(monster:getName())
-
Se a velocidade da criatura é 0, então teleportar de fato é o comportamento certo. Então pegue o tfs 0.2 e deixe-o compatível com seus scripts. Após isto você começa a fazer as edições necessárias para deixar os scripts funcionando novamente e ai sim implemente o order como falei.
-
Quanto a liberação de modulos, tenho certeza de que não é necessário mais que 1 semana (sendo muito exagerado) para criar uma cópia dele. O importante é o que está no seu servidor. Não adianta nada ter o modulo do cliente se ele não é compativel com seu servidor. Em relação ao "bug" do order. int32_t LuaInterface::luaDoMoveCreatureToPosition(lua_State* L) { //doMoveCreatureToPosition(cid, position[, minDist = 0, maxDist = minDist]) int maxDist = 0, minDist = 0; if(lua_gettop(L) > 3) maxDist = popNumber(L); if(lua_gettop(L) > 2) { minDist = popNumber(L); if(lua_gettop(L) < 3) maxDist = minDist; } PositionEx position; popPosition(L, position); ScriptEnviroment* env = getEnv(); if(Creature* creature = env->getCreatureByUID(popNumber(L))) { std::list<Direction> listDir; if(g_game.getPathToEx(creature, position, listDir, minDist, maxDist, true, true, 10)) { Dispatcher::getInstance().addTask(createTask(boost::bind(&Creature::startAutoWalk, creature, listDir))); lua_pushboolean(L, true); } else lua_pushboolean(L, false); } else { errorEx(L, getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } Declare esta função no luascript.cpp. E utilize-a no script de order. Eu cheguei a olhar o código do order postado no issues do otclient. Que vergonha.
-
Mas what??? Essa é a chave PÚBLICA! Pra que você iria escondê-la? A chave PRIVADA você coloca dentro do seu servidor.
-
Claro. local rsa = '123' -- Chave publica RSA g_game.setRsa(rsa) Coloca isso em um module seu, que é carregado depois de todos.
-
Bem legal o tutorial. MainWindow e Button? Cuidado com as letras maiúsculas e minúsculas. Acho que uma imagem para ajudar na explicação dos anchors seria uma boa ideia. O pessoal costuma ter dificuldade em entendê-los. Nesse item; Passo 3 conhecendo as janelas; Ficaria bem legal colocar algumas imagens, mostrando o que é um MiniWindow, um Button, um Label, etc.
-
Olá, eu fiz esta biblioteca para melhor gerenciar os eventos. A função mais útil e nova é a createCycleEvent. local EVENT_TYPE = { SINGLE = 1, CYCLE = 2, } -- private functions local function parseSingleEvent(event) event.f(unpack(event.args)) event.id = nil end local function parseCycleEvent(event) event.f(unpack(event.args)) event.id = addEvent(parseCycleEvent, event.time, event) end -- member functions Event = {} function Event:start() if not self.id then if self.type == EVENT_TYPE.SINGLE then self.id = addEvent(parseSingleEvent, self.time, self) self.finishTime = os.mtime() + self.time elseif self.type == EVENT_TYPE.CYCLE then parseCycleEvent(self) self.finishTime = -1 end end end function Event:restart(time) if self.id then self:stop() end self.time = time or self.time self:start() end function Event:stop() if self.id then stopEvent(self.id) self.id = nil end end function Event:trigger() if self.type == EVENT_TYPE.SINGLE then if self.id then self:stop() self.f(unpack(self.args)) end elseif self.type == EVENT_TYPE.CYCLE then print(debug.traceback('Can\'t trigger a cycle event.')) end end function Event:isFinished() return not self.id end -- public functions function createSingleEvent(f, time, ...) local event = {} event.f = f event.args = {...} event.time = time event.type = EVENT_TYPE.SINGLE setmetatable(event, { __index = Event }) event:start() return event end function createCycleEvent(f, time, ...) local event = {} event.f = f event.args = {...} event.time = time event.type = EVENT_TYPE.CYCLE setmetatable(event, { __index = Event }) event:start() return event end Como um simples exemplo, createCycleEvent pode ser usada para enviar um efeito em certa posição do mapa a cada 500 ms. g_testEvent = createCycleEvent(doSendMagicEffect, 500, {x=100,y=100,z=7}, CONST_ME_FIREAREA) -- pode ser parado quando usa um item function onUse() g_testEvent:stop() end -- pode alterar a velocidade ao usar outro item function onUse() g_testEvent:restart(100) end
-
Qual é a coisa mais importante em um código? E por que é a elegância?
um tópico no fórum respondeu Baxnie em Lixeira Pública
Agora sim gostei. Isso me lembrou algo que vi no ano passado. http://forums.######...l-em-scripting! Acho que agora você concorda que todos são nível novato. Até postei minha versão lá quando vi o tópico. Quanto a este tutorial, Use vírgula no último elemento de uma tabela vertical. Essa parte eu já estava pensando há algum tempo em usar. E com certeza irei, porque ja tive alguns problemas por esquecer de adicionar a vírgula no final. De resto está muito bom, uso praticamente tudo que está dito ai. Ah, eu uso o Sublime Text 2 http://www.sublimetext.com/ É muito bom, tem várias funções úteis. -
Otclient - Novo E Revolucionário Client De Tibia
tópico respondeu ao eduardo190696 de Baxnie em Linguagens de Programação
https://github.com/edubart/otclient/graphs/contributors -
Saudações pessoal. Venho lhes apresentar meu projeto que venho desenvolvendo há um tempo: Myth Begins O que é? É um MMORPG 2D criado do zero baseado na existência de duas civilizações mitológicas do mundo antigo, os nórdicos e os gregos. O que já foi feito? * Interface Gráfica (GUI) * Suporte para OpenGL * Particle System * Login Server O que este jogo terá? Primeiramente gostaria de ressaltar que este jogo não será uma cópia do Tibia, no máximo levará em conta os princípios gráficos do jogo (a perspectiva dos sprites) e outras pequenas coisas que são indispensáveis para a existência de um jogo 2D. As features que pretendemos são as seguintes: * Interface geral com suporte a semi-transparência * Áudio avançado (Sons para cada ação) * Chat transparente * Interface para spells com quadrinhos para uso rápido * Interface para o char (Itens, achievements, etc) * Interface para Auctions * Painel de vida com avatar na interface * Sistema de criação de personagem in-game similar ao de mmorpgs 3d. * Montaria/Vôo * Profissões * Conquista de territórios * 12 Classes (6 para cada civilização) * Níveis de spells * Consignment shops * Auras para Passive Spells * Sistema de NPCs avançado (Batalhas com NPCs) * Sistema de mapa e minimapa exibindo posição de amigos e membros de um grupo * Efeito das magias criadas com um particle system (Usado em muitos jogos famosos) * Gravação de vídeos interno Prévia Particle System Esta é a versão mais básica de um spell usando particle system. Desconsiderem a sprite do Tibia, ainda não temos sprites. Quer participar do projeto? Estamos precisando de spriters, desenhistas, designers e programadores de nível intermediário em C++, se você é um deles e se interessou pelo projeto, envie um email para admin@mythbegins.com, salientando o seu interesse e mostrando trabalhos já realizados. Obs: O programador seria para agilizar o desenvolvimento. Já possuimos todos os recursos humanos para desenvolver todas as features, a questão é o tempo. Dicas, sugestões e idéias? Poste no tópico que teremos o prazer em ouvir.
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.