Salut,
tu dois tout simplement créer une fonction qui ajoute la différence de position voulue à chaque objet,
voici un exemple:
MoveMap(mapname[], Float:X, Float:Y, Float:Z)
{
if(!fexist(mapname))
{
return -1;
}
new File: f, File:output, tmp[128];
f = fopen(mapname, io_read);
if(!f)
{
return -2;
}
format(tmp, sizeof(tmp), "%s.moved",mapname);
output = fopen(tmp,io_write);
if(!output)
{
fclose(f);
return -3;
}
new idx, Float:ox, Float:oy, Float:oz, model,Float:rx, Float:ry, Float:rz;
while(fread(f, tmp))
{
idx = strfind(tmp,"(", true);
model = strval(strtok(tmp, idx, ','));
ox = floatstr(strtok(tmp, idx, ','));
oy = floatstr(strtok(tmp, idx, ','));
oz = floatstr(strtok(tmp, idx, ','));
rx = floatstr(strtok(tmp, idx, ','));
ry = floatstr(strtok(tmp, idx, ','));
rz = floatstr(strtok(tmp, idx, ','));
ox += X;
oy += Y;
oz += Z;
format(tmp, sizeof(tmp),"CreateObject(%d, %f, %f, %f, %f, %f, %f);\r\n",model,ox,oy,oz,rx,ry,rz);
fwrite(output,tmp);
}
fclose(output);
fclose(f);
return 1;
}
cet exemple prend en charge les fichiers contenant les données sous un format du genre :
CreateObject(123,453.154,3423.1588,4324.1504,32.4546,123.45,321.6345);
enfin, plutôt tout format qui a une parenthèse '(' suivie des données dans l'ordre habituel, par contre s'il y a une distance, elle ne sera pas envoyer dans le fichier final (qui est le même fichier en ajoutant .moved au bout)
++Sim++