Tudo que Mono Singed postou
-
Sobre o Comércio
Concordo plenamente com o Daniel, apesar de ter votado sim. O opentibia não tem mais os foguetes da comunidade aberta pra se sustentar sem um pouco de capitalismo, infelizmente. Mas, não adianta a comunidade ter uma atividade econômica, se a própria está desestruturada. Venhamos e convenhamos, para quaisquer novatos esse fórum é uma bagunça. Não por "não fazer sentido", e sim por termos muitos conteúdos legados e quase nenhuma documentação própria do fórum (90% das que tem são traduzidas da otland, ou são relíquias de tão perdidas por aí, ou não funcionam mais nos servidores atuais). Eu até concordo que essas coisas possam em parte ser por causa da realidade dos novos membros, mas vou dar um exemplo: Tava com preguiça de criar uma conta na otland pra acessar um tópico com todos os eventos e metamétodos do tfs 1.3, e fui caçar algo aqui. Não achei nada que sequer diferenciasse as versões 0.4 < pra 1.0 > para os iniciantes — fiquei intrigado e resolvi caçar até achar, pra ver se tinha, e o fiz, mas nada muito explicativo e tal. Alguém que tá tendo o primeiro contato com esse universo pelo tibiaking e soubesse Inglês teria que se aventurar nos github da vida e na otland pra tentar aprender algo sobre, e se tivesse saco voltaria para cá; Fora os que perdem a vontade/não sabem Inglês e desistem por conta disso—. E, Enquanto procurava, achei um tutorial que ensinava a retirar o peso de todos itens do servidor, exceto das backpacks, para vender backpacks com mais slots na loja de cash do jogo, ou coisa do tipo. Percebe? A facilidade que eu tive pra encontrar um conteúdo de extorsão X a dificuldade para encontrar uma documentação básica na comunidade? O fórum tem responsabilidade pelo conteúdo dos membros? Não nesse caso, mas creio que os comportamentos que foram/vem sendo tomados incentivam pra essa falta de saúde na comunidade brasileira.
-
(Resolvido)[AJUSTE] Bike usável apenas se estiver dentro da backpack
Manda o script da bike aí, mas se não quiser, é só por a seguinte verificação: if fromPosition.x == CONTAINER_POSITION then --código aqui else doPlayerSendCancel(cid, "você só pode usar a bicicleta se ela estiver dentro da bp") end Só que isso não impede do player dropar a backpack no chão, ou fazer trade com ela O ideal seria fazer ela um "unmoveable item" (nao sei se eh assim que se escreve jdoasdwq) e deixar num slot fixo, que eh oq 90% dos poketibia fazem. Outra possibilidade seria ele não poder dar trade montado e quando dropasse ele saísse da bike, mas não dá pra fazer isso se teu tfs nao for 1.x, então fica na primeira opção.
-
[Action] ativar efeito com alavanca
Ah, sim. Para isso, abra a pasta data, depois a lib, e no arquivo de nome parecido "000-constants", adicione no começo: DOUBLEXP_STORAGE = 30050 (já fica a dica, sempre que tu quiser criar uma variável ou função que seja acessível em todos scripts, bote num arquivo dentro dessa lib) Crie a action: alavancas = {1945, 1946} function onUse(player, item, fromPosition, target, toPosition) if getStorage(DOUBLEXP_STORAGE) < 1 then setStorage(DOUBLEXP_STORAGE, 1) else setStorage(DOUBLEXP_STORAGE, -1) end doTransformItem(item, (item.itemid == alavancas[1] and alavancas[2] or alavancas[1])) return true end E substitua teu globalevent: function onThink(interval, lastExecution) if getStorage(DOUBLEXP_STORAGE) == 1 then for _, name in ipairs(getOnlinePlayers()) do local cid = getPlayerByName(name) if getPlayerGroupId(cid) < 4 then doSendAnimatedText(getPlayerPosition(cid), "2x EXP", 251) doSendMagicEffect(getPlayerPosition(cid), 27) doSendMagicEffect(getPlayerPosition(cid), 30) local spot = getThingPosition(cid) doSendDistanceShoot({x = spot.x + 1, y = spot.y + 1, z = spot.z}, spot, 34) doSendDistanceShoot({x = spot.x - 1, y = spot.y - 1, z = spot.z}, spot, 34) doSendDistanceShoot({x = spot.x + 1, y = spot.y - 1, z = spot.z}, spot, 34) doSendDistanceShoot({x = spot.x - 1, y = spot.y + 1, z = spot.z}, spot, 34) doSendDistanceShoot({x = spot.x + 1, y = spot.y + 0, z = spot.z}, spot, 34) doSendDistanceShoot({x = spot.x + 0, y = spot.y + 1, z = spot.z}, spot, 34) doSendDistanceShoot({x = spot.x - 1, y = spot.y + 0, z = spot.z}, spot, 34) doSendDistanceShoot({x = spot.x + 0, y = spot.y - 1, z = spot.z}, spot, 34) end end end return true end
-
(Resolvido)[AJUSTE] Color looktype
Não está correta, se igualar à zero vai deixar a outfit branca no esquema rgb
-
(Resolvido)[AJUSTE] Color looktype
Só mudar o if do teu script pra esse: player_outfit = getCreatureOutfit(cid) if getPlayerSex(cid) == 1 then doSetCreatureOutfit(cid, {lookType = 2293, lookHead = player_outfit.lookHead, lookAddons = 0, lookLegs = player_outfit.lookLegs, lookBody = player_outfit.lookBody, lookFeet = player_outfit.lookFeet}, -1) ---Female else doSetCreatureOutfit(cid, {lookType = 2292, lookHead = player_outfit.lookHead, lookAddons = 0, lookLegs = player_outfit.lookLegs, lookBody = player_outfit.lookBody, lookFeet = player_outfit.lookFeet}, -1) --- Male end
-
[Pedido]Base poketibia com apenas o basico
Não vai achar Tu pode até achar só com o básico, mas sem bugs é impossível, o máximo que tu vai encontrar eh um com source, como Pokémon Dash V8
-
[Action] ativar efeito com alavanca
A intenção é justamente o globalevent só ser executado quando os players tiverem a storage (na verdade o autor do post deixou ambíguo, mas se ele quiser o efeito a cada 7s, só do jeito que eu fiz, mesmo), o script da alavanca vai ficar algo do tipo: --O problema aqui é que vai precisar de outro script para retirar a storage, por isso acho melhor fazer ele por talkaction do que por action function onUse(player, item, fromPosition, target, toPosition) local strg = 50030 for _, name in ipairs(getOnlinePlayers()) do local cid = getPlayerByName(name) if getPlayerGroupId(cid) < 4 and getCreatureStorage(cid, strg) < 1 then doCreatureSetStorage(cid, strg, 1) end end return true end e o do globalevent: function onThink(interval, lastExecution) local strg = 50030 for _, name in ipairs(getOnlinePlayers()) do local cid = getPlayerByName(name) if getPlayerGroupId(cid) < 4 and getCreatureStorage(cid, strg) == 1 then doSendAnimatedText(getPlayerPosition(cid), "2x EXP", 251) doSendMagicEffect(getPlayerPosition(cid), 27) doSendMagicEffect(getPlayerPosition(cid), 30) local spot = getThingPosition(cid) doSendDistanceShoot({x = spot.x + 1, y = spot.y + 1, z = spot.z}, spot, 34) doSendDistanceShoot({x = spot.x - 1, y = spot.y - 1, z = spot.z}, spot, 34) doSendDistanceShoot({x = spot.x + 1, y = spot.y - 1, z = spot.z}, spot, 34) doSendDistanceShoot({x = spot.x - 1, y = spot.y + 1, z = spot.z}, spot, 34) doSendDistanceShoot({x = spot.x + 1, y = spot.y + 0, z = spot.z}, spot, 34) doSendDistanceShoot({x = spot.x + 0, y = spot.y + 1, z = spot.z}, spot, 34) doSendDistanceShoot({x = spot.x - 1, y = spot.y + 0, z = spot.z}, spot, 34) doSendDistanceShoot({x = spot.x + 0, y = spot.y - 1, z = spot.z}, spot, 34) end end return true end
-
[Action] ativar efeito com alavanca
Não vai enviar a cada 7 segundos, mais fácil a alavanca adicionar um storage em todos players do jogo, e verificar esse storage na execução do onThink.
-
Roadmap de Estudos
Salve galera do TK, eu tô nesse mundo de otserv faz um bom tempo, mas nunca me envolvi na questão de comunidade e tal, porque grande parte das coisas que eu fazia, ou eram gambiarras, ou eu tinha vergonha de postar mesmo por serem só scripts. A realidade é: eu era uma criança, o famoso otAdmin que não sabia nem o que significa algoritmo, mas sabia por decoreba fazer algumas coisas no seu servidor. Btw, no intuito de muda risso, ano que vem eu termino o ensino médio e eu realmente gosto dessa área de programação (planejo fazer ciência da computação, amo ciência de dados), e tô querendo pegar mais pesado nos estudos, pra chegar na facul já manjando dos assunto e tal. Eu meio que criei um guia de estudos meu (já comecei a segui-lo): ROADMAP Aprender C++ >É por onde tô começando, utilizando o site learncpp.com como referência e me encontro no chapter 8 Aprender sobre protocolos TCP/IP e técnicas cliente~servidor >Tenho alguns conhecimentos sobre vindos da programação web, mas é bem pouco Aprender Java pra web e pra desktop> Também tenho alguns conhecimentos das nuances da linguagem, mas não cheguei a estudar as libs e tal Depois disso virar um programador full stack FDJOSODSAOJIDWQ> Sonho pouco pretensioso, huh esse é um roadmap de anos de estudo, é muita coisa, mas uma hora eu tenho que começar, não? Por que eu criei esse tópico na área de suporte? Então: eu queria mesclar esse meu aprendizado na área que eu quero seguir com otserv, porque eu amo TIbia e tal e, para isso, eu queria o conselho de vocês: onde estudar depois de aprender o C++? Começar a fuçar no fonte do TFS depois de aprender, ou enquanto aprendo (pra complementar os exercícios do site e tal)? Sobre a parte dos sockets, também não faço ideia de onde aprender a mexer com eles (os tutoriais normalmente são expressos, não explicam os parâmetros das funções, o retorno delas etc). djsaodjwqo, enfimmm Queria a ajuda de vocês pra me guiar (alguém que eu pudesse mostrar meus avanços e me ensinar sobre as peculiaridades do TFS, como a organização do código fonte, a utilidade de cada classe etc seria interessante). Obrigado a quem disponibilizar ajuda
-
Npc que pede 6 itens e abre uma pedra
Boa noite. Qual seu servidor? TFS 1.x ou 0.4?