<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:turbo="http://turbo.yandex.ru" version="2.0">
<channel>
<title>Статьи - site-cs.ru | Всё для COUNTER-STRIKE!</title>
<link>https://site-cs.ru/</link>
<language>ru</language>
<description>Статьи - site-cs.ru | Всё для COUNTER-STRIKE!</description>
<generator>DataLife Engine</generator><item turbo="true">
<title>[ZP] Статья: Как сделать интеграцию босса в мод? [CS 1.6]</title>
<guid isPermaLink="true">https://site-cs.ru/cs/stati/1171-zp-statja-kak-sdelat-integraciju-bossa-v-mod-zp-43-zp-50.html</guid>
<link>https://site-cs.ru/cs/stati/1171-zp-statja-kak-sdelat-integraciju-bossa-v-mod-zp-43-zp-50.html</link>
<description><![CDATA[<a class="highslide" href="https://site-cs.ru/uploads/posts/2018-12/1544523458_1483761091192639070.jpg" target="_blank"><img src="https://site-cs.ru/uploads/posts/2018-12/medium/1544523458_1483761091192639070.jpg" alt="" class="fr-dib"></a><div class="quote" style="text-align:center;"><b>В данной статье я расскажу вам как сделать интеграцию любого босса в мод ZP 4.3</b></div><b><a class="highslide" href="http://site-cs.ru/uploads/posts/2019-05/1558899613_hqdefault.jpg"><img src="http://site-cs.ru/uploads/posts/2019-05/thumbs/1558899613_hqdefault.jpg" class="fr-fic fr-dib" alt=""></a></b><br>]]></description>
<turbo:content><![CDATA[ <a class="highslide" href="https://site-cs.ru/uploads/posts/2018-12/1544523458_1483761091192639070.jpg" target="_blank"><img src="https://site-cs.ru/uploads/posts/2018-12/medium/1544523458_1483761091192639070.jpg" alt="" class="fr-dib"></a><div class="quote" style="text-align:center;"><b>В данной статье я расскажу вам как сделать интеграцию любого босса в мод ZP 4.3</b></div><b>Для начала открываем Исходник Мода ZP 4.3<br>Ищем такую функцию: <br></b><div class="quote"><b><span style="color:rgb(97,189,109);">// Some constants<br>const HIDE_MONEY = (1&lt;&lt;5)<br>const UNIT_SECOND = (1&lt;&lt;12)<br>const DMG_HEGRENADE = (1&lt;&lt;24)<br>const IMPULSE_FLASHLIGHT = 100<br>const USE_USING = 2<br>const USE_STOPPED = 0<br>const STEPTIME_SILENT = 999<br>const BREAK_GLASS = 0x01<br>const FFADE_IN = 0x0000<br>const FFADE_STAYOUT = 0x0004<br>const PEV_SPEC_TARGET = pev_iuser2<br><br>// Max BP ammo for weapons<br>new const MAXBPAMMO[] = { -1, 52, -1, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120,<br>30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, -1, 100 }</span></b></div><b>Заменяем на эту функцию:<br></b><div class="quote"><span style="color:rgb(251,160,38);"><b>// Some constants<br>const HIDE_MONEY = (1&lt;&lt;5)<br>const UNIT_SECOND = (1&lt;&lt;12)<br>const DMG_HEGRENADE = (1&lt;&lt;24)<br>const IMPULSE_FLASHLIGHT = 100<br>const USE_USING = 2<br>const USE_STOPPED = 0<br>const STEPTIME_SILENT = 999<br>const BREAK_GLASS = 0x01<br>const FFADE_IN = 0x0000<br>const FFADE_STAYOUT = 0x0004<br>const PEV_SPEC_TARGET = pev_iuser2<br>/*-----BossManager(start)-----*/<br>static Map_Boss<br>/*-----BossManager(End)-----*/<br><br>// Max BP ammo for weapons<br>new const MAXBPAMMO[] = { -1, 52, -1, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120,<br>            30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, -1, 100 }</b></span></div><b>Идем дальше и ищем:<br></b><div class="quote"><b><span style="color:rgb(97,189,109);">// External additions natives<br>register_native("zp_register_extra_item", "native_register_extra_item", 1)<br>register_native("zp_register_zombie_class", "native_register_zombie_class", 1)<br>register_native("zp_get_extra_item_id", "native_get_extra_item_id", 1)<br>register_native("zp_get_zombie_class_id", "native_get_zombie_class_id", 1)</span></b></div><b>Ниже вставляем вот такую функцию:<br></b><div class="quote"><span style="color:rgb(97,189,109);"><b>    </b></span><span style="color:rgb(251,160,38);"><b>/*-----BossManager(start)-----*/<br>    // site-cs.ru Native<br><br>    // Return type:<br>    // 1 - OberonBoss<br>    // 2 - AlienBoss<br>    // 3 - AngraBoss<br>    // 4 - RevenantBoss<br>    // 5 - ApacheBoss<br>    register_native("zl_boss_map", "native_zl_map_boss", 1)<br>    register_native("zl_boss_valid", "native_zl_valid_boss", 1)<br><br>    register_native("zl_player_alive", "native_zl_player_alive", 1)<br>    register_native("zl_player_random", "native_zl_random_player", 1)<br>    /*-----BossManager(End)-----*/</b></span><b><span style="color:rgb(251,160,38);"><br>}<br><br>public plugin_precache()<br>{<br>    // Register earlier to show up in plugins list properly after plugin disable/error at loading<br>    register_plugin("Zombie Plague", PLUGIN_VERSION, "MeRcyLeZZ")<br>    /*-----BossManager(start)-----*/<br>    static MapName[64]<br>    get_mapname(MapName, 63)<br><br>    if (contain(MapName, "zl_boss_oberon" ) != -1) Map_Boss = 1<br>    if (contain(MapName, "zl_boss_alien" ) != -1) Map_Boss = 2<br>    if (contain(MapName, "zl_boss_angra" ) != -1) Map_Boss = 3<br>    if (contain(MapName, "zl_boss_revenant" ) != -1) Map_Boss = 4<br>    if (contain(MapName, "zl_boss_apache" ) != -1) Map_Boss = 5<br>    /*-----BossManager(End)-----*/</span></b></div><b>Вот что получится в итоге:<br></b><div class="quote"><b><span style="color:rgb(97,189,109);">   </span><span style="color:rgb(251,160,38);"> // External additions natives<br>    register_native("zp_register_extra_item", "native_register_extra_item", 1)<br>    register_native("zp_register_zombie_class", "native_register_zombie_class", 1)<br>    register_native("zp_get_extra_item_id", "native_get_extra_item_id", 1)<br>    register_native("zp_get_zombie_class_id", "native_get_zombie_class_id", 1)<br><b>    /*-----BossManager(start)-----*/<br>    // site-cs.ru Native<br><br>    // Return type:<br>    // 1 - OberonBoss<br>    // 2 - AlienBoss<br>    // 3 - AngraBoss<br>    // 4 - RevenantBoss<br>    // 5 - ApacheBoss<br>    register_native("zl_boss_map", "native_zl_map_boss", 1)<br>    register_native("zl_boss_valid", "native_zl_valid_boss", 1)<br><br>    register_native("zl_player_alive", "native_zl_player_alive", 1)<br>    register_native("zl_player_random", "native_zl_random_player", 1)<br>    /*-----BossManager(End)-----*/</b><br>}<br><br>public plugin_precache()<br>{<br>    // Register earlier to show up in plugins list properly after plugin disable/error at loading<br>    register_plugin("Zombie Plague", PLUGIN_VERSION, "MeRcyLeZZ")<br>    /*-----BossManager(start)-----*/<br>    static MapName[64]<br>    get_mapname(MapName, 63)<br><br>    if (contain(MapName, "zl_boss_oberon" ) != -1) Map_Boss = 1<br>    if (contain(MapName, "zl_boss_alien" ) != -1) Map_Boss = 2<br>    if (contain(MapName, "zl_boss_angra" ) != -1) Map_Boss = 3<br>    if (contain(MapName, "zl_boss_revenant" ) != -1) Map_Boss = 4<br>    if (contain(MapName, "zl_boss_apache" ) != -1) Map_Boss = 5<br>    /*-----BossManager(End)-----*/</span></b></div><b>Дальше ищем:<br></b><div class="quote"><b><span style="color:rgb(97,189,109);">// CS sounds (just in case)<br>engfunc(EngFunc_PrecacheSound, sound_flashlight)<br>engfunc(EngFunc_PrecacheSound, sound_buyammo)<br>engfunc(EngFunc_PrecacheSound, sound_armorhit)<br><br>new ent</span></b></div><b>Заменяем все как у меня что бы получилось вот так:<br></b><div class="quote"><b><span style="color:rgb(251,160,38);">// CS sounds (just in case)<br>engfunc(EngFunc_PrecacheSound, sound_flashlight)<br>engfunc(EngFunc_PrecacheSound, sound_buyammo)<br>engfunc(EngFunc_PrecacheSound, sound_armorhit)<br><br>new ent<br><br>/*-----BossManager(start)-----*/<br>if (!Map_Boss) {<br>    // Fake Hostage (to force round ending)<br>    ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "hostage_entity"))<br>    if (pev_valid(ent))<br>    {<br>        engfunc(EngFunc_SetOrigin, ent, Float:{8192.0,8192.0,8192.0})<br>        dllfunc(DLLFunc_Spawn, ent)<br>    }<br>}<br>/*-----BossManager(End)-----*/<br><br>// Weather/ambience effects<br>if (g_ambience_fog)<br>{<br>    ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_fog"))<br>    if (pev_valid(ent))<br>    {<br>        fm_set_kvd(ent, "density", g_fog_density, "env_fog")<br>        fm_set_kvd(ent, "rendercolor", g_fog_color, "env_fog")<br>    }<br>}<br>    if (g_ambience_rain) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_rain"))<br>    if (g_ambience_snow) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_snow"))<br><br>    // Prevent some entities from spawning<br>    g_fwSpawn = register_forward(FM_Spawn, "fw_Spawn")<br><br>    // Prevent hostage sounds from being precached<br>    g_fwPrecacheSound = register_forward(FM_PrecacheSound, "fw_PrecacheSound")<br>}<br><br>public plugin_init()<br>{<br>    // Plugin disabled?<br>    if (!g_pluginenabled) return;<br><br>    // No zombie classes?<br>    if (!g_zclass_i) set_fail_state("No zombie classes loaded!")<br><br>    // Language files<br>    register_dictionary("zombie_plague.txt")<br><br>    if (Map_Boss) {<br>        set_cvar_num("mp_autoteambalance", 0)<br>        set_cvar_num("mp_limitteams", 0)<br>    } else {<br>        set_cvar_num("mp_autoteambalance", 1)<br>        set_cvar_num("mp_limitteams", 1)<br>    }</span></b></div><b>Дальше ищем:<br></b><div class="quote"><b><span style="color:rgb(97,189,109);">// Collect random spawn points<br>load_spawns()</span></b></div><b>Заменяем и смотрим что получилось:<br></b><div class="quote"><b><span style="color:rgb(251,160,38);">// Collect random spawn points<br>load_spawns()<br><br>// Set a random skybox?<br>/*-----BossManager(start)-----*/<br>if (g_sky_enable &amp;&amp; !Map_Boss/*Block Sky*/)<br>/*-----BossManager(End)-----*/<br>{<br>    new sky[32]<br>    ArrayGetString(g_sky_names, random_num(0, ArraySize(g_sky_names) - 1), sky, charsmax(sky))<br>    set_cvar_string("sv_skyname", sky)<br>}</span></b></div><b>Дальше ищем такую функцию:<br></b><div class="quote"><b><span style="color:rgb(97,189,109);">// Respawn player if he dies because of a worldspawn kill?</span></b></div><b>И заменяем на это:<br></b><div class="quote"><b><span style="color:rgb(251,160,38);">// Respawn player if he dies because of a worldspawn kill?<br>/*-----BossManager(start)-----*/<br>if (get_pcvar_num(cvar_respawnworldspawnkill) &amp;&amp; !Map_Boss /*Fix SpawnKill*/)<br>/*-----BossManager(End)-----*/<br>set_task(2.0, "respawn_player_task", id+TASK_SPAWN)</span></b></div><b>Идем дальше и видим:<br></b><div class="quote"><b><span style="color:rgb(97,189,109);">// Show custom buy menu?<br>if (get_pcvar_num(cvar_buycustom))<br>set_task(0.2, "show_menu_buy1", id+TASK_SPAWN)</span></b></div><b>Вставляем и получится так:<br></b><div class="quote"><b><span style="color:rgb(251,160,38);">// Show custom buy menu?<br>if (get_pcvar_num(cvar_buycustom))<br>set_task(0.2, "show_menu_buy1", id+TASK_SPAWN)<br><br>// Set health and gravity<br>/*-----BossManager(start)-----*/<br>if (!Map_Boss) {<br>    fm_set_user_health(id, get_pcvar_num(cvar_humanhp))<br>    set_pev(id, pev_gravity, get_pcvar_float(cvar_humangravity))<br>}    <br>/*-----BossManager(End)-----*/</span></b></div><b>Едем дальше:<br></b><div class="quote"><b><span style="color:rgb(97,189,109);">// Get deathmatch mode status and whether the player killed himself<br>static selfkill<br>selfkill = (victim == attacker || !is_user_valid_connected(attacker)) ? true : false</span></b></div><b>Для ZP 4.3 Fix5a:</b><br><div class="quote"><b><span style="color:rgb(97,189,109);"> </span></b><span style="color:rgb(97,189,109);"><b>// Determine whether the player killed himself</b></span></div><b>Вставляем функцию и смотрим что получилось:<br></b><div class="quote"><b><span style="color:rgb(251,160,38);">// Get deathmatch mode status and whether the player killed himself<br>static selfkill<br>selfkill = (victim == attacker || !is_user_valid_connected(attacker)) ? true : false<br><br>// Respawn if deathmatch is enabled<br>/*-----BossManager(start)-----*/<br>if (get_pcvar_num(cvar_deathmatch) &amp;&amp; !Map_Boss /*Block Respawn*/)<br>/*-----BossManager(End)-----*/<br>{</span></b></div><b>Дальше ищем вот такую функцию:<br></b><div class="quote"><b><span style="color:rgb(97,189,109);">// Weapons bought<br>g_canbuy[id] = false</span></b></div><b>Вставляем вот это и смотрим что получилось:<br></b><div class="quote"><b><span style="color:rgb(251,160,38);">// Weapons bought<br>g_canbuy[id] = false<br><br>/*-----BossManager(start)-----*/<br>// Give additional items<br>if(!Map_Boss) {<br>    static i<br>    for (i = 0; i &lt; ArraySize(g_additional_items); i++)<br>    {<br>        ArrayGetString(g_additional_items, i, wname, charsmax(wname))<br>        fm_give_item(id, wname)<br>    }<br>}<br>/*-----BossManager(end)-----*/<br>}</span></b></div><b>Дальше делаем блок заражения, ищем:<br></b><div class="quote"><b><span style="color:rgb(97,189,109);">// Get alive players count<br>static iPlayersnum<br>iPlayersnum = fnGetAlive()</span></b></div><b>Вставляем и смотрим что получится:<br></b><div class="quote"><b><span style="color:rgb(251,160,38);">// Get alive players count<br>static iPlayersnum<br>iPlayersnum = fnGetAlive()<br><br>// Not enough players, come back later!<br>/*-----BossManager(start)-----*/<br>if (iPlayersnum &lt; 1 || Map_Boss /*Block Infection*/)<br>/*-----BossManager(End)-----*/<br>{<br>    set_task(2.0, "make_zombie_task", TASK_MAKEZOMBIE)<br>    return;<br>}</span></b></div><b>Самая сложная функция (Основа) ищем:<br></b><div class="quote"><b><span style="color:rgb(97,189,109);">// Check if this is the class to retrieve<br>if (equali(name, class_name))<br>    return i;<br>    }<br>    <br>    return -1;</span></b></div><b>И сделаем как у меня ниже точно также:<br></b><div class="quote"><b><span style="color:rgb(251,160,38);">// Check if this is the class to retrieve<br>if (equali(name, class_name))<br>return i;<br>    }<br>    <br>    return -1;<br>}<br>/*-----BossManager(start)-----*/<br>// Native: zl_boss_map()<br>public native_zl_map_boss() {<br>return Map_Boss<br>}<br><br>// Native: zl_boss_valid(index)<br>public native_zl_valid_boss(index) {<br>    new ClassName[32]<br>    pev(index, pev_classname, ClassName, charsmax(ClassName))<br><br>    if (equal(ClassName, "OberonBoss")) return 1<br>    if (equal(ClassName, "AlienBoss")) return 2<br>    if (equal(ClassName, "AngraBoss")) return 3<br>    if (equal(ClassName, "RevenantBoss")) return 4<br>    if (equal(ClassName, "ApacheBoss")) return 5<br><br>    return 0<br>}<br><br>//Native: zl_player_random()<br>public native_zl_random_player() {<br>    new Index<br>    Index = GetRandomAlive(random_num(1, native_zl_player_alive()))<br>    return Index<br>}<br><br>//Native zl_player_alive()<br>public native_zl_player_alive() {<br>    new iAlive<br>    for (new id = 1; id &lt;= get_maxplayers(); id++) if (is_user_alive(id) &amp;&amp; !is_user_bot(id)) iAlive++<br>    return iAlive<br>}<br><br>GetRandomAlive(target_index) {<br>    new iAlive<br>    for (new id = 1; id &lt;= get_maxplayers(); id++) {<br>        if (is_user_alive(id) &amp;&amp; !is_user_bot(id)) iAlive++<br>        if (iAlive == target_index) return id<br>    }<br>    return -1<br>}<br>/*-----BossManager(End)-----*/</span></b></div><b>Теперь ваш босс будет работать на </b><b>ZP 4.3</b><br><b>Возможно будут варнинги loose indentation - отсутствие табуляции, но не обращайте на них внимания.</b><br><br><b>Готовые исходники с интеграцией:</b><br><b>Для ZP 4.3</b><br><br><b>Для ZP 4.3 Fix5a</b><br> ]]></turbo:content>
<category><![CDATA[Статьи]]></category>
<dc:creator>TalRasha</dc:creator>
<pubDate>Tue, 11 Dec 2018 13:56:26 +0300</pubDate>
</item><item turbo="true">
<title>[ZP] Статья: Как сделать включить/выключить предмет в меню</title>
<guid isPermaLink="true">https://site-cs.ru/cs/stati/1170-zp-statja-kak-sdelat-vkljuchit-vykljuchit-predmet-v-menju.html</guid>
<link>https://site-cs.ru/cs/stati/1170-zp-statja-kak-sdelat-vkljuchit-vykljuchit-predmet-v-menju.html</link>
<description><![CDATA[<div style="text-align:center;"><a class="highslide" href="https://site-cs.ru/uploads/posts/2018-12/1544453943_image-2.jpeg" target="_blank"><img src="https://site-cs.ru/uploads/posts/2018-12/medium/1544453943_image-2.jpeg" alt="" class="fr-dib"></a><br></div><div style="text-align:center;"><b>Здесь подробно рассказывается один из способов, как можно включить/выключить предмет в меню!</b></div>]]></description>
<turbo:content><![CDATA[ <a class="highslide" href="https://site-cs.ru/uploads/posts/2018-12/1544453943_image-2.jpeg" target="_blank"><img src="https://site-cs.ru/uploads/posts/2018-12/medium/1544453943_image-2.jpeg" alt="" class="fr-dib"></a><br><a class="highslide" href="https://site-cs.ru/uploads/posts/2018-12/1544451495_2018-12-09_20-21-31.png" target="_blank"><img src="https://site-cs.ru/uploads/posts/2018-12/thumbs/1544451495_2018-12-09_20-21-31.png" alt="" class="fr-dib"></a><b>Всем привет, с вами <span style="color:rgb(184,49,47);">BuB9neC</span>, и сегодня я попробую на пальцах объяснить: как это реализовать.</b><br><div style="text-align:center;"><b>Хочу выразить благодарность <span style="color:rgb(235,107,86);">Universe</span>, за предоставление кода!</b><br><br><b><span style="font-family:Impact, Charcoal, sans-serif;font-size:18px;">Ну что, начнём...</span></b></div><span style="font-family:Arial, Helvetica, sans-serif;"><b><i>Я буду делать на примере граба.</i></b></span><br><br><span style="font-family:Arial, Helvetica, sans-serif;"><b><i>1) Заходим в граб!</i></b></span><br>В начале исхода вставляем:<br><div class="quote"><b>native GetGrab(iPlayer);</b></div><br><b>2) Ищем паблик с активацией функции.</b><br><i><b><span style="color:rgb(147,101,184);">Вставляем в паблик этот код:</span></b></i><br><div class="quote"><i><b><span style="color:rgb(255,255,255);">    new gl_iGrab[33];<br>    gl_iGrab[id] = GetGrab(id);</span></b></i><span style="color:rgb(255,255,255);"><b><br><br></b></span><i><b><span style="color:rgb(255,255,255);">    if(!gl_iGrab[id])<br>    {<br>    client_printcolor(id, "^x04[vk.com/zmsuper]^x01 Сперва нужно включить ^x04Граб^x01.")<br>    return PLUGIN_HANDLED<br>    }</span></b></i></div><br><b>Должно получиться вот так:</b><br><b><a class="highslide" href="https://site-cs.ru/uploads/posts/2018-12/1544451905_2018-12-10_17-24-11.png" target="_blank"><img src="https://site-cs.ru/uploads/posts/2018-12/medium/1544451905_2018-12-10_17-24-11.png" alt="" class="fr-dib"></a></b><b><span style="font-size:14px;">На этом граб готов, осталось теперь меню!</span></b><br><b><span style="font-family:Georgia, serif;font-size:18px;"><i>Переходим в меню!</i></span></b><br><b><span style="font-size:14px;">1) Добавляем эти строчки:</span></b><br><div class="quote"><b><span style="font-size:14px;color:rgb(255,255,255);">#define MAX_CLIENTS 32<br>new gl_iGrab[MAX_CLIENTS + 1];</span></b></div><b><span style="font-size:14px;">2) Добавляем сам текст меню. <span style="color:rgb(184,49,47);">(Код будет отличаться)</span></span></b><br><b><span style="font-size:14px;"><span style="color:rgb(184,49,47);">Код:</span></span></b><br><div class="quote"><b><span style="font-size:14px;"><span style="color:rgb(209,213,216);">        if(gl_iGrab[id])<br>            len += formatex(menu[len] , charsmax(menu) - len , "\r2. \wГраб \r[\yВыключить\r]^n^n" )<br>        else<br>            len += formatex(menu[len] , charsmax(menu) - len , "\r2. \wГраб \r[\yВключить\r]^n^n" )</span></span></b></div><b><span style="font-size:14px;"><span style="color:rgb(0,0,0);">3) Переходим к кейсам!</span></span></b><br><b><span style="font-size:14px;"><span style="color:rgb(0,0,0);">Добавляем это:</span></span></b><br><div class="quote"><b><span style="font-size:14px;"><span style="color:rgb(85,57,130);">            </span><span style="color:rgb(255,255,255);">if(gl_iGrab[id])<br>            {<br>                gl_iGrab[id] = false;<br>                ChatColor(id, "!g[vk.com/zmsuper]!y Вы включили Граб.");<br>            }<br>            else<br>            {<br>                gl_iGrab[id] = true;<br>                ChatColor(id, "!g[vk.com/zmsuper]!y Вы включили Граб.");<br>            }</span></span></b></div><br><b><span style="font-size:18px;"><i>Получится вот так:</i></span></b><br><b><span style="font-size:18px;"><i><a class="highslide" href="https://site-cs.ru/uploads/posts/2018-12/1544452421_2018-12-10_17-30-51.png" target="_blank"><img src="https://site-cs.ru/uploads/posts/2018-12/medium/1544452421_2018-12-10_17-30-51.png" alt="" class="fr-dib"></a>На последок остаётся добавить всего лишь 2 паблика:</i></span></b><br><br><div class="quote"><b><span style="font-size:12px;"><i><span style="color:rgb(255,255,255);">public plugin_natives() <br>{<br>    register_native("GetGrab", "func_GetGrab", 1);<br>}<br>    <br>public func_GetGrab(iPlayer)<br>    return gl_iGrab[iPlayer];</span></i></span></b></div><br>И ещё раз хочу выразить благодарность <span style="font-family:'Times New Roman', Times, serif, '-webkit-standard';font-size:18px;color:rgb(147,101,184);"><b>Universe | vk.com/m1reille</b></span><span style="font-family:'Times New Roman', Times, serif, '-webkit-standard';font-size:14px;color:rgb(147,101,184);"> &lt;==== </span><span style="font-family:'Times New Roman', Times, serif, '-webkit-standard';font-size:14px;color:rgb(226,80,65);">Тут можно заказать плагин!</span><br><i><b>P.S Если будут вопросы, пишите в ВК:</b></i> <span style="color:rgb(97,189,109);"><b><span style="font-size:14px;">vk.com/gadd2014</span></b></span> ]]></turbo:content>
<category><![CDATA[Статьи]]></category>
<dc:creator>BuB9neC</dc:creator>
<pubDate>Mon, 10 Dec 2018 17:34:41 +0300</pubDate>
</item><item turbo="true">
<title>[ZP] Статья: Как устанавливать текстуры неба</title>
<guid isPermaLink="true">https://site-cs.ru/cs/stati/1067-zp-statja-kak-ustanavlivat-tekstury-neba.html</guid>
<link>https://site-cs.ru/cs/stati/1067-zp-statja-kak-ustanavlivat-tekstury-neba.html</link>
<description><![CDATA[<a class="highslide" href="https://site-cs.ru/uploads/posts/2018-12/1544177991_1335887281_st.jpg" target="_blank"><img src="https://site-cs.ru/uploads/posts/2018-12/medium/1544177991_1335887281_st.jpg" alt="" class="fr-dib"></a><div class="quote" style="text-align:center;"><b>В этой статье я расскажу как создать своё небо для КС</b>.</div>]]></description>
<turbo:content><![CDATA[ <a class="highslide" href="https://site-cs.ru/uploads/posts/2018-12/1544177991_1335887281_st.jpg" target="_blank"><img src="https://site-cs.ru/uploads/posts/2018-12/medium/1544177991_1335887281_st.jpg" alt="" class="fr-dib"></a><div class="quote" style="text-align:center;"><b>В этой статье я расскажу как создать своё небо для КС</b>.</div><div class="quote"><i><b>Текстура неба любой карты состоит из шести графических файлов формата TGA, которые вместе образуют форму куба. Окончания в названиях этих файлов соответствуют граням куба<br>"bk", "dn", "ft", "alf", "rt" и "up"</b></i></div><b><u>Приступим к установке</u><br>Заливаем файлы неба в <br></b><div class="quote"><b><b>\cstrike\gfx\env</b></b></div><b>Дальше чтобы применить все это дело заходим в <br></b><div class="quote"><b><b>/addons/amxmodx/configs</b></b></div><b>Там файл zombieplague.ini и ищем пункт или строчки<br></b><div class="quote"><b>[Custom Skies] (randomly chosen if more than one)</b></div><b></b><div class="quote"><b><b>ENABLE = 1<br>SKY NAMES = <i>имя неба</i></b></b></div><b></b><div class="quote"><i><b>Применяем сохраняем заходим на сервер и меняем карту.</b></i></div> ]]></turbo:content>
<category><![CDATA[Статьи]]></category>
<dc:creator>TalRasha</dc:creator>
<pubDate>Fri, 07 Dec 2018 13:22:37 +0300</pubDate>
</item><item turbo="true">
<title>[ZP] Статья: Замена спрайтов взрыва</title>
<guid isPermaLink="true">https://site-cs.ru/cs/stati/1066-zp-statja-zamena-sprajtov-vzryva.html</guid>
<link>https://site-cs.ru/cs/stati/1066-zp-statja-zamena-sprajtov-vzryva.html</link>
<description><![CDATA[<a class="highslide" href="https://site-cs.ru/uploads/posts/2018-12/1544176949_1332429631_de_inferno0014.jpg" target="_blank"><img src="https://site-cs.ru/uploads/posts/2018-12/medium/1544176949_1332429631_de_inferno0014.jpg" alt="" class="fr-dib"></a><div class="quote" style="text-align:center;"><b>Статья о замене спрайта взрыва на зомби сервере</b></div>]]></description>
<turbo:content><![CDATA[ <a class="highslide" href="https://site-cs.ru/uploads/posts/2018-12/1544176949_1332429631_de_inferno0014.jpg" target="_blank"><img src="https://site-cs.ru/uploads/posts/2018-12/medium/1544176949_1332429631_de_inferno0014.jpg" alt="" class="fr-dib"></a><div class="quote" style="text-align:center;"><b>Статья о замене спрайта взрыва на зомби сервере</b></div><b>Открываем исходник zombie_plague40.sma и ищем строчку <br></b><div class="quote"><b><span style="color:rgb(251,160,38);">// Game vars</span></b></div><b>И добавляем следующее:<br></b><div class="quote"><b><span style="color:rgb(251,160,38);">new model_w_holy[128] = "models/zombie_plague/w_holybomb.mdl"<br>new model_p_holy[128] = "models/zombie_plague/p_holybomb.mdl"<br>new const explore_holy[][] = "weapons/holywater_explosion.wav" <br>new holyexplore </span></b></div><b>Должно получится так:<br></b><div class="quote"><b><span style="color:rgb(251,160,38);">// Game vars<br>new model_w_holy[128] = "models/zombie_plague/w_holybomb.mdl"<br>new model_p_holy[128] = "models/zombie_plague/p_holybomb.mdl"<br>new const explore_holy[][] = "weapons/holywater_explosion.wav" <br>new holyexplore<br>new g_pluginenabled // ZP enabled<br>new g_newround // new round starting</span></b></div><b>Теперь прекешим наши спрайты, модели и звуки<br>Ищем строку:<br></b><div class="quote"><b><span style="color:rgb(251,160,38);">engfunc(EngFunc_PrecacheModel, model_vknife_admin_zombie)</span></b></div><b>После нее добавляем:<br></b><div class="quote"><b><span style="color:rgb(251,160,38);">engfunc(EngFunc_PrecacheModel, model_w_holy)<br>engfunc(EngFunc_PrecacheModel, model_p_holy)<br>precache_sound("weapons/holywater_pinpul.wav")<br>precache_sound("weapons/holywater_deploy.wav")<br>precache_sound("weapons/holywater_explosion.wav")<br>holyexplore = precache_model("sprites/holybomb_exp.spr");</span></b></div><b>Должно получится так:<br></b><div class="quote"><b><span style="color:rgb(251,160,38);">engfunc(EngFunc_PrecacheModel, model_vknife_human)<br>engfunc(EngFunc_PrecacheModel, model_vknife_nemesis)<br>engfunc(EngFunc_PrecacheModel, model_vm249_survivor)<br>engfunc(EngFunc_PrecacheModel, model_grenade_infect)<br>engfunc(EngFunc_PrecacheModel, model_grenade_fire)<br>engfunc(EngFunc_PrecacheModel, model_grenade_frost)<br>engfunc(EngFunc_PrecacheModel, model_grenade_flare)<br>engfunc(EngFunc_PrecacheModel, model_vknife_admin_human)<br>engfunc(EngFunc_PrecacheModel, model_vknife_admin_zombie)<br>engfunc(EngFunc_PrecacheModel, model_w_holy)<br>engfunc(EngFunc_PrecacheModel, model_p_holy)<br>precache_sound("weapons/holywater_pinpul.wav")<br>precache_sound("weapons/holywater_deploy.wav")<br>precache_sound("weapons/holywater_explosion.wav")<br>holyexplore = precache_model("sprites/holybomb_exp.spr");</span></b></div><b>Далее ищем:<br></b><div class="quote"><b><span style="color:rgb(251,160,38);">// Fire Grenade Explosion</span></b></div><b>Заменяем <span style="color:rgb(251,160,38);">fire_explode(ent)</span> на <span style="color:rgb(251,160,38);">fire_explode(ent, id)</span><br>Ниже должно быть следующее:<br></b><div class="quote"><b><span style="color:rgb(243,121,52);">// Fire nade explode sound<br>static sound[64]<br>ArrayGetString(grenade_fire, random_num(0, ArraySize(grenade_fire) - 1), sound, charsmax(sound))<br>emit_sound(ent, CHAN_WEAPON, sound, 1.0, ATTN_NORM, 0, PITCH_NORM)</span></b></div><b>Заменяем на:<br></b><div class="quote"><b><span style="color:rgb(251,160,38);">emit_sound(id, CHAN_WEAPON, explore_holy[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)</span></b></div><b>Ищем:<br></b><div class="quote"><b><span style="color:rgb(251,160,38);">set_pev(id, pev_viewmodel2, model_grenade_fire)</span></b></div><b>Ниже добавляем:<br></b><div class="quote"><b><span style="color:rgb(251,160,38);">set_pev(id, pev_weaponmodel2, model_p_holy)</span></b></div><b>Ищем:<br></b><div class="quote"><b><span style="color:rgb(251,160,38);">// Fire Grenade: Fire Blast</span></b></div><b><br><span style="color:rgb(251,160,38);">create_blast2(const Float:originF[3])<br><br>// Smallest ring<br>engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)<br>write_byte(TE_BEAMCYLINDER) // TE id<br>engfunc(EngFunc_WriteCoord, originF[0]) // x<br>engfunc(EngFunc_WriteCoord, originF[1]) // y<br>engfunc(EngFunc_WriteCoord, originF[2]) // z<br>engfunc(EngFunc_WriteCoord, originF[0]) // x axis<br>engfunc(EngFunc_WriteCoord, originF[1]) // y axis<br>engfunc(EngFunc_WriteCoord, originF[2]+385.0) // z axis<br>write_short(g_exploSpr) // sprite<br>write_byte(0) // startframe<br>write_byte(0) // framerate<br>write_byte(4) // life<br>write_byte(60) // width<br>write_byte(0) // noise<br>write_byte(200) // red<br>write_byte(100) // green<br>write_byte(0) // blue<br>write_byte(200) // brightness<br>write_byte(0) // speed<br>message_end()<br><br>// Medium ring<br>engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)<br>write_byte(TE_BEAMCYLINDER) // TE id<br>engfunc(EngFunc_WriteCoord, originF[0]) // x<br>engfunc(EngFunc_WriteCoord, originF[1]) // y<br>engfunc(EngFunc_WriteCoord, originF[2]) // z<br>engfunc(EngFunc_WriteCoord, originF[0]) // x axis<br>engfunc(EngFunc_WriteCoord, originF[1]) // y axis<br>engfunc(EngFunc_WriteCoord, originF[2]+470.0) // z axis<br>write_short(g_exploSpr) // sprite<br>write_byte(0) // startframe<br>write_byte(0) // framerate<br>write_byte(4) // life<br>write_byte(60) // width<br>write_byte(0) // noise<br>write_byte(200) // red<br>write_byte(50) // green<br>write_byte(0) // blue<br>write_byte(200) // brightness<br>write_byte(0) // speed<br>message_end()<br><br>// Largest ring<br>engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)<br>write_byte(TE_BEAMCYLINDER) // TE id<br>engfunc(EngFunc_WriteCoord, originF[0]) // x<br>engfunc(EngFunc_WriteCoord, originF[1]) // y<br>engfunc(EngFunc_WriteCoord, originF[2]) // z<br>engfunc(EngFunc_WriteCoord, originF[0]) // x axis<br>engfunc(EngFunc_WriteCoord, originF[1]) // y axis<br>engfunc(EngFunc_WriteCoord, originF[2]+555.0) // z axis<br>write_short(g_exploSpr) // sprite<br>write_byte(0) // startframe<br>write_byte(0) // framerate<br>write_byte(4) // life<br>write_byte(60) // width<br>write_byte(0) // noise<br>write_byte(200) // red<br>write_byte(0) // green<br>write_byte(0) // blue<br>write_byte(200) // brightness<br>write_byte(0) // speed<br>message_end()<br></span>Заменяем на:<br></b><div class="quote"><b><span style="color:rgb(251,160,38);">// Fire Grenade: Fire Blast<br>create_blast2(const Float:origin[3])<br><br>message_begin(MSG_BROADCAST,SVC_TEMPENTITY); <br>write_byte(TE_EXPLOSION); // TE_EXPLOSION<br>write_coord(floatround(origin[0])); // origin x<br>write_coord(floatround(origin[1])); // origin y<br>write_coord(floatround(origin[2])); // origin z<br>write_short(holyexplore); // sprites<br>write_byte(40); // scale in 0.1's<br>write_byte(30); // framerate<br>write_byte(TE_EXPLFLAG_NONE); // flags <br>message_end(); // message end</span></b></div><b>Ищем:<br></b><div class="quote"><b><span style="color:rgb(251,160,38);">// Forward Set Model </span></b></div><b><br><span style="color:rgb(251,160,38);">// Forward Set Model<br>public fw_SetModel(entity, const model[])<br><br>// We don't care<br>if (strlen(model) 0.0)<br><br>// Get entity's classname<br>static classname[10]<br>pev(entity, pev_classname, classname, charsmax(classname))<br><br>// Check if it's a weapon box<br>if (equal(classname, "weaponbox"))<br><br>// They get automatically removed when thinking<br>set_pev(entity, pev_nextthink, get_gametime() + get_pcvar_float(cvar_removedropped))<br>return FMRES_IGNORED;<br><br><br><br><br>// Narrow down our matches a bit<br>if (model[7] != 'w' || model[8] != '_')<br>return FMRES_IGNORED <br><br>// Get damage time of grenade<br>static Float:dmgtime<br>pev(entity, pev_dmgtime, dmgtime)<br><br>// Grenade not yet thrown<br>if (dmgtime == 0.0)<br>return FMRES_IGNORED;<br><br>// Get whether grenade's owner is a zombie<br>if (g_zombie[pev(entity, pev_owner)])<br><br>if (model[9] == 'h' &amp;&amp; model[10] == 'e' &amp;&amp; get_pcvar_num(cvar_extrainfbomb)) // Infection Bomb<br><br>// Give it a glow<br>fm_set_rendering(entity, kRenderFxGlowShell, 0, 200, 0, kRenderNormal, 16);<br><br>// And a colored trail<br>message_begin(MSG_BROADCAST, SVC_TEMPENTITY)<br>write_byte(TE_BEAMFOLLOW) // TE id<br>write_short(entity) // entity<br>write_short(g_trailSpr) // sprite<br>write_byte(10) // life<br>write_byte(10) // width<br>write_byte(0) // r<br>write_byte(200) // g<br>write_byte(0) // b<br>write_byte(200) // brightness<br>message_end()<br><br>// Set grenade type on the thrown grenade entity<br>set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_INFECTION)<br>return FMRES_SUPERCEDE<br><br>else if (model[9] == 'h' &amp;&amp; model[10] == 'e' &amp;&amp; get_pcvar_num(cvar_firegrenades)) // Napalm Grenade<br><br>set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_NAPALM)<br><br>engfunc( EngFunc_SetModel, entity, model_w_holy)<br>return FMRES_SUPERCEDE<br><br>else if (model[9] == 'f' &amp;&amp; model[10] == 'l' &amp;&amp; get_pcvar_num(cvar_frostgrenades)) // Frost Grenade<br><br>// Give it a glow<br>fm_set_rendering(entity, kRenderFxGlowShell, 0, 100, 200, kRenderNormal, 16);<br><br>// And a colored trail<br>message_begin(MSG_BROADCAST, SVC_TEMPENTITY)<br>write_byte(TE_BEAMFOLLOW) // TE id<br>write_short(entity) // entity<br>write_short(g_trailSpr) // sprite<br>write_byte(10) // life<br>write_byte(10) // width<br>write_byte(0) // r<br>write_byte(100) // g<br>write_byte(200) // b<br>write_byte(200) // brightness<br>message_end()<br><br>// Set grenade type on the thrown grenade entity<br>set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_FROST)<br>return FMRES_SUPERCEDE<br><br>else if (model[9] == 's' &amp;&amp; model[10] == 'm' &amp;&amp; get_pcvar_num(cvar_flaregrenades)) // Flare<br><br>// Build flare's color<br>static rgb[3]<br>switch (get_pcvar_num(cvar_flarecolor))<br><br>case 0: // white<br><br>rgb[0] = 255 // r<br>rgb[1] = 255 // g<br>rgb[2] = 255 // b<br><br>case 1: // red<br><br>rgb[0] = random_num(50,255) // r<br>rgb[1] = 0 // g<br>rgb[2] = 0 // b<br><br>case 2: // green<br><br>rgb[0] = 0 // r<br>rgb[1] = random_num(50,255) // g<br>rgb[2] = 0 // b<br><br>case 3: // blue<br><br>rgb[0] = 0 // r<br>rgb[1] = 0 // g<br>rgb[2] = random_num(50,255) // b<br><br>case 4: // random (all colors)<br><br>rgb[0] = random_num(50,200) // r<br>rgb[1] = random_num(50,200) // g<br>rgb[2] = random_num(50,200) // b<br><br>case 5: // random (r,g,b)<br><br>switch (random_num(1, 3))<br><br>case 1: // red<br><br>rgb[0] = random_num(50,255) // r<br>rgb[1] = 0 // g<br>rgb[2] = 0 // b<br><br>case 2: // green<br><br>rgb[0] = 0 // r<br>rgb[1] = random_num(50,255) // g<br>rgb[2] = 0 // b<br><br>case 3: // blue<br><br>rgb[0] = 0 // r<br>rgb[1] = 0 // g<br>rgb[2] = random_num(50,255) // b<br><br><br><br><br><br>// Give it a glow<br>fm_set_rendering(entity, kRenderFxGlowShell, rgb[0], rgb[1], rgb[2], kRenderNormal, 16);<br><br>// And a colored trail<br>message_begin(MSG_BROADCAST, SVC_TEMPENTITY)<br>write_byte(TE_BEAMFOLLOW) // TE id<br>write_short(entity) // entity<br>write_short(g_trailSpr) // sprite<br>write_byte(10) // life<br>write_byte(10) // width<br>write_byte(rgb[0]) // r<br>write_byte(rgb[1]) // g<br>write_byte(rgb[2]) // b<br>write_byte(200) // brightness<br>message_end()<br><br>// Set grenade type on the thrown grenade entity<br>set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_FLARE)<br><br>// Set flare color on the thrown grenade entity<br>set_pev(entity, PEV_FLARE_COLOR, rgb)<br>return FMRES_SUPERCEDE<br><br>return FMRES_IGNORED</span><br>Ищем:<br></b><div class="quote"><b><span style="color:rgb(251,160,38);">case NADE_TYPE_NAPALM:</span></b></div><b>Заменяем на:<br></b><div class="quote"><b><span style="color:rgb(251,160,38);">fire_explode(entity) на fire_explode(entity, id)</span></b></div><b>Ищем:<br></b><div class="quote"><b><span style="color:rgb(251,160,38);">// Ham Grenade Think Forward<br>public fw_ThinkGrenade(entity)</span></b></div><b>И заменяем на:<br></b><div class="quote"><span style="color:rgb(251,160,38);"><b>// Ham Grenade Think Forward<br>public fw_ThinkGrenade(entity, id)</b></span></div> ]]></turbo:content>
<category><![CDATA[Статьи]]></category>
<dc:creator>TalRasha</dc:creator>
<pubDate>Fri, 07 Dec 2018 13:09:02 +0300</pubDate>
</item><item turbo="true">
<title>[ZP] Статья: Зомби не может атаковать во время заморозки</title>
<guid isPermaLink="true">https://site-cs.ru/cs/stati/1065-zp-statja-zombi-ne-mozhet-atakovat-vo-vremja-zamorozki.html</guid>
<link>https://site-cs.ru/cs/stati/1065-zp-statja-zombi-ne-mozhet-atakovat-vo-vremja-zamorozki.html</link>
<description><![CDATA[<a class="highslide" href="https://site-cs.ru/uploads/posts/2018-12/1544176579_1309275823_ololo.jpg" target="_blank"><img src="https://site-cs.ru/uploads/posts/2018-12/medium/1544176579_1309275823_ololo.jpg" alt="" class="fr-dib"></a><div class="quote" style="text-align:center;"><b>Как сделать чтобы зомби не мог атаковать во время заморозки? - Очень легко</b></div>]]></description>
<turbo:content><![CDATA[ <a class="highslide" href="https://site-cs.ru/uploads/posts/2018-12/1544176579_1309275823_ololo.jpg" target="_blank"><img src="https://site-cs.ru/uploads/posts/2018-12/medium/1544176579_1309275823_ololo.jpg" alt="" class="fr-dib"></a><div class="quote" style="text-align:center;"><b>Как сделать чтобы зомби не мог атаковать во время заморозки? - Очень легко</b></div><b>Ищем в зп:<br></b><div class="quote"><b>// CS Player PData Offsets (win32)<br>const PDATA_SAFE = 2<br>const OFFSET_PAINSHOCK = 108 // ConnorMcLeod<br>const OFFSET_CSTEAMS = 114<br>const OFFSET_CSMONEY = 115<br>const OFFSET_CSMENUCODE = 205<br>const OFFSET_FLASHLIGHT_BATTERY = 244<br>const OFFSET_CSDEATHS = 444<br>const OFFSET_MODELINDEX = 491 // Orangutanz</b></div><b>Вставляем оффсет<br></b><div class="quote"><b>const OFFSET_NEXTATTACK = 83</b></div><b>Получется:<br></b><div class="quote"><b>// CS Player PData Offsets (win32)<br>const PDATA_SAFE = 2<br>const OFFSET_PAINSHOCK = 108 // ConnorMcLeod<br>const OFFSET_CSTEAMS = 114<br>const OFFSET_CSMONEY = 115<br>const OFFSET_CSMENUCODE = 205<br>const OFFSET_FLASHLIGHT_BATTERY = 244<br>const OFFSET_CSDEATHS = 444<br>const OFFSET_MODELINDEX = 491 // Orangutanz<br>const OFFSET_NEXTATTACK = 83</b></div><b>Ищем:<br></b><div class="quote"><b>// Save player's old gravity and maxspeed (bugfix)<br>pev(victim, pev_gravity, g_frozen_gravity[victim])<br>pev(victim, pev_maxspeed, g_frozen_maxspeed[victim])<br><br>// Prevent from jumping<br>if (pev(victim, pev_flags) &amp; FL_ONGROUND)<br>set_pev(victim, pev_gravity, 999999.9) // set really high<br>else<br>set_pev(victim, pev_gravity, 0.000001) // no gravity<br><br>// Prevent from moving<br>set_pev(victim, pev_maxspeed, 1.0)<br><br>// Set a task to remove the freeze<br>g_frozen[victim] = true;<br>set_task(get_pcvar_float(cvar_freezeduration), "remove_freeze", victim)</b></div><b>Добавляем<br></b><div class="quote"><b>set_pdata_float(id, OFFSET_NEXTATTACK, get_pcvar_float(cvar_freezeduration), OFFSET_LINUX)</b></div><b>Получается:<br></b><div class="quote"><b>// Save player's old gravity and maxspeed (bugfix)<br>pev(victim, pev_gravity, g_frozen_gravity[victim])<br>pev(victim, pev_maxspeed, g_frozen_maxspeed[victim])<br><br>// Prevent from jumping<br>if (pev(victim, pev_flags) &amp; FL_ONGROUND)<br>set_pev(victim, pev_gravity, 999999.9) // set really high<br>else<br>set_pev(victim, pev_gravity, 0.000001) // no gravity<br><br>// Prevent from moving<br>set_pev(victim, pev_maxspeed, 1.0)<br>set_pdata_float(victim, OFFSET_NEXTATTACK, get_pcvar_float(cvar_freezeduration), OFFSET_LINUX)<br>// Set a task to remove the freeze<br>g_frozen[victim] = true;<br>set_task(get_pcvar_float(cvar_freezeduration), "remove_freeze", victim)</b> </div><b>Ищем:<br></b><div class="quote"><b>// Save player's old gravity and maxspeed (bugfix)<br>pev(victim, pev_gravity, g_frozen_gravity[victim])<br>pev(victim, pev_maxspeed, g_frozen_maxspeed[victim])<br><br>// Prevent from jumping<br>if (pev(victim, pev_flags) &amp; FL_ONGROUND)<br>set_pev(victim, pev_gravity, 999999.9) // set really high<br>else<br>set_pev(victim, pev_gravity, 0.000001) // no gravity<br><br>// Prevent from moving<br>set_pev(victim, pev_maxspeed, 1.0)<br><br>// Set a task to remove the freeze<br>g_frozen[victim] = true;<br>set_task(get_pcvar_float(cvar_freezeduration), "remove_freeze", victim)</b></div><b>Добавляем<br></b><div class="quote"><b>set_pdata_float(id, OFFSET_NEXTATTACK, get_pcvar_float(cvar_freezeduration), OFFSET_LINUX)</b></div><b>Получается:<br></b><div class="quote"><b>// Save player's old gravity and maxspeed (bugfix)<br>pev(victim, pev_gravity, g_frozen_gravity[victim])<br>pev(victim, pev_maxspeed, g_frozen_maxspeed[victim])<br><br>// Prevent from jumping<br>if (pev(victim, pev_flags) &amp; FL_ONGROUND)<br>set_pev(victim, pev_gravity, 999999.9) // set really high<br>else<br>set_pev(victim, pev_gravity, 0.000001) // no gravity<br><br>// Prevent from moving<br>set_pev(victim, pev_maxspeed, 1.0)<br>set_pdata_float(victim, OFFSET_NEXTATTACK, get_pcvar_float(cvar_freezeduration), OFFSET_LINUX)<br>// Set a task to remove the freeze<br>g_frozen[victim] = true;<br>set_task(get_pcvar_float(cvar_freezeduration), "remove_freeze", victim)</b> </div> ]]></turbo:content>
<category><![CDATA[Статьи]]></category>
<dc:creator>TalRasha</dc:creator>
<pubDate>Fri, 07 Dec 2018 12:57:57 +0300</pubDate>
</item><item turbo="true">
<title>[ZP] Статья: Как убрать Napalm гранату</title>
<guid isPermaLink="true">https://site-cs.ru/cs/stati/1064-zp-statja-kak-ubrat-napalm-granatu-i-sdelat-obychnuju-vzryvnuju.html</guid>
<link>https://site-cs.ru/cs/stati/1064-zp-statja-kak-ubrat-napalm-granatu-i-sdelat-obychnuju-vzryvnuju.html</link>
<description><![CDATA[<a class="highslide" href="https://site-cs.ru/uploads/posts/2018-12/1544176360_1301306467_de_aztec0000.jpg" target="_blank"><img src="https://site-cs.ru/uploads/posts/2018-12/medium/1544176360_1301306467_de_aztec0000.jpg" alt="" class="fr-dib"></a><div class="quote" style="text-align:center;"><b>В этом уроке расскажем как сделать обычную взрывную гранату(HE grenade)</b></div>]]></description>
<turbo:content><![CDATA[ <a class="highslide" href="https://site-cs.ru/uploads/posts/2018-12/1544176360_1301306467_de_aztec0000.jpg" target="_blank"><img src="https://site-cs.ru/uploads/posts/2018-12/medium/1544176360_1301306467_de_aztec0000.jpg" alt="" class="fr-dib"></a><div class="quote" style="text-align:center;"><b>В этом уроке расскажем как сделать обычную взрывную гранату(HE grenade)</b></div><b>И так ищем, удаляем в зп:</b><b><br></b><div class="quote"><b><span style="color:rgb(251,160,38);">if ( damage_type &amp; DMG_HEGRENADE)<br>return HAM_SUPERCEDE;</span></b></div><b>Меняем квар:</b><br><div class="quote"><b><span style="color:rgb(251,160,38);">zp_fire_grenades 1 // Enable napalm grenades (overrides HE)</span></b></div><b>На:<br></b><div class="quote"><b><span style="color:rgb(251,160,38);">zp_fire_grenades 0 // Enable napalm grenades (overrides HE)</span></b><span style="color:rgb(251,160,38);"> </span></div> ]]></turbo:content>
<category><![CDATA[Статьи]]></category>
<dc:creator>TalRasha</dc:creator>
<pubDate>Fri, 07 Dec 2018 12:53:05 +0300</pubDate>
</item><item turbo="true">
<title>[ZP] Статья: Правильные хитбоксы на моделе</title>
<guid isPermaLink="true">https://site-cs.ru/cs/stati/1063-statja-pravilnye-hitboksy-na-modele.html</guid>
<link>https://site-cs.ru/cs/stati/1063-statja-pravilnye-hitboksy-na-modele.html</link>
<description><![CDATA[<a class="highslide" href="https://site-cs.ru/uploads/posts/2018-12/1544174732_1297376945_c0f802829038.jpg" target="_blank"><img src="https://site-cs.ru/uploads/posts/2018-12/medium/1544174732_1297376945_c0f802829038.jpg" alt="" class="fr-dib"></a><div class="quote" style="text-align:center;"><b>Статья о том как поставить правильные хитбоксы на модели.</b></div>]]></description>
<turbo:content><![CDATA[ <a class="highslide" href="https://site-cs.ru/uploads/posts/2018-12/1544174732_1297376945_c0f802829038.jpg" target="_blank"><img src="https://site-cs.ru/uploads/posts/2018-12/medium/1544174732_1297376945_c0f802829038.jpg" alt="" class="fr-dib"></a><div class="quote" style="text-align:center;"><b>Статья о том как поставить правильные хитбоксы на модели.</b></div><div class="quote"><b>Автор:</b> <span style="color:rgb(184,49,47);"><b>pRoxxx</b></span></div><div class="quote"><b>Что нам нужно:</b><br><b>1. Сама модель, с хитбоксами(Открываем через Jed's Half-Life Model View ставим галочку на Show Hit Boxex):</b></div><div style="text-align:center;"><b>Главное что бы не такие:</b></div><b><a class="highslide" href="https://site-cs.ru/uploads/posts/2018-12/1544174823_1297376979_d95e965affc5.jpg" target="_blank"><img src="https://site-cs.ru/uploads/posts/2018-12/medium/1544174823_1297376979_d95e965affc5.jpg" alt="" class="fr-dib"></a></b><br><b><b>2. </b>Собственно сам плагин который будет ставить модель, и хитбоксы:<br><br><b>Оффсет для обновления хитбоксов:</b> </b><br><div class="quote"><b><span style="color:rgb(251,160,38);">#define OFFSET_MODELINDEX 491</span></b></div><b><br><b>Смещение на линуксе:</b><br></b><div class="quote"><b><span style="color:rgb(251,160,38);">#define OFFSET_LINUX 5 </span></b></div><b><br>Наш plugin_init:<br></b><div class="quote"><b><span style="color:rgb(251,160,38);">new index <br>defaultindex<br>public plugin_init(){    <br>    register_plugin(PLUGIN, VERSION, AUTHOR)    <br>    register_clcmd("say poison", "model")    <br>    RegisterHam(Ham_Spawn, "player", "spawn_p", 1)<br>}</span></b></div><br><b><b>Далее:</b> </b><br><div class="quote"><b><span style="color:rgb(251,160,38);">public plugin_precache(){    <br>    index = precache_model("models/player/uac_zombie_poison/uac_zombie_poison.mdl")<br>    defaultindex = precache_model("models/player.mdl") <br>}</span></b></div><br><b><b>Наша команда на получение модели:</b> </b><br><div class="quote"><b><span style="color:rgb(251,160,38);">public model(id){    <br>    cs_set_user_model(id, "uac_zombie_poison") <br>    fm_set_user_model_index(id, index)<br>}</span></b></div><br><b><b>Наш форвард спавна:</b> </b><br><div class="quote"><b><span style="color:rgb(251,160,38);">public spawn_p(id){    <br>    cs_reset_user_model(id)<br>    fm_set_user_model_index(id, defaultindex)<br>}  </span></b></div><b><br><b>И собственно сам сток который обновляет игроку хит боксы:</b> </b><br><div class="quote"><b><span style="color:rgb(251,160,38);">stock fm_set_user_model_index(id, value){    <br>    set_pdata_int(id, OFFSET_MODELINDEX, value, OFFSET_LINUX)<br>}  </span></b></div><br><b><b>В конце концов мы получаем:</b> </b><br><div class="quote"><b><span style="color:rgb(251,160,38);">#define OFFSET_MODELINDEX 491<br>#define OFFSET_LINUX 5 <br>new index, defaultindex<br>public plugin_init(){    <br>    register_plugin(PLUGIN, VERSION, AUTHOR)    <br>    register_clcmd("say poison", "model")    <br>    RegisterHam(Ham_Spawn, "player", "spawn_p", 1)<br>}<br><br><br>public plugin_precache(){    <br>    index = precache_model("models/player/uac_zombie_poison/uac_zombie_poison.mdl")    <br>    defaultindex = precache_model("models/player.mdl")    <br>}<br><br><br>public model(id){    <br>    cs_set_user_model(id, "uac_zombie_poison")    <br>    fm_set_user_model_index(id, index)    <br>}<br><br><br>public spawn_p(id){    <br>    cs_reset_user_model(id)    <br>    fm_set_user_model_index(id, defaultindex)    <br>}<br><br><br>stock fm_set_user_model_index(id, value){    <br>    set_pdata_int(id, OFFSET_MODELINDEX, value, OFFSET_LINUX)<br>}</span></b><b><br></b></div> ]]></turbo:content>
<category><![CDATA[Статьи]]></category>
<dc:creator>TalRasha</dc:creator>
<pubDate>Fri, 07 Dec 2018 12:32:59 +0300</pubDate>
</item></channel></rss>