Ir para conteúdo

SoulSarti

Membro
  • Registro em

  • Última visita

Tudo que SoulSarti postou

  1. O TFS é 0.4 e eu estou tendo problemas com esse sistema, onde preciso que, dado um valor x de um storage y, toda vez que um player aplicar dano num monstro, o monstro sofrerá, por exemplo, x*10 de dano a mais. Não sei se a source do meu tfs está bugada, mas quando tentei usar a funçao onStatsChange, onAttack ou msm onCombat, eu não consigo retorno algum. Há alguma outra forma de fazer esse script? Vocês acham melhor eu trocar a source?
  2. é possível criar modal window no tfs 0.4? Se sim, há algum tutorial por ai ou uma lista das funções? Vlw
  3. Você colocou o arquivo .xml na pasta correta? @EDIT: Tente especificar melhor o que acontece (ex. Msg de erro, bug de ids, etc)
  4. SoulSarti postou uma resposta no tópico em Scripts tfs 0.4 (OLD)
    Muito bom o topico, conteúdo desse menino nightwolf sempre inovador, hehe. GOGO NightWolf, continue assim hahaha REP+ OFF: @xNightWolf mas se fosse criada uma storage x pra guardar o valor antigo do atkspeed/atk do player e quando ele logasse, seria simples criar uma função onLogin, que puxaria essa storage e checaria se fosse diferente de 0. Caso fosse, o player receberia o valor dessa storage e depois ela voltaria a ser 0. Hahaha seria interessante uma spell assim. Seria um rolê danado, várias coisas pra fazer pra não bugar nada, mas apesar do trabalho, daria pra fazer.
  5. Bom galera, no meu segundo post para a area de mapping, trago para vocês um extension pack praticamente completo com quase todas as grounds/walls/railings até a versão 8.6! Ainda faltam algumas coisinhas, mas no geral está bem bacana. Fiz praticamente sozinho, mas precisei de uma ajudinha de outros extensions packs. Os devidos créditos estão do próprio arquivo .xml @EDIT: Seguem algumas imagens do pack: Bom, chega de lenga lenga, eis o conteúdo para download: http://www.mediafire.com/download/z0uztxyd84kfup7/walls+and+terrains+by+jeff.xml Scan : virus total / site: https://www.virustotal.com/pt/url/66b95f77bf3007a023a952d9f2140412ae1aba4b0154963ceb7e4400829527d8/analysis/1438432748/ arquivo : https://www.virustotal.com/pt/file/f4d3c1d5a3909e4121e7b350406da648fcd3f75f1b8aeb184964da3941aec82e/analysis/1438432851/ GG WP
  6. Bom galera, criei esse "sisteminha" esses dias, pois estava brincando com strings, tentando aprender mais sobre elas, e então em meio de alguns testes, me veio a ideia de criar um sistema onde ao equipar determinado item, um efeito sairá da posição de onde o personagem estiver com o primeiro nome do item a cada x segundos (animated text), ex.: equipei a zaoan sword, id 11301. Quando o efeito sair, sairá o nome "zaoan" da posição atual do meu personagem a cada 3 segundos, enquanto o item estiver equipado. Notem que o sistema usa animated text, logo versões de tfs mais novas não rodarão esse sistema. Notem também que como eu estava sem criatividade, eu usei um storagevalue em moveevents para quando o player equipar o item e para quando ele desequipar. Daria pra fazer sem o storage? Sim. Mas, como eu estava com preguiça, deixei do jeito que tava mesmo e pronto. Outro ponto a destacar: Fiz o sistema apenas para efeitos de itens equipados NAS MAOS, ou seja, se você adicionar um id de uma legs no sistema, ele não rodará o efeito, a não ser que você ponha a legs na mao, o que seria estranho, hahaha. Como disse, criei o sistema para testar algumas coisas, mas como ficou legalzinho eu resolvi postar. hahaha enfim, Eis o sistema: Em moveevents.xml adicione a seguinte tag: Agora crie um arquivo .lua chamado itemseffect.lua (em moveevents!) se ele tiver algo dentro, apague e ponha isso: Feito isso, vá para a pasta creaturescripts. em creaturescripts.xml adicione a seguinte tag Agora em login.lua, antes do ultimo return true, acrescente a seguinte linha: Crie então um arquivo .lua e renomei-o para itemeffect.lua Apague tudo que tiver dentro dele (se tiver algo) e ponha o seguinte: Quando eu estiver com menos preguiça eu dou uma "upada" no sistema, aperfeiçoando e tals. Espero que tenham gostado! Para servidores Baiak, ou custom high exp esse sistema é bacaninha. hahaha. Sintam-se livres para modificarem-no! E se o fizerem, postem aqui para sabermos o que fizeram de novo, xD Enfim, é isso. hahaha Vlw flw.
  7. Se você puder apresentar o sistema ficaria mais fácil de ajudar e.e'
  8. Já procurou tentar separar em 3 if's? Ficaria maior, mas pode ser que dê certo. if pp > 0 then if pv > 0 then if st > 2400 then
  9. Gostaria bastante em ajudar nesse projeto incrível, mas não tenho tantos conhecimentos de .lua nem de c++ pra ajudar.. Mas algo q seria interessante seria um random, que ativasse um addevent que fizesse a aranha descer pro andar de baixo, por x segundos, onde os players conseguiriam atacar ela. Depois dos x segundos, ela voltaria pro segundo plano, e executaria as ações de puxar o player, jogar poison, etc.
  10. Ahh ta, eu n tinha notado a parte do cyan. Realmente não manjo de OTs derivados... =/
  11. SoulSarti postou uma resposta no tópico em Suporte Bots
    Isso para um bot, ou para um OT Server? (Pq tem gente q posta na sessão errada... u.U) Caso for para OT, eis o script .-.
  12. Seguinte. Vá na pasta do seu OT. Nela, abra a pasta data, depois procure por spells. Abra esta pasta. Você verá duas pastas, uma chamada scripts, outra lib e um arquivo chamado spells.xml . <instant name="teste" words="default" lvl="100" maglv="0" mana="0" exhaustion="30" prem="0" needlearn="0" blockwalls="0" aggressive="1" event="script" value="teste.lua"> </instant> isso é uma tag de xml. Você deve colocá-la no arquivo spells.xml, entre suas magias, entre <spells> e </spells> O outro script é um arquivo .lua . Você deve entrar na pasta scripts, copiar um arquivo de lá (qualquer um), renomeio para para o mesmo nome que você pôs na tag onde está escrito value="teste.lua" No caso, o arquivo .lua deve se chamar teste . Abra esse arquivo, delete tudo que existe dentro dele e cole o script que o spell creator gerou: Se ajudei, da um rep+ xD Qualquer outra duvida, só postar. EDIT: A propósito, tópico está na sessão errada, por favor algum adm envie pra sessão correta x.x
  13. OFF TOPIC: rep+ é você reputar uma resposta, ou seja, você dá ao usuário que publicou aquela resposta um ponto de reputação. É como se fosse um like, no facebook. A diferença é que aqui você ajuda a galera dando um rep+ . XD Sempre que alguém te ajudar, ou você ver um topico com um conteúdo bacana, dê rep+, é tanto um sinônimo de agradecimento, quanto uma obrigação para com quem mantêm esse fórum ativo e com conteúdos novos.
  14. Tenta por o seguinte: MENSAGEM = { "Donate!! /n Caso queira comprar qualquer item, o preço de todos estão 5 reais cada. Para pagar e fácil, faça uma transferência no nome de Ana Claudia Borges Malheiro, no cpf 136438078-13, banco Itau, agencia 8545 conta 11644-7. Para completar, envie um email para [email protected] com o comprovante da compra, o que quer e a sua conta/senha.", "FRASE 2", "FRASE 3", "FRASE 4", "FRASE 5", } Eu aproveitei e corrigi os erros de português da frase. UAHSUAHS
  15. Ctz. White Wolf tb, outro scripter mto bom, poderia colaborar bastante tb. A ideia eh boa. Basta agr tirar do "papel" e começar. hahaha
  16. Cara, se eh foda. Hahaha. Usei os ids das elementals weapons aqui e umas rods que ngm usa. Super foda seu sistema! Quero ser um scripter igual você qnd eu crescer! Hahahahaa Rep+
  17. SoulSarti postou uma resposta no tópico em Suporte Tibia OTServer
    Seguinte, primeiro você tem que verificar se os mapas são da mesma versão. Recomendo que antes de mover a cidade retire TODOS os spawns, junto com as criaturas e npcs (é isso que está dando erro). Caso os mapas forem de versões diferentes, crie um backup dos arquivos e modifique a versão do mapa (cuidado ao mudar a versão pra uma anterior, alguns itens podem bugar) Tente fazer tudo isso que provavelmente esses erros sumirão. Lembre também de sempre criar backups dos seus mapas quando for fazer alterações muito grandes... Vlw flw.
  18. Procure por um Map Tracker da versão do tibia que você quer copiar. Não vou te julgar nem nada, mas criar mapas por conta própria é bem mais glorioso e prazeroso do que copiá-los. É feio jogar num sv com uma hunt ou mapa copiados de outros... FikDik. xD
  19. Obrigado pelo apoio! Quando eu estiver com mais tempo eu dou uma aprimorada no tutorial, pondo umas imagens, mais conteúdo etc.
  20. Bom, acredito que muitos procurem por MODs para o Remere's para facilitar na hora de criar os mapas. Muitas vezes procuramos pois não sabemos como fazer. Vou explicar aqui, como criar suas proprias extensões para o remere's. Não será nada muito avançado e/ou detalhado, mas com esse tutorial, você conseguirá personalizar seu Remere's sem muita dificuldade. Toda extensão do RME é feita com XML. A parte mais importante é localizar onde está sua pasta de extensões do RME. Para localizá-la, existem dois meios: O primeiro, se seu RME é antigo (v 2.2 ou mais antiga) então provavelmente a pasta de extensões está na propria pasta do RME. Procure sua pasta do RME, abra-a e procure por extensions. Caso seu RME seja mais novo, então abra seu menu Iniciar do Windows, depois clique em "Computador". Na área do endereço (topo da tela, onde está escrito "Computador") clique, apague tudo, digite %appdata% e aperte Enter. Uma pasta se abrirá, com o endereço de "Disco Local > Usuarios > (Seu usuario) > App Data > Roaming. Caso abra apenas a App Data e não abra o roaming, basta abrir a pasta roaming e proceguir. Nela você encontrará várias outras pastas. Procure então pela pasta Remere's Map Editor. Abra-a. Você verá dois arquivos: data e extensions. Abra o extensions. Bom, agora a parte chata terminou. Agora começa a parte mais chata ainda hahaha Vocês notarão que existem vários arquivos XML ai dentro. Copie um, e cole ai mesmo. Renomeio com o nome que quiserem. Abram-no e deletem tudo que há dentro dele. Vou explicar agora como fazer a mágica acontecer. Todo arquivo de extensão de RME, como eu já disse antes, precisa ser XML. Por sua vez, arquivos XML precisam de um cabeçalho. Para esse tipo de arquivo, nosso cabeçalho será o seguinte: <materialsextension name="extensions by jeff" author="Jeff" description="extensions compilation" client="8.60"> entendendo: name = nome da sua extensão (não use nomes repetidos, por favor xD) author = autor da extensão (puro blábláblá) description = descrição da extensão (mais blábláblá) client = versões do mapa que a extensão vai "rodar" (Importante: Se você, por exemplo, colocar client version 8.6 e colocar um item de versão maior que 8.6 o rme vai bugar quando você tentar abrir um mapa de versão 8.6) note que, todos os valores devem ser postos entre " " . Ok, cabeçalho feito, agora vem a parte chata hahaha Existem 4 tipos de brush: Terrains (pisos/paredes), Doodads (variedades), Items (items, tipo items, saca?) e Creatures (monstros e npcs). Por agora, ensinarei apenas como adicionar Terrains e Doodads. Os items e Creatures são fáceis, dá pra aprender sozinho só de ver esse tutorial e ver alguma extension de items ou creatures. Vamos lá. Para criar um Doodad: Existem 2 tipos de 'tags' para criar um Doodad. O primeiro, deve ser os detalhes sobre o item e como ele vai ser posto no mapa via RME. Seria como um script .lua . O segundo é literalmente a tag que vai registrar aquele item/brush no remeres, como a tag de um arquivo .lua <brush name="Lamps" type="doodad" server_lookid="4404" draggable="true" on_blocking="true" thickness="10/10"> <item id="4404" chance="30"/> </brush> name = Nome da brush. No exemplo, é Lamps. type = aqui é o tipo da brush/item. Acho que não preciso aprofundar aqui, por enquanto. server_lookid = aqui é como se fosse um looktype. É o look da brush que aparecerá no RME. Use sempre um id que seja sugestivo para a brush. (Seria estranho utilizar o id de uma sword para uma brush que vai colocar grama '-' ) draggable = pra ser sincero, não sei bem pra que serve. geralmente deixo "true" e pronto. hahaha on_blocking = No remere's, esse item bloqueia a passagem? (É sempre útil saber onde o player pode passar ou não, logo não seja negligente nessa parte e.e' ) thickness = "frequência" na qual o item aparecerá. Quando você pega aquelas small rocks, se você amplia o tamanho da brush, você nota que há alguns espaços vazios. Isso é um exemplo de thickness. Quanto menor a divisão, menos items são randomizados na brush. (Não tenho certeza absoluta se é isso mesmo, mas creio que seja algo parecido) item id e chance = Aqui você põe os id's que você quer e a chance dele aparecer na brush. Nessa brush, coloquei apenas o id 4404 (lamp). Caso queiram adicionar mais items, apenas copiem e colem essa tag e ponham entre o <brush name ...> e o </brush>. Caso queiram mudar o item utilizando o botão z ou x no rme, utilizem a seguinte tag: <alternate> <item id="ID" chance="CHANCE"/> </alternate> O chance=" " é a chance do item aparecer. Caso usem o <alternate> </alternate> essa chance será ignorada, até porque o item só mudará caso voce aperte x ou z. Se não usarem o <alternate>, os items que você colocar lá serão postos de acordo com a chance deles e de acordo com o thickness da brush. Lembram do 2º tipo de tag que precisamos colocar, para registrar no RME? então. Este tipo de tag deve ficar no final do arquivo. Aqui você vai registrar TODAS as tags para aquele tipo de brush. Para os doodads, a tag fica assim: <tileset name="Jeff Nature Extensions"> <doodad> <brush name="Lamps"/> </doodad> </tileset> name = Aqui você põe o nome da "pasta" de doodads. Se você colocar um nome 'aleatório', o rme criará aquela pasta e colocará as brush's nela (recomendo, pois assim você separa suas brush's das brush's "custom" e das criadas por outras pessoas). Se você por o nome de uma já existente, então aquelas brush's irão para a pasta já existente. brush name = Aqui você põe o nome da brush. Lembram, que a minha era "Lamps"? Então, aqui deve ser o mesmo nome. Tipo, DEVE MEEESMO. Caso ponham outro nome, seu rme vai bugar e n vai abrir as brush's editadas. e.e' Caso queiram adicionar mais brush's para uma mesma pasta, basta colocarem-nas entre o <doodad> e o </doodad>. Agora, para criar uma brush do tipo terrain, seja ela uma parede ou um piso: <brush name="bamboo wall" type="wall" server_lookid="3424"> <wall type="horizontal"> <item id="3424" chance="500"/> <item id="3426" chance="100"/> <item id="3432" chance="100"/> </wall> <wall type="vertical"> <item id="3423" chance="400"/> <item id="3428" chance="100"/> <item id="3430" chance="100"/> </wall> <wall type="corner"> <item id="3427" chance="1000"/> </wall> <wall type="pole"> <item id="3425" chance="1000"/> </wall> </brush> Bom, aqui vou ser mais breve. type = Aqui você põe o tipo da brush. Se for uma parede, então ponha wall. Se for piso, a tag muda, vou mostrar depois. Note aqui que, para cada <wall type e o </wall>, a tag é diferente. Recomendo sempre manter essa estrutura. Explicando: Horizontal = Horizontal Hahahaha (Ids da parede que são > - ) Vertical = Vertical e.e' (Ids da parede que são > | ) Corner = Não sei traduzir isso ao pé da letra, mas é aquela parede que é > _| (e.e') Pole = Pole Dance Aquela parede em forma de "pino". Aqui eu recomendo que vocês deixem as chances nesse mesmo "nivel". Não precisa ficar arrumando muito... Para registrar uma parede, você deve fazer o seguinte: Ponha isso no final do arquivo: <tileset name="Jeff Walls/Terrains"> <terrain> <brush name="bamboo wall"/> </terrain> </tileset> Mesmo "esquema" dos doodads, mudando apenas o <doodad> </doodad> por <terrain> </terrain> Para criar um piso (não ensinarei a por bordas nele, até pra incentivar o uso das bordas pelo raw e evitar o uso do auto-border.) Vamos lá: a Primeira "tag" é: <brush name="Dark Common Old Pavement" type="ground" server_lookid="10492" z-order="3401"> <item id="10492" chance="25"/> <item id="10493" chance="25"/> <item id="10494" chance="25"/> <item id="10495" chance="25"/> <item id="10496" chance="25"/> <item id="10497" chance="25"/> <item id="10498" chance="25"/> </brush> Notem que o type aqui é ground e existe aquele z-order. Não faço ideia do que o z-order faça, então recomendo que procurem depois (eu também procurarei, hahahahaha) os ids do piso devem estar entre os <brush name...> e o </brush> como em todos os outros modelos e o chance também é editável. Caso queiram que um id de piso apareça mais que o outro, ponha o chance dele maior e do outro menor. A tag para registrar um piso é: <tileset name="Nome da pasta"> <terrain> <brush name="Dark Common Old Pavement"/> </terrain> </tileset> Mesmo esquema de todas as outras, se quiser registrar mais pisos, apenas ponham suas tags entre o <terrain> e </terrain> É isso ai. Espero que tenha ajudado um pouco quem não manjava. Desculpem pela falta de paciência no fim do tutorial e por n ter colocado mais cores e tals. Mas espero que tenham entendido tudo. Qualquer erro, duvida ou sugestão, postem aqui. xD
  21. Galera, fui testar um script de minning system do WhiteWolf, dei uma pequena ajustada nele e me apareceu esse erro: attempt to call field: 'insert' (a nil value) o erro rola nessa parte do codigo: function getDrops(cid) for i= -1,getPlayerStorageValue(cid, config.storage) do if levels[i] then table.insert(Drops, levels[i]) end end return true end o script é o seguinte: terra = {8633} levels = { [-1] = 2146, ---- Small Sapphire [4] = 7759, --- Small Enchanted Sapphire [8] = 18418, --- Blue Crystal Splinter [12] = 18413, -- Blue Crystal Shard [17] = 2158, -- Blue Gem [22] = 12508, -- Magic Crystal [25] = 13195, -- Minor Blue Powder [35] = 13215, -- Medium Blue Powder [45] = 6551, -- Great Blue Powder [50] = 5905, -- Ultimate Blue Powder } local config = { storage = 19333, chance = 40, --- chance de achar um item ou não k = 2, --- constante de level.. quanto maior, mais fácil é upar. (a fórmula é level ao quadrado dividido pela constante) experience = 19334 } function onUse(cid, item, fromPosition, itemEx, toPosition) Drops = {} function getDrops(cid) for i= -1,getPlayerStorageValue(cid, config.storage) do if levels[i] then table.insert(Drops, levels[i]) end end return true end if isInArray(terra, itemEx.itemid) then getDrops(cid) setPlayerStorageValue(cid, config.experience, getPlayerStorageValue(cid, config.experience)+1) local experience = getPlayerStorageValue(cid, config.experience) if experience >= (8+(getPlayerStorageValue(cid, config.storage)^2))/config.k then setPlayerStorageValue(cid, config.storage, getPlayerStorageValue(cid, config.storage)+1) doPlayerSendTextMessage(cid, 27, "Congratulations, you have leveled! Your currect level is "..getPlayerStorageValue(cid, config.storage) ..".") if getPlayerStorageValue(cid, config.storage) == 50 then doPlayerSendTextMessage(cid, 20, "For reaching level "..getPlayerStorageValue(cid, config.storage) .." you have been awarded with Mining Helmet.") doPlayerAddItem(cid, 7497, 1, true) end end if config.chance >= math.random(1,100) then if #Drops >= 1 then local item = Drops[math.random(1,#Drops)] doPlayerSendTextMessage(cid, 27, "You have found a "..getItemNameById(item)..".") doPlayerAddItem(cid, item, 1, true) end doSendMagicEffect(toPosition, 3) else doSendMagicEffect(toPosition, 2) return true end elseif itemEx.itemid == item.itemid then doPlayerSendTextMessage(cid, 27, "You're currenctly level "..getPlayerStorageValue(cid, config.storage)..".") else return false end return true end
  22. O problema não está no script. Acho que eu sei qual o problema (ja aconteceu comigo uma vez e.e') Vá em items.xml e lá procure o id da porta que se transforma em um melon. Quando você achar, procure a seguinte tag: <attribute key="transformUseTo" value="id"/> esse id provavelmente vai ser 5097. Se for, então substitua pelo id da porta correto(5127). Procure também pelo item 5097. Lá você provavelmente vai encontrar a seguinte tag : <attribute key="decayTo" value="id"/> <attribute key="duration" value="tempo"/> Se você de fato encontrar algo parecido com isso (claro que não vai estar escrito id, nem tempo, e sim a id do melao (provavelmente) e o tempo em segundos), então simplesmente apague essas duas linhas. Provavelmente é isso que está bugando suas portas. Voce disse que a porta 5125 deveria virar a 5127, mas ela vira a 5097 e esta, quando você a usa ou depois de um tempo, ela se transforma em um melon. Se esse for realmente o caso, então o problema está todo no items.xml. O script de doors seu retorna o valor de transformonuse das portas para transforma-las, para abrir ou fechar, e o fato da porta virar um melão, provavelmente vem de um decay, ou de um addevent que transforma o id 5097 depois de um tempo. Se você não encontrar nada do que eu falei no items.xml, então o erro ta em algum script que você pôs no seu sv. Espero ter ajudado.
  23. SoulSarti postou uma resposta no tópico em Suporte Tibia OTServer
    Vou dar uma testada aqui. Mas acho que é por ai mesmo! Valeu man, rep+ xD

Informação Importante

Confirmação de Termo