[HELP] Dynamic Pickups [Saving/Loading] -
HY - 25.12.2014
Hello everybody.
So, I tried to make a Dynamic Pickups System.
I made creating/saving system and commands... But I don't know how to load pickups...
Code:
http://pastebin.com/g77j60BK
pawn Код:
#include <a_samp>
#include <zcmd>
#include <sscanf>
#include <YSI\y_ini>
#define MAX_PICKUP 1000
#define PATH "/Pickups/%d.ini"
enum pInfo
{
pID,
pType,
Float:pX,
Float:pY,
Float:pZ
}
new PickupInfo[MAX_PICKUP][pInfo];
new idpickup;
CMD:createpickup(playerid, params[])
{
new ID, Type, Float:X, Float:Y, Float:Z;
if(sscanf(params, "ii", ID, Type)) return SendClientMessage(playerid, -1, "{FF0000}USAGE: {FFFFFF}/CreatePickup [Pickup ID] [Pickup Type]");
if(Type > 10) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}Invalid type. [0-10]");
PickupInfo[idpickup][pID] = ID;
PickupInfo[idpickup][pType] = Type;
PickupInfo[idpickup][pX] = X;
PickupInfo[idpickup][pY] = Y;
PickupInfo[idpickup][pZ] = Z;
new INI:File = INI_Open(PickPath());
INI_SetTag(File, "|| Pickups ||");
INI_WriteInt(File, "Pickup ID", PickupInfo[idpickup][pID]);
INI_WriteInt(File, "Pickup Type", PickupInfo[idpickup][pType]);
INI_WriteFloat(File, "Pickup X", PickupInfo[idpickup][pX]);
INI_WriteFloat(File, "Pickup Y", PickupInfo[idpickup][pY]);
INI_WriteFloat(File, "Pickup Z", PickupInfo[idpickup][pZ]);
INI_Close(File);
CreatePickup(ID, Type, X, Y, Z, -1);
idpickup++;
return 1;
}
stock PickPath()
{
new strs[10];
format(strs, sizeof(strs), PATH, idpickup);
return strs;
}
stock LoadPickups()
{
for(new i = 0; i < MAX_PICKUP; i++)
{
// ... I don't know how continue here.
}
}
So, how I start with loading. + rep for helper
Re: [HELP] Dynamic Pickups [Saving/Loading] -
M4D - 25.12.2014
i told you in your last post but you didn't accept my codes !!
but again i say ... PickupPath hase parameter ! it isn't a loop that you make it like this: Pickuppath()
i edited your code
pawn Код:
#include <a_samp>
#include <zcmd>
#include <sscanf>
#include <YSI\y_ini>
#define MAX_PICKUP 1000
#define PATH "/Pickups/%d.ini"
enum pInfo
{
pID,
pType,
Float:pX,
Float:pY,
Float:pZ
}
new PickupInfo[MAX_PICKUP][pInfo];
new idpickup;
//>loading pickups function
forward LoadPickups(id, name[], value[]);
public LoadPickups(id, name[], value[])
{
INI_Int("Pickup ID",PickupInfo[id][pID]);
INI_Int("Pickup Type",PickupInfo[id][pType]);
INI_Float("Pickup X",PickupInfo[id][pX]);
INI_Float("Pickup Y",PickupInfo[id][pY]);
INI_Float("Pickup Z",PickupInfo[id][pZ]);
return 1;
}
CMD:createpickup(playerid, params[])
{
new ID, Type, Float:X, Float:Y, Float:Z;
if(sscanf(params, "ii", ID, Type)) return SendClientMessage(playerid, -1, "{FF0000}USAGE: {FFFFFF}/CreatePickup [Pickup ID] [Pickup Type]");
if(Type > 10) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}Invalid type. [0-10]");
PickupInfo[idpickup][pID] = ID;
PickupInfo[idpickup][pType] = Type;
PickupInfo[idpickup][pX] = X;
PickupInfo[idpickup][pY] = Y;
PickupInfo[idpickup][pZ] = Z;
new INI:File = INI_Open(PickPath());
INI_SetTag(File, "|| Pickups ||");
INI_WriteInt(File, "Pickup ID", PickupInfo[idpickup][pID]);
INI_WriteInt(File, "Pickup Type", PickupInfo[idpickup][pType]);
INI_WriteFloat(File, "Pickup X", PickupInfo[idpickup][pX]);
INI_WriteFloat(File, "Pickup Y", PickupInfo[idpickup][pY]);
INI_WriteFloat(File, "Pickup Z", PickupInfo[idpickup][pZ]);
INI_Close(File);
CreatePickup(ID, Type, X, Y, Z, -1);
idpickup++;
return 1;
}
//your stock here don't have any parameter
//you define "PATH" like this: "/Pickups/%d.ini" ... so what is %d ? this not ini file name ?!!
//so ? where you used it in stock ? your stock is () !
//it have to be like this: stock PickPath(pickupid)
stock PickPath(pickupdid)
{
new strs[10];
format(strs, sizeof(strs), PATH, pickupdid);
return strs;
}
stock LoadPickups()
{
for(new i = 0; i < MAX_PICKUP; i++)
{
if(fexist(PickPath(i)))
{
INI_ParseFile(PickPath(i), "LoadPickups", .bExtra = true, .extra = i); //>Loading pickup id , type and position into variables.
}
}
}
//after this loop you loaded pickup information into variable...
//to create them make another loop between variables
EDIT: Creating Pickups:
pawn Код:
stock CreatePickups()
{
for(new i = 0; i < MAX_PICKUP; i++)
{
CreatePickup(PickupInfo[i][pID], PickupInfo[i][pType], PickupInfo[i][pX], PickupInfo[i][pY], PickupInfo[i][pZ], -1);
}
}