-
Total de itens
912 -
Registro em
-
Última visita
-
Dias Ganhos
1
Tudo que tibiaa4e postou
-
Boa criatividade. Me faz lembrar sword and sandals KKK Daria para fazer umas quests legais, n deixando cara aproximar do bixo e coisas do tipo Parabens !
-
Estou muito ausente do forum, e hoje me deparei com um probleminha quando fui ajudar uns amigos. Queriamos fazer a inquisition Quest, real. E infelizmente não tenho tempo para criar scripts e acabei me matando para achar um que funcionasse. Lembro que esse script é simples, mas você deverá usar o cerebro. Pois é um pouco complexo entender como implementa-lo. Então irei compartilha aqui ELe é dividido em duas partes que funcionam juntas. Para faze-lo funcionar deve apenas colocar as Actionids necessarias em seus devidos teleports. No exemplo dando ele não usa o teleport convencional e sim o teleport 9773 que é apenas a sprite. Vamos aos scripts: Acrescente em data/libs/050-function.lua (Ou parecido): function doCreatureSayWithDelay(cid,text,type,delay,e,pcid) if delay<=0 then doCreatureSay(cid,text,type, false,pcid) else local func=function(pars) doCreatureSay(pars.cid,pars.text,pars.type, false,pars.pcid) pars.e.done=TRUE end e.done=FALSE e.event=addEvent(func,delay,{cid=cid, text=text, type=type, e=e,pcid=pcid}) end end Em movements adicione o inquisition.lua e adicione: local config = { bosses={---actionid, posicao para onde ira, valor que colocara, texto de entrada [1001] = {pos={x=1173, y=1137, z=12, stackpos=1}, value=1, text="Entering The Crystal Caves"}, [1002] = {pos={x=1128, y=1151, z=12, stackpos=1}, value=2, text="Entering The Blood Halls"}, [1003] = {pos={x=1045, y=1204, z=13, stackpos=1}, value=3, text="Entering The Vats"}, [1004] = {pos={x=1152, y=1195, z=13, stackpos=1}, value=4, text="Entering The Arcanum"}, [1005] = {pos={x=1247, y=1295, z=12, stackpos=1}, value=5, text="Entering The Hive"}, [1006] = {pos={x=1064, y=1308, z=13, stackpos=1}, value=6, text="Entering The Shadow Nexus. All hope desapear!"} }, mainroom={---actionid, posicao que ira,menor valor de storage que poder entrar, texto de entrada [2001] = {pos={x=1173, y=1137, z=12, stackpos=1}, value=1, text="Entering The Crystal Caves"}, [2002] = {pos={x=1128, y=1151, z=12, stackpos=1}, value=2, text="Entering The Blood Halls"}, [2003] = {pos={x=1045, y=1204, z=13, stackpos=1}, value=3, text="Entering The Vats"}, [2004] = {pos={x=1152, y=1195, z=13, stackpos=1}, value=4, text="Entering The Arcanum"}, [2005] = {pos={x=1247, y=1295, z=12, stackpos=1}, value=5, text="Entering The Hive"} }, portals={---actionid,texto de entrada [3000] = {pos={x=1065, y=1086, z=14}, text="Entering Inquisition Portals Room"}, [3001] = {pos={x=1098, y=1214, z=12}, text="Entering The Ward of Ushuriel"}, [3002] = {pos={x=1185, y=1067, z=12}, text="Entering The Undersea Kingdom"}, [3003] = {pos={x=1130, y=1213, z=12}, text="Entering The Ward of Zugurosh"}, [3004] = {pos={x=1148, y=1127, z=12}, text="Entering The Foundry"}, [3005] = {pos={x=1113, y=1254, z=12}, text="Entering The Ward of Madareth"}, [3006] = {pos={x=1043, y=1133, z=13}, text="Entering The Battlefield"}, [3007] = {pos={x=1148, y=1254, z=12}, text="Entering The Ward of The Demon Twins"}, [3008] = {pos={x=1195, y=1201, z=13}, text="Entering The Soul Wells"}, [3009] = {pos={x=1187, y=1213, z=12}, text="Entering The Ward of Annihilon"}, [3010] = {pos={x=1193, y=1254, z=12}, text="Entering The Ward of Hellgorak"} }, storage=56123,---storage usado nos teleportes da sala central walkback="You don't have enough energy to enter this portal",---Messagem que aparece se vc nao poder entrar no teleport da sala central e={} }----nao modificar, se nao tiver o creaturesaywithdelay} function onStepIn(cid, item, position, fromPosition) if isPlayer(cid) == TRUE then if(config.bosses[item.actionid]) then local t= config.bosses[item.actionid] if getPlayerStorageValue(cid, config.storage)< t.value then setPlayerStorageValue(cid, config.storage, t.value) end doTeleportThing(cid, t.pos) doCreatureSayWithDelay(cid,t.text,19,1, config.e) elseif(config.mainroom[item.actionid]) then local t= config.mainroom[item.actionid] if getPlayerStorageValue(cid, config.storage)>=t.value then doTeleportThing(cid, t.pos) doCreatureSayWithDelay(cid,t.text,19,1,config.e) else doTeleportThing(cid, fromPosition) doCreatureSay(cid, config.walkback, 19) end elseif(config.portals[item.actionid]) then local t= config.portals[item.actionid] doTeleportThing(cid, t.pos) doCreatureSayWithDelay(cid,t.text,19,1,config.e) end end end E em movements.xml: <movevent type="StepIn" itemid="9773" event="script" value="inquisition.lua"/> E em data/creaturescripts adicione o inquisition.lua e coloque: local config = { timeToRemove = 180, -- segundos message = "Go into the teleport in 180 seconds, else it will disappear.", teleportId = 9773, bosses = { -- Nome do monstro, Posicao do teleporte ["Ushuriel"] = { pos={x=1097, y=1214, z=12, stackpos=1}, aid=1001 }, ["Zugurosh"] = { pos={x=1129, y=1213, z=12, stackpos=1}, aid=1002}, ["Madareth"] = { pos={x=1112, y=1254, z=12, stackpos=1}, aid=1003}, ["Annihilon"] = { pos={x=1187, y=1214, z=12, stackpos=1}, aid=1005}, ["Hellgorak"] = { pos={x=1192, y=1256, z=12, stackpos=1}, aid=1006} }, brothers ={ ["Golgordan"] = {pos={x=1147, y=1254, z=12, stackpos=1},aid=1004, brother = "Latrivan"}, ["Latrivan"] = {pos={x=1147, y=1254, z=12, stackpos=1},aid=1004, brother = "Golgordan"}, brothersArea ={ fromPos = {x = 1139, y = 1244, z = 12}, toPos = {x = 1155, y = 1254, z = 12} } } } local function change(position) doItemSetAttribute(getTileItemById(position, config.teleportId).uid, "aid", 3000) return TRUE end function onKill(cid, target, lastHit) if(config.bosses[getCreatureName(target)]) then local t = config.bosses[getCreatureName(target)] local position = t.pos doItemSetAttribute(getTileItemById(position, config.teleportId).uid, "aid", t.aid) doCreatureSay(cid, config.message, TALKTYPE_ORANGE_1) addEvent(change, config.timeToRemove * 1000, position) elseif(config.brothers[getCreatureName(target)]) then local t = config.brothers[getCreatureName(target)] local brother = getCreatureByName(t.brother) if(isMonster(brother) == true) then if(isInRange(getCreaturePosition(brother), config.brothers.brothersArea.fromPos, config.brothers.brothersArea.toPos) == true) then return TRUE end else local position = t.pos doItemSetAttribute(getTileItemById(position, config.teleportId).uid, "aid", t.aid) doItemSetAttribute(teleport, "aid", t.aid) doCreatureSay(cid, config.message, TALKTYPE_ORANGE_1) addEvent(removal, config.timeToRemove * 1000, position) end end return TRUE end E em creaturescripts.xml: <event type="kill" name="Inquisition" event="script" value="inquisition.lua"/> E finalmente em cada boss da inquistion deve-se adicionar isso após: </flags> Este codigo: <script> <event name="Inquisition"/> </script> Explicando: Os teleportes da sala principal deverão ter os Actionid respectivos no script. Sendo que cada um levará ao seu devido lugar apenas se o player já tiver passado nele. Quando o boss morre, o script modifica o teleporte para o player poder voltar para a sala principal. -Todo teleporte de Boss deverá ter o actionid 3000 como default. Pois senão o player não poderá voltar. -Existem maiores explicações no proprio arquivo. Creditos:zakius
-
Legal a ideia,essa semana ainda to carregado Semana que vem vou voltar e quem sabe ja participo desse ou do proximo. Creature Scripts eu acho legal, apesar de eu não domina-lo completamente Dá para ter diversas ideias.
-
[Arquivado]Scripts #3 -Planejando E Inventando
tópico respondeu ao tibiaa4e de tibiaa4e em Noticias - Arquivo
Para começar suas duvidas giram em tornos de variaveis Uma variavel é um espaço na memoria que guarda algo. Na programação damos um nome Imagine que a memoria seria um armario escolar americano e uma variavel seria um armario Damos qual nome quiser, e guardamos o que quiser. Existem regras claro, porém no LUA é simples. Gatepos foi dado por qualquer motivo. Poderia ser pedraposicao. É indiferente Sobre o function onUse você está indicando que é uma ação de clicar em algo. O que tem de parametros que pode mudar. -
Faz tempo que não levo um elogio Ao contrario do Brasil O jornal ta indo com tudo!!
-
[Arquivado]Scripts #3 -Planejando E Inventando
um tópico no fórum postou tibiaa4e Noticias - Arquivo
Aqui estamos nós denovo, para falar de scripts! Obvio a coluna se chama assim... Depois de muita ladainha vamos finalmente criar um script, mas não da maneira errada que muito de nós fazemos, e sim de uma maneira "correta". O que aconteceria se mandassemos 50 pedreiros construirem um predio? Provavelmente fariam ele, mas será que teria a mesma segurança do que com um engenheiro? Respondido Agora mandando 50 pedreiros fazerem um serviço como construir um comodo numa casa antiga. Sem duvida eles fariam muito bem sem nenhuma pessoa superior. O engenheiro seria uma alusão ao planejamento. Sem planejamento é muito complicado fazer algo grande. Um script grande como uma arena, dominação de castelo, uma quest grande como inquisition. Porém scripts mais simples como vara de pescar, uma quest simples como demon helmet, já se pode fazer mais rapidamente. Quando se é programador, dependendo da empresa temos os coordenadores, analista que fazem o planejamento, fazem um UML (ou diagramas de blocos) no nosso caso um papel com umas anotações basicas já são uteis. Um exemplo pratico de quest simples. Demon Helmet Vamos fazer o planejamento dela, que apesar de tosco se você tentar em algo que deseja fazer ajuda. Estou ignorando as recompensas. O que é? Uma sala com -Alguns demons e banshees -Uma sala de recompensa com três baus fechada com uma pedra -Uma alavanca. Ai a tal da quest (foto n eh minha) O que faz? -Quando você clica na alavanca, a pedra some liberando a passagem para a sala de recompensa -Cria um teleport de saida. Quando você clica denovo, a pedra volta e o teleport some. Como eu faço? Se você leu o possibilidades vai saber, provavelmente esse é facil, outros serão dificeis. Bem o que faz? Se você leu a unica ação que fazemos é usar a alavanca. Ou seja evento onUse que é uma ACTION Já sabemos que é uma action, então vamos começar nosso script. Vamos supor que ja temos o mapa feito. Criaremos a alavanca as quest e tudo mais. Qual é a melhor maneira de se identificar uma UNICA alavanca que fará uma ação? Meio explicito usando UniqueID. No meu caso o UID (Unique ID) é 8550 por organização pessoal. Então começaremos nosso script com a base de toda action. function onUse(cid, item, frompos, item2, topos) end Ah mas tal script ta assim function onUse(cid, item, pos, itemEx, topos) end DANE-SE! è mesma coisa, contando que você coloque em todas funções os parametros cid,item,pos,itemex como está em cima, não fará diferença Bem agora teremos que fazer o script identificar o item... Esse script será direcionado para o UID 8550. Porém a alavanca tem dois estados ativo(1946) e desativo (1945). Vamos identificar adicionando if item.itemid == 1945 then Então ai ele pergunta se ela está desativada E para finalizar colocaremos um end e um else caso ela seja 1946. Por que não colocamos um else if? -Porque uma alavanca ou é 1945 ou 1946. Então se não for 1945 é 1946 e vice versa. Ficando assim function onUse(cid, item, frompos, item2, topos) if item.itemid == 1945 then else end end Vamos codificar caso ela esteja desativada. Nesse caso ela removerá a pedra e criará o teleport e ativará a alavanca. Primeiro vamos identificar a posição que o teleport será criado,a posição da alavanca e aonde iremos quando entramos no teleport. No meu caso é: local gatepos = {x=1069, y=653, z=15, stackpos=1} -- posição da pedra local telepos = {x=1071, y=652, z=15, stackpos=1} -- posição do teleport local gopos = {x=1073, y=653, z=14, stackpos=1} -- aonde iremos depois E seus thingpos: local getgate = getThingfromPos(gatepos) local gettele = getThingfromPos(telepos) E agora removeremos a pedra, transformaremos a alavanca e criaremos o teleport doRemoveItem(getgate.uid,1) --Remove o teleport doTransformItem(item.uid,item.itemid+1) -- Transforme a alavanca doCreateTeleport(1387, gopos, telepos)--cria o teleport Pronto! 80% está feito. Porque? a parte da alavanca ativada, é apenas inverter nossa ação. Criaremos a pedra,desativamos a avalanca e tiramos o teleport doCreateItem(1355,1,gatepos) doTransformItem(item.uid,item.itemid-1) doRemoveItem(gettele.uid,1) E ainda melhoramos meu script antigo que foi feito sem planejamento. function onUse(cid, item, frompos, item2, topos) local gatepos = {x=1069, y=653, z=15, stackpos=1} local telepos = {x=1071, y=652, z=15, stackpos=1} local gopos = {x=1073, y=653, z=14, stackpos=1} local getgate = getThingfromPos(gatepos) local gettele = getThingfromPos(telepos) if item.itemid == 1945 then doRemoveItem(getgate.uid,1) doTransformItem(item.uid,item.itemid+1) doCreateTeleport(1387, gopos, telepos) else doCreateItem(1355,1,gatepos) doTransformItem(item.uid,item.itemid-1) doRemoveItem(gettele.uid,1) end end Não planejou? Se lascou! Bem aqui está um script planejado. Mas planejamento não quer dizer que não tenha erros. Mas fica mais facil encontra-los. Bem deixo a cargo de quem ler isso encontrar erros existente ai. Eu encontrei dois. Que será tema do proximo artigo. Evitando problemas. Até lá -
Morto
- Mostrar comentários anteriores %s mais
-
tibiaa4e - Morto
oxi :d
ahsuqisq msn nem to entrando direito :Z
se eu entro entro offline mas ninguem fica on hA
steam eu to la :z
deixei ate um comentario pra tu uma vez
SLBR o nome la :p
-
Amigo Temos aqui uma boa parte de comentarios E esse script sim funciona perfeitamente Você deve ter errado no metodo de inseri-lo no ot Veja novamente como o fez E se há erros no console E não fale que está bugado Isso não ajuda em nada.
-
[Arquivado][Arquivado]Script #2 - Possibilidades
um tópico no fórum postou tibiaa4e Noticias - Arquivo
Eu estou atrasado nas minhas postagens. Como todos ja sabem, meu problema principal é a falta de tempo e problemas pessoais (mulher). Nessa segunda parte, pretendo falar mais sobre programação. Eu costumo dizer que todos devem saber o que podem e não podem fazer, isso é o minimo que um bom scripter tem que saber. O que me irrita muitos scripters, é que as pessoas pedem coisas absurdas ou coisas gigantes, achando que além de bondosos somos trouxas descoupados. Claro que normalmente o outro nem imagina que é um coisa grotesca ou mirabolante. A pessoa que pede um sistema de dominação de castelo, pensa que é assim que se faz Então, voltando ao assunto, vamos fazer um levantamento das possibilidades que podemos ter em scritps em otservers. Actions - Podemos clicar em algo, ou usar certos itens em outros. Portanto podemos fazer chaves magicas, cartas explosivas, portas que te teleportam pro inferno e coisas do tipo. Movements - Podemos colocar e remover algo de um local, podemos andar e sair de outro lugar. O que nos permite fazer buracos que te levam pro inferno, armadilhas egipcias que ao remover um vaso aparecem milhares de criaturas, andar em locais e ganhar dinheiro. TalkActions - Podemos falar algo. Então podemos criar coisas como recharge potions e todos seus potions recarregarem, alguma palavra magica que abra uma porta se você tiver em um certo local. Creature Scripts - Até onde eu vi, fazer eventos quando matamos alguem, quando saimos do jogo, entramos no jogo quando matamos alguem, quando morremos. Então ao matar um Pharao poderá aparecer uma horda de mortos vivos, invadindo a cidade, fazer as maravilhosas tasks do tibia, mudar totalmente a morte por LUA. Global Events - Esses também são bons, mais sinceramente não mexi com eles. Temos nele limpar o server, salvar e tudo mais. Sabendo basicamente disso, vemos que temos um leque enorme de variedades para fazermos. E ainda mais, quando sabemos que eles são agrupaveis, ou seja juntando tudo isso temos milhares de coisas para fazermos. Ainda repito que para novos viajantes irem com calma. Nenhum piloto começa pilotando um Formula 1. Tente entender cada um deles em um nivel medio, que você conseguirá juntar todos. Isso que dá tentar dirigir F1, antes de aprender a dirigir acima dos 80 Bem, quem já tem ou acha que tem um bom conhecimento pode começar a criar seus scripts gigantes e mirabolantes. Aconselho no inicio se basear em quests do Tibia Real. Demon Helmet é um bom começo, junta Actions com movements. Depois você sentirá automaticamente que tem capacidade de fazer algo melhor. Tá dificil? Otimo! ninguem aprende nada se dando bem, temos que se esforçar. Eu sempre digo que hoje em dia é milhares de vezes mais facil aprender scripter do que quando eu comecei. Eu tinha ajuda do Frerety e Soulblaster e só. Tutoriais eram poucos, e a maioria diziam a mesma coisa. Claro que não tinhamos as maravilhosas pessoas que enfiam vetor, classes em scripts de 4 linhas apenas para se mostrar, ou para confudirem os lammers. Basicamente isso é o que tenho para falar sobre a parte II de scripts. Você tendo em mente o que pode e não pode fazer, você não perderá tempo tentando fazer algo impossivel. Não tem fazer algo impossivel E saiba diferenciar o que é possivel, e o que você consegue fazer. Eu até hoje tento fazer tudo por mim mesmo, e se não consigo, realmente eu desisto. Claro que certas coisas você nunca desiste e deve persistir, mas você tem que saber se há condições de faze-lô. Se acha que é melhor, junte uns 2 amigos e faça juntos, algumas pessoas não trabalham bem em equipe, outras melhoram sua perfomance. Espero que esta coluna tenha ajudado a todos. E continuarei escrevendo. Até mais. -
Bom dia, Boa tarde e Boa noite. Não sei que horario você está lendo isto, mas agradeço pela atenção. Quando aceitei participar desse projeto esperava ter mais tempo para me dedicar, porém esses dias trabalho,vida pessoal me atrapalho muito um pouco. Fiquei pensando algo interressante para falar nessa primeira parte, meu tema é esse ao lado... Scripts! É uma área grande e que aborda muito temas. Pensei que tal no começo... Bem o tema é LUA, a maioria dos scripters são freelancers, começam apenas para editar algo, fazer alguma coisa legal e normalmente besta. Primeira coisa que pensa a pessoa escutando que você programa em LUA Para quem ainda não sabe LUA é Brasileira e Carioca (talvez seu unico defeito), foi feita na PUC-Rio por Roberto Ierusalimschy, Luiz Henrique de Figueiredo e Waldemar Celes eles eram da TECGRAF (Tecnologia em Computação Gráfica) e criaram para um projeto para a Petrobras. Primeira Ultima coisa que um paulista deseja ao RJ. A principal caracteristica dele é que ele é leve e flexivel, podendo adaptar-se com varias outras linguagens, como nosso caso XML e C++. Bem metade dos scripters não sabe disso, 2/3 não querem saber, restando 1/3 que são os scripters que se interressam e tem uma chance maior de futuro nessa área. Claro que LUA não é a maior linguagem de programação e sem dúvida não irá dar um emprego para você, até porque ela é mais usada em projetos de jogos, como Ragnarok e Warcraft. Até alguns aparelhos como microondas utilizam essa linguagem quando são simples, quando se tornam mais complexos já é utilizado o bom e velho C ou JAVA. Outra coisa é que o LUA é a linguagem de script mais rapida e mais usada em jogos. Bem voltando ao nosso bom e velho tibia, hoje em dia quase tudo é editavel em LUA, praticamente abandonando o velho C++, que apesar de poderoso, é mais complexo para os novos scripters que infelizmente apesar da extrema maior versatilidade e facilidade para se fazer codigos, vemos codigos pobres e mal feitos, alguns com uso incorreto de loopings e outros recurso que tornam complexo para novatos ou até para mais experientes. Nessa parte sugiro aos novos scripters que acompanharão essa minha coluna a sempre se preparar da melhor maneira. Para começar a ser um bom scripter recomendo certos passos: 1-Conhecimento em inglês: Obvio, sem ele você ficará perdidos nas coisas mais simples, não saberá que if significa SE e se perderá totalmente, pois as funções criadas para otserver são em inglês e sabendo você não ficará na dúvida para saber o que faz a doSendTextMessage. 2-Boas fontes: Um script que você sabe como funciona, como a Fishing Rod, te ajuda a saber o basico de um scipt, apesar da equipe TFS adorar enfiar classes e vetores aonde não prescisa (ou podiam evitar em certos casos), é facilmente compreensivel. 3-Programas auxiliares: Eu aconselho o NOTEPAD++, que depois passarei o link, pois ele exibe em cores os codigos e evita que o código fique em apenas uma linha, para quem não usa ele. Deixar o Map Editor aberto para verificar as IDS, poupa um tempo. 4-Vontade: Não adianta você querer fazer isso forçado, deve-se ter paciencia e vontade. Para quem não sabe quando está com sono, você absorve pouquissima informação de que aprende. Pois é apenas na hora de dormir que o cerebro grava as informações. Ninguem te força a programar. Pelo menos não que eu conheça 5-Objetivo: Terminantemente é mais facil aprender quando se tem um objetivo, é bom você querer um script para fazer, de preferencia simples, normalmente quem começa a aprender, quer fazer o script gigante que nenhum programador mais experiente aceitou fazer e acaba ficando com raiva da linguagem. Tente fazer algo simples, mas objetivo. Seguindo esses passos, você não será um scripter (Estagiario de Programador) mais terá ferramentas e noção boa de como começar ou se aprimorar. ta bom exagerei estagiario eh osso Eu por exemplo comecei em scripts LUA na epoca de Ouro do Xtibia, quando o forum ficava lerdo de tanta gente on e choviam scripts. E acabei fazendo ETEC (Curso tecnico do governo de SP) e hoje trabalho com delphi. Para quem deseja seguir carreira é um começo para saber se não está entrando em alguma área que não vai gostar, e temos varias ramificações, como WEB. PS: EU amo cariocas...
-
Pesquisa De Performance/conteúdo/organização Xtibia.com
tópico respondeu ao Administrador de tibiaa4e em Lixeira Pública
Eu algum tempo ja falei o problema pelo menos da area de scripting Antigamente tinha um nivel altissimo de script aqui, muitas pessoas mesmo Ninguem dava valor a elas, todas pararam ou sairam do forum... O Xtibia começo a apoiar versões ridiculas de servidores online ao inves dos scripters Ai deu no que deu... Agora é esperar uma nova geração, que infelizmente ta dificil... So para demonstrar como caiu o nivel Antigamente pessoas da equipe eram selecionadas a dedo, hoje um cara que tem 1 mês de forum ja entra na equipe e 1 semana depois sai -
Eu reporto muitos topicos Mereço 1 ponto neh 0 eh feio
-
Bem feito... Só acho bom mesmo colocar entre a variavel code Ajuda a identificar erros
-
Conte Uma Mentira E Ganhe Um Pt De 1 Mês
tópico respondeu ao Rafael Medeiros de tibiaa4e em Noticias
Ahuaah tenho varias... Dia da Mentira eh meu aniversario... Provavelmente ganharei varios chutes parabens... vamos ver se faturo @topico A mentira é para ser contada nesse topico? -
legal eu ja tinha feito esse a um ano Porém como não terminei a dream challenge inteira nunca postei... Só seria bom você reorganizar o topico Principalmente o script
-
Entendendo Ipairs E A Diferença Entre Ele E O Pairs
tópico respondeu ao Antharaz de tibiaa4e em Tutoriais de Scripting
Adorei a explicação Quando aprendi o meu amigo que não quero citar o nome Frerety Deu uma explicação muito confusa... Essa ai ajudará os novos scripters -
Eu estava vagabundando meditando... E lembrei das injustiças dos potions... AI decidi fazer uma potion justa para leveis altos... Portanto eu apenas modifique a Ultimate Healing Potion, Great Mana Potion e a Great Spirit Potion Deixando elas aumentando por level... E ainda fiz outra modificação que ao inves de você comprar inumeros potions Você apenas compra um e ao usar ele gasta o valor... Assim, se vocês estiver caçando e pegar dinheiro Vai gastando... Não prescisando sair do hunt o script é simples de adicionar Apenas troque o que há em seu potion.lua localizado em actions/scripts/liquids por: --Modified by Ta4e-- --For use money and boost last potions-- local config = { removeOnUse = "no", usableOnTarget = "yes", -- can be used on target? (fe. healing friend) splashable = "no", realAnimation = "no", -- make text effect visible only for players in range 1x1 healthMultiplier = 1.0, manaMultiplier = 1.0 } config.removeOnUse = getBooleanFromString(config.removeOnUse) config.usableOnTarget = getBooleanFromString(config.usableOnTarget) config.splashable = getBooleanFromString(config.splashable) config.realAnimation = getBooleanFromString(config.realAnimation) local exhaust = createConditionObject(CONDITION_EXHAUST) setConditionParam(exhaust, CONDITION_PARAM_TICKS, (getConfigInfo('timeBetweenExActions') - 100)) function onUse(cid, item, fromPosition, itemEx, toPosition) calc1 = getPlayerLevel(cid) * 5 calc2 = getPlayerLevel(cid) * 6 calc3 = getPlayerLevel(cid) * 2 calc4 = getPlayerLevel(cid) * 3 calc5 = getPlayerLevel(cid) * 4 local POTIONS = { [8704] = {empty = 7636, splash = 2, health = {50, 100}, price = 20}, -- small health potion [7618] = {empty = 7636, splash = 2, health = {100, 200}, price = 45}, -- health potion [7588] = {empty = 7634, splash = 2, health = {200, 400}, level = 50, vocations = {3, 4, 7, 8}, vocStr = "knights and paladins", price = 100}, -- strong health potion [7591] = {empty = 7635, splash = 2, health = {500, 700}, level = 80, vocations = {4, 8}, vocStr = "knights", price = 190}, -- great health potion [8473] = {empty = 7635, splash = 2, health = {calc1,calc2}, level = 130, vocations = {4, 8}, vocStr = "knights", price = 310}, -- ultimate health potion [7620] = {empty = 7636, splash = 7, mana = {70, 130}, price = 50}, -- mana potion [7589] = {empty = 7634, splash = 7, mana = {110, 190}, level = 50, vocations = {1, 2, 3, 5, 6, 7}, vocStr = "sorcerers, druids and paladins", price = 80}, -- strong mana potion [7590] = {empty = 7635, splash = 7, mana = {calc3, calc4}, level = 80, vocations = {1, 2, 5, 6}, vocStr = "sorcerers and druids", price = 120}, -- great mana potion [8472] = {empty = 7635, splash = 3, health = {calc3, calc5}, mana = {calc2, calc3}, level = 80, vocations = {3, 7}, vocStr = "paladins", price = 190} -- great spirit potion } local potion = POTIONS[item.itemid] if(not potion) then return false end if(not isPlayer(itemEx.uid) or (not config.usableOnTarget and cid ~= itemEx.uid)) then if(not config.splashable) then return false end if(toPosition.x == CONTAINER_POSITION) then toPosition = getThingPos(item.uid) end doDecayItem(doCreateItem(2016, potion.splash, toPosition)) return true end if(hasCondition(cid, CONDITION_EXHAUST_HEAL)) then doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED) return true end if(((potion.level and getPlayerLevel(cid) < potion.level) or (potion.vocations and not isInArray(potion.vocations, getPlayerVocation(cid)))) and not getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES)) then doCreatureSay(itemEx.uid, "Only " .. potion.vocStr .. (potion.level and (" of level " .. potion.level) or "") .. " or above may drink this fluid.", TALKTYPE_ORANGE_1) return true end if(doPlayerRemoveMoney(cid, potion.price) == TRUE) then local health = potion.health if(health and not doCreatureAddHealth(itemEx.uid, math.ceil(math.random(health[1], health[2]) * config.healthMultiplier))) then return false end local mana = potion.mana if(mana and not doPlayerAddMana(itemEx.uid, math.ceil(math.random(mana[1], mana[2]) * config.manaMultiplier))) then return false end doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_MAGIC_BLUE) if(not realAnimation) then doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1) else for i, tid in ipairs(getSpectators(getCreaturePosition(cid), 1, 1)) do if(isPlayer(tid)) then doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1, false, tid) end end end doAddCondition(cid, exhaust) if(not potion.empty or config.removeOnUse) then doRemoveItem(item.uid) return true end return true else doCreatureSay(itemEx.uid, "You don't have money to use", TALKTYPE_ORANGE_1) return false end end Bem espero comentarios
-
hehe, curti a ideia... Se der tempo eu termino um aqui e envio... Esses dias to ocupado ao ² Boa sorte ai quem participar
-
Depende... Normalmente deixa de funcionar todos esses itens ai... Recomendo arrumar nâo é tão dificil assim
-
Dúvida Sanada Tópico Fechado
-
Outro script que achei nos foruns internacionais Adicione o arquivo stamina.lua function onUse(cid, item, fromPosition, itemEx, toPosition) local cfg = {} cfg.refuel = 42 * 60 * 1000 if(getPlayerStamina(cid) >= cfg.refuel) then doPlayerSendCancel(cid, "Your stamina is already full.") elseif(not isPremium(cid)) then doPlayerSendCancel(cid, "You must have a premium account.") else doPlayerSetStamina(cid, cfg.refuel) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Your stamina has been refilled.") doRemoveItem(item.uid) end return true end E em actions.xml <action itemid="ID" script="stamina.lua"/> Escolha um ID e se divirta Créditos:backy
-
talkaction [Talkaction] Espiar Equipamentos
um tópico no fórum postou tibiaa4e Actions e Talkactions
Uma action tosca, mais legal na qual você descobre o equipamento do outro player Funcionado como a exiva. -- Equipment spy by Azi [ersiu] -- function getItemsInContainer(cont, sep) local text = "" local tsep = "" local count = "" for i=1, sep do tsep = tsep.."-" end tsep = tsep..">" for i=0, getContainerSize(cont.uid)-1 do local item = getContainerItem(cont.uid, i) if isContainer(item.uid) == FALSE then if item.type > 0 then count = "("..item.type.."x)" end text = text.."\n"..tsep..getItemNameById(item.itemid).." "..count else if getContainerSize(item.uid) > 0 then text = text.."\n"..tsep..getItemNameById(item.itemid) text = text..getItemsInContainer(item, sep+2) else text = text.."\n"..tsep..getItemNameById(item.itemid) end end end return text end function onSay(cid, words, param, channel) if(param == "") then doPlayerSendCancel(cid, "Command requires param.") return TRUE end local slotName = {"Head Slot", "Amulet Slot", "Backpack Slot", "Armor Slot", "Right Hand", "Left Hand", "Legs Slot", "Feet Slot", "Ring Slot", "Ammo Slot"} local player = getPlayerByNameWildcard(param) if isPlayer(player) == TRUE then local text = getPlayerName(player).."'s Equipment: " for i=1, 10 do text = text.."\n\n" local item = getPlayerSlotItem(player, i) if item.itemid > 0 then if isContainer(item.uid) == TRUE then text = text..slotName[i]..": "..getItemNameById(item.itemid)..getItemsInContainer(item, 1) else text = text..slotName[i]..": "..getItemNameById(item.itemid) end else text = text..slotName[i]..": Empty" end end doShowTextDialog(cid, 6579, text) else doPlayerSendCancel(cid, "This player is not online.") end return TRUE end e em talkactions.xml adicione: <talkaction log="yes" access="3" words="!equipment" event="script" value="equipment.lua"/> O access 3 so permite gods ver se quiser que qualquer um use use access 0 Creditos: Azi -
Amigo Diga o erro que dá no console Por que não temos bola de cristal
-
[Runes] Magic Wall E Fire Bomb Dando Pz Lock!
tópico respondeu ao aewaew de tibiaa4e em Lixeira Pública
Só para avisar que no tibia elas estão assim também Possivelmente o que o amigo disse acima arrumará Se não apenas nas sources mesmo
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.