SA-MP Forums Archive
[Problema] Mi Sistema - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: [Problema] Mi Sistema (/showthread.php?tid=429697)



[Problema] Mi Sistema - sonnkz - 10.04.2013

bueno, estuve haciendo un sistema de creacion de HQ ingame pero los problemas son los siguientes

- al setearse un virtual world en los archivos aparecen numeros enormes como "2343242526" y cosas asi, nose por que pero nose si afectaria a algo
-cuando creo una hq se me crea un archivo solo, llamado 0.ini y cuando creo otra hq es como que la anterior se elimina y se crea otro archivo con el mismo numero 0.ini

lo que queria hacer es que se creen los archivos con los nombres de cada faccion, es decir

Barzini.ini, groove Steet.ini etc , es decir, simplemente crear los archivos con los nombres que se setearon en el primer parametro del comando que seria "Nombrehq"

Otra duda

Como ago para hacer espacios en un texto ? yo al utilizar el comando /crearhq [Nombre] pongo Groove Street y me salta el if de como usarlo, pero si pongo GrooveStreet todo junto si me funciona, necesito saber como hacer para que se puedan crear espacios en parametros de string

Saludos, les dejo el codigo por si alguien lo quiere ver

STOCKS :

[SPOILER]
Код:
stock CargarHQ()
{
   new CArch[22],c;
   print("[AVISO] Las HQ de facciones se cargaron Exitosamente!..\n");
   while(c < MAX_HQ)//el loop
   {
       format(CArch,sizeof(CArch),"hqs/%d.ini",c);//el destino para cargar
       if(fexist(CArch))//si existe el archivo formateado
	   {
	    new Str[128];
	    INI_ParseFile(CArch,"CargarHQ_%s",.bExtra = true, .extra = c);//carga del archivo INI
	    LabelHq[c] = Create3DTextLabel(Str,0xFFFFFFFF,PickupHQ[c][Entrada_x],PickupHQ[c][Entrada_y],PickupHQ[c][Entrada_z],20,0);
     	pHQ[c] = CreatePickup(1239,1,PickupHQ[c][Entrada_x],PickupHQ[c][Entrada_y],PickupHQ[c][Entrada_z]);
		}
      c++;
   }
   return 1;
}
forward CargarHQ_data(i,name[],value[]);

public CargarHQ_data(i,name[],value[])
{
   INI_Float("Entrada_x",PickupHQ[i][Entrada_x]);
   INI_Float("Entrada_y",PickupHQ[i][Entrada_y]);
   INI_Float("Entrada_z",PickupHQ[i][Entrada_z]);

   INI_Float("Salida_x",PickupHQ[i][Salida_x]);
   INI_Float("Salida_y",PickupHQ[i][Salida_y]);
   INI_Float("Salida_z",PickupHQ[i][Salida_z]);

   INI_Int("Interior",PickupHQ[i][Int]);
   INI_Int("VirtualWorld",PickupHQ[i][VW]);

   format(Nombrehq, 128, "%s",PickupHQ[i][NombreHQs]);
   return 1;
}
stock ActualizarHQ(playerid)
{
	new CArch[19];
   format(CArch,sizeof(CArch),"hqs/%d.ini",playerid);//el destino para guardar
   new INI:Arch = INI_Open(CArch);

   INI_SetTag(Arch,"Creadas HQ");//el TAg con el que lo leeremos al archivo (en el ini saldrб [data])

   INI_WriteFloat(Arch,"Entrada_x",PickupHQ[playerid][Entrada_x]);
   INI_WriteFloat(Arch,"Entrada_y",PickupHQ[playerid][Entrada_y]);
   INI_WriteFloat(Arch,"Entrada_z",PickupHQ[playerid][Entrada_z]);

   INI_WriteFloat(Arch,"Salida_x",PickupHQ[playerid][Salida_x]);
   INI_WriteFloat(Arch,"Salida_y",PickupHQ[playerid][Salida_y]);
   INI_WriteFloat(Arch,"Salida_z",PickupHQ[playerid][Salida_z]);

   INI_WriteInt(Arch,"Interior",PickupHQ[playerid][Int]);
   INI_WriteInt(Arch,"VirtualWorld",PickupHQ[playerid][VW]);
   INI_WriteString(Arch,"Nombre",PickupHQ[playerid][NombreHQs]);
   INI_Close(Arch);//cerramos el archivo
}
[/SPOILER]

Defines y news :

Код:
#define MAX_HQ 30
new Text3D:LabelHq[MAX_HQ];
new pHQ[MAX_HQ];
new Nombrehq[128];
Enum :

Код:
enum InfoHq
{
	Float:Entrada_x,
	Float:Entrada_y,
	Float:Entrada_z,
	Float:Salida_x,
	Float:Salida_y,
	Float:Salida_z,
	Int,
	VW,
	NombreHQs
}
new PickupHQ[MAX_HQ][InfoHq];
y el comando /crearhq

[SPOILER]
Код:
CMD:crearhq(playerid, params[])
{
	if(PlayerInfo[playerid][Admin] != 2013) return SendClientMessage(playerid, -1, "{00CED1}[ERROR]{FFFFFF} Tu no eres administrador!");
	new Float:eX,Float:eY,Float:eZ;
	new pInt;
	if(sscanf(params, "s[128]ifff",Nombrehq,pInt,pInt,eX,eY,eZ)) return SendClientMessage(playerid,-1,"{FF8C00}Uso:{FFFFFF}/crearhq [Nombre de HQ] [interior] [cordenada x interior] [cordenada y interior] [cordenada z interior]");
	GetPlayerPos(playerid, PickupHQ[playerid][Entrada_x],PickupHQ[playerid][Entrada_y],PickupHQ[playerid][Entrada_z]);
	PickupHQ[playerid][Salida_x] = eX;//almacenamos las cordenadas de los paremetros
   	PickupHQ[playerid][Salida_y] = eY;
   	PickupHQ[playerid][Salida_z] = eZ;
   	format(PickupHQ[playerid][NombreHQs], 128, "%s", Nombrehq);
   	PickupHQ[playerid][Int] = pInt;
   	PickupHQ[playerid][VW] = pInt+100;
   	pHQ[playerid] = CreatePickup(1239, 1, PickupHQ[playerid][Entrada_x],PickupHQ[playerid][Entrada_y],PickupHQ[playerid][Entrada_z]);
	new str[128];
	format(str, sizeof(str), "{94AEE6}%s{FFFFFF}\nUtiliza /entrar", Nombrehq);
	LabelHq[playerid] = Create3DTextLabel(str,0xFFFFFFFF,PickupHQ[playerid][Entrada_x],PickupHQ[playerid][Entrada_y],PickupHQ[playerid][Entrada_z],20,0);
	ActualizarHQ(playerid);
	return 1;
}
[/SPOILER]

Gracias


Respuesta: [Problema] Mi Sistema - JustBored - 10.04.2013

Se utiliza %s para definir strings. Estбs usando %d (Se usa para integrers) en ves de %s. Despuйs el comando serнa asн
pawn Код:
CMD:crearhq(playerid, params[])
{
    if(PlayerInfo[playerid][Admin] != 2013) return SendClientMessage(playerid, -1, "{00CED1}[ERROR]{FFFFFF} Tu no eres administrador!");
    new Float:eX,Float:eY,Float:eZ;
    new pInt;
    if(!sscanf(params, "s[128]ifff",Nombrehq,pInt,pInt,eX,eY,eZ)) return SendClientMessage(playerid,-1,"{FF8C00}Uso:{FFFFFF}/crearhq [Nombre de HQ] [interior] [cordenada x interior] [cordenada y interior] [cordenada z interior]");
    GetPlayerPos(playerid, PickupHQ[playerid][Entrada_x],PickupHQ[playerid][Entrada_y],PickupHQ[playerid][Entrada_z]);
    PickupHQ[playerid][Salida_x] = eX;//almacenamos las cordenadas de los paremetros
    PickupHQ[playerid][Salida_y] = eY;
    PickupHQ[playerid][Salida_z] = eZ;
    format(PickupHQ[playerid][NombreHQs], 128, "%s", Nombrehq);
    PickupHQ[playerid][Int] = pInt;
    PickupHQ[playerid][VW] = pInt+100;
    pHQ[playerid] = CreatePickup(1239, 1, PickupHQ[playerid][Entrada_x],PickupHQ[playerid][Entrada_y],PickupHQ[playerid][Entrada_z]);
    new str[128];
    format(str, sizeof(str), "{94AEE6}%s{FFFFFF}\nUtiliza /entrar", Nombrehq);
    LabelHq[playerid] = Create3DTextLabel(str,0xFFFFFFFF,PickupHQ[playerid][Entrada_x],PickupHQ[playerid][Entrada_y],PickupHQ[playerid][Entrada_z],20,0);
    ActualizarHQ(playerid);
    return 1;
}



Respuesta: [Problema] Mi Sistema - sonnkz - 10.04.2013

Solucionado lo de la definicion de string, ahora me falta solucionar para que cree un archivo .ini para cada HQ


Respuesta: [Problema] Mi Sistema - JuliPera - 10.04.2013

Estas guardando las HQ's con tu ID, por eso se guardan con 0.
Tenes que poner el ID de la HQ, o el nombre.

Te conviene guardarlas con ID y no con Nombre, porque cuando los cargas empazas con el 0, cargas esa y sumas 1, y asi hasta la ultima. Si lo haces con nombre no podes hacer esto.


Respuesta: [Problema] Mi Sistema - sonnkz - 10.04.2013

Entonces como seria ? por que la verdad, me re perdi en este sistema que hice


Respuesta: [Problema] Mi Sistema - JustBored - 11.04.2013

Te recomiendo crear un archivo .cfg (manualmente se crea porque sino la PC no lo abre, al menos la mнa.) y luego meterle ahн los datos. No sй supongo que serнa mбs fбcil, despuйs vos mismo te darнas cuenta, o sino no sй usa un code masomenso asн
pawn Код:
new File:hFile, string[64];
format(string, sizeof(string), "directorio/%s.ini", NombreHQ); //creo que esa es la variable
hFile = fopen(string, io_readwrite);
if(hFile)
{
//cуdigos
}
fclose(hFile);
}
return 1;
}
Lo que ese cуdigo hace es crear un archivo nuevo en el directorio deseado con el nombre del nombre al que le pusiste a la HQ, el archivo va en la carpeta scriptfiles aunque se puede crear otra carpeta dentro de scriptifles tipo no sй "Facciones" y metes el coso asн "facciones/%s.ini" para que el archivo se cree dentro de la carpeta "facciones"