-
Total de itens
246 -
Registro em
-
Última visita
-
Dias Ganhos
2
Tudo que MaXwEllDeN postou
-
dúvida Duvida - Alguma função que check um texto
pergunta respondeu ao LuaniTa de MaXwEllDeN em Scripts
Hm, agora me bateu uma dúvida, por que descrições já prontas? Como você usaria isso? -
dúvida Duvida - Alguma função que check um texto
pergunta respondeu ao LuaniTa de MaXwEllDeN em Scripts
Pelo que eu lí e cheguei a entender, achei que você queria ver se o nome do player estava na descrição do item! -
pedido {C} [Verificar se o número é par ou ímpar]
pergunta respondeu ao Prodigious de MaXwEllDeN em Resolvidos
JMLsPptj[/pastebin] -
A maioria das sprites do Zezenia foram feitas pelos sprites do Phobos, que consideraram que não eram legais para o Phobos e doaram ao pessoal do Zezenia. Cara, por que você diz que as sprites são fracas? Eu achei as sprites lindas e são muito bem feitas! Quais bases você usou para determinar que elas são fracas? .-. @Tópico O Phobos é um projeto que eu já acompanho a um tempo e espero ainda poder jogar nele, espero não só que ele traga de volta a jogabilidade do Tibia que já se foi a muito tempo, mas também coisas novas e empolgantes
-
dúvida Duvida - Alguma função que check um texto
pergunta respondeu ao LuaniTa de MaXwEllDeN em Scripts
Sim, mas na string que deve ser buscada não há nenhum pattern '-'. @Tópico Olha, aparentemente não tem nada de errado com o código, Teríamos que ver a descrição do item pra ver como tá ficando, eu testei assim: local item = getPlayerItemById(cid, true, 2379) local desc = getItemAttribute(item.uid, "description") if item.uid > 100 and desc:find(" ".. getCreatureName(cid) .." ") then print("All right") end e deu certo. Descrição do meu item: Faz esse teste: local desc = getItemAttribute(getPlayerItemById(cid, true, 2379).uid, "description") print("\"".. desc .. "\"") -
Haha, Lwkass é um ótimo programador, Fera. Só que a muito tempo ele não meche com Open Tibia.
-
sistema Sistema de Pet V1.0 By PsyMcKenzie
tópico respondeu ao PsyMcKenzie de MaXwEllDeN em Mods, funções e outros
Sistema legal cara, mas, é como o Banana falou, ainda tem umas coisas que você tem adicionar pro sistema ficar melhor e se diferenciar dos outros. -
Pattern Pattern ("Padrão" em pt-br) é uma poderosa funcionalidade para manipulação de strings (caso você não saiba o que é uma "string", busque saber antes de continuar, recomendo também ter um certo domínio sobre a biblioteca string), e usada para buscar um padrão de texto pré-definido. Porque aprender ? Possui recursos indispensáveis quando se precisa trabalhar com strings, alta aplicabilidade em scripts direcionados a otserv (talkactions), não que se vá usar isso a todo o momento, mas é altamente recomendado que se saiba trabalhar com patterns, é extremamente útil as vezes. Funções Algumas funções da biblioteca padrão string que aceitam pattern em seus parâmetros: string.find(string, pattern) – Procura a primeira instância da pattern na string string.gfind(string, pattern) – Quando for chamada repetidamente, retorna cada instância da pattern na string string.gsub(string, pattern, replace) – Retorna uma string em que todas as instâncias da pattern foram substituidas por replace string.match(string, pattern, init) – Retorna uma lista de ocorrências da pattern na string, começando em init (1 significa o primeiro caractere da string, 2 o segundo, assim por diante) Conjuntos Quando se constrói uma pattern, se utiliza alguns caracteres, cada um representando um conjunto diferente: (onde "x" não é um caractere mágico ^$()%.[]*+-?) → Representa o caractere "x" mesmo; . → Representa todos os caracteres; %a → Representa todas as letras; %c → Representa todos os caracteres de controle; %d → Representa todos os dígitos; %l → Representa todas as letras minusculas; %p → Representa todos os caracteres de pontuação; %s → Representa todos os caracteres de espaço; %u → Representa todas as letras maiúsculas; %w → Representa todos os caracteres alfanuméricos; %x → Representa todos os dígitos hexadecimais; %z → Representa o caractere com a representação do 0 (zero). Ao usar zeros na pattern ela não irá funciona, use esta nesse caso; Ao usar letra maiúscula, isso faz representar o contrário (Exemplo: %A → Representa tudo que não for letras; %D → Representa tudo que não for um digito; assim por diante...). Como dito anteriormente, para se criar uma pattern é necessário utilizar esses conjuntos, uma pattern é feita de uma sequência desses conjuntos. Se você quisesse criar uma pattern para encontrar uma certa string em um texto, por exemplo, para encontrar os números da string "23otserv", você teria que usar esta pattern "%d%dotserv", assim você estaria definindo que quer os numeros que estão ao lado da palavra ‘otserv’. Mas e se tivesse que encontrar um numero com 10 "casas" ? Por isso existe os modificadores, para evitar essa repetição desnecessária. Modificadores Servem principalmente para poupar serviço e são quatro, entenda 'x' como sendo algum conjunto (%a, %c, %d, ...): x* → Retorna 0 ou mais repetições do conjunto x. Sempre retornará a maior cadeia possível encontrada; x+ → Retorna 1 ou mais repetições do conjunto x. Sempre retornará a maior cadeia possível encontrada; x- → Retorna 0 ou mais repetições do conjunto x. Sempre retornará a menor cadeia possível encontrada; x? → Retorna 0 ou 1 ocorrência de x; Elementos especiais Existe também quatro elementos especiais: %n → Sendo n um numero entre 1 e 9, busca a enésima captura (apenas vi sendo usada na função string.gsub); %bxy → Procura uma string que inicia com x e termina com y; ^ → Quando está no começo da pattern, força a pattern a ser encontrada no começo da string; $ → Quando está no final da pattern, força a pattern a ser encontrada no fim da string; Nota: Se ^ ou $ estiverem em outros lugares da pattern, não fazem nada, apenas representam eles mesmos. Construindo uma pattern Vamos construir algumas patterns com os elementos citados acima. Primeiro alguns exemplos e depois uma explicação mais detalhada de cada elemento da pattern: String para as patterns: "Exemplo lua de pattern lua feito em lua" exemplos toscos, a gente se vê por aqui Pattern: (%a+) lua Capturaria: Exemplo lua de pattern lua feito em lua Ele só retornará o primeiro caso que corresponder com a pattern. Agora, ao invés de usar o "%a" fosse usado o "." (que captura tudo), aconteceria isso: Pattern: (.+) lua Capturaria: Exemplo lua de pattern lua feito em lua Como "%a" captura apenas letras e não o "espaço", foi por isso que no primeiro exemplo só capturou a palavra "Exemplo" e no segundo exemplo, como foi usado o "." que captura tudo, capturou uma parte maior (ai que vêm a parte do modificador) por causa do modificador "+" que sempre vai buscar a maior cadeia possivel, agora veja um exemplo usando o "-": Pattern: (.-) lua Capturaria: Exemplo lua de pattern lua feito em lua O modificador "-", como dito anteriormente, captura a menor cadeia e por isso capturaria apenas o "Exemplo". Todos os modificadores são importantes. Um exemplo maior: Pattern: (%a+) lua (.-) lua (.+) Capturaria: Exemplo lua de pattern lua feito em lua Para quem não entendeu Explicação passo a passo: (%d+) Captura → O parenteses define que você quer que retorne essa captura. Conjunto → No caso é o de digitos. Modificador → No caso mostra que é para obter a maior cadeia possivel com 1 ou mais repetições do conjunto. Um exemplo mais avançado Agora usando de exemplo a pattern da função string.trim, que remove os espaços em branco do lado esquerdo e direito da string. function string.trim(str)-- Function by Colandusreturn (string.gsub(str, "^%s*(.-)%s*$", "%1"))end string.gsub(str, "^%s*(.-)%s*$", "%1") str → Uma string qualquer; ^ → Força o começo da pattern ser encontrada no começo de str; %s* → Conjunto de espaços, podendo ter 0 ou mais repetições; (.-) → A captura principal, a que vai ser retornada, podendo ser digitos, letras, espaço, etc; $ → Força o final da pattern ser encontrada no fim de str; %1 → Retorna a 1ª captura da pattern e usa como parametro da função (Esse é um dos elementos especiais, %n); Dessa forma será removido os espaços apenas no começo e no fim da string ! Complemento Depois de dominar e entender como funciona as patterns, vamos aplica-las em funções, vou mostrar um exemplo de cada função (as que foram citadas no começo). string.find: init, end, case1, case2 = string.find("minha string123", "(%a+) (.+)") init → Onde inicia a captura encontrada (nesse caso, init = 1); end → Onde termina a captura encontrada (end = 15); case1 → Primeira captura que equivale a pattern (%a+) (case1 = minha); case2 → Segunda captura que equivale a pattern (.+) (case2 = string123); string.gfind: for occ in string.gfind("a1a2a3a4a5", "(%a%d)") doprint(occ)end occ → Terá um valor para cada instância da pattern (%a%d) encontrada, então irá printar a1, a2, a3, a4 e a5. string.match: case1, case2 = string.match("Eu tenho 50 reais", "(%d+) (%a+)") case1 → Primeira captura que equivale a pattern (%d+) (case1 = 50); case2 → Segunda captura que equivale a pattern (%a+) (case2 = reais); Referência http://www.lua.org/manual/5.1/pt/manual.html#5.4.1 http://lua-users.org/wiki/PatternsTutorial Então é isso, espero ter sido o mais claro possivel, Qualquer dúvida, erro ou sugestão, poste !
-
Não vai funcionar bem como no exercício. Olha ai está o seu código, comentado: function onUse(cid, item, fromPosition, itemEx, toPosition) doPlayerAddExperience(cid, 15000) -- Vai adicionar 15000 de experiência para o player que usou a espada em alguém doCreatureSay(cid, "Aaaaii Delicia",19) -- O player que usou a espada vai falar Aaaaaai Delicia doPlayerSendCancel(uid, PEEEEIDEEEI) -- Vai dar erro, 1º Porque uid não é uma criatura válida, segundo porque PEEEEEEEEEEEIDEI não é uma string("PEEEEEEEEIDEIIIII", com àspas) end return true -- return true no lugar errado Correção no seu código: function onUse(cid, item, fromPosition, itemEx, toPosition) doPlayerAddExperience(cid, 15000) -- Vai adicionar 15000 de experiência para o player que usou a espada em alguém doCreatureSay(itemEx.uid, "Aaaaii Delicia",19) -- O player que estiver na mira da espada vai falar Aaaaaai Delicia doPlayerSendCancel(cid, "PEEEEIDEEEI") -- Você vai receber uma mensagem dizendo: PEEIIDEEEI return true -- No lugar certo end
-
Tlg, esquecem mesmo. Mas o objetivo do tópico foi ensinar sobre as funções. Isso ai que você tá falando é PENSAR e isso é algo que eu não posso ensinar a alguém. Bem, isso que você esqueceu de colocar não é considerado um erro, se o script carregar e rodar, está tudo certo, já que ele foi feito pra ser rodado assim, então não tem nenhum erro. A falta da verificação se a criatura existe já é falha do programador em não pensar na possibilidade da criatura não existir, e é como eu disse, isso depende se o cara sabe pensar.
-
Cara, esse script é só pra exercitar as funções, não é útil pra ninguém um script como esse. E se fosse pra alguém usar em um servidor, seria mais viável criar uma tabela e dentro dela colocar o nome das criaturas que não falam, e se o alvo fosse uma delas, retornaria falso. Pois não são só players que falam, certo?
-
Não está fazendo? Como assim? Você digita o comando para adicionar o addon, ele remove o addon doll, diz que adicionou addon mas não adicionou? Explique melhor por favor.
-
pedido Falar alguma palavra e a pedra sumir
pergunta respondeu ao AwakeGamer de MaXwEllDeN em Scripts
Talkactions.xml <talkaction words = "abra-te sesamo" event = "script" filter="word-spaced" value = "abratesesamo.lua" /> abratesesamo.lua XrKxNjJH[/pastebin] -
O problema era no script. uniXurYW[/pastebin] Não é yalaharin é Yalaharian.
-
Porque estátuas são imóveis, sempre foram
-
A do add e sub achei legal, mas as __unm não ví muita utilidade, xD. Valeu. Adicionei aqui, mais tarde upo o arquivo ;_)
-
Primeiro instale essa biblioteca no teu servidor: Classe Position[EagleLib] Código: BT1vT8AQ[/pastebin]
-
Obrigado ^^. Só uma coisinha desnecessária que você colocou Sky. END9a7iW[/pastebin] Quase certo, mas dá uma olhada. No seu script, o alvo do item está sendo chamado de item2. Tem duas soluções para o seu problema. Ou você muda o nome da variável para itemEx, ou usa item2 no lugar de itemEx. Mudando o nome da variável para itemEx: Antes: function onUse(cid, item, frompos, item2, topos) if isCreature(itemEx.uid) then doCreatureSay(itemEx.uid, "Aí, isso doi") then end return true end Depois: function onUse(cid, item, frompos, itemEx, topos) if isCreature(itemEx.uid) then doCreatureSay(itemEx.uid, "Aí, isso doi") end return true end Usando item2 no lugar de itemEx: Antes: function onUse(cid, item, frompos, item2, topos) if isCreature(itemEx.uid) then doCreatureSay(itemEx.uid, "Aí, isso doi") then end return true end Depois: function onUse(cid, item, frompos, item2, topos) if isCreature(item2.uid) then doCreatureSay(item2.uid, "Aí, isso doi") end return true end Abraço!
-
Ficou bem dahora cara ^^. Só coloca um exaust entre cada criação de teleport. Ou pra só poder criar um depois que o último criado sumir. E um custo pra colocar esses teleports ai. Que fica melhor, xD.
-
Como funcionam os Scripts? Você já deve ter se perguntado como os scripts funcionam ou não. Por exemplo: Como o servidor sabe que quando eu apertar com o botão direito em um Health Potion ele terá que healar o player alvo? Em primeiro lugar devemos entender o que são callbacks. Do modo mais simples callback é algo que acontece devido a uma reação, é como a Terceira Lei de Newton que diz que toda ação gera uma reação, esse callback é a nossa reção, é uma função que vai ser executada assim que algo acontecer, no caso do Health Potion assim que ele for usado. Quando um item é usado ele provoca a chamada de um callback dessa função: – Max, que parâmetros são esses? :hum: – É simples. fromPosition - Essa é a posição que os Potions estavam quando eu usei eles. itemEx - Se o alvo for um item vai retornar uma tabela igual à item, mas com as informações do item-alvo. Se o alvo for uma criatura, o itemEx.uid, será o CreatureID do alvo. toPosition - Retorna uma tabela da posição do alvo(Do SQM que estava na mira do Crosshair). O Script do Health Potion ficaria +/- assim: local config = { min_heal = 100, -- Minimo que vai healar max_heal = 200, -- Máximo que vai healar empty = 7636, -- Id do Potion vazio } function onUse(cid, item, fromPosition, itemEx, toPosition) if isCreature(itemEx.uid) then doCreatureSay(cid, "Aaaah...", 19) doSendMagicEffect(toPosition, 12) doCreatureAddHealth(itemEx.uid, math.random(config.min_heal, config.max_heal)) doTransformItem(item.uid, config.empty) else doPlayerSendCancel(cid, "You cannot use this object.") end return true end Funções usadas: Bem, esse aí é o script, agora só é você salvar, colocar na sua pasta actions/scripts e pronto! – Max, se existem vários scripts na pasta actions/scripts, como meu OT sabe qual usar? – Por causa das chamadas TAGs. – TAGs? – Sim, é uma linha que é colocada no .xml para dizer ao seu servido que o Callback para um item x será a função daquele script. As Tags das actions seguem esse modelo: <action itemid = "7618" event = "script" value = "HealthPotion.lua" /> itemid - É o id do item, que ao ser usado o callback dele vai ser o script que está em value, no caso HealthPotion.lua event - Indica o que vai acontecer quando usar o item, no caso vai ler o script. Não precisa se preocupar com isso por enquanto. value - É o nome do script que tem o callback que você quer usar no item 7618 Exercício: Crie uma Action que quando eu usar uma Warlord Sword em alguém essa pessoa diga "Aí, isso doi". Poste a TAG também! Resposta SÓ ABRA DEPOIS DE RESOLVER: É isso aí pessoal, essa foi a primeira aula de Scriptwriting que eu escreví, espero que gostem :3
-
Obrigado galera pelo que vocês comentaram. Tentei criar uma nova aqui. Nomeei ela de Hareknis. O que vocês acharam?
-
Bem galera, estou precisando de ajuda na criação de principalmente lâminas. Não estou conseguindo distribuir bem as cores. Uma tentativa falha de criar uma espada.
-
O primeiro você só vai conseguir um eficiente se fizer modificações na source.
-
Não xD, não esqueci de declarar mount. Ele foi declarado na definição da função. Dá uma olhada: function catch(uid, mount)
-
Mal minha. <movevent type="AddItem" itemid="TILEITEM" tileitem="1" event = "script" value = "gol.lua"/> gol.lua function onAddItem(moveitem, tileitem, pos) if tileitem.actionid == 30214 and moveitem.itemid == 2109 then doBroadcastMessage("GOOOOOOOOOOOOOOOOOOL!", MESSAGE_EVENT_ADVANCE) end return true end Não esquece de colocar a actionid 30214 no tile do "gol".
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.