SA-MP Forums Archive
[FilterScript] Simple Toy System + Saving with DINI. (saving only 1 slot) - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Filterscripts (https://sampforum.blast.hk/forumdisplay.php?fid=17)
+--- Thread: [FilterScript] Simple Toy System + Saving with DINI. (saving only 1 slot) (/showthread.php?tid=380950)

Pages: 1 2


Simple Toy System + Saving with DINI. (saving only 1 slot) - PaulDinam - 27.09.2012

I made it to save only slot 0. can't figure out how to add 9 slots saving.
people who can edit this filter script and post it or send me in private ill be glad.


http://pastebin.com/uXHUTG5z

Code:
#include <a_samp>
#include <YSI\y_ini>
#define PATH "/toys/%s.ini"

enum pInfo
{
	pindex,
	pmodelid,
	pboneid,
	Float:pfOffsetX,
	Float:pfOffsetY,
	Float:pfOffsetZ,
	Float:pfRotX,
	Float:pfRotY,
	Float:pfRotZ,
	Float:pfScaleX,
	Float:pfScaleY,
	Float:pfScaleZ
}
new PlayerInfo[MAX_PLAYERS][pInfo];
#define COL_GREEN2         "{33CC00}" //this is color
#define COL_WHITE          "{FFFFFF}" //this too
#define DIALOG_ATTACH_INDEX             13500
#define DIALOG_ATTACH_INDEX_SELECTION   DIALOG_ATTACH_INDEX+1
#define DIALOG_ATTACH_EDITREPLACE       DIALOG_ATTACH_INDEX+2
#define DIALOG_ATTACH_MODEL_SELECTION   DIALOG_ATTACH_INDEX+3
#define DIALOG_ATTACH_BONE_SELECTION    DIALOG_ATTACH_INDEX+4

enum AttachmentEnum
{
    attachmodel,
    attachname[24]
}

new AttachmentObjects[][AttachmentEnum] = {
{18632, "FishingRod"},
{18633, "GTASAWrench1"},
{18634, "GTASACrowbar1"},
{18635, "GTASAHammer1"},
{18636, "PoliceCap1"},
{18637, "PoliceShield1"},
{18638, "HardHat1"},
{18639, "BlackHat1"},
{18640, "Hair1"},
{18975, "Hair2"},
{19136, "Hair4"},
{19274, "Hair5"},
{18641, "Flashlight1"},
{18642, "Taser1"},
{18643, "LaserPointer1"},
{19080, "LaserPointer2"},
{19081, "LaserPointer3"},
{19082, "LaserPointer4"},
{19083, "LaserPointer5"},
{19084, "LaserPointer6"},
{18644, "Screwdriver1"},
{18645, "MotorcycleHelmet1"},
{18865, "MobilePhone1"},
{18866, "MobilePhone2"},
{18867, "MobilePhone3"},
{18868, "MobilePhone4"},
{18869, "MobilePhone5"},
{18870, "MobilePhone6"},
{18871, "MobilePhone7"},
{18872, "MobilePhone8"},
{18873, "MobilePhone9"},
{18874, "MobilePhone10"},
{18875, "Pager1"},
{18890, "Rake1"},
{18891, "Bandana1"},
{18892, "Bandana2"},
{18893, "Bandana3"},
{18894, "Bandana4"},
{18895, "Bandana5"},
{18896, "Bandana6"},
{18897, "Bandana7"},
{18898, "Bandana8"},
{18899, "Bandana9"},
{18900, "Bandana10"},
{18901, "Bandana11"},
{18902, "Bandana12"},
{18903, "Bandana13"},
{18904, "Bandana14"},
{18905, "Bandana15"},
{18906, "Bandana16"},
{18907, "Bandana17"},
{18908, "Bandana18"},
{18909, "Bandana19"},
{18910, "Bandana20"},
{18911, "Mask1"},
{18912, "Mask2"},
{18913, "Mask3"},
{18914, "Mask4"},
{18915, "Mask5"},
{18916, "Mask6"},
{18917, "Mask7"},
{18918, "Mask8"},
{18919, "Mask9"},
{18920, "Mask10"},
{18921, "Beret1"},
{18922, "Beret2"},
{18923, "Beret3"},
{18924, "Beret4"},
{18925, "Beret5"},
{18926, "Hat1"},
{18927, "Hat2"},
{18928, "Hat3"},
{18929, "Hat4"},
{18930, "Hat5"},
{18931, "Hat6"},
{18932, "Hat7"},
{18933, "Hat8"},
{18934, "Hat9"},
{18935, "Hat10"},
{18936, "Helmet1"},
{18937, "Helmet2"},
{18938, "Helmet3"},
{18939, "CapBack1"},
{18940, "CapBack2"},
{18941, "CapBack3"},
{18942, "CapBack4"},
{18943, "CapBack5"},
{18944, "HatBoater1"},
{18945, "HatBoater2"},
{18946, "HatBoater3"},
{18947, "HatBowler1"},
{18948, "HatBowler2"},
{18949, "HatBowler3"},
{18950, "HatBowler4"},
{18951, "HatBowler5"},
{18952, "BoxingHelmet1"},
{18953, "CapKnit1"},
{18954, "CapKnit2"},
{18955, "CapOverEye1"},
{18956, "CapOverEye2"},
{18957, "CapOverEye3"},
{18958, "CapOverEye4"},
{18959, "CapOverEye5"},
{18960, "CapRimUp1"},
{18961, "CapTrucker1"},
{18962, "CowboyHat2"},
{18963, "CJElvisHead"},
{18964, "SkullyCap1"},
{18965, "SkullyCap2"},
{18966, "SkullyCap3"},
{18967, "HatMan1"},
{18968, "HatMan2"},
{18969, "HatMan3"},
{18970, "HatTiger1"},
{18971, "HatCool1"},
{18972, "HatCool2"},
{18973, "HatCool3"},
{18974, "MaskZorro1"},
{18976, "MotorcycleHelmet2"},
{18977, "MotorcycleHelmet3"},
{18978, "MotorcycleHelmet4"},
{18979, "MotorcycleHelmet5"},
{19006, "GlassesType1"},
{19007, "GlassesType2"},
{19008, "GlassesType3"},
{19009, "GlassesType4"},
{19010, "GlassesType5"},
{19011, "GlassesType6"},
{19012, "GlassesType7"},
{19013, "GlassesType8"},
{19014, "GlassesType9"},
{19015, "GlassesType10"},
{19016, "GlassesType11"},
{19017, "GlassesType12"},
{19018, "GlassesType13"},
{19019, "GlassesType14"},
{19020, "GlassesType15"},
{19021, "GlassesType16"},
{19022, "GlassesType17"},
{19023, "GlassesType18"},
{19024, "GlassesType19"},
{19025, "GlassesType20"},
{19026, "GlassesType21"},
{19027, "GlassesType22"},
{19028, "GlassesType23"},
{19029, "GlassesType24"},
{19030, "GlassesType25"},
{19031, "GlassesType26"},
{19032, "GlassesType27"},
{19033, "GlassesType28"},
{19034, "GlassesType29"},
{19035, "GlassesType30"},
{19036, "HockeyMask1"},
{19037, "HockeyMask2"},
{19038, "HockeyMask3"},
{19039, "WatchType1"},
{19040, "WatchType2"},
{19041, "WatchType3"},
{19042, "WatchType4"},
{19043, "WatchType5"},
{19044, "WatchType6"},
{19045, "WatchType7"},
{19046, "WatchType8"},
{19047, "WatchType9"},
{19048, "WatchType10"},
{19049, "WatchType11"},
{19050, "WatchType12"},
{19051, "WatchType13"},
{19052, "WatchType14"},
{19053, "WatchType15"},
{19085, "EyePatch1"},
{19086, "ChainsawDildo1"},
{19090, "PomPomBlue"},
{19091, "PomPomRed"},
{19092, "PomPomGreen"},
{19093, "HardHat2"},
{19094, "BurgerShotHat1"},
{19095, "CowboyHat1"},
{19096, "CowboyHat3"},
{19097, "CowboyHat4"},
{19098, "CowboyHat5"},
{19099, "PoliceCap2"},
{19100, "PoliceCap3"},
{19101, "ArmyHelmet1"},
{19102, "ArmyHelmet2"},
{19103, "ArmyHelmet3"},
{19104, "ArmyHelmet4"},
{19105, "ArmyHelmet5"},
{19106, "ArmyHelmet6"},
{19107, "ArmyHelmet7"},
{19108, "ArmyHelmet8"},
{19109, "ArmyHelmet9"},
{19110, "ArmyHelmet10"},
{19111, "ArmyHelmet11"},
{19112, "ArmyHelmet12"},
{19113, "SillyHelmet1"},
{19114, "SillyHelmet2"},
{19115, "SillyHelmet3"},
{19116, "PlainHelmet1"},
{19117, "PlainHelmet2"},
{19118, "PlainHelmet3"},
{19119, "PlainHelmet4"},
{19120, "PlainHelmet5"},
{19137, "CluckinBellHat1"},
{19138, "PoliceGlasses1"},
{19139, "PoliceGlasses2"},
{19140, "PoliceGlasses3"},
{19141, "SWATHelmet1"},
{19142, "SWATArmour1"},
{19160, "HardHat3"},
{19161, "PoliceHat1"},
{19162, "PoliceHat2"},
{19163, "GimpMask1"},
{19317, "bassguitar01"},
{19318, "flyingv01"},
{19319, "warlock01"},
{19330, "fire_hat01"},
{19331, "fire_hat02"},
{19346, "hotdog01"},
{19347, "badge01"},
{19348, "cane01"},
{19349, "monocle01"},
{19350, "moustache01"},
{19351, "moustache02"},
{19352, "tophat01"},
{19487, "tophat02"},
{19488, "HatBowler6"},
{19513, "whitephone"},
{19515, "GreySwatArm"},
{3044, "Cigar"},
{1210, "Briefcase"}
};

new AttachmentBones[][24] = {
{"Spine"},
{"Head"},
{"Left upper arm"},
{"Right upper arm"},
{"Left hand"},
{"Right hand"},
{"Left thigh"},
{"Right thigh"},
{"Left foot"},
{"Right foot"},
{"Right calf"},
{"Left calf"},
{"Left forearm"},
{"Right forearm"},
{"Left clavicle"},
{"Right clavicle"},
{"Neck"},
{"Jaw"}
};

public OnPlayerDisconnect(playerid, reason)
{

return 1;
}

public OnPlayerSpawn(playerid)
{
	OnPlayerLogin(playerid);
    // Attach a white hat to the head of the player and paint it green
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{

    if(strcmp(cmdtext, "/attachments", true) == 0)
    {
        new string[128];
        for(new x;x<MAX_PLAYER_ATTACHED_OBJECTS;x++)
        {
            if(IsPlayerAttachedObjectSlotUsed(playerid, x)) format(string, sizeof(string), "%s%d (Used)\n", string, x);
            else format(string, sizeof(string), "%s%d\n", string, x);
        }
        ShowPlayerDialog(playerid, DIALOG_ATTACH_INDEX_SELECTION, DIALOG_STYLE_LIST, \
        "{FF0000}Attachment Modification - Index Selection", string, "Select", "Cancel");
        return 1;
    }


    return 0;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid)
    {
        case DIALOG_ATTACH_INDEX_SELECTION:
        {
            if(response)
            {
                if(IsPlayerAttachedObjectSlotUsed(playerid, listitem))
                {
                    ShowPlayerDialog(playerid, DIALOG_ATTACH_EDITREPLACE, DIALOG_STYLE_MSGBOX, \
                    "{FF0000}Attachment Modification", "Do you wish to edit the attachment in that slot, or delete it?", "Edit", "Delete");
                }
                else
                {
                    new string[4000+1];
                    for(new x;x<sizeof(AttachmentObjects);x++)
                    {
                        format(string, sizeof(string), "%s%s\n", string, AttachmentObjects[x][attachname]);
                    }
                    ShowPlayerDialog(playerid, DIALOG_ATTACH_MODEL_SELECTION, DIALOG_STYLE_LIST, \
                    "{FF0000}Attachment Modification - Model Selection", string, "Select", "Cancel");
                }
                SetPVarInt(playerid, "AttachmentIndexSel", listitem);
            }
            return 1;
        }
        case DIALOG_ATTACH_EDITREPLACE:
        {
            if(response) EditAttachedObject(playerid, GetPVarInt(playerid, "AttachmentIndexSel"));
            else RemovePlayerAttachedObject(playerid, GetPVarInt(playerid, "AttachmentIndexSel"));
            DeletePVar(playerid, "AttachmentIndexSel");
            return 1;
        }
        case DIALOG_ATTACH_MODEL_SELECTION:
        {
            if(response)
            {
                if(GetPVarInt(playerid, "AttachmentUsed") == 1) EditAttachedObject(playerid, listitem);
                else
                {
                    SetPVarInt(playerid, "AttachmentModelSel", AttachmentObjects[listitem][attachmodel]);
                    new string[256+1];
                    for(new x;x<sizeof(AttachmentBones);x++)
                    {
                        format(string, sizeof(string), "%s%s\n", string, AttachmentBones[x]);
                    }
                    ShowPlayerDialog(playerid, DIALOG_ATTACH_BONE_SELECTION, DIALOG_STYLE_LIST, \
                    "{FF0000}Attachment Modification - Bone Selection", string, "Select", "Cancel");
                }
            }
            else DeletePVar(playerid, "AttachmentIndexSel");
            return 1;
        }
        case DIALOG_ATTACH_BONE_SELECTION:
        {
            if(response)
            {
                SetPlayerAttachedObject(playerid, GetPVarInt(playerid, "AttachmentIndexSel"), GetPVarInt(playerid, "AttachmentModelSel"), listitem+1);
                EditAttachedObject(playerid, GetPVarInt(playerid, "AttachmentIndexSel"));
                SendClientMessage(playerid, 0xFFFFFFFF, "Hint: Use {FFFF00}~k~~PED_SPRINT~{FFFFFF} to look around.");
            }
            DeletePVar(playerid, "AttachmentIndexSel");
            DeletePVar(playerid, "AttachmentModelSel");
            return 1;
        }
    }
    return 0;
}



OnPlayerLogin(playerid)
{ 
    new
        uFile[35];
    format(uFile, 35, PATH, GetName(playerid)); 
    INI_ParseFile(uFile, "LoadToys", .bExtra = true, .extra = playerid); 
	SetPlayerAttachedObject(playerid, 
	INT:PlayerInfo[playerid][pindex],
	INT:PlayerInfo[playerid][pmodelid],
	INT:PlayerInfo[playerid][pboneid],
	Float:PlayerInfo[playerid][pfOffsetX],
	Float:PlayerInfo[playerid][pfOffsetY],
	Float:PlayerInfo[playerid][pfOffsetZ],
	Float:PlayerInfo[playerid][pfRotX],
	Float:PlayerInfo[playerid][pfRotY],
	Float:PlayerInfo[playerid][pfRotZ],
	Float:PlayerInfo[playerid][pfScaleX],
	Float:PlayerInfo[playerid][pfScaleY],
	Float:PlayerInfo[playerid][pfScaleZ]);
    return 1; 
} 



stock UserPath(playerid)
{
    new string[128],playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),PATH,playername);
    return string;
}

stock GetName(playerid) //function for getting player name, this is faster than GetPlayerName(I don't mean in miliseconds, just I don't need to create new variable and than use GetPlayerName, I just use this function
{ //opening barrel
    new
        pName[MAX_PLAYER_NAME]; //variable for player name, max.player name is 24
        
    GetPlayerName(playerid, pName, MAX_PLAYER_NAME); //getting player name
    return pName; //returning player name;
} //closing barrel

forward LoadToys(playerid,name[],value[]);
public LoadToys(playerid,name[],value[])
{

	if (!strcmp(name, "sindex")){ PlayerInfo[playerid][pindex] = strval(value); }
	if (!strcmp(name, "pmodelid")){ PlayerInfo[playerid][pmodelid] = strval(value); }
	if (!strcmp(name, "pboneid")){ PlayerInfo[playerid][pboneid] = strval(value); }
	if (!strcmp(name, "pfOffsetX")){ PlayerInfo[playerid][pfOffsetX] = strval(value); }
	if (!strcmp(name, "pfOffsetY")){ PlayerInfo[playerid][pfOffsetY] = strval(value); }
	if (!strcmp(name, "pfOffsetY")){ PlayerInfo[playerid][pfOffsetZ] = strval(value); }
	if (!strcmp(name, "pfRotX")){ PlayerInfo[playerid][pfRotX] = strval(value); }
	if (!strcmp(name, "pfRotY")){ PlayerInfo[playerid][pfRotY] = strval(value); }
	if (!strcmp(name, "pfRotZ")){ PlayerInfo[playerid][pfRotZ] = strval(value); }
	if (!strcmp(name, "pfScaleX")){ PlayerInfo[playerid][pfScaleX] = strval(value); }
	if (!strcmp(name, "pfScaleY")){ PlayerInfo[playerid][pfScaleY] = strval(value); }
	if (!strcmp(name, "pfScaleZ")){ PlayerInfo[playerid][pfScaleZ] = strval(value); }
	
    INI_Int("pindex",PlayerInfo[playerid][pindex]);
	INI_Int("pmodelid",PlayerInfo[playerid][pmodelid]);
	INI_Int("pboneid",PlayerInfo[playerid][pboneid]);
	INI_Float("pfOffsetX",PlayerInfo[playerid][pfOffsetX]);
	INI_Float("pfOffsetY",PlayerInfo[playerid][pfOffsetY]);
	INI_Float("pfOffsetZ",PlayerInfo[playerid][pfOffsetZ]); 
	INI_Float("pfRotX",PlayerInfo[playerid][pfRotX]);
	INI_Float("pfRotY",PlayerInfo[playerid][pfRotY]);
	INI_Float("pfRotZ",PlayerInfo[playerid][pfRotZ]);
	INI_Float("pfScaleX",PlayerInfo[playerid][pfScaleX]);
	INI_Float("pfScaleY",PlayerInfo[playerid][pfScaleY]);
	INI_Float("pfScaleZ",PlayerInfo[playerid][pfScaleZ]);

    return 1;
}

public OnPlayerEditAttachedObject(playerid, response, index, modelid, boneid,Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ,Float:fRotX, Float:fRotY, Float:fRotZ,Float:fScaleX, Float:fScaleY, Float:fScaleZ)
{

    new INI:File = INI_Open(UserPath(playerid));
	INI_WriteInt(File,"pindex",index);
	INI_WriteInt(File,"pmodelid",modelid);
	INI_WriteInt(File,"pboneid",boneid);
	INI_WriteFloat(File,"pfOffsetX",fOffsetX);
	INI_WriteFloat(File,"pfOffsetY",fOffsetY);
	INI_WriteFloat(File,"pfOffsetZ",fOffsetZ); 
	INI_WriteFloat(File,"pfRotX",fRotX);
	INI_WriteFloat(File,"pfRotY",fRotY);
	INI_WriteFloat(File,"pfRotZ",fRotZ);
	INI_WriteFloat(File,"pfScaleX",fScaleX);
	INI_WriteFloat(File,"pfScaleY",fScaleY);
	INI_WriteFloat(File,"pfScaleZ",fScaleZ);
    INI_Close(File);
				
	PlayerInfo[playerid][pindex] = index;
	PlayerInfo[playerid][pmodelid] = modelid;
	PlayerInfo[playerid][pboneid] = boneid;
	PlayerInfo[playerid][pfOffsetX] = fOffsetX;
	PlayerInfo[playerid][pfOffsetY] = fOffsetY;
	PlayerInfo[playerid][pfOffsetZ] = fOffsetZ;
	PlayerInfo[playerid][pfRotX] = fRotX;
	PlayerInfo[playerid][pfRotY] = fRotY;
	PlayerInfo[playerid][pfRotZ] = fRotZ;
	PlayerInfo[playerid][pfScaleX] = fScaleX;
	PlayerInfo[playerid][pfScaleY] = fScaleY;
	PlayerInfo[playerid][pfScaleZ] = fScaleZ;
	
    SetPlayerAttachedObject(playerid,index,modelid,boneid,fOffsetX,fOffsetY,fOffsetZ,fRotX,fRotY,fRotZ,fScaleX,fScaleY,fScaleZ);
    SendClientMessage(playerid, 0xFFFFFFFF, "You finished editing an attached object");
    
    return 1;
}
Open a folder called toys in script files.


Re: Simple Toy System + Saving with DINI. (saving only 1 slot) - God'Z War - 27.09.2012

Add an video
Good job


Re: Simple Toy System + Saving with DINI. (saving only 1 slot) - necrobg3 - 27.09.2012

It will be good if you make it in pastebin.


Re: Simple Toy System + Saving with DINI. (saving only 1 slot) - PaulDinam - 27.09.2012

http://pastebin.com/uXHUTG5z

i can't make video my computer is too slow, sorry.
i really wanna know how to make saving for 9 slots not only for 1


Re: Simple Toy System + Saving with DINI. (saving only 1 slot) - .v - 27.09.2012

Good job! But If possible make it up to 9 Slot


Re: Simple Toy System + Saving with DINI. (saving only 1 slot) - PaulDinam - 27.09.2012

i really want to know how.


Re: Simple Toy System + Saving with DINI. (saving only 1 slot) - .v - 27.09.2012

Quote:
Originally Posted by PaulDinam
View Post
i really want to know how.
I know you know because you've already made one for the Slot 1

EDIT: I don't get it title say Saving with Dini and you are using YSI\y_ini.


Re: Simple Toy System + Saving with DINI. (saving only 1 slot) - PaulDinam - 27.09.2012

ohh yea but it's ini file "


Re: Simple Toy System + Saving with DINI. (saving only 1 slot) - dorperez - 26.07.2013

Can omeone fix the warnings plz ?


Re: Simple Toy System + Saving with DINI. (saving only 1 slot) - Dystans - 26.07.2013

Simple, but useful script. And one thing - change name of thread (from DINI to Y_Ini - they aren't same).

@edit: DAMN, I bump that thread and don't look at date... I'm so sorry...


Re: Simple Toy System + Saving with DINI. (saving only 1 slot) - VenomMancer - 20.12.2013

Who can make this save to all slot, i will pay him


Re: Simple Toy System + Saving with DINI. (saving only 1 slot) - VenomMancer - 21.12.2013

up up up


Re: Simple Toy System + Saving with DINI. (saving only 1 slot) - dorperez - 23.01.2014

UPUPUP


Re: Simple Toy System + Saving with DINI. (saving only 1 slot) - dorperez - 24.01.2014

UPUPUPUPUP


Re: Simple Toy System + Saving with DINI. (saving only 1 slot) - dorperez - 31.01.2014

UPPPPPPPPPPP


Re: Simple Toy System + Saving with DINI. (saving only 1 slot) - gonzalo12 - 31.01.2014

I cant use it, i dont know why, its the Dialog, i put /attachments then the dialog and then cant use, because i click on the dialog and it closes instant..

Help me please!


Re: Simple Toy System + Saving with DINI. (saving only 1 slot) - HitterHitman - 01.03.2014

Can someone make it save all slots?


Re: Simple Toy System + Saving with DINI. (saving only 1 slot) - VenomMancer - 07.03.2014

Bump help us


Re: Simple Toy System + Saving with DINI. (saving only 1 slot) - RoboN1X - 07.03.2014

I have similar script, But not the edited version of this script... And it's not really a system, Just an EDITOR.
Here i'm just trying to help people that wanted a 10 slots attached object/toy editor, So sorry if it's kinda out of topic.
You can use my filterscript: https://sampforum.blast.hk/showthread.php?tid=416138 It's using DINI, not Y_INI so it's slow. Also only for 0.3e and upper.

I'm sorry if that's not what you are looking for. Moderators are free to delete this post if i'm wrong.

EDIT: Nvm...


Re: Simple Toy System + Saving with DINI. (saving only 1 slot) - AroseKhanNiazi - 07.03.2014

some help here how to save 9 slots