i would like to replace a mesh with a new mesh (a simple triangle in my example) but can't get it working. in all my tries the triangle either doesn't show up at all or is huge and garbled.

what am i doing wrong? it's the first time i use a8 and i haven't looked into this mesh stuff for a long time. laugh

Code:
#include <acknex.h>
#include <default.c>
#include <stdio.h>
#include <d3d9.h>

void create_mesh(ENTITY *entity)
{	
	printf("%d", (long)ent_status(entity, 1));



	int num_faces = 1;
	int num_vertices = 3;

	D3DVERTEX pvb[3];
	WORD pib[3];
	DWORD pab[1];
	
	pvb[0].x = 0.0;
	pvb[0].y = 0.0;
	pvb[0].z = -8.0;
	pvb[0].nx = 0.0;
	pvb[0].ny = 0.0;
	pvb[0].nz = 1.0;
	pvb[0].u1 = 0.0;
	pvb[0].v1 = 0.0;
	pvb[0].u2 = 0.0;
	pvb[0].v2 = 0.0;
	pvb[0].x3 = 0.0;
	pvb[0].y3 = 0.0;
	pvb[0].z3 = 0.0;
	pvb[0].w3 = 0.0;
	pvb[0].tu4 = 0.0;
	pvb[0].tv4 = 0.0;
	
	pvb[1].x = 8.0;
	pvb[1].y = 0.0;
	pvb[1].z = -8.0;
	pvb[1].nx = 0.0;
	pvb[1].ny = 0.0;
	pvb[1].nz = 1.0;
	pvb[1].u1 = 0.0;
	pvb[1].v1 = 0.0;
	pvb[1].u2 = 0.0;
	pvb[1].v2 = 0.0;
	pvb[1].x3 = 0.0;
	pvb[1].y3 = 0.0;
	pvb[1].z3 = 0.0;
	pvb[1].w3 = 0.0;
	pvb[1].tu4 = 0.0;
	pvb[1].tv4 = 0.0;
	
	pvb[2].x = 0.0;
	pvb[2].y = 8.0;
	pvb[2].z = -8.0;
	pvb[2].nx = 0.0;
	pvb[2].ny = 0.0;
	pvb[2].nz = 1.0;
	pvb[2].u1 = 0.0;
	pvb[2].v1 = 0.0;
	pvb[2].u2 = 0.0;
	pvb[2].v2 = 0.0;
	pvb[2].x3 = 0.0;
	pvb[2].y3 = 0.0;
	pvb[2].z3 = 0.0;
	pvb[2].w3 = 0.0;
	pvb[2].tu4 = 0.0;
	pvb[2].tv4 = 0.0;
	
	pib[0] = 0;
	pib[1] = 1;
	pib[2] = 2;
	
	pab[0] = 0;
	
	
	
	LPD3DXMESH pmesh;
	D3DXCreateMeshFVF(num_faces, num_vertices, D3DXMESH_MANAGED, D3DFVF_D3DVERTEX, (LPDIRECT3DDEVICE9)pd3ddev, &pmesh);

	D3DVERTEX *pnewvb; pmesh->LockVertexBuffer(0, (void**)&pnewvb);
	WORD *pnewib; pmesh->LockIndexBuffer(0, (void**)&pnewib);
	DWORD *pnewab; pmesh->LockAttributeBuffer(0, &pnewab);

	memcpy(pnewvb, pvb, sizeof(D3DVERTEX) * num_vertices);
	memcpy(pnewib, pib, sizeof(WORD) * num_faces * 3);
	memcpy(pnewab, pab, sizeof(DWORD) * num_faces);

	pmesh->UnlockVertexBuffer();
	pmesh->UnlockIndexBuffer();
	pmesh->UnlockAttributeBuffer();

	ent_setmesh(entity, pmesh, 0, 0);
	
	

	printf("%d", (long)ent_status(entity, 1));
}

void initialize()
{
	you = ent_create(CUBE_MDL, vector(0, 0, 0), NULL);
	set(you, FLAG8);
	ent_clone(you);
	create_mesh(you);
}

void main()
{
	video_mode = 10;
	level_load("");
	initialize();
}