[FilterScript] Simple Toy System + Saving with DINI. (saving only 1 slot)
#1

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.
Reply
#2

Add an video
Good job
Reply
#3

It will be good if you make it in pastebin.
Reply
#4

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
Reply
#5

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

i really want to know how.
Reply
#7

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.
Reply
#8

ohh yea but it's ini file "
Reply
#9

Can omeone fix the warnings plz ?
Reply
#10

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...
Reply
#11

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

up up up
Reply
#13

UPUPUP
Reply
#14

UPUPUPUPUP
Reply
#15

UPPPPPPPPPPP
Reply
#16

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!
Reply
#17

Can someone make it save all slots?
Reply
#18

Bump help us
Reply
#19

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...
Reply
#20

some help here how to save 9 slots
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)