Mock 32 #1 Posted November 16, 2010 (edited) Eu percebi que ninguem no mundo do otserv ja tinha usado as funçoes seno e cosseno. Ai so pq eu tava atoa³ fiz 2 funçoes que podem vir a ser MUITO uteis. A segunda a roratePos você pode rodar uma posiçao, assim vc define o centro e o rai, em seguida vc pore rodar o raio, e a ponta do raio vai ser a posição, vc pdoe rodar 360º, assim pode fazer arcos, pode desenharu ma circunferencia e talz. Até se vc quiser fazer spells que rodam sem ter que fazer 1 area para cada passo. Eu rodei isso: require('gd') im = gd.createTrueColor(500, 500) for ang=1,360 do local novo = rotatePos({x=250,y=250},100,ang) im:setPixel(math.floor(novo.x),math.floor(novo.y),im:colorAllocate(255, 0,0)) end im:png("out.png") os.execute("out.png") E saiu isso: Ou seja eu desenhei uma circunferencia XD Com a outra funão você pega um ponto, e em seguida aponta uma distancia e um angulo e ele retorna onde fica, você pode por exemplo ao inves de fazer spelsl que saem em angolos digamos "retos" 360º, 90º ou 45º (spelsl na diagonal ou na frente do player) vc pode soltar spelsl que saem tortas, entre a parte reta e a diagonal xD Em fim muitas utilidades. Ta aki as funçoes: function getPosByAngle(pos,distance,ang) --By Mock the bear local ang = math.rad(ang) pos.x = (math.cos(ang)*pos.x)+distance pos.y = (math.sin(ang)*pos.y)+distance return pos end function rotatePos(center,radius,ang) --By Mock the bear ang = math.rad(ang) center.x = (radius * math.cos(ang) - radius * math.sin(ang))+center.x center.y = (radius * math.sin(ang) + radius * math.cos(ang))+center.y return center end Edited January 23, 2011 by Mickfern Share this post Link to post Share on other sites
Biozard 0 #2 Posted November 16, 2010 nossa,nao entendi quase nada...como vou colocar isso numa spells? Share this post Link to post Share on other sites
Mock 32 #3 Posted November 16, 2010 ai vc precisa saber mto de scripting e mto de math Share this post Link to post Share on other sites
ADM MaX DE 0 #4 Posted November 17, 2010 Até intendi um pouco, mais pelas fotos mesmo, porque pelo texto... :S Mas muito boas as funções, vou ver se uso em algo, gostei da idéia de spells na diagonal sem ser reta \ Share this post Link to post Share on other sites
Biozard 0 #5 Posted November 20, 2010 alguem posta 1 exemplo de spell que usa essa função ai por favor... Share this post Link to post Share on other sites
tigerx2 1 #6 Posted November 20, 2010 Tô estudando esse bang de seno, cosseno e tangente, entendi como funciona, mas não sei como usar Mas parabéns pela ideia ai de estar usando uma coisa que ninguém tinha pensado ;d Share this post Link to post Share on other sites
Mock 32 #7 Posted November 25, 2010 (edited) oia ae: function onCastSpell(cid) for ang=1,12 do local p = rotatePos(getPlayerPosition(cid),4,ang*30) doCombatAreaHealth(cid,p,[[spell params]]) end end ---ou function onCastSpell(cid) local ang = math.random(0,360) for i=1,5 do local p = getPosByAngle(getCreaturePosition(cid),i,ang) doCombatAreaHealth(cid,p,[[spell params]]) end end Edited January 23, 2011 by Mickfern Share this post Link to post Share on other sites
Vítor Amaral 1 #8 Posted November 25, 2010 achei muito interessante. vc é bom de mat, né mock? seu raciocínio parece muito bom para esse lado de lógica tb. Share this post Link to post Share on other sites
Marcelo Côrtes 0 #9 Posted June 13, 2011 -Revivendo Capaverde já tinha feito uma função parecida http://forums.otserv.com.br/showthread.php?26646-rotateAreaToRight%28area%29 e até uma magia http://forums.otserv.com.br/showthread.php?26660-Hurricane-%28furac%E3o%29-de-fogo Enfim, acho que as duas tão bem diferentes... ele fez muita coisa a mais, não sei se foi sem necessidade ou acrescentando features. De qualquer modo, parabéns Share this post Link to post Share on other sites