04.01.2014, 16:11
Pessoal to com um FS aqui de attachments, porem ele tem 9 slots, eu consigo colocar os 9 objetos, entretanto... na hora de salvar no arquivo .INI ele salva apenas 1 objeto. Voce sabem como fazer ele salvar os 9. Agradeзo desde ja quem souber. Ou quem me mande esse FS corrigo, achei esse codigo na parte dos "gringos" e tava mal feito.
ObrigadoКод:
#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; }