Tudo que Garou postou
-
(Resolvido) Como posso ser Moderador?
Ajude a comunidade trazendo e/ou desenvolvendo conteúdos. Esclareça dúvidas de outros membros no Suporte OTServ. Você poderá ser convidado a entrar na equipe, ou então, você pode pedir para se tornar um Aprendiz. Mais informações: Sistema de Aprendizes
-
Hello world!
print("Wellcomido, amigo")
-
Cheguei!
Bem-vindo. Dê uma passadinha na área de Scripting para colocar várias coisas legais no seu servidor.
- [Sistema] Auto Loot
-
[ Action ] Addons Em Quests
Hm, esse script não está funcional. O código que devia ser adicionado no arquivo addons.lua está incompleto.
-
Listão de Actions, TalkActions & MoveEvents
Cuidado, há alguns scripts listados aí que estão com erros ou incompletos, como esse: Addons em Quests Parabéns pela iniciativa. Abração.
-
(Resolvido) Prefixos
Tenho mais uma sugestão básica para o fórum que pode ajudar na organização dos tópicos. Por que não adicionar um sistema de prefixos por fórum? Na criação do tópico, o usuário pode selecionar em um pequeno menu, prefixos para classificar o tipo de tópico. Assim, em várias áreas, como por exemplo Suporte, poderíamos ter prefixos do tipo: - Dúvida - Pedido E por exemplo na área de Scripting (sou até suspeito para falar), prefixos como: - Action, Talkaction, Moveevent (para o sub-fórum específico) Assim, quando um usuário quiser fazer uma busca, ele pode selecionar o que procura pelo prefixo em uma certa área. Sem contar que isso substitui a necessidade de ter que incluir entre colchetes [ ] o que é o tópico. É isso aí, galerinha, abraço.
-
[TalkAction] Character Info
Cuidado, Doughell. Essa linha já diz que o jogador pode sim saber as informações de outros jogadores. local value = getPlayerByNameWildcard(param) or cid A função getPlayerByNameWildcard() retorna o cid, caso houver, ao nome digitado no parâmetro. A variável value só vai ter valor igual ao cid que usou a talkaction quando a função anteriormente citada retornar nulo. Ou seja, quando o jogador fizer isso: !cinfo fulano Se ele é o sicrano, terá as informações de fulano Tome cuidado. Abração.
-
[PEDIDO]quest vip
Entendi, você quer um sistema que adiciona certa quantidade de pontos em uma coluna do banco de dados de seu servidor (ou mesmo uma storage) e estes pontos podem ser gastos na compra de itens editados. Não é tão difícil de fazer, creio que posso dar uma olhada para você e postar na área de Scripting assim que eu puder. Abração do Lpz.
-
Dicas para criação do seu script
DICAS Para encurtar/embelezar seus scripts. INTRODUÇÃO Fala aê, beleza, galera do TibiaKing? Estava aqui eu sem fazer nada, quando pensei em criar uma coletânea de dicas para os scripters iniciantes, avançados e etcétera. Eu já naveguei muito nessas águas e já vi muitos scripts que podiam ser "escritos" de uma maneira melhor, fazendo a mesma função e estando mais bonitos e, então, tenho algumas dicas para vocês nesse assunto. Não vou enrolar muito não, logo ali abaixo, você já começa a ler essas dicas DICA NÚMERO 1 - USO DE MATH.MAX() E MATH.MIN() Essa é uma dica bem simples e básica, sabe quando você quer comparar uma variável local com um número e se essa variável ter valor maior (ou menor) que o número, você declarar que a tal variável terá o valor do número? Vamos para um exemplo: local k = 2 if k < 3 then k = 3 end Em vez de usar três linhas no seu script, porque não usar uma função integrada que faz isso e dá aquele aspecto limpo no script, essa função é a math.max(). O exemplo acima ficaria assim: local k = 2 math.max(k, 3) Há também uma função parecida com a math.max() e que serve para o caso da variável ter um valor maior que o proposto. Ou seja: local k = 2 if k > 1 then k = 1 end Essa função é a math.min() local k = 2 math.min(k, 1) Fácil, não é? Uma explicação básica para as duas funções abaixo: math.max() - retorna o maior valor entre os dois argumentos math.min() - retorna o menor valor entre os dois argumentos DICA NÚMERO 2 - USANDO LOOPS Sabe aquele momento que você está programando seu script de quest mais incrível e nesse script você vai precisar colocar para "summonar" vários tipos de criaturas e repetidas vezes? Olhe esse exemplo: doSummonCreature("Troll", position) doSummonCreature("Troll", position) doSummonCreature("Troll", position) doSummonCreature("Troll", position) doSummonCreature("Orc", position) doSummonCreature("Orc", position) doSummonCreature("Orc", position) doSummonCreature("Wolf", position) doSummonCreature("Wolf", position) Veja, você acabou de usar 9 linhas do seu script, ocupando o espaço com uma mesma função repetidas vezes, alguém que bate os olhos num script com esse bloco, vai ficar até com medo Com a criação de uma simples tabela e o uso de uma grande ferramenta dos vários scripters, o comando For e o Pairs, você pode fazer um milagre, veja abaixo: local summon = {["Troll"] = 4, ["Orc"] = 3, ["Wolf] = 2} for monster, times in pairs(summon) do for i = 1, times do doSummonCreature(monster, position) end end Compare os dois scripts. Dá para acreditar que eles fazem a mesma coisa? DICA 3 - USANDO O BOM SENSO Essa é a mais abstrata das dicas, pois depende muito da experiência do scripter. Ela usa do próprio bom senso e da capacidade de criação do programador. Eu vou pegar um script simples, sem nenhum uso em OTServ, para que você dê uma olhada: local x = 1 local y, z, soma = 0 if x == 1 then y = 3 z = 10 soma = x + y + z + 10 elseif x == 2 then y = 3 z = 10 soma = x + y + z + 20 else y = 4 z = 10 soma = x + y + z + 30 end Isso aí acima, parece um script inofensivo, mas não é. É uma grande repetição de informações desnecessárias. O uso dessa ferramenta que é o bom senso, consiste em verificar os "erros" do script, as repetições de coisas desnecessárias, procurando assim uma maneira de contornar a situação. Estudando o script acima, podemos encontrar alguns desses "erros": 1. O valor da variável 'y' se repete em duas partes do código. 2. O valor da variável 'z' é sempre o mesmo. 3. A variável 'soma' possui um número que varia três vezes em sua composição. 4. A variável 'soma' se repete três vezes no código. Desse jeito, podemos encontrar soluções plausíveis: 1. Vamos colocar o valor-padrão de 'y' será 3. 2. Vamos colocar o valor-padrão de 'z' em 10. 3. Vamos criar uma nova variável para esse número. 4. Vamos isolar 'soma' de todo o script. E assim, teremos um código limpo e um pouco mais curto, como segue abaixo: local x = 1 local y = 3 local z = 10 local k, soma = 0 if x == 1 then k = 10 elseif x == 2 then k = 20 else y = 4 k = 30 end soma = x + y + z + k Pois é, né? Como eu disse no começo dessa dica, ela é muito abstrata, e dependendo do scripter, vários resultados podem ser obtidos: local x = 1 local tabela = { [1] = {3, 10, 10}, [2] = {3, 10, 20}, [3] = {4, 10 , 30}, p = {0, 0, 0} } ret = tabela[x] or tabela.p soma = x + ret[1] + ret[2] + ret[3] CONCLUSÃO Bom, pessoal, a coletânea de dicas doidas fica por aqui. Eu não considero isso um tutorial, mas sim uma base para que vocês possam melhorar seus vários scripts. Para os scripters que ainda estão entrando nesse grande barco, verão termos desconhecidos, estruturas desconhecidas e etcétera, então não deixe de tirar suas dúvidas aqui no tópico ou no suporte do fórum. O objetivo desse tutorial não é explicar o comando For, o pairs() e o ipairs() ou o uso de tabelas, pois isso será feito em tutoriais mais detalhados. Um abraço, galera. \o/
- O que estão achando do nosso novo portal?
-
Brincando de troll
Eu cliquei, mesmo depois de ter lido o que o Kimoszin postou e verificado o que era. Ganhei, re-re-re.
-
Equipe [G] Games
Não entendi... Você vai colocar um servidor online ainda hoje? Bom, acho que não é preciso muitas pessoas para um feito desse, você só vai precisar "cansar sua visão", lendo alguns tutoriais nestas seções. - Começando seu Servidor - Internet Compartilhada (Caso seu modem seja roteado) E depois é só você baixar um servidor aqui, escolhendo a versão do Tibia que você deseja. - Downloads Agora se você precisa de pessoas para fazer um projeto de open tibia um pouco mais trabalhado, não deixe de detalhar mais esse projeto e as funções que você precisa.
-
[TalkAction] Character Info
Doughell, O código em si não está nada mal, porém a ideia em que ele gira não me agradou muito, acho que esse tipo de informações, mesmo que básicas, não deveriam ser liberadas para quaisquer jogadores de um servidor. Abraço.
-
Brushes
Eaê, grandes Artesãos (e etcétera) do TibiaKing. Eu estava aqui, sem nada para fazer, quando pensei em voltar com este antigo hobbie, criar signs e avatares, treinar essas minhas habilidades. Pois é, antes de virar programador, eu era um designer noob, trollado sempre pelos mais experientes de variados fóruns. (Triste a história, não é?) Bom, sem mais delongas, vocês poderiam me recomendar BONS brushes para smudge? Essa é uma técnica que eu gosto muito e quero voltar a treinar. Um abraço
-
(Resolvido) Algumas sugestões
É, eu quis dizer Spriting, uma área relacionada com gráficos de Tibia. Sobre a temática, eu não quis dizer nada sobre o 'tema' (layout) do fórum, pois este está muito bom, de fato. E bem, em questão de me acostumar com o fórum, eu já me acostumei. Este é muito superior. Bom, vou riscar a sugestão número 2, pois já a considero inviável.
-
(Resolvido) Algumas sugestões
1. Criação de uma área relacionada com Spriting. Isso pode aumentar o número de usuários do TibiaKing, pois há usuários que só trabalham com essa área. Obrigado pela atenção, até mais, galera. Conforme eu tiver sugestões para o TibiaKing, vou atualizando aqui.
-
Batmannew by ~ClarixTK
Nossa, dá pra notar uma grande diferença entre um trabalho e o outro, realmente uma iluminação faz a diferença. Tenho certeza que o Guido não usou só iluminação aí não rerere
-
Maxleve
macnowfhael, Isso não é possível, o nível máximo é configurado nas sources¹ do seu servidor, sendo necessária uma intervenção em alguns desses arquivos. Como sei que você necessita de algo parecido, recomendo a instalação de um Reset System² o que trará o dinamismo que você precisa para seu servidor. ¹ - conjunto de arquivos que contém o código-base de um executável ² - sistema em lua baseado no MMORPG Mu Online, onde a personagem atinge um determinado nível e pode voltar ao nível inicial, acumulando o número de uma variável chamada 'resets'.
-
[Pack] Brushes
Esses splatters do pacote são bons com smudge?
-
Tipografia
Nossa, manolagem. Pensei que ninguém ia postar aqui e teve até admin fazendo. Brigadão mesmo. Vou usar a tipografia do manolo Arthur.
-
Tipografia
Quem adiciona uma tipografia maneira no avatar que eu estou usando? D:
-
Meteor Rain
Oneshot, Garou e agora Lpz. Brigadão pelos comentários, galera.
-
Meteor Rain
Meteor Rain Criado por Lpz, flwflw! Testado em The Forgotten Server 0.3.6 Fala aê, manolagem. Estava eu aqui, brincando com o Pesquisar do computador, quando achei esse arquivo milenar no meu computador. É uma magia, que um dia eu criei me baseando num servidor que nunca saiu. Kingdom Age, falo mermo Bom, sem mais enrolação, tá aê. INSTALANDO 1. Crie um arquivo chamado meteor rain.lua na pasta data/spells/scripts. local spellConfig = { {effect = CONST_ME_FIREATTACK, area = createCombatArea({ {1, 0, 1}, {0, 2, 0}, {0, 1, 0}}) }, {effect = CONST_ME_FIREAREA, area = createCombatArea({ {0, 1, 0, 0, 0}, {1, 0, 0, 1, 0}, {0, 0, 2, 0, 0}, {0, 0, 1, 0, 1}, {1, 0, 0, 1, 0}}) }, {effect = CONST_ME_FIREATTACK, area = createCombatArea({ {0, 0, 1, 0, 1}, {1, 0, 0, 0, 1}, {0, 0, 2, 1, 0}, {0, 1, 0, 0, 1}, {1, 0, 1, 0, 0}}) }, {effect = CONST_ME_HITBYFIRE, area = createCombatArea({ {0, 0, 1, 0, 1}, {1, 0, 0, 0, 1}, {0, 0, 2, 1, 0}, {0, 1, 0, 0, 1}, {1, 0, 1, 0, 0}}) }, {effect = CONST_ME_FIREAREA, area = createCombatArea({ {0, 0, 1, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 1, 0}, {1, 0, 0, 0, 0, 0, 1}, {0, 0, 1, 2, 1, 0, 0}, {1, 0, 0, 0, 0, 0, 1}, {0, 0, 1, 0, 0, 0, 0}, {0, 0, 1, 0, 1, 0, 0}}) }, {effect = CONST_ME_HITBYFIRE, area = createCombatArea({ {0, 0, 1, 0, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0}, {1, 0, 1, 0, 0, 0, 1}, {0, 0, 0, 2, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 1}, {1, 0, 0, 1, 0, 1, 0}, {0, 0, 1, 0, 1, 0, 0}}) }, {effect = CONST_ME_FIREAREA, area = createCombatArea({ {0, 0, 1, 0, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0}, {1, 0, 1, 0, 0, 0, 1}, {0, 0, 0, 2, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 1}, {1, 0, 0, 1, 0, 1, 0}, {0, 0, 1, 0, 1, 0, 0}}) } } local combats = {} for k, config in ipairs(spellConfig) do combats[k] = createCombatObject() onTargetTile = function(cid, pos) local basePos = getThingPosition(cid) local fromPos = {x=basePos.x-6, y=basePos.y-8, z=basePos.z} doSendDistanceShoot(fromPos, pos, CONST_ANI_FIRE) end setCombatCallback(combats[k], CALLBACK_PARAM_TARGETTILE, "onTargetTile") setCombatParam(combats[k], COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatParam(combats[k], COMBAT_PARAM_EFFECT, config.effect) setCombatFormula(combats[k], COMBAT_FORMULA_LEVELMAGIC, -0.593, -50, -0.929, -100) setCombatArea(combats[k], config.area) end local function castingSpellTime(p) if(isCreature(p[1]) == TRUE) then doCombat(unpack(p)) end end function onCastSpell(cid, var) for k, combat in ipairs(combats) do addEvent(castingSpellTime, (250*k), {cid, combat, var}) end return true end 2. Cole essa chave em spells.xml <instant name="Meteor Rain" words="meteor rain" lvl="80" mana="860" prem="1" exhaustion="2000" needlearn="0" event="script" value="meteor rain.lua"/> 3. Dê reload e seja feliz. Screenshot Não ligue pro nick na imagem D:
-
[TalkAction] Auto Numbers
A ideia ficou bem legal, mas tente identar¹ seus códigos, deixando eles mais organizados. ¹ - tabular o código ; organizar em vários blocos.