Участник
Пользователь
- Сообщения
- 166
- Реакции
- 34
- Помог
- 3 раз(а)
- Ошибка
-
Логи чистые, ошибок нет, просто не грузит модельки с сервера. А ведь должны. На команды не отвечает.
- ОС
- Windows
- Билд
-
version
Protocol version 48
Exe version 1.1.2.7/Stdio (cstrike)
ReHLDS version: 3.3.0.618-dev
Build date: 11:32:38 Dec 12 2017 (1340)
Build from: https://github.com/dreamstalker/rehlds/commit/fda9ee3
- ReGamedll
-
game version
ReGameDLL version: 5.3.0.276-dev
Build date: 16:19:11 Dec 8 2017
Build from: https://github.com/s1lentq/ReGameDLL_CS/commit/adeb09a
- Список метамодулей
-
meta list
Currently loaded plugins:
description stat pend file vers src load unlod
[ 1] Reunion RUN - reunion_mm.dll v0.1.75 ini Start Never
[ 2] Rechecker RUN - rechecker_mm.dll v2.3 ini Chlvl ANY
[ 3] Revoice RUN - revoice_mm.dll v0.1.26 ini Start Never
[ 4] WHBlocker RUN - whblocker_mm.dll v1.5.692 ini Chlvl ANY
[ 5] AMX Mod X RUN - amxmodx_mm.dll v1.8.3-R ini Start ANY
[ 6] ReAuthCheck RUN - reauthcheck_mm.d v0.1.6 ini Start Never
[ 7] ReSemiclip RUN - resemiclip_mm.dl v2.3.9 ini Chlvl ANY
[ 8] MySQL RUN - mysql_amxx.dll v1.8.3-R pl5 ANY ANY
[ 9] Fun RUN - fun_amxx.dll v1.8.3-R pl5 ANY ANY
[10] Engine RUN - engine_amxx.dll v1.8.3-R pl5 ANY ANY
[11] FakeMeta RUN - fakemeta_amxx.dl v1.8.3-R pl5 ANY ANY
[12] GeoIP RUN - geoip_amxx.dll v1.8.3-R pl5 ANY ANY
[13] CStrike RUN - cstrike_amxx.dll v1.8.3-R pl5 ANY ANY
[14] CSX RUN - csx_amxx.dll v1.8.3-R pl5 ANY ANY
[15] Ham Sandwich RUN - hamsandwich_amxx v1.8.3-R pl5 ANY ANY
[16] ReAPI RUN - reapi_amxx.dll v5.2.0.1 pl5 ANY Never
16 plugins, 16 running
- Список плагинов
-
amx_plugins
Currently loaded plugins:
name version author file status
[ 1] Admin Base 1.8.3 AMXX Dev Team admin.amxx running
[ 2] Admin Commands 1.8.3 AMXX Dev Team admincmd.amxx running
[ 3] Menus Front-End 1.8.3 AMXX Dev Team menufront.amxx running
[ 4] Commands Menu 1.8.3 AMXX Dev Team cmdmenu.amxx running
[ 5] Players Menu 1.8.3 AMXX Dev Team plmenu.amxx running
[ 6] Maps Menu 1.8.3 AMXX Dev Team mapsmenu.amxx running
[ 7] Admin Chat 1.8.3 AMXX Dev Team adminchat.amxx running
[ 8] Anti Flood 1.8.3 AMXX Dev Team antiflood.amxx running
[ 9] Scrolling Message 1.8.3 AMXX Dev Team scrollmsg.amxx running
[ 10] Info. Messages 1.8.3 AMXX Dev Team imessage.amxx running
[ 11] Admin Votes 1.8.3 AMXX Dev Team adminvote.amxx running
[ 12] NextMap 1.8.3 AMXX Dev Team nextmap.amxx running
[ 13] TimeLeft 1.8.3 AMXX Dev Team timeleft.amxx running
[ 14] Pause Plugins 1.8.3 AMXX Dev Team pausecfg.amxx running
[ 15] Stats Configuration 1.8.3 AMXX Dev Team statscfg.amxx running
[ 16] Teleport Menu 1.8.3 AMXX Dev Team telemenu.amxx running
[ 17] Restrict Weapons 1.8.3 AMXX Dev Team restmenu.amxx running
[ 18] Multi-Lingual System 1.8.3 AMXX Dev Team multilingual.am running
[ 19] Plugin Menu 1.8.3 AMXX Dev Team pluginmenu.amxx running
[ 20] StatsX 1.8.3 AMXX Dev Team [U statsx_gui.amxx running
[ 21] Autoresponder/Advertis 0.5 MaximusBrood ad_manager.amxx running
[ 22] Win Messages Changer 0.0.1 Jhob94 messages_win.am running
[ 23] Admin Free Look 2.0 Jim admin_freelook. running
[ 24] Stats Marquee 1.2 Travo top_players.amx running
[ 25] Reset Score 1.0 Silenttt resetscore.amxx running
[ 26] Admin Spectator ESP 1.3 KoST admin_spec_esp. running
[ 27] Custom NextMap Chooser 1.4d GHW_Chronic GHW_Custom_Next running
[ 28] Team Balancer 1.8b3 Ptahhotep ptb.amxx running
[ 29] say /adminka 1.1 Pa1n say_admin.amxx running
[ 30] Menu serwerow 0.2.1 Sebul server_menu_v2. running
[ 31] Nice Kicker 8.0 sector nice_kicker.amx running
[ 32] AFK Kicker 1.0b Cheesy Peteza afkkicker.amxx running
[ 33] Block Change Name 1.0 DJ_WEST block_change_na running
[ 34] block ip 0.1 legenda amx_blockip.amx running
[ 35] Auto recording demo 2.0 IzI | Bonaqua (R amx_autodemorec running
[ 36] CSNadeDrops 0.14 Avalanche csnadedrops.amx running
[ 37] Shoot Grenades 1.0 joaquimandrade shootGrenades.a running
[ 38] VoteBan_2 2.0 WTF votebans_wtf.am running
[ 39] Damager 1.0 Prayer damager.amxx running
[ 40] ADmins-Restore 1.0 Fedcomp admin-restore.a running
[ 41] Admin Prefixes 3.0 m0skVi4a ;] AdminPrefixes.a running
[ 42] Parachute 15.01.06 KRoT@L/JTP10181 parachute_rbs.a running
[ 43] Admin Gag 1.0 fomeN amx_admingag.am running
[ 44] Grenade Control 1.1 Willyumyum & Rya grenade_control running
[ 45] Items Restrict 1.0 s1lent items_restrict. running
[ 46] AWPoff 1.2 PAffAEJIkA :3 awp_off.amxx running
[ 47] Best Player MOTD 1.1.2f OciXCrom crx_bestplayer. running
[ 48] AMXBans: Screens Gm 1.6 Larte Team amxbans_ssban.a running
48 plugins, 48 running
- Исходный код
-
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <cstrike>
#define SAVETIME_MIN 0.5
#define SAVETIME_MAX 3.0
#define LOADTIME 2.5
#define MAXWEAPONS 30
#define SKINSPERWEAPONS 10
#define POINTSLEN 6
#define PORT 1
#pragma semicolon 1
new const PLUGIN[] = "Skin System";
new const VERSION[] = "2.33";
new const AUTHOR[] = "DeRoiD";
new KillPoints[31][33], Skin[31][SKINSPERWEAPONS],
vSkinMdl[31][SKINSPERWEAPONS][64], pSkinMdl[31][SKINSPERWEAPONS][64],
SkinName[31][SKINSPERWEAPONS][32], Already[31], Cvar_Save, pSave[3][32][33];
new PointsFile[64], SkinsFile[64];
new const WeaponNames[][] =
{
"", "P228", "", "Scout", "He Grenade", "XM1014", "", "MAC10", "AUG",
"", "Elite", "FiveSeven", "UMP45", "SG550", "Galil", "FAMAS",
"USP", "Glock18", "AWP", "MP5", "M249", "M3", "M4A1", "TMP", "G3SG1",
"", "Deagle", "SG552", "AK47", "Knife", "P90"
};
new const WeaponEntNames[][] =
{
"weapon_p228", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_mac10",
"weapon_aug", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550",
"weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp",
"weapon_mp5navy", "weapon_m249", "weapon_m3", "weapon_m4a1", "weapon_tmp",
"weapon_g3sg1", "weapon_deagle", "weapon_sg552", "weapon_ak47", "weapon_knife", "weapon_p90"
};
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_cvar(PLUGIN, AUTHOR, FCVAR_SERVER);
Cvar_Save = register_cvar("skin_s_savemod", "2");
register_clcmd("say", "Say");
register_clcmd("say_team", "Say");
for(new Num; Num < sizeof WeaponEntNames; Num++)
{
RegisterHam(Ham_Item_Deploy, WeaponEntNames[Num], "WeaponModel", 1);
}
register_forward(FM_ClientUserInfoChanged, "NameChange");
register_dictionary("skinsystem.txt");
LoadSkins();
}
public plugin_precache() {
static ConfigsDir[64];
get_localinfo("amxx_configsdir", ConfigsDir, 63);
formatex(PointsFile, 63, "%s/skinsystem/save.ini", ConfigsDir);
formatex(SkinsFile, 63, "%s/skinsystem/skins.cfg", ConfigsDir);
new Len, Line[256], Data[3][48], FileLine;
FileLine = file_size(SkinsFile, 1);
for(new Num = 0; Num < FileLine; Num++)
{
read_file(SkinsFile, Num, Line, 255, Len);
parse(Line, Data[0], 31, Data[1], 47, Data[2], 47);
if(Line[0] == ';' || strlen(Line) < 5)
continue;
remove_quotes(Data[1]);
remove_quotes(Data[2]);
if(containi(Data[1], ".mdl") != -1)
{
precache_model(Data[1]);
}
if(containi(Data[2], ".mdl") != -1)
{
precache_model(Data[2]);
}
}
}
public NameChange(Player)
{
if(!is_user_connected(Player) || get_pcvar_num(Cvar_Save) != 0)
return FMRES_IGNORED;
new OldName[32], NewName[32], Name[32];
get_user_name(Player, Name, 31);
pev(Player, pev_netname, OldName, charsmax(OldName));
if(OldName[0])
{
get_user_info(Player, "name", NewName, charsmax(NewName));
if(!equal(OldName, NewName))
{
remove_task(Player);
LoadPlayer(Player);
LoadPoints(Player);
}
}
return FMRES_IGNORED;
}
public WeaponModel(Weapon) {
new Player = get_pdata_cbase(Weapon, 41, 4);
new WeaponID = cs_get_weapon_id(Weapon);
if(Player > 32 || Player < 1
|| WeaponID < 1 || WeaponID > 30)
{
return HAM_SUPERCEDE;
}
for(new Num = 1; Num < MAXWEAPONS; Num++)
{
if(Num == WeaponID)
{
for(new x; x < Already[WeaponID]; x++)
{
if(KillPoints[WeaponID][Player] >= Skin[WeaponID][x])
{
if(containi(vSkinMdl[WeaponID][x], ".mdl") != -1)
{
set_pev(Player, pev_viewmodel2, vSkinMdl[WeaponID][x]);
}
if(containi(pSkinMdl[WeaponID][x], ".mdl") != -1)
{
set_pev(Player, pev_weaponmodel2, pSkinMdl[WeaponID][x]);
}
}
}
}
}
return HAM_IGNORED;
}
public LoadSkins() {
new File;
File = fopen(SkinsFile, "rt");
if(File)
{
new Line[256], Type[32], Data[5][64];
while(!feof(File))
{
fgets(File, Line, 255);
if(Line[0] == ';' || strlen(Line) < 5)
continue;
parse(Line, Type, 31);
for(new Num = 1; Num < MAXWEAPONS+1; Num++)
{
if(Already[Num] >= SKINSPERWEAPONS)
continue;
if(equali(Type, WeaponNames[Num]))
{
parse(Line, Data[0], 63, Data[1], 63, Data[2], 63, Data[3], 63, Data[4], 63);
copy(vSkinMdl[Num][Already[Num]], 63, Data[1]);
copy(pSkinMdl[Num][Already[Num]], 63, Data[2]);
copy(SkinName[Num][Already[Num]], 31, Data[4]);
Skin[Num][Already[Num]] = str_to_num(Data[3]);
Already[Num]++;
}
}
}
fclose(File);
}
}
public client_death(Killer, Victim, Weapon)
{
if(Killer == Victim
|| Killer > 32 || Killer < 1
|| Weapon == 25 || Weapon == 9
|| Weapon < 1 || Weapon > 30)
{
return PLUGIN_HANDLED;
}
set_task(random_float(SAVETIME_MIN, SAVETIME_MAX), "SavePoints", Killer);
KillPoints[Weapon][Killer]++;
return PLUGIN_CONTINUE;
}
public ShowSkins(Player, i)
{
new MotdTitle[64];
formatex(MotdTitle, 63, "%L", LANG_SERVER, "MOTD1");
new Motd[1024], Line[256];
formatex(Line, 255, "<body bgcolor=^"black^">^n<font color=^"red^">^n");
add(Motd, 1023, Line, 255);
formatex(Line, 255, "<p align=^"center^">%s %s by: %s</p></font>^n<font color=^"greenyellow^">^n", PLUGIN, VERSION, AUTHOR);
add(Motd, 1023, Line, 255);
formatex(Line, 255, "<p align=^"center^">%L:</p></font>^n", LANG_SERVER, "SKINS", WeaponNames[i]);
add(Motd, 1023, Line, 255);
formatex(Line, 255, "<h5>^n<font color=^"white^">^n");
add(Motd, 1023, Line, 255);
for(new Num; Num < MAXWEAPONS; Num++)
{
if(Num != i)
continue;
formatex(Line, 255, "<p>");
add(Motd, 1023, Line, 255);
for(new x; x < SKINSPERWEAPONS; x++)
{
if(strlen(SkinName[Num][x]) < 2)
continue;
formatex(Line, 255, "<br>%s: (%L)", SkinName[Num][x], LANG_SERVER, "KILLS", Skin[Num][x]);
add(Motd, 1023, Line, 255);
}
formatex(Line, 255, "</p>");
add(Motd, 1023, Line, 255);
}
formatex(Line, 255, "^n</h5>^n</font>^n</body>");
add(Motd, 1023, Line, 255);
show_motd(Player, Motd, MotdTitle);
}
public ShowPoints(Player, Target)
{
new Name[32], MotdTitle[64];
get_user_name(Target, Name, 31);
formatex(MotdTitle, 63, "%L", LANG_SERVER, "PKILLS", Name);
new Motd[1024], Line[256];
formatex(Line, 255, "<body bgcolor=^"black^">^n<font color=^"red^">^n");
add(Motd, 1023, Line, 255);
formatex(Line, 255, "<p align=^"center^">%s %s by: %s</p></font>^n<font color=^"white^">^n", PLUGIN, VERSION, AUTHOR);
add(Motd, 1023, Line, 255);
formatex(Line, 255, "<p align=^"center^">%L:</p></font>^n", LANG_SERVER, "PKILLS", Name);
add(Motd, 1023, Line, 255);
formatex(Line, 255, "<font color=^"cyan^">^n");
add(Motd, 1023, Line, 255);
formatex(Line, 255, "<h5>^n");
add(Motd, 1023, Line, 255);
if(Target > 0)
{
formatex(Line, 255, "<p align=^"center^">");
add(Motd, 1023, Line, 255);
new Len;
for(new Num = 1; Num < MAXWEAPONS+1; Num++)
{
if(Num == 2 || Num == 6 || Num == 9 || Num == 25)
{
continue;
}
Len++;
if(Len < POINTSLEN)
{
formatex(Line, 255, " %s: %d |", WeaponNames[Num], KillPoints[Num][Target]);
add(Motd, 1023, Line, 255);
}
else
{
Len = 0;
formatex(Line, 255, " %s: %d</p>^n<p align=^"center^">", WeaponNames[Num], KillPoints[Num][Target]);
add(Motd, 1023, Line, 255);
}
}
formatex(Line, 255, "</p>");
add(Motd, 1023, Line, 255);
}
formatex(Line, 255, "^n</h5>^n</font>^n</body>");
add(Motd, 1023, Line, 255);
show_motd(Player, Motd, MotdTitle);
}
public Say(Player)
{
new Message[32];
read_args(Message, 31);
remove_quotes(Message);
if(equali(Message, "/mykills"))
{
ShowPoints(Player, Player);
}
else if(containi(Message, "/skins") != -1)
{
for(new Num; Num < MAXWEAPONS+1; Num++)
{
if(containi(Message, WeaponNames[Num]) != -1)
{
ShowSkins(Player, Num);
return PLUGIN_HANDLED;
}
}
}
else
{
new TargetName[32], Name[32], Command[32];
parse(Message, Command, 31, TargetName, 31);
if(equali(Command, "/kill"))
{
for(new Target; Target < 32; Target++)
{
if(Target == Player || !is_user_connected(Target))
{
continue;
}
get_user_name(Target, Name, 31);
if((containi(Name, TargetName) != -1))
{
if(equali(Name, TargetName))
ShowPoints(Player, Target);
else if(strlen(TargetName) > 3)
ShowPoints(Player, Target);
return PLUGIN_HANDLED;
}
}
}
}
return PLUGIN_CONTINUE;
}
public client_putinserver(Player)
{
remove_task(Player);
set_task(LOADTIME, "LoadPoints", Player);
}
public client_connect(Player)
{
LoadPlayer(Player);
}
public LoadPoints(Player)
{
if(!is_user_connected(Player))
{
return PLUGIN_HANDLED;
}
new File;
File = fopen(PointsFile, "rt");
if(File)
{
new Line[256];
new LineName[32], Data[31][8];
while(!feof(File))
{
fgets(File, Line, 255);
if(Line[0] == ';' || strlen(Line) < 2)
continue;
parse(Line, LineName, 31);
if(equal(LineName, pSave[get_pcvar_num(Cvar_Save)][Player]))
{
parse(Line, Data[0], 7, Data[1], 7, Data[2], 7, Data[3], 7, Data[4], 7, Data[5], 7,
Data[6], 7, Data[7], 7, Data[8], 7, Data[9], 7, Data[10], 7, Data[11], 7, Data[12], 7,
Data[13], 7, Data[14], 7, Data[15], 7, Data[16], 7, Data[17], 7, Data[18], 7, Data[19], 7,
Data[20], 7, Data[21], 7, Data[22], 7, Data[23], 7, Data[24], 7, Data[25], 7, Data[26], 7,
Data[27], 7, Data[28], 7, Data[29], 7, Data[30], 7);
for(new Num = 1; Num < MAXWEAPONS+1; Num++)
{
KillPoints[Num][Player] = str_to_num(Data[Num]);
}
return PLUGIN_HANDLED;
}
}
fclose(File);
}
return PLUGIN_CONTINUE;
}
public SavePoints(Player)
{
if(!is_user_connected(Player))
{
return PLUGIN_HANDLED;
}
new File;
File = fopen(PointsFile, "rt");
if(File)
{
new Line[192], LineNum;
new LineName[32], bool:Found;
while(!feof(File))
{
fgets(File, Line, 191);
if(Line[0] == ';' || strlen(Line) < 2)
continue;
parse(Line, LineName, 31);
if(equal(LineName, pSave[get_pcvar_num(Cvar_Save)][Player]) && !Found)
{
new SaveLine[256], PlayerPoints[256], String[8];
for(new Num = 1; Num < MAXWEAPONS+1; Num++)
{
format(String, 7, "^"%i^" ", KillPoints[Num][Player]);
add(PlayerPoints, 255, String);
}
formatex(SaveLine, 255, "^"%s^" %s", pSave[get_pcvar_num(Cvar_Save)][Player], PlayerPoints);
write_file(PointsFile, SaveLine, LineNum);
Found = true;
return PLUGIN_HANDLED;
}
LineNum++;
}
if(!Found)
{
new SaveLine[256], PlayerPoints[256], String[8];
for(new Num; Num < MAXWEAPONS; Num++)
{
format(String, 7, "^"%i^" ", KillPoints[Num][Player]);
add(PlayerPoints, 255, String);
}
formatex(SaveLine, 255, "^"%s^" %s", pSave[get_pcvar_num(Cvar_Save)][Player], PlayerPoints);
write_file(PointsFile, SaveLine);
return PLUGIN_HANDLED;
}
fclose(File);
}
return PLUGIN_CONTINUE;
}
stock LoadPlayer(Player)
{
new Num;
for(Num = 1; Num < MAXWEAPONS+1; Num++)
{
KillPoints[Num][Player] = 0;
}
for(Num = 0; Num < 2; Num++)
{
pSave[0][Player] = "";
}
get_user_name(Player, pSave[0][Player], 31);
get_user_ip(Player, pSave[1][Player], 31, PORT);
get_user_authid(Player, pSave[2][Player], 31);
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
*/
Проблема собственно самому не ясна.
1. Все, что надо было скомпилировать, скомпилировал под нужный amxx (тем который в папочке scripting)
2. Все, что можно было разложил по папочкам согласно технологии, разложил
3. Прописал пути в файле skins.cfg как было представлено у товарища свободной странны OciXCrom`a
4. В amxx.cfg квар прописал.
Не фурыкает. понял после того, как при коннекте не начали загружаться модельки с сервера. (пути напишу в следующем сообщении ниже)
Прошу помощи, так как мольбы Богам не помогли, заклинания были безуспешны.
Девчонки у меня нет, пить я завязал, так что клеймо задрота я уже примерил. Тесновато, но пойдет.
Приму любую помощь, моральную, чудодейственную, скриптеровскую божественную.
Благодарность бессмертная хвала вашему Имени и всему вашему окружению, так же готов расплатиться стаканом, ртути, коньяка или обычным для Вас способом.
Улыбок не предлагаю переднего зуба нет)... Всем добра.
Пути которые прописывал.
1. Все, что надо было скомпилировать, скомпилировал под нужный amxx (тем который в папочке scripting)
2. Все, что можно было разложил по папочкам согласно технологии, разложил
3. Прописал пути в файле skins.cfg как было представлено у товарища свободной странны OciXCrom`a
4. В amxx.cfg квар прописал.
Не фурыкает. понял после того, как при коннекте не начали загружаться модельки с сервера. (пути напишу в следующем сообщении ниже)
Прошу помощи, так как мольбы Богам не помогли, заклинания были безуспешны.
Девчонки у меня нет, пить я завязал, так что клеймо задрота я уже примерил. Тесновато, но пойдет.
Приму любую помощь, моральную, чудодейственную, скриптеровскую божественную.
Благодарность бессмертная хвала вашему Имени и всему вашему окружению, так же готов расплатиться стаканом, ртути, коньяка или обычным для Вас способом.
Улыбок не предлагаю переднего зуба нет)... Всем добра.
21 Дек 2017
Код:
;;;//100
;;;
"galil" "models/skinsystem/standart/v_galil.mdl" "" "100" "Standart"
"famas" "models/skinsystem/carthage/v_famas.mdl" "" "100" "Carthage"
"usp" "models/skinsystem/cyrex/v_usp.mdl" "" "100" "Cyrex"
"glock18" "models/skinsystem/attention/v_glock18.mdl" "" "100" "Attention"
"awp" "models/skinsystem/corticera/v_awp.mdl" "" "100" "Corticera"
"m4a1" "models/skinsystem/cyrex/v_m4a1.mdl" "" "100" "Cyrex"
"deagle" "models/skinsystem/blaze/v_deagle.mdl" "" "100" "Blaze"
"ak47" "models/skinsystem/elites/v_ak47.mdl" "" "100" "Elite"
"knife" "models/skinsystem/abyssal/v_knife.mdl" "" "100" "Abbyssal"
"p228" "models/skinsystem
"scout" "models/skinsystem
"hegrenade" "models/skinsystem
"xm1014" "models/skinsystem
"mac10" "models/skinsystem
"aug" "models/skinsystem
"elite" "models/skinsystem
"five-seven" "models/skinsystem
"ump45" "models/skinsystem
"sg550" "models/skinsystem
"mp5" "models/skinsystem
"m249" "models/skinsystem
"m3" "models/skinsystem
"p90" "models/skinsystem
"sg552" "models/skinsystem
"tmp" "models/skinsystem
"g3sg1" "models/skinsystem
Последнее редактирование: