Como Cargar objectos desde un archivo .txt? -
LANS - 13.07.2016
Buenas amigos de Samp Forum estoy creando un sistema desde 0
Uso <mseleccion> puse objectos y los puedes crear In-game
Te crea un archivo por default en scripfiles
El problema es que no puedo hacer para que cargue los objectos del archivo creado por que cuando reinicio pierdo todo como me imagino el cуdigo seria un ciclo while donde tendrнa que crear los objectos
Si me ayudarian se los agradeceria es un sistema que esta en desarrollo.

public OnPlayerSelectObject(playerid, type, objectid, modelid, Float:fX, Float:fY, Float:fZ)
{
if(type == SELECT_OBJECT_GLOBAL_OBJECT)
{
if(guardando[playerid] == true)
{
SendClientMessage(playerid, 0xFF0000FF, "Posiciуn del objeto guardada.");
new File: hFile;
hFile = fopen("craftguardados.txt", io_append);
if(hFile)
{
new Float:X,Float:Y,Float:Z;
GetObjectPos(objectid, X,Y,Z);
new Float:rX,Float:rY,Float:rZ;
GetObjectRot(objectid,rX,rY,rZ);
new string2[256];
format(string2, 256, "CreateObject(%d, %f,%f,%f,%f,%f,%f,100.0\r\n",PlayerInfo[playerid][pObjetoID], X,Y,Z,rX,rY,rZ);
fwrite(hFile, string2);
}
fclose(hFile);
CancelEdit(playerid);
}
}
return 1;
}
Aquн te da las coordenadas:

Aquн se vera como es:
Duda como puedo hacer para que nose pierdan los objectos cuando se reinicie el server
Nacion Zombie version 2.0 beta crйditos kitten
Re: Como Cargar objectos desde un archivo .txt? -
yutaruta - 14.07.2016
yo lo haria de la siguiente manera:
Код:
new Float:X,Float:Y,Float:Z;
GetObjectPos(objectid, X,Y,Z);
new Float:rX,Float:rY,Float:rZ;
GetObjectRot(objectid,rX,rY,rZ);
new string2[256];
format(string2, 256, "%d|%f|%f|%f|%f|%f|%f\r\n",PlayerInfo[playerid][pObjetoID], X,Y,Z,rX,rY,rZ);
fwrite(hFile, string2);
entonces, en el archivo te quedarian lineas como estas
Код:
%d|%f|%f|%f|%f|%f|%f
%d|%f|%f|%f|%f|%f|%f
%d|%f|%f|%f|%f|%f|%f
%d|%f|%f|%f|%f|%f|%f
solo basta con crear un bucle que lea linea por linea, y a cada linea la partis con la funcion "split()".
esta funcion requiere un array bidimensional como destino, donde va a almacenar todas las subcadenas, la cadena de la linea a partir, y un char que seria el delimitador, en este caso '|'
Код:
new destino[7][32]; // 7 es la cantidad de datos que vas a guardar, modelid, posx, posy, posz, rotx, roty, rotz.
// 32 es la cantidad maxima de caracteres que va a almacenar cada elemento.
ejecutas split, y ya tenes la cadena separada. ahora ya podes crear el objeto con los datos y pasar a la siguiente linea, si es que la hay.
Код:
CreateObject(strval(destino[0]), floatstr(destino[1]), floatstr(destino[2]), floatstr(destino[3]), floatstr(destino[4]), floatstr(destino[5]), floatstr(destino[6]));
//strval, convierte cadena a integer, como modelid es un integer, usamos esta funcion para convertir
//floatstr, lo mismo que strval, pero convierte a float
Respuesta: Como Cargar objectos desde un archivo .txt? -
LANS - 16.07.2016
Код:
public OnPlayerSelectObject(playerid, type, objectid, modelid, Float:fX, Float:fY, Float:fZ)
{
if(type == SELECT_OBJECT_GLOBAL_OBJECT)
{
if(guardando[playerid] == true)
{
SendClientMessage(playerid, 0xFF0000FF, "Posiciуn del objeto guardada.");
new File: hFile;
hFile = fopen("mueblesguardados.inc", io_append);
if(hFile)
{
GetObjectPos(objectid, X,Y,Z);
new Float:rX,Float:rY,Float:rZ;
GetObjectRot(objectid,rX,rY,rZ);
new string2[256];
format(string2, 256, "CreateObject(%d, %f,%f,%f,%f,%f,%f,100.0\r\n",PlayerInfo[playerid][pObjetoID], X,Y,Z,rX,rY,rZ);
fwrite(hFile, string2);
}
fclose(hFile);
CancelEdit(playerid);
}
}
return 1;
}
Block De Notas
Код:
3279|2898.813964|-2065.752197|3.256061|0.000000|0.000000|89.142486
Re: Respuesta: Como Cargar objectos desde un archivo .txt? -
yutaruta - 17.07.2016
Quote:
Originally Posted by LANS
Код:
public OnPlayerSelectObject(playerid, type, objectid, modelid, Float:fX, Float:fY, Float:fZ)
{
if(type == SELECT_OBJECT_GLOBAL_OBJECT)
{
if(guardando[playerid] == true)
{
SendClientMessage(playerid, 0xFF0000FF, "Posiciуn del objeto guardada.");
new File: hFile;
hFile = fopen("mueblesguardados.inc", io_append);
if(hFile)
{
GetObjectPos(objectid, X,Y,Z);
new Float:rX,Float:rY,Float:rZ;
GetObjectRot(objectid,rX,rY,rZ);
new string2[256];
format(string2, 256, "CreateObject(%d, %f,%f,%f,%f,%f,%f,100.0\r\n",PlayerInfo[playerid][pObjetoID], X,Y,Z,rX,rY,rZ);
fwrite(hFile, string2);
}
fclose(hFile);
CancelEdit(playerid);
}
}
return 1;
}
Block De Notas
Код:
3279|2898.813964|-2065.752197|3.256061|0.000000|0.000000|89.142486
|
public OnPlayerSelectObject(playerid, type, objectid, modelid, Float:fX, Float:fY, Float:fZ)
{
if(type == SELECT_OBJECT_GLOBAL_OBJECT)
{
if(guardando[playerid] == true)
{
SendClientMessage(playerid, 0xFF0000FF, "Posiciуn del objeto guardada.");
new File: hFile;
hFile = fopen("mueblesguardados.inc", io_append);
if(hFile)
{
GetObjectPos(objectid, X,Y,Z);
new Float:rX,Float:rY,Float:rZ;
GetObjectRot(objectid,rX,rY,rZ);
new string2[256];
format(string2, 256, "%d|%f|%f|%f|%f|%f|%f\r\n",PlayerInfo[playerid][pObjetoID], X,Y,Z,rX,rY,rZ);
fwrite(hFile, string2);
}
fclose(hFile);
CancelEdit(playerid);
}
}
return 1;
}