-
Total de itens
750 -
Registro em
-
Última visita
-
Dias Ganhos
8
Tudo que dalvorsn postou
-
tu por acaso trocou pokemon_uid para o uid do pokemon? caso tenha dificuldade de encontrar, poste o script da pokedex
-
Eu não tenho como adivinhar quais mods voce pegou. Me aponte os links para podermos analisar @001rafa Em momento algum ele disse que o servidor crasha, ele só mencionou o travamento do cliente. Isso em hipotese alguma poderia acontecer por ele ter dito que é apos determinada spell. se o player esta usando spell é que ele passou pelo login, e etc, se tivesse erro na database parava ai.
-
O otui apesar da similaridade com o css, ele trabalha com um metodo diferente de posicionamento, ele usa de anchoramentos. Para voce posicionar um elemento no painel, voce precisa de pelo menos duas orientações anchors.top/anchors.bottom e anchors.left/anchors.right E para acertos mais precisos, tu usa o margin, se tu definiu orientação anchors.top tu deve usar margin-top e assim em diante O otui(otml em geral) usa o conceito de parent através da identação(espaçamento), a cada dois espaços(space) é considerado um novo nivel de parentesco ou quando não for uma classe ele vai ter um attribute do parent. Eu sei que parece muita coisa, mas não é tão complexo, é so tu ler o que eu escrevi e ler alguns codes do proprio otc que vai entender. Além disso, ainda falando de posicionamento, existe a referencia simbolica no ancoramente, que são basicamente parent, prev, next. Diferente do css, a posição em que eles estao escritos é muito importante, prev é o elemento anterior que estiver no mesmo nivel hierarquico, next é o posterior, e parent é o que está acima. E pode-se ainda referenciar pelo id do elemento. Alguns exemplos praticos: MiniWindow // primeiro nivel hierarquico id: newWindow MiniWindowContents //segundo nivel UIWidget // terceiro nivel id: otoWidget size: 11 11 !text: 'Algo' background-color: #505050 anchors.top: parent.top // ancora o topo do widget atual no top do parent (MiniWindow) anchors.right: parent.right margin-right: 36 margin-top: 7 Button // terceiro nivel, irmao de otoWidget !text: 'Botao' width: 80 anchors.left: otoWidget.right anchors.bottom: prev.bottom margin-bottom: 10 margin-left: 10 E lembre, sempre com o espaçamento de dois spaces As classes que me refiro são por exemplo 'Button', UIWidget e etc, que alem disso ainda tem um parentesco de classes igual o c++, tu pode ver melhor eles em styles la na pasta data, a maioria deles estão declarados la. Tu pode ainda criar classes Attribuindo com o seguinte sinal '<', porém isso deve ser feito previamente, antes do Widget pai(MiniWindow) no caso. Eu acho que exagerei nas informações, talvez tenha sido muito pra pouco tempo, mas qualquer duvida pode perguntar.
-
faz um if com o getCreatureMaster(pokemon_uid), caso atrelado ao isPlayer. Inclusive faça os calculos dentro do if, porque eles dependem da existencia do master pra procurar a pokebola. if isPlayer(getCreatureMaster(pokemon_uid)) then table.insert(stt, "Boost level: +"..boost..".\n"..calculo.." stones left to +50.")end
-
Que tal primeiro reduzir o code usando loops e matematica? function getStoneCountByLevel(fromLevel, toLevel, increase_interval) local sum = 0 local a = math.ceil(fromLevel/increase_interval) for i = fromLevel, toLevel do sum = sum + a if (i % increase_interval) == 0 then a = a + 1 end endend E sim, voce pode fazer pegando o master da creature, porem leve em conta que nem todos os pokemons tem master, alguns sao selvagens, logo em alguns não deve ser exibido o boost.
-
tfs 0.3.4/0.3.6 [Encerrado] Weapon Type
tópico respondeu ao ludgeromf1 de dalvorsn em Tópicos Sem Resposta
É só fazer com script, ao invez do default tu faz como se fosse uma spell, tipo o burst arrow Dai tu faz como se fosse uma spell normal, sacou? muda os parametros e tira aquela area ali -
como transforma uma distro 8.60 para 7.92?
pergunta respondeu ao deivisonamorim de dalvorsn em Programação
Em tese pra estabelecer conexão tu so precisa apenas alterar essas duas linhas: #resources.h #define CLIENT_VERSION_MIN 860#define CLIENT_VERSION_MAX 860 Porém a coisa pode ser bem mais complexa, a começar pelos packets, tu teria que pegar o servidor 7.92, ir em protocolgame.cpp e checar todos os packets, verificar se condizem com os da versão 8.6, caso haja divergencias deve-se alterar para a estrutura do 7.92 o packet em divergencia. Como é um downgrade, dificilmente vai haver problema com features, mas caso haja também deve-se adaptar o code ja que o cliente não da pra adaptar(dá até dá, por meio de dll, mas é 1000x mais trabalhoso) Já ia me esquecendo, tem o protocollogin também, que pode ter diferença nos bytes kk -
Não faz o menor sentido ser a database e os players conseguirem logar, e o cliente travar provavelmente é overflow de alguma coisa, algo que ta rodando disparado. Porém sem log de erros ou algo do tipo fica complicado de ajeitar, pode ser tanta coisa ...
-
Ignora as que não for usar: local ignoredSkills = {3,6}-- [...]function onSkillChange(localPlayer, id, level, percent) if table.contains(ignoredSkills, id) then return end setSkillValue('skillId' .. id, level) setSkillPercent('skillId' .. id, percent, tr('You have %s percent to go', 100 - percent)) onBaseSkillChange(localPlayer, id, localPlayer:getSkillBaseLevel(id))endfunction onBaseSkillChange(localPlayer, id, baseLevel) if table.contains(ignoredSkills, id) then return end setSkillBase('skillId'..id, localPlayer:getSkillLevel(id), baseLevel)end
-
Creio eu que não exista um callback para isso em lua, e registrar uma creaturescript pra cada monstro é inviavel. Minha sugestão é que seja feito nas sources, diretamente na função void MonsterType::dropLoot(Container* corpse). Dai um meio facil de configurar seria criando um novo atributo dentro da tag do loot no xml do monstro identificando que esse item deve ter uma mensagem exclusiva. Ou de maneira alternativa, tu pode fazer um onKill registrado no player, que verifica o corpses a procura do item, e caso encontre manda a mensagem.
-
O servidor ta enviando mais skills que as existentes no otc. Qual distro usada? O usual é o byte 0xA1 para as skills, a função no tfs 0.37 é assim: #protocolgame.cpp void ProtocolGameAddPlayerSkills(NetworkMessage_ptr msg){ msg->put<char>(0xA1); for(uint8_t i = 0; i <= SKILL_LAST; ++i) { msg->put<char>(player->getSkill((skills_t)i, SKILL_LEVEL)); msg->put<char>(player->getSkill((skills_t)i, SKILL_PERCENT)); }} Você precisa checar o enum das skills, para ver se existem que o numero normal. O enum dessas skills fica em const.h. Vera algo similar a isso: #const.h enum skills_t{ SKILL_NONE = -1, SKILL_FIRST = 0, SKILL_FIST = SKILL_FIRST, SKILL_CLUB, SKILL_SWORD, SKILL_AXE, SKILL_DIST, SKILL_SHIELD, SKILL_FISH, SKILL__MAGLEVEL, SKILL__LEVEL, SKILL__EXPERIENCE, SKILL_LAST = SKILL_FISH, SKILL__LAST = SKILL__EXPERIENCE}; Poste esses dois trechos do seu codigo fonte para que possamos analisar o real problema.
-
tfs 0.3.4/0.3.6 [Encerrado] Weapon Type
tópico respondeu ao ludgeromf1 de dalvorsn em Tópicos Sem Resposta
Isso são distance effects, tu quer que ele seja aleatorio em torno da criatura? Tente algo assim: local position = getCreaturePosition(cid)local distance_effect = 12 -- aqui tu coloca o distance effect que tu querfor i = 1, 30 do doSendDistanceShoot(position, {x = position.x + math.random(-7, 7), y = position.y + math.random(-5, 5), z = position.z}, distance_effect)end -
Esse script ta no codestyle do tfs 1.+ Tu ta usando em versão antiga ne? tem que adaptar ele Fiz baseado no tfs 037, mas deve funcionar nos demais function onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor) if not isPlayer(cid) then return true end for _, s in pairs(getSpectators(getCreaturePosition(cid), 7, 5)) do if isMonster(s) and not getCreatureMaster(s) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Elimine o monstro primeiro.") doTeleportThing(cid, fromPosition, false) return true end end return trueend
-
WTF? não entendi bulhufas, acho que tu deu quote no poste errado
-
-
Ta com o pacote do net framework antigo não? é bem chato compilar com visual studio por conta disso, tu tem que passar as dependencias do app se não ele não roda em todos os windows. Eu tive um problema similar com o QT por conta disso, e foi basicamente passar o visual c++ da versao certa pra poder rodar tudo, no caso dele por ser C# creio que importe a versao do net framework também
-
Beleza, de noite quando voltar da facul dou uma olhada nisso, e só reajustar e reposicionar No caso do slot do portrait, deixa onde ta ou bota que nem o old e a barra de vida sem nada do lado?
-
Eles tem elementos diferentes, tem coisas no otc que não tem no old no mesmo modulo, e coisas que tem no old que nao tem no otc Tu quer deixar realmente igual? Se for vai dar um trabalhinho extra, mas se for so a disposição dos slots é mais de boa
-
Aparentemente ta seguindo o padrão do tibia mesmo, mostra por fotos como ta e como tu quer que fique
-
Troca a função toda, mas se der erro vai ter que ver o que é e adaptar
-
Eu não acostumei com essa nova interface do forum não kk, mas o conteudo que precisava tava no primeiro, que é a funçao do que tu quer, e so procurar algo semelhante a ela no seu e substituir, claro que pode haver diferenças mas acho que deve ser bem parecido. E se não achar por esse nome, o use o recurso find in files de algum editor de texto dentro da pasta das sources, faça a busca pela mensagem que o seu account manager atual manda, qualquer uma delas deve aparecer, 4 palavras ja é o suficiente, procure apenas pelo que não é variável, como "do you want to change your password"
-
player.cpp --> void Player::manageAccount(const std::string &text) Ela vai ficar parecida com isso ai, ve as duas e faz suas adaptações que fica show :>
-
Posta o arquivo de extensão *.otui primeiro, pra eu ver como está organizado a interface grafica. Dai ja te oriento de maneira mais especifica.
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.