Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- angulacaoFinal(Float:x, Float:y, Float:xn, Float:yn) {
- static Float: angulacao;
- angulacao = atan2(x - xn, y - yn);
- if(angulacao > 360) angulacao-=360;
- else if(angulacao < 0) angulacao+=360;
- return _: (angulacao) ;
- }
- checarObstaculos(Float: x, Float: y, Float: xn, Float: yn, Float: zn) {
- // declarar e pegar angulação
- static Float: angulo;
- angulo = - (Float: angulacaoFinal(x,y, xn, yn));
- // desvia quando o muro tiver proximo a 1.5 metros
- x += (1.5 * floatsin(angulo, degrees)),
- y += (1.5 * floatcos(angulo, degrees));
- MapAndreas_FindZ_For2DCoord(x, y, angulo);
- // desvia estruturas maiores que 2 metros
- return ( (angulo) > (zn + 2.0) );
- }
- desviarObstaulo(id, Float: x, Float: y, Float: xn, Float: yn, Float: zn) {
- static Float: angulo, lado;
- angulo = - (Float: angulacaoFinal(x,y, xn, yn)) ;
- // desviar para esquerda
- if( 180 > angulo > 0) {
- angulo -= 90;
- if(angulo > 360) angulo-=360;
- else if(angulo < 0) angulo+=360;
- }
- // desviar para direita
- else {
- angulo += 90;
- if(angulo > 360) angulo-=360;
- else if(angulo < 0) angulo+=360;
- }
- xn += (1.5 * floatsin(angulo, degrees)),
- yn += (1.5 * floatcos(angulo, degrees));
- MapAndreas_FindZ_For2DCoord(xn, yn, angulo);
- if ( (angulo) > (zn + 2.0) ) {
- if(lado == 1) {
- angulo += 180 ;
- }
- else {
- angulo -= 180 ;
- }
- }
- // funcao para mover o objeto
- // ou MOVERNPC
- return MoveRNPC(id, xn, yn, angulo, 0.0083);
- }
- ////////////////////////////////////////////////////////////////////////
- //
- // MODO DE USO
- /*
- // em um temporizador de mais ou menos 0100 a 1500 ms
- if(checarObstaculos( npcid, y, npcPos[0], npcPos[1], npcPos[2])) {
- desviarObstaulo(npcid, x, y, npcPos[0], npcPos[1], npcPos[2] ) ;
- }
- else {
- MoveRNPC(npcid, x, y-0.1, z, 0.0083);
- }
- */
- ///////////////////////////////////////////////////////////////////////
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement