Crie Um Jogo 3d de Gerra.

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Crie Um Jogo 3d de Gerra.

Mensagem por Matheusgames em Dom 07 Fev 2010, 21:43

Primeiro vamos começar pelos os scripts crie um grupo chamado drawing functions, e vector math, e câmera scripts

N°1 no grupo drawing functions crie o script chamado: draw_3d_point e coloque esse codigo aqui:

// draw_3d_point(x,y,z,color);

var xx1, yy1;

argument2 *= 10;

xfrom = global.xfrom; xto = global.xto; xup = global.xup;
yfrom = global.yfrom; yto = global.yto; yup = global.yup;
zfrom = global.zfrom; zto = global.zto; zup = global.zup;

angle = global.angle; ratio = global.aspect_ratio;

get_3d_2d(xfrom,yfrom,zfrom, xto,yto,zto, xup,yup,zup, angle,ratio, argument0,argument1,argument2);
{ xx1 = xx; yy1 = yy; }

draw_set_color(argument3);
draw_point(xx1,yy1);


n°2 no grupo drawing functions crie um script e nomeio de: draw_3d_line e coloque esse código:

//draw_3d_line(x1,y1,z1,x2,y2,z2,color);

var xx1, yy1, xx2, yy2;

argument2 *= 10;
argument5 *= 10;

xfrom = global.xfrom; xto = global.xto; xup = global.xup;
yfrom = global.yfrom; yto = global.yto; yup = global.yup;
zfrom = global.zfrom; zto = global.zto; zup = global.zup;

angle = global.angle; ratio = global.aspect_ratio;

get_3d_2d(xfrom,yfrom,zfrom, xto,yto,zto, xup,yup,zup, angle,ratio, argument0,argument1,argument2); { xx1 = xx; yy1 = yy; }
get_3d_2d(xfrom,yfrom,zfrom, xto,yto,zto, xup,yup,zup, angle,ratio, argument3,argument4,argument5); { xx2 = xx; yy2 = yy; }

draw_set_color(argument6);
draw_line(xx1,yy1,xx2,yy2);


N°3 no grupo drawing functions crie um script e nomeio de: draw_3d_wall e coloque esse código aqui:

// draw_3d_wall(x1,y1,z1,x2,y2,z2,color,mesh);
var xx1, yy1, xx2, yy2, xx3, yy3, xx4, yy4;

argument2 *= 10;
argument5 *= 10;

xfrom = global.xfrom; xto = global.xto; xup = global.xup;
yfrom = global.yfrom; yto = global.yto; yup = global.yup;
zfrom = global.zfrom; zto = global.zto; zup = global.zup;

angle = global.angle; ratio = global.aspect_ratio;

get_3d_2d(xfrom,yfrom,zfrom, xto,yto,zto, xup,yup,zup, angle,ratio, argument0,argument1,argument2); { xx1 = xx; yy1 = yy; }
get_3d_2d(xfrom,yfrom,zfrom, xto,yto,zto, xup,yup,zup, angle,ratio, argument0,argument4,argument2); { xx2 = xx; yy2 = yy; }
get_3d_2d(xfrom,yfrom,zfrom, xto,yto,zto, xup,yup,zup, angle,ratio, argument3,argument1,argument5); { xx3 = xx; yy3 = yy; }
get_3d_2d(xfrom,yfrom,zfrom, xto,yto,zto, xup,yup,zup, angle,ratio, argument3,argument4,argument5); { xx4 = xx; yy4 = yy; }

draw_set_color(argument6);

draw_line(xx1,yy1,xx2,yy2);
draw_line(xx1,yy1,xx3,yy3);
draw_line(xx4,yy4,xx2,yy2);
draw_line(xx4,yy4,xx3,yy3);

if argument7 then
{ draw_line(xx1,yy1,xx4,yy4); }


N°4 no grupo drawing functions crie um script e nomeio de: draw_3d_box e coloque esse código:

//draw_cube(x1,y1,z1,x2,y2,z2,color,mesh);
var xx1, yy1, xx2, yy2, xx3, yy3, xx4, yy4, xx5, yy5, xx6, yy6, xx7, yy7, xx8, yy8;

argument2 *= 10;
argument5 *= 10;

xfrom = global.xfrom; xto = global.xto; xup = global.xup;
yfrom = global.yfrom; yto = global.yto; yup = global.yup;
zfrom = global.zfrom; zto = global.zto; zup = global.zup;

angle = global.angle; ratio = global.aspect_ratio;

get_3d_2d(xfrom,yfrom,zfrom, xto,yto,zto, xup,yup,zup, angle,ratio, argument0,argument1,argument2); { xx1 = xx; yy1 = yy; }
get_3d_2d(xfrom,yfrom,zfrom, xto,yto,zto, xup,yup,zup, angle,ratio, argument0,argument4,argument2); { xx2 = xx; yy2 = yy; }
get_3d_2d(xfrom,yfrom,zfrom, xto,yto,zto, xup,yup,zup, angle,ratio, argument3,argument1,argument2); { xx3 = xx; yy3 = yy; }
get_3d_2d(xfrom,yfrom,zfrom, xto,yto,zto, xup,yup,zup, angle,ratio, argument3,argument4,argument2); { xx4 = xx; yy4 = yy; }
get_3d_2d(xfrom,yfrom,zfrom, xto,yto,zto, xup,yup,zup, angle,ratio, argument0,argument1,argument5); { xx5 = xx; yy5 = yy; }
get_3d_2d(xfrom,yfrom,zfrom, xto,yto,zto, xup,yup,zup, angle,ratio, argument0,argument4,argument5); { xx6 = xx; yy6 = yy; }
get_3d_2d(xfrom,yfrom,zfrom, xto,yto,zto, xup,yup,zup, angle,ratio, argument3,argument1,argument5); { xx7 = xx; yy7 = yy; }
get_3d_2d(xfrom,yfrom,zfrom, xto,yto,zto, xup,yup,zup, angle,ratio, argument3,argument4,argument5); { xx8 = xx; yy8 = yy; }

draw_set_color(argument6);

draw_line(xx1,yy1,xx2,yy2);
draw_line(xx1,yy1,xx3,yy3);
draw_line(xx4,yy4,xx2,yy2);
draw_line(xx4,yy4,xx3,yy3);

draw_line(xx5,yy5,xx6,yy6);
draw_line(xx5,yy5,xx7,yy7);
draw_line(xx8,yy8,xx6,yy6);
draw_line(xx8,yy8,xx7,yy7);

draw_line(xx1,yy1,xx5,yy5);
draw_line(xx2,yy2,xx6,yy6);
draw_line(xx3,yy3,xx7,yy7);
draw_line(xx4,yy4,xx8,yy8);

if argument7 then
{
draw_line(xx1,yy1,xx7,yy7);
draw_line(xx3,yy3,xx8,yy8);
draw_line(xx2,yy2,xx5,yy5);
draw_line(xx4,yy4,xx6,yy6);

draw_line(xx1,yy1,xx4,yy4);
draw_line(xx6,yy6,xx7,yy7);
}


N°5 no grupo drawing functions crie um script e nomeio de: draw_3d_cone e coloque esse código aqui:

// draw_3d_cone(x,y,z,height,radius,steps,color);

var x1, y1, x2, y2, x3, y3, xx1, yy1, xx2, yy2, xx3, yy3;

argument2 *= 10;

xfrom = global.xfrom; xto = global.xto; xup = global.xup;
yfrom = global.yfrom; yto = global.yto; yup = global.yup;
zfrom = global.zfrom; zto = global.zto; zup = global.zup;

angle = global.angle; ratio = global.aspect_ratio;

if argument5 < 3 then { argument5 = 3; }

steps = argument5;
inc = 360 / steps;

draw_set_color(argument6);

fpx = argument0 + lengthdir_x(argument4,inc);
fpy = argument1 + lengthdir_y(argument4,inc);

i = 0; ii = inc;
repeat steps * inc
{
x1 = fpx; y1 = fpy;
x2 = argument0+lengthdir_x(argument4,i); y2 = argument1+lengthdir_y(argument4,i);
x3 = argument0+lengthdir_x(argument4,ii); y3 = argument1+lengthdir_y(argument4,ii);
xx1 = get_3d_x(global.xfrom,global.yfrom,global.zfrom, global.xto,global.yto,global.zto, global.xup,global.yup,global.zup, global.angle,global.aspect_ratio, x1,y1,argument2);
yy1 = get_3d_y(global.xfrom,global.yfrom,global.zfrom, global.xto,global.yto,global.zto, global.xup,global.yup,global.zup, global.angle,global.aspect_ratio, x1,y1,argument2);
xx2 = get_3d_x(global.xfrom,global.yfrom,global.zfrom, global.xto,global.yto,global.zto, global.xup,global.yup,global.zup, global.angle,global.aspect_ratio, x2,y2,argument2);
yy2 = get_3d_y(global.xfrom,global.yfrom,global.zfrom, global.xto,global.yto,global.zto, global.xup,global.yup,global.zup, global.angle,global.aspect_ratio, x2,y2,argument2);
xx3 = get_3d_x(global.xfrom,global.yfrom,global.zfrom, global.xto,global.yto,global.zto, global.xup,global.yup,global.zup, global.angle,global.aspect_ratio, x3,y3,argument2);
yy3 = get_3d_y(global.xfrom,global.yfrom,global.zfrom, global.xto,global.yto,global.zto, global.xup,global.yup,global.zup, global.angle,global.aspect_ratio, x3,y3,argument2);
draw_triangle(xx1,yy1,xx2,yy2,xx3,yy3,true);
i += inc; ii += inc;
}

//i = 0; ii = inc;
//repeat steps * inc
//{
// x1 = fpx; y1 = fpy;
// x2 = argument0 + lengthdir_x(argument4,i); y2 = argument1 + lengthdir_y(argument4,i);
// x3 = argument0 + lengthdir_x(argument4,ii); y3 = argument1 + lengthdir_y(argument4,ii);
// get_3d_2d(xfrom,yfrom,zfrom, xto,yto,zto, xup,yup,zup, angle,ratio, x1,y1,argument2); { xx1 = xx; yy1 = yy; }
// get_3d_2d(xfrom,yfrom,zfrom, xto,yto,zto, xup,yup,zup, angle,ratio, x2,y2,argument2); { xx2 = xx; yy2 = yy; }
// get_3d_2d(xfrom,yfrom,zfrom, xto,yto,zto, xup,yup,zup, angle,ratio, x3,y2,argument2); { xx3 = xx; yy3 = yy; }
// draw_triangle(xx1,yy1,xx2,yy2,xx3,yy3,true);
// i += inc; ii += inc;
//}


N°6 draw_3d_pyramid e coloque esse código aqui:

// Draws a 4 sided pyramid
// draw_3d_pyramid(x1,y1,z1,x2,y2,z2,color,mesh);

var xx1, yy1, xx2, yy2, xx3, yy3;

argument2 *= 10;
argument5 *= 10;

xfrom = global.xfrom; xto = global.xto; xup = global.xup;
yfrom = global.yfrom; yto = global.yto; yup = global.yup;
zfrom = global.zfrom; zto = global.zto; zup = global.zup;

angle = global.angle; ratio = global.aspect_ratio;

get_3d_2d(xfrom,yfrom,zfrom, xto,yto,zto, xup,yup,zup, angle,ratio, argument0,argument1,argument2); { xx1 = xx; yy1 = yy; }
get_3d_2d(xfrom,yfrom,zfrom, xto,yto,zto, xup,yup,zup, angle,ratio, argument0,argument4,argument2); { xx2 = xx; yy2 = yy; }
get_3d_2d(xfrom,yfrom,zfrom, xto,yto,zto, xup,yup,zup, angle,ratio, argument3,argument1,argument2); { xx3 = xx; yy3 = yy; }
get_3d_2d(xfrom,yfrom,zfrom, xto,yto,zto, xup,yup,zup, angle,ratio, argument3,argument4,argument2); { xx4 = xx; yy4 = yy; }
get_3d_2d(xfrom,yfrom,zfrom, xto,yto,zto, xup,yup,zup, angle,ratio, argument0+((argument3-argument0)/2),argument1+((argument4-argument1)/2),argument5); { xx5 = xx; yy5 = yy; }

draw_set_color(argument6);

draw_line(xx1,yy1,xx2,yy2);
draw_line(xx1,yy1,xx3,yy3);
draw_line(xx4,yy4,xx2,yy2);
draw_line(xx4,yy4,xx3,yy3);

draw_line(xx1,yy1,xx5,yy5);
draw_line(xx3,yy3,xx5,yy5);
draw_line(xx2,yy2,xx5,yy5);
draw_line(xx4,yy4,xx5,yy5);

if argument7 then
{ draw_line(xx1,yy1,xx4,yy4); }



No grupo drawing functions já deu de scripts agora vamos para o grupo vector math (ok)

N°1 no grupo vector math crie um script e nomeio de: get_3d_x e coloque esse código:

// Originally created by Yourself
// Modified by RabbidMickeyMouse
//
// get_3d_x(integer);
//
// Returns : screen x coordinate relative to the camera (integer)
//
// Example Use : variable_x = get_3d_x(self.x);

{
var px,py,pz,dx,dy,dz,uX,uY,uZ,vX,vY,vZ,mm;

dX = argument3 - argument0;
dY = argument4 - argument1;
dZ = argument5 - argument2;

mm = sqrt(dX * dX + dY * dY + dZ * dZ);

dX /= mm;
dY /= mm;
dZ /= mm;

uX = argument6;
uY = argument7;
uZ = argument8;

mm = uX * dX + uY * dY + uZ * dZ;

uX -= mm * dX;
uY -= mm * dY;
uZ -= mm * dZ;

mm = sqrt(uX * uX + uY * uY + uZ * uZ);

uX /= mm;
uY /= mm;
uZ /= mm;

tFOV = tan(argument9*pi/360);

uX *= tFOV;
uY *= tFOV;
uZ *= tFOV;

vX = uY * dZ - dY * uZ;
vY = uZ * dX - dZ * uX;
vZ = uX * dY - dX * uY;

vX *= argument10;
vY *= argument10;
vZ *= argument10;

pX = argument11 - argument0;
pY = argument12 - argument1;
pZ = argument13 - argument2;

mm = pX * dX + pY * dY + pZ * dZ;

if (mm > 0) then
{
pX /= mm;
pY /= mm;
pZ /= mm;
}

mm = (pX * vX + pY * vY + pZ * vZ) / sqr(argument10 * tFOV);
return (mm + 1) / 2 * window_get_width();
}






N°2 no grupo vector math crie um script e nomeio de: get_3d_y e coloque esse código:

// Originally created by Yourself
// Modified by RabbidMickeyMouse
//
// get_3d_y(integer);
//
// Returns : screen y coordinate relative to the camera (integer)
//
// Example Use : variable_y = get_3d_y(self.y);

{
var px,py,pz,dx,dy,dz,uX,uY,uZ,vX,vY,vZ,mm;

dX = argument3 - argument0;
dY = argument4 - argument1;
dZ = argument5 - argument2;

mm = sqrt(dX * dX + dY * dY + dZ * dZ);

dX /= mm;
dY /= mm;
dZ /= mm;

uX = argument6;
uY = argument7;
uZ = argument8;

mm = uX * dX + uY * dY + uZ * dZ;

uX -= mm * dX;
uY -= mm * dY;
uZ -= mm * dZ;

mm = sqrt(uX * uX + uY * uY + uZ * uZ);

uX /= mm;
uY /= mm;
uZ /= mm;

tFOV = tan(argument9 * pi / 360);

uX *= tFOV;
uY *= tFOV;
uZ *= tFOV;

vX = uY * dZ - dY * uZ;
vY = uZ * dX - dZ * uX;
vZ = uX * dY - dX * uY;

vX *= argument10;
vY *= argument10;
vZ *= argument10;

pX = argument11 - argument0;
pY = argument12 - argument1;
pZ = argument13 - argument2;

mm = pX * dX + pY * dY + pZ * dZ;

if (mm > 0) then
{
pX /= mm;
pY /= mm;
pZ /= mm;
}

mm = (pX * uX + pY * uY + pZ * uZ) / sqr(tFOV);
return (1 - mm) / 2 * window_get_height();
}



N°3 no grupo vector math crie um script e nomeio de: get_3d_2d
E coloque esse código :

// Originally created by Yourself
// Modified by RabbidMickeyMouse
//
// get_3d_2d(x,y,z);
//
// Returns : xx (local variable)
// yy (local variable)
//
// Example Use : get_3d_2d();
// variable_x = xx;
// variable_y = yy;

{
var px,py,pz,dx,dy,dz,uX,uY,uZ,vX,vY,vZ,mm;

dX = argument3 - argument0;
dY = argument4 - argument1;
dZ = argument5 - argument2;

mm = sqrt(dX * dX + dY * dY + dZ * dZ);

dX /= mm;
dY /= mm;
dZ /= mm;

uX = argument6;
uY = argument7;
uZ = argument8;

mm = uX * dX + uY * dY + uZ * dZ;

uX -= mm * dX;
uY -= mm * dY;
uZ -= mm * dZ;

mm = sqrt(uX * uX + uY * uY + uZ * uZ);

uX /= mm;
uY /= mm;
uZ /= mm;

tFOV = tan(argument9 * pi / 360);

uX *= tFOV;
uY *= tFOV;
uZ *= tFOV;

vX = uY * dZ - dY * uZ;
vY = uZ * dX - dZ * uX;
vZ = uX * dY - dX * uY;

vX *= argument10;
vY *= argument10;
vZ *= argument10;

pX = argument11 - argument0;
pY = argument12 - argument1;
pZ = argument13 - argument2;

mm = pX * dX + pY * dY + pZ * dZ;

if (mm > 0) then
{
pX /= mm;
pY /= mm;
pZ /= mm;
}

mm = (pX * vX + pY * vY + pZ * vZ) / sqr(argument10 * tFOV);
xx = (mm + 1) / 2 * window_get_width();

mm = (pX * uX + pY * uY + pZ * uZ) / sqr(tFOV);
yy = (1 - mm) / 2 * window_get_height();
}



N°4 no grupo vector math crie um script e nomeio de: Yourself's_3d2d_script e coloque esse código:

{
// Arguments 0-10 (first 11 arguments): Same as first 11 arguments of d3d_set_projection_ext().
// Arguments 11-13 (next 3 arguments): The point to get the 2D coordinates of.
var px,py,pz,dx,dy,dz,uX,uY,uZ,vX,vY,vZ,mm;
// Get a vector which represents the direction the camera is pointing and normalise it
dX = argument3-argument0;
dY = argument4-argument1;
dZ = argument5-argument2;
mm = sqrt(dX*dX+dY*dY+dZ*dZ);
dX /= mm;
dY /= mm;
dZ /= mm;
// Get the up vector from the arguments and orthogonalize it with the camera direction
// Orthogonalize is a fancy way of saying I'll make the vectors perpendicular
uX = argument6;
uY = argument7;
uZ = argument8;
mm = uX*dX+uY*dY+uZ*dZ;
uX -= mm*dX;
uY -= mm*dY;
uZ -= mm*dZ;
mm = sqrt(uX*uX+uY*uY+uZ*uZ);
uX /= mm;
uY /= mm;
uZ /= mm;
// Scale the vector up by the tangent of half the view angle
tFOV = tan(argument9*pi/360);
uX *= tFOV;
uY *= tFOV;
uZ *= tFOV;
// We need one more vector which is perpendicular to both the previous vectors
// So we use a cross product: v = u x d
vX = uY*dZ-dY*uZ;
vY = uZ*dX-dZ*uX;
vZ = uX*dY-dX*uY;
// This vector's magnitude is now the same as ||u||, so we scale it up by the aspect ratio
// This vector represents the 2D x-axis on your screen in 3D space
vX *= argument10;
vY *= argument10;
vZ *= argument10;

// Now to actually start doing backwards stuff
// First, let's get the desired point's coordinates relative to the camera
// ie. a vector pointing from the camera to the point in question
pX = argument11-argument0;
pY = argument12-argument1;
pZ = argument13-argument2;

// Now what we want to do is scale this vector so that it's head lies somewhere
// on an imaginary plane in front of the camera (your screen)
// Most of you don't know vector math, so I don't know why I'm commenting it.
// I guess it's just to see if you're paying attention.
mm = pX*dX+pY*dY+pZ*dZ;
if (mm > 0) {
pX /= mm;
pY /= mm;
pZ /= mm;
}
else {
return 0;
}
mm = (pX*vX+pY*vY+pZ*vZ)/sqr(argument10*tFOV);
global.__x = (mm+1)/2*window_get_width();
mm = (pX*uX+pY*uY+pZ*uZ)/sqr(tFOV);
global.__y = (1-mm)/2*window_get_height();
}




N°5 no grupo vector math crie um script e nomeio de: Yourself's_2d3d_script e coloque esse código:


{
var mm,dX,dY,dZ,uX,uY,uZ,vX,vY,vZ,mX,mY,mZ, width, height, tFOV;

dX = argument3-argument0;
dY = argument4-argument1;
dZ = argument5-argument2;

mm = sqrt(dX*dX+dY*dY+dZ*dZ);

dX /= mm; dY /= mm; dZ /= mm;
uX = argument6; uY = argument7;
uZ = argument8;

mm = uX*dX+uY*dY+uZ*dZ;

uX -= mm*dX;
uY -= mm*dY;
uZ -= mm*dZ

mm = sqrt(uX*uX+uY*uY+uZ*uZ);

uX /= mm;
uY /= mm;
uZ /= mm;

// v = u x d
vX = uY*dZ-dY*uZ;
vY = uZ*dX-dZ*uX;
vZ = uX*dY-dX*uY;

tFOV = tan(argument9*pi/360);

uX *= tFOV;
uY *= tFOV;
uZ *= tFOV;

vX *= tFOV*argument10;
vY *= tFOV*argument10;
vZ *= tFOV*argument10;

width = window_get_width();
height = window_get_height();

mX = dX+uX*(1-2*mouse_y/height)+vX*(2*mouse_x/width-1);
mY = dY+uY*(1-2*mouse_y/height)+vY*(2*mouse_x/width-1);
mZ = dZ+uZ*(1-2*mouse_y/height)+vZ*(2*mouse_x/width-1);

mm = sqrt(mX*mX+mY*mY+mZ*mZ);

global.mouse_dx = mX/mm;
global.mouse_dy = mY/mm;
global.mouse_dz = mZ/mm;
}



No grupo vector math já deu de scripts agora vamos para o grupo camera scripts (ok)



N°1 no grupo camera scripts crie um script e nomeio de: camera_init e coloque esse código:

// 3D prespective information
// camera_init();

global.vector_x = 0;
global.vector_y = 0;
global.vector_z = 0;

global.bearing = 0;
global.strafe = 0;
global.pitch = 0;

global.xfrom = x;
global.yfrom = y;
global.zfrom = z;

global.xto = x + global.vector_x;
global.yto = y + global.vector_y;
global.zto = z + global.vector_z;

global.xup = 0;
global.yup = 0;
global.zup = 1;

global.angle = 45;
global.aspect_ratio = 1.3333;






N°2 no grupo camera scripts crie um script e nomeio de: camera_draw e coloque esse código:


// camer_draw();

global.xfrom = camera.x;
global.yfrom = camera.y;
global.zfrom = camera.z;
global.xto = camera.x + global.vector_x;
global.yto = camera.y + global.vector_y;
global.zto = camera.z + global.vector_z;
global.xup = 0;
global.yup = 0;
global.zup = 1;
global.angle = 45;
global.aspect_ratio = 1.3333;



N°3 no grupo camera scripts crie um script e nomeio de: camera_move e coloque esse código:

// 3rd Person View
// the camera behind the player, 200 pixels away
xx = player.x + lengthdir_x(200,player.direction + player.aim - 82);
yy = player.y + lengthdir_y(200,player.direction + player.aim - 82);

// Point the camera towards the player
global.bearing = point_direction(x,y,player.x,player.y);

// Move the camera into position
mp_linear_step(xx,yy,camera_speed,false);

// Redefine the camera settings as needed
global.pitch = max(min(global.pitch,80),-80);
ss = sin(degtorad(global.bearing));
cc = cos(degtorad(global.bearing));
global.vector_x = cc * cos(degtorad(-global.pitch));
global.vector_y = ss * -cos(degtorad(-global.pitch));
global.vector_z = sin(degtorad(-global.pitch));




N°4 no grupo camera scripts crie um script e nomeio de: camera_init_ext e coloque esse código:

// camera_init_ext(xfrom,yfrom,zfrom,xto,yto,zto,xup,yup,zup,angle,aspect);

global.xfrom = argument0;
global.yfrom = argument1;
global.zfrom = argument2;
global.xto = argument3;
global.yto = argument4;
global.zto = argument5;
global.xup = argument6;
global.yup = argument7;
global.zup = argument8;
global.angle = argument9;
global.aspect_ratio = argument10;



o grupo do camer scripts acabou agora crie separadamente dos 3 grupos um script e nomeio de: model_tank_draw e coloque esse código:


if id = player.id then
{
// Each of the points (vector) below are defined
// as being a certain distance and direction with
// the lengthdir functions so that they can be
// rotated due to the direction of the object it
// is associated with. Rotating the models wouldn't
// work otherise with the cube functions provided,
// as such lines can't be defined individually.

// Body Vectors
x1 = x + lengthdir_x(20,135 + direction);
y1 = y + lengthdir_y(20,135 + direction);
x2 = x + lengthdir_x(20,315 + direction);
y2 = y + lengthdir_y(20,315 + direction);
x3 = x + lengthdir_x(20,60 + direction);
y3 = y + lengthdir_y(20,60 + direction);
x4 = x + lengthdir_x(20,240 + direction);
y4 = y + lengthdir_y(20,240 + direction);
z1 = 0;
// Draw the top rectangle smaller than the bottom
x5 = x + lengthdir_x(13,130 + direction);
y5 = y + lengthdir_y(13,130 + direction);
x6 = x + lengthdir_x(13,310 + direction);
y6 = y + lengthdir_y(13,310 + direction);
x7 = x + lengthdir_x(13,60 + direction);
y7 = y + lengthdir_y(13,60 + direction);
x8 = x + lengthdir_x(13,240 + direction);
y8 = y + lengthdir_y(13,240 + direction);
z2 = 10;

// 1 3 | 5 7
// 4 2 | 8 6

// Draw the bottom rectanlge
draw_3d_line(x1,y1,z1,x3,y3,z1,argument0);
draw_3d_line(x1,y1,z1,x4,y4,z1,argument0);
draw_3d_line(x2,y2,z1,x3,y3,z1,argument0);
draw_3d_line(x2,y2,z1,x4,y4,z1,argument0);
// Draw the top rectanlge
draw_3d_line(x5,y5,z2,x7,y7,z2,argument0);
draw_3d_line(x5,y5,z2,x8,y8,z2,argument0);
draw_3d_line(x6,y6,z2,x7,y7,z2,argument0);
draw_3d_line(x6,y6,z2,x8,y8,z2,argument0);
// Draw the corner lines
draw_3d_line(x1,y1,z1,x5,y5,z2,argument0);
draw_3d_line(x2,y2,z1,x6,y6,z2,argument0);
draw_3d_line(x3,y3,z1,x7,y7,z2,argument0);
draw_3d_line(x4,y4,z1,x8,y8,z2,argument0);

// Error handling
if aim = 0 then { aim = 1; }

// Barrel Vectors
// Draw the barrel relative to the direction AND aim
xx1 = x + lengthdir_x(40,98 + direction + aim);
yy1 = y + lengthdir_y(40,98 + direction + aim);
xx2 = x + lengthdir_x(5,313 + direction + aim);
yy2 = y + lengthdir_y(5,312 + direction + aim);
xx3 = x + lengthdir_x(40,92 + direction + aim);
yy3 = y + lengthdir_y(40,92 + direction + aim);
xx4 = x + lengthdir_x(5,242 + direction + aim);
yy4 = y + lengthdir_y(5,242 + direction + aim);
zz1 = z2 - 3; zz2 = z2;

draw_3d_line(xx1,yy1,zz1,xx3,yy3,zz1,argument0);
draw_3d_line(xx1,yy1,zz1,xx4,yy4,zz1,argument0);
draw_3d_line(xx2,yy2,zz1,xx3,yy3,zz1,argument0);
draw_3d_line(xx2,yy2,zz1,xx4,yy4,zz1,argument0);

draw_3d_line(xx1,yy1,zz2,xx3,yy3,zz2,argument0);
draw_3d_line(xx1,yy1,zz2,xx4,yy4,zz2,argument0);
draw_3d_line(xx2,yy2,zz2,xx3,yy3,zz2,argument0);
draw_3d_line(xx2,yy2,zz2,xx4,yy4,zz2,argument0);

draw_3d_line(xx1,yy1,zz1,xx1,yy1,zz2,argument0);
draw_3d_line(xx2,yy2,zz1,xx2,yy2,zz2,argument0);
draw_3d_line(xx3,yy3,zz1,xx3,yy3,zz2,argument0);
draw_3d_line(xx4,yy4,zz1,xx4,yy4,zz2,argument0);
}

if id = enemy.id then
{
// This script is virually the same as the other,
// however 90 is added the the direction of the
// vectors to draw the enemy model correctly.

// Body Vectors
x1 = x + lengthdir_x(20,135 + direction + 90);
y1 = y + lengthdir_y(20,135 + direction + 90);
x2 = x + lengthdir_x(20,315 + direction + 90);
y2 = y + lengthdir_y(20,315 + direction + 90);
x3 = x + lengthdir_x(20,60 + direction + 90);
y3 = y + lengthdir_y(20,60 + direction + 90);
x4 = x + lengthdir_x(20,240 + direction + 90);
y4 = y + lengthdir_y(20,240 + direction + 90);
z1 = 0;
x5 = x + lengthdir_x(13,135 + direction + 90);
y5 = y + lengthdir_y(13,135 + direction + 90);
x6 = x + lengthdir_x(13,315 + direction + 90);
y6 = y + lengthdir_y(13,315 + direction + 90);
x7 = x + lengthdir_x(13,60 + direction + 90);
y7 = y + lengthdir_y(13,60 + direction + 90);
x8 = x + lengthdir_x(13,240 + direction + 90);
y8 = y + lengthdir_y(13,240 + direction + 90);
z2 = 10;

// 1 3 | 5 7
// 4 2 | 8 6

draw_3d_line(x1,y1,z1,x3,y3,z1,argument0);
draw_3d_line(x1,y1,z1,x4,y4,z1,argument0);
draw_3d_line(x2,y2,z1,x3,y3,z1,argument0);
draw_3d_line(x2,y2,z1,x4,y4,z1,argument0);

draw_3d_line(x5,y5,z2,x7,y7,z2,argument0);
draw_3d_line(x5,y5,z2,x8,y8,z2,argument0);
draw_3d_line(x6,y6,z2,x7,y7,z2,argument0);
draw_3d_line(x6,y6,z2,x8,y8,z2,argument0);

draw_3d_line(x1,y1,z1,x5,y5,z2,argument0);
draw_3d_line(x2,y2,z1,x6,y6,z2,argument0);
draw_3d_line(x3,y3,z1,x7,y7,z2,argument0);
draw_3d_line(x4,y4,z1,x8,y8,z2,argument0);

// Barrel Vectors
// Error handling
if aim = 0 then { aim = 1; }

// Barrel Vectors
// Draw the barrel relative to the direction AND aim + 90
xx1 = x + lengthdir_x(40,98 + direction + aim + 90);
yy1 = y + lengthdir_y(40,98 + direction + aim + 90);
xx2 = x + lengthdir_x(5,313 + direction + aim + 90);
yy2 = y + lengthdir_y(5,312 + direction + aim + 90);
xx3 = x + lengthdir_x(40,92 + direction + aim + 90);
yy3 = y + lengthdir_y(40,92 + direction + aim + 90);
xx4 = x + lengthdir_x(5,242 + direction + aim + 90);
yy4 = y + lengthdir_y(5,242 + direction + aim + 90);
zz1 = z2 - 3; zz2 = z2;

draw_3d_line(xx1,yy1,zz1,xx3,yy3,zz1,argument0);
draw_3d_line(xx1,yy1,zz1,xx4,yy4,zz1,argument0);
draw_3d_line(xx2,yy2,zz1,xx3,yy3,zz1,argument0);
draw_3d_line(xx2,yy2,zz1,xx4,yy4,zz1,argument0);

draw_3d_line(xx1,yy1,zz2,xx3,yy3,zz2,argument0);
draw_3d_line(xx1,yy1,zz2,xx4,yy4,zz2,argument0);
draw_3d_line(xx2,yy2,zz2,xx3,yy3,zz2,argument0);
draw_3d_line(xx2,yy2,zz2,xx4,yy4,zz2,argument0);

draw_3d_line(xx1,yy1,zz1,xx1,yy1,zz2,argument0);
draw_3d_line(xx2,yy2,zz1,xx2,yy2,zz2,argument0);
draw_3d_line(xx3,yy3,zz1,xx3,yy3,zz2,argument0);
draw_3d_line(xx4,yy4,zz1,xx4,yy4,zz2,argument0);
}







Agora finalmente acabamos os scripts para os soms será nescesario apenas um crie um som que será o tiro do canhão e nomeio de snd_shoot


Agora acabamos a parte sonora em vamos para o objetos

Crie os objetos:
Câmera
Cube
Boundry_cube
Pyramid
Player
Enemy
Player_bullet
Enemy_bullet


N°1 crie um objeto e coloque o nome de câmera

No evento create coloque esse código:
// Define the camera's height
z = 1000;

// Define the camera's speed
camera_speed = 7;

// Go into 3D mode
camera_init();

// Set the background color
background_color = c_black;

No evento draw coloque esse codigo:
// The drawing script for the camera
camera_draw();
// The script for moving the camera
camera_move();

// Display the player and enemy's health upon the caption
room_caption = "Player : "+string(health)+", Enemy : "+string(global.enemy_health)+" FPS : "+string(fps);

// End Game Conditions
if global.enemy_health <= 0 then
{
show_message("You've won the match!");
game_end();
}
if health <= 0 then
{
show_message("You've lost the match!");
game_end();
}

O objeto camera já deu vamos para o objeto : cube no eventeo draw coloque esse código:
draw_3d_box(x-16,y-16,0,x+16,y+16,32,c_olive,false);



O objeto cube já deu vamos para o objeto : boundry_cube e no eventeo draw coloque esse código:
draw_3d_box(x-16,y-16,0,x+16,y+16,32,c_yellow,false);



O objeto boundry_cube já deu vamos para o objeto : pyramid e no eventeo draw coloque esse código:
draw_3d_pyramid(x-16,y-16,0,x+16,y+16,32,c_lime,false);



O objeto pyramid já deu vamos para o objeto : player e no eventeo create coloque esse código:
// The speed of the player
spd = 5;

// The angle of the barrel
aim = 0;

// The loop timer for shooting
count = 0;

// The delay in frames (steps) between
// bullets fired at the player
gun_timer = 30;


no evento step coloque esse código:
dir = point_direction(x,y,camera.x,camera.y) + 180;

// Move the tank in the direction it's facing
if keyboard_check(vk_up) then { x += lengthdir_x(spd,direction+98); y += lengthdir_y(spd,direction+98); }
if keyboard_check(vk_down) then { x += lengthdir_x(spd,direction+278); y += lengthdir_y(spd,direction+278); }

// Rotate the tank
if keyboard_check(vk_left) then { direction += 3; }
if keyboard_check(vk_right) then { direction -= 3; }

// Turn the barrel of the tank
if keyboard_check(ord("A")) then { aim += 3; }
if keyboard_check(ord("D")) then { aim -= 3; }




e nas colisoes com os objetos: cube,pyramide e boundry_cube coloque na opçao move (jump) coloque a ação:jump to position
X: xprevious
Y: Yprevious

Nas ters colisoes (ok)




E na colisão com o objeto:enemy_bullet coloque esse codigo:

// Decrease the health
health -= 1;


na opção keyboard selecione space ecoloque esse código

// Start the firing loop...
count += 1;
if count = gun_timer then
{
// Shoot the bullet at the end of the barrel
xx = x + lengthdir_x(40,93 + direction + aim);
yy = y + lengthdir_y(40,93 + direction + aim);
instance_create(xx,yy,player_bullet);
// Restart the loop...
count = 0;
}


Na opção othe selecione intersect boundary e na opçao move (jump) coloque a ação:jump to position:
X: xprevious
Y: Yprevious

E na opção draw coloque esse código:
// Draw the tank
model_tank_draw(c_lime);

o objeto ploayer ja deu agora vamos para o objeto enemy

no evento create coloque e esse código:
// The speed of the tank
spd = 3;

// The angle of the barrel
aim = 0;

// The loop timer for shooting
count = 0;

// The delay in frames (steps) between
// bullets fired at the player
gun_timer = 30;

// The health of the enemy
global.enemy_health = 100;

// The direction and distance the tank
//faces the player while shooting at it
shoot_ang = 95; shoot_len = 200;
shoot_dir = player.direction + shoot_ang;
shoot_x = player.x + lengthdir_x(shoot_len,shoot_dir);
shoot_y = player.y + lengthdir_y(shoot_len,shoot_dir);

// The direction where the bullet
// is fired from when shooting
barrel_dir = direction + aim + 185;

// The length of the barrel
barrel_len = 40;

// The position of the barrel's end
barrel_xpos = x + lengthdir_x(barrel_len,barrel_dir);
barrel_ypos = y + lengthdir_y(barrel_len,barrel_dir);


no evento step coloque esse codigo:
// As the enemy weakens, it
// speeds up and shoots faster
if global.enemy_health < 50 then
{ gun_timer = 15; spd = 5; }
if global.enemy_health < 25 then
{ gun_timer = 10; spd = 7; }

// Update the following to keep the enemy on the move
shoot_dir = player.direction + shoot_ang;
shoot_x = player.x + lengthdir_x(shoot_len,shoot_dir);
shoot_y = player.y + lengthdir_y(shoot_len,shoot_dir);

// Position the enemy for shooting
mp_linear_step(shoot_x,shoot_y,spd,false);

// Error handling (allows for precise planning)
direction = round(direction);

// If in the shooting position...
if x = shoot_x and y = shoot_y then
{
// Point towards the player
direction = point_direction(x,y,player.x,player.y) - 185;
// Begin the shooting loop...
count += 1;
if count = gun_timer then
{
// Redefine the following to keep the position updated
barrel_dir = direction + aim + 185;
barrel_xpos = x + lengthdir_x(barrel_len,barrel_dir);
barrel_ypos = y + lengthdir_y(barrel_len,barrel_dir);
// Shoot the bullet at the end of the barrel
instance_create(barrel_xpos,barrel_ypos,enemy_bullet);
// Start the loop over again...
count = 0;
}
}

// Author's Note :
// The AI for this enemy is limited, and it
// lacks the ablilty to handle more
// difficult situations, and can be easily
// overcome if shot at while it is still
// trying to gain access to its shooting
// point.
//
// To prevent this, I suggest employing a
// method which involves the enemy to avoid
// whatever traps can be easily seen by the
// player. Also, having the the enemy move
// behind the player's feild of view allows
// is effective as well.
//
// - RabbidMickeyMouse


Na colisao com os objetos cube e pyramid coloque a ação jump to position
X: xprevious
Y: yprevious

E coloque esse código:
// Change the direction from where
// the enemy shoots from
shoot_ang += 20;



na colisão com player_bullet coloque esse código
global.enemy_health -= 1;

// Change the direction from where
// the enemy shoots from
//shoot_ang += 20;


E na colisão com boundry_cube coloque jump to position
X: xprevious
Y: yprevious


Em (others)(intersect boundary) coloque jump to position
X: xprevious
Y: yprevious

E coloque esse codigo:
// Change the direction from where
// the enemy shoots from
shoot_ang += 20;




e no evento draw coloque esse codigo:
// Draw the tank
model_tank_draw(c_blue);


o objeto enemy ja acbou agora vamos para o objeto: player_bullet

no evento create coloque esse código:

// Fire the bullet opposite the direction it came from
motion_set(point_direction(x,y,player.x,player.y)+180,15);

e na colisao com :cube,pyramide,enemy destrói the instance

e na opçao others (intersect boundary) coloque destroy the instance


e no evento draw coloque esse codigo:
draw_3d_box(x-3,y-3,7,x+3,y+3,10,c_yellow);



agora vamos para o objeto enmy_bullet

no evento create coloque esse código:

// Fire the bullet opposite the direction it came from
motion_set(point_direction(x,y,enemy.x,enemy.y)+180,15);

e na colisao com :cube,pyramide,player destrói the instance

e na opçao others (intersect boundary) coloque destroy the instance


e no evento draw coloque esse codigo:
draw_3d_box(x-3,y-3,7,x+3,y+3,10,c_yellow);


agora crie sprites (opçional) para ajudar a indentificar os objetos na hora de montar a room

Matheusgames

Número de Mensagens : 8
Data de inscrição : 02/02/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Crie Um Jogo 3d de Gerra.

Mensagem por lucas mendes em Seg 08 Fev 2010, 22:09

legal o seu tuto, mas vc postou no lugar errado.

lucas mendes

Número de Mensagens : 416
Idade : 21
Data de inscrição : 04/05/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   : 1

Voltar ao Topo Ir em baixo

Re: Crie Um Jogo 3d de Gerra.

Mensagem por tata139 em Seg 08 Fev 2010, 22:15

POdia poostar a engine Very Happy, aí todos poderiam testar

tata139

Número de Mensagens : 1121
Data de inscrição : 11/08/2008
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Crie Um Jogo 3d de Gerra.

Mensagem por Hélio em Seg 08 Fev 2010, 22:15

Tópico movido.

Foi você quem fez?
Muito bom! mas acho que está meio desorganizado...

Hélio

Número de Mensagens : 1010
Idade : 20
Data de inscrição : 02/06/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   : 1
   :

Voltar ao Topo Ir em baixo

Re: Crie Um Jogo 3d de Gerra.

Mensagem por Mystery_boy_maker em Ter 09 Fev 2010, 10:50

Usuario novato postando isso Very Happy voce fazia parte de alguem outro site do GM ?
voltando ao assunto :

muito bom cara mais como ja comentado tem muita coisa desorganizada assim parece que foi tudo colocado ai de uma unica vez tenta modificar colocar algumas coisa certinho tipo onde tem codigo voce usa a opção cod pra ficar destacado das palavras entendeu só uma dica mesmo
Código:
 tipo algo assim
entendeu ?

Mais valeu mesmo tah muito bom esse topico parabens

Mystery_boy_maker

Número de Mensagens : 908
Idade : 23
Data de inscrição : 25/01/2010
Reputação : 16
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 1

http://recursos-mania.forumeiros.com

Voltar ao Topo Ir em baixo

Re: Crie Um Jogo 3d de Gerra.

Mensagem por IvanDSM em Qui 11 Fev 2010, 14:25

WAR GAMEEEE!!!!

IvanDSM

Número de Mensagens : 19
Data de inscrição : 04/01/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://fiquelouco.blogueiros.net

Voltar ao Topo Ir em baixo

Re: Crie Um Jogo 3d de Gerra.

Mensagem por Henrique_GJ em Qui 11 Fev 2010, 14:32

SÃO TUTOS COMO ESSE QUE ME FAZEM DESISTIR DE APRENDER A FAZER MEUS PRÓPRIOS JOGOS! O_O

não, tô zoando, mas... cruzes!!!! pra mim aprender a fazer essa parada aí vai demorar muito heim!!!! que coisa loca!!!! o tuto é tão grande que faz o quadradinho da barra do lado da página ficar pequenininho!

Henrique_GJ

Número de Mensagens : 1344
Idade : 19
Data de inscrição : 30/12/2009
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://sitedosjogos.forumeiros.com

Voltar ao Topo Ir em baixo

Re: Crie Um Jogo 3d de Gerra.

Mensagem por donte em Qui 11 Fev 2010, 14:44

matheusdossantos coloca as abas de códigos assim:
Código:
tópico desorganizado ein kkkk
mais cruzes não vou ficar digitando(pq num tenho net no pc com gm).

donte

Número de Mensagens : 1164
Idade : 18
Data de inscrição : 22/12/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://nintendocenterbr.forumeiros.com

Voltar ao Topo Ir em baixo

Re: Crie Um Jogo 3d de Gerra.

Mensagem por Alex FC em Qui 11 Fev 2010, 14:47

IvanDSM, cuidado com o flood. Leia as regras do fórum.

Tópico:

Tutorial, mais do que bom. Mas podia estar mais bem organizado, certo? Faça como o mystery_boy_maker falou, assim ficará mais facil pra entender também. Vlw?

FLWS!

Alex FC

Ranking : Nota A
Número de Mensagens : 2503
Idade : 23
Data de inscrição : 20/12/2008
Notas recebidas : B A
Reputação : 174
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://redscreensoft.blogspot.com

Voltar ao Topo Ir em baixo

Re: Crie Um Jogo 3d de Gerra.

Mensagem por Dancity em Qui 11 Fev 2010, 16:04

Cara muito bom o tuto, perfeitinho só falto a organização mesmo fora isso ficou 10!
Muito bom cara continue assim!

Dancity

Ranking : Nota A
Número de Mensagens : 1339
Data de inscrição : 11/01/2009
Notas recebidas : A
Reputação : 8
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   :
   :

Voltar ao Topo Ir em baixo

Re: Crie Um Jogo 3d de Gerra.

Mensagem por tata139 em Qui 11 Fev 2010, 17:28

POR FAVOR POSTA A ENGINE, quero ver como é! Very Happy

tata139

Número de Mensagens : 1121
Data de inscrição : 11/08/2008
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Crie Um Jogo 3d de Gerra.

Mensagem por Matheusgames em Qui 11 Fev 2010, 19:20

foi mal galera não dava para eu organizar tudo

Matheusgames

Número de Mensagens : 8
Data de inscrição : 02/02/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Crie Um Jogo 3d de Gerra.

Mensagem por Convidad em Sex 09 Abr 2010, 10:41

uma engine iria ajudar muitos os novatos

Convidad
Convidado


Voltar ao Topo Ir em baixo

Re: Crie Um Jogo 3d de Gerra.

Mensagem por mayck em Qui 15 Abr 2010, 23:03

HUhl nossa Passeo Um belo tenpo lendo Iso Very Happy mais Muito Bom tutu Mesmo Acho que uma engine Seria Mto Bom =D

mayck

Número de Mensagens : 370
Idade : 20
Data de inscrição : 11/01/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Crie Um Jogo 3d de Gerra.

Mensagem por Thiago_o_programador em Dom 18 Abr 2010, 09:11

ñ é dele ñ, eu ja vi esse tuto na web em outro site para baixar, para abrir pelo word!!!

Thiago_o_programador

Ranking : Nota D
Número de Mensagens : 709
Idade : 19
Data de inscrição : 14/05/2009
Notas recebidas : D - C - D - C
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 1

http://www.jogosdahora.maisblog.net

Voltar ao Topo Ir em baixo

Re: Crie Um Jogo 3d de Gerra.

Mensagem por dd123 em Qua 21 Abr 2010, 02:58

Mas de qualquer forma ele organizando fica legal... e poe o crédito do responsável pela criação... Post tbm uma engine ai!!

Vlw

dd123

Número de Mensagens : 126
Idade : 21
Data de inscrição : 12/04/2010
Reputação : -7
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Crie Um Jogo 3d de Gerra.

Mensagem por Conteúdo patrocinado Hoje à(s) 22:17


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum