Herro[CM] |
Дата: Среда, 09.09.2015, 19:31 | Сообщение # 1
|
Бывалый
Сообщений: 425
Статус: Offline
|
Представляю вашему вниманию сохранения прикрепляемых объектов к персонажу.
Код SaveAttacheplayer(playerid,varAdmin=1,varVip=1,index,modelid,boneid,Float:fOffsetX,Float:fOffsetY, Float:fOffsetZ,Float:fRotX,Float:fRotY,Float:fRotZ,Float:fScaleX,Float:fScaleY,Float:fScaleZ);
LoadAttacheplayer(playerid, varAdmin = 1, varVip = 1); RemoveSlotAttached(playerid,index);
Сам include
Код #define PASTA_ACESSORIOS "/Acessorios/Acessorio_%s.ini" #define MAX_ATTCHP 4
#if defined _SaveAt_included #endinput #endif #define _SaveAt_included #pragma library SaveAt
/*native SaveAttacheplayer(playerid, varAdmin = 1, varVip = 1, index,modelid, boneid,Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ,Float:fRotX, Float:fRotY, Float:fRotZ,Float:fScaleX, Float:fScaleY, Float:fScaleZ); native LoadAttacheplayer(playerid, varAdmin = 1, varVip = 1); native RemoveSlotAttached(playerid,index);*/
enum AtachhP { bool:Used, ModeloID, BoneID, Float:ApX, Float:ApY, Float:ApZ, Float:ArX, Float:ArY, Float:ArZ, Float:AeX, Float:AeY, Float:AeZ }; new AttaCheP[MAX_PLAYERS][MAX_PLAYER_ATTACHED_OBJECTS][AtachhP];
stock SaveAttacheplayer(playerid, varAdmin = 1, varVip = 1, index,modelid, boneid, Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ,Float:fRotX, Float:fRotY, Float:fRotZ,Float:fScaleX, Float:fScaleY, Float:fScaleZ) { new aname[MAX_PLAYER_NAME], file[100], strText[15], slots; GetPlayerName(playerid, aname, MAX_PLAYER_NAME); format(file, sizeof(file), PASTA_ACESSORIOS, aname);
AttaCheP[playerid][index][Used] = true; AttaCheP[playerid][index][ModeloID] = modelid; AttaCheP[playerid][index][BoneID] = boneid; AttaCheP[playerid][index][ApX] = fOffsetX; AttaCheP[playerid][index][ApY] = fOffsetY; AttaCheP[playerid][index][ApZ] = fOffsetZ; AttaCheP[playerid][index][ArX] = fRotX; AttaCheP[playerid][index][ArY] = fRotY; AttaCheP[playerid][index][ArZ] = fRotZ; AttaCheP[playerid][index][AeX] = fScaleX; AttaCheP[playerid][index][AeY] = fScaleY; AttaCheP[playerid][index][AeZ] = fScaleZ;
SetPlayerAttachedObject(playerid,index,AttaCheP[playerid][index][ModeloID], AttaCheP[playerid][index][BoneID], AttaCheP[playerid][index][ApX], AttaCheP[playerid][index][ApY], AttaCheP[playerid][index][ApZ], AttaCheP[playerid][index][ArX], AttaCheP[playerid][index][ArY], AttaCheP[playerid][index][ArZ], AttaCheP[playerid][index][AeX], AttaCheP[playerid][index][AeY], AttaCheP[playerid][index][AeZ]);
if(!DOF2::FileExists(file)) DOF2::CreateFile(file); { if(varAdmin > 0 || varVip == 1) slots = MAX_PLAYER_ATTACHED_OBJECTS; else slots = MAX_ATTCHP; for(new i; i < slots; i ++) { format(strText, 15, "%d_Used", i); DOF2::SetInt(file, strText, _:AttaCheP[playerid][i][Used]); format(strText, 15, "%d_Modelo", i); DOF2::SetInt(file, strText, AttaCheP[playerid][i][ModeloID]); format(strText, 15, "%d_Bone", i); DOF2::SetInt(file, strText, AttaCheP[playerid][i][BoneID]); format(strText, 15, "%d_ApX", i); DOF2::SetFloat(file, strText, AttaCheP[playerid][i][ApX]); format(strText, 15, "%d_ApY", i); DOF2::SetFloat(file, strText, AttaCheP[playerid][i][ApY]); format(strText, 15, "%d_ApZ", i); DOF2::SetFloat(file, strText, AttaCheP[playerid][i][ApZ]); format(strText, 15, "%d_ArX", i); DOF2::SetFloat(file, strText, AttaCheP[playerid][i][ArX]); format(strText, 15, "%d_ArY", i); DOF2::SetFloat(file, strText, AttaCheP[playerid][i][ArY]); format(strText, 15, "%d_ArZ", i); DOF2::SetFloat(file, strText, AttaCheP[playerid][i][ArZ]); format(strText, 15, "%d_AeX", i); DOF2::SetFloat(file, strText, AttaCheP[playerid][i][AeX]); format(strText, 15, "%d_AeY", i); DOF2::SetFloat(file, strText, AttaCheP[playerid][i][AeY]); format(strText, 15, "%d_AeZ", i); DOF2::SetFloat(file, strText, AttaCheP[playerid][i][AeZ]); DOF2::SaveFile(); } } return 1; }
stock LoadAttacheplayer(playerid, varAdmin = 1, varVip = 1) { new aname[MAX_PLAYER_NAME], file[100], strText[15], slots; GetPlayerName(playerid, aname, MAX_PLAYER_NAME); format(file, sizeof(file), PASTA_ACESSORIOS, aname); if(DOF2::FileExists(file)) { if(varAdmin > 0 || varVip == 1) slots = MAX_PLAYER_ATTACHED_OBJECTS; else slots = MAX_ATTCHP; for(new i; i < slots; i++) { format(strText, 15, "%d_Used", i); AttaCheP[playerid][i][Used] = bool:DOF2::GetInt(file,strText);
if(AttaCheP[playerid][i][Used] == true) { format(strText, 15, "%d_Modelo", i); AttaCheP[playerid][i][ModeloID] = DOF2::GetInt(file,strText); format(strText, 15, "%d_Bone", i); AttaCheP[playerid][i][BoneID] = DOF2::GetInt(file,strText); format(strText, 15, "%d_ApX", i); AttaCheP[playerid][i][ApX] = DOF2::GetFloat(file,strText); format(strText, 15, "%d_ApY", i); AttaCheP[playerid][i][ApY] = DOF2::GetFloat(file,strText); format(strText, 15, "%d_ApZ", i); AttaCheP[playerid][i][ApZ] = DOF2::GetFloat(file,strText); format(strText, 15, "%d_ArX", i); AttaCheP[playerid][i][ArX] = DOF2::GetFloat(file,strText); format(strText, 15, "%d_ArY", i); AttaCheP[playerid][i][ArY] = DOF2::GetFloat(file,strText); format(strText, 15, "%d_ArZ", i); AttaCheP[playerid][i][ArZ] = DOF2::GetFloat(file,strText); format(strText, 15, "%d_AeX", i); AttaCheP[playerid][i][AeX] = DOF2::GetFloat(file,strText); format(strText, 15, "%d_AeY", i); AttaCheP[playerid][i][AeY] = DOF2::GetFloat(file,strText); format(strText, 15, "%d_AeZ", i); AttaCheP[playerid][i][AeZ] = DOF2::GetFloat(file,strText);
SetPlayerAttachedObject(playerid,i,AttaCheP[playerid][i][ModeloID], AttaCheP[playerid][i][BoneID], AttaCheP[playerid][i][ApX], AttaCheP[playerid][i][ApY], AttaCheP[playerid][i][ApZ], AttaCheP[playerid][i][ArX], AttaCheP[playerid][i][ArY], AttaCheP[playerid][i][ArZ], AttaCheP[playerid][i][AeX], AttaCheP[playerid][i][AeY], AttaCheP[playerid][i][AeZ]); } } }else{ for(new i; i < MAX_PLAYER_ATTACHED_OBJECTS; i++) { AttaCheP[playerid][i][Used] = false; AttaCheP[playerid][i][ModeloID] = 0; AttaCheP[playerid][i][BoneID] = 0; AttaCheP[playerid][i][ApX] = 0; AttaCheP[playerid][i][ApY] = 0; AttaCheP[playerid][i][ApZ] = 0; AttaCheP[playerid][i][ArX] = 0; AttaCheP[playerid][i][ArY] = 0; AttaCheP[playerid][i][ArZ] = 0; AttaCheP[playerid][i][AeX] = 0; AttaCheP[playerid][i][AeY] = 0; AttaCheP[playerid][i][AeZ] = 0; } } return 1; }
stock RemoveSlotAttached(playerid, index) { new aname[MAX_PLAYER_NAME],file[40],strText[15]; GetPlayerName(playerid, aname, MAX_PLAYER_NAME); format(file, sizeof(file), PASTA_ACESSORIOS, aname); if(DOF2::FileExists(file)) { format(strText, 15, "%d_Used", index); DOF2::SetInt(file, strText, false); RemovePlayerAttachedObject(playerid, index); DOF2::SaveFile(); } return 1; }
FS с использованием данного скрипта (пример): Код #include <a_samp> #include <DOF2> #include "../include/SaveAt.inc"
#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
public OnFilterScriptExit() { DOF2::Exit(); return 1; }
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"} };
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 OnPlayerConnect(playerid) { LoadAttacheplayer(playerid,VariavelVip); return 1; } public OnPlayerSpawn(playerid) { LoadAttacheplayer(playerid,VariavelVip); return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { if(!strcmp(cmdtext, "/attachments", true)) { new string[200],slot; if(VariavelVip) { slot = MAX_PLAYER_ATTACHED_OBJECTS; } else slot = MAX_ATTCHP; for(new x; x < slot; 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")), RemoveSlotAttached(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; }
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 debug_string[256+1]; format(debug_string,256,"SetPlayerAttachedObject(playerid,%d,%d,%d,%f,%f,%f,%f,%f,%f,%f,%f,%f)", index,modelid,boneid,fOffsetX,fOffsetY,fOffsetZ,fRotX,fRotY,fRotZ,fScaleX,fScaleY,fScaleZ);
print(debug_string); //SendClientMessage(playerid, 0xFFFFFFFF, debug_string); SaveAttacheplayer(playerid, index,modelid, boneid,Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ,Float:fRotX, Float:fRotY, Float:fRotZ,Float:fScaleX, Float:fScaleY, Float: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; }
Автор: Marlon307
Когда нет знания, есть мнение.
|
|
|
|