[Include] SaveAttachedObject - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Phoenixxx_Czar, Getbackthere, [CM]OlegEhtler  
[Include] SaveAttachedObject
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


Когда нет знания, есть мнение.
Стафер Дата: Суббота, 23.04.2016, 12:58 | Сообщение # 2
Новичок
Сообщений: 5
Статус: Offline
Спасибо, полезно!!
Плисс Дата: Вторник, 19.07.2016, 21:16 | Сообщение # 3
Боец
Сообщений: 70
Статус: Offline
Кросс,полезная темка!
  • Страница 1 из 1
  • 1
Поиск: