Иконка ресурса

[Z:R&CSGO] Step Sound 2.3

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
966
  • Автор ресурса
  • #1
[ZR&CSGO] Step Sound v2.3

При ходьбе от зомби воспроизводятся звуки.

Поддерживаемые игры:
- Тестировал только на CSGO, про остальные игры не знаю

Квары лишь в версии 2.1 и более, нативов и форвардов нету, но никто не мешает вам их добавить:)

Не забудьте добавить в файл playerclasses.txt параметр stepsound
"zombie_classic"
{
// General
"enabled" "yes"
"team" "0"
"team_default" "yes"
"flags" "0"
"group" ""

"name" "Classic"
"description" "Need brains!!! Arrrrggghh!"
"stepsound" "*/zpzs/player_zombie_nomal_male_footstep1.mp3;*/zpzs/player_zombie_nomal_male_footstep2.mp3"
// Model
"model_path" "models\player\Csgo\zombie.mdl"
"model_skin_index" "0"
"alpha_initial" "255"
"alpha_damaged" "255"
"alpha_damage" "0"

// Hud
"overlay_path" ""
"nvgs" "no"
"fov" "90"

// Effects
"has_napalm" "no"
"napalm_time" "10.0"

// Player behavior
"immunity_mode" "none"
"immunity_amount" "1"
"immunity_cooldown" "60"
"no_fall_damage" "yes"

"health" "8500"
"health_regen_interval" "1.0"
"health_regen_amount" "75"
"health_infect_gain" "4000"
"kill_bonus" "2"

"speed" "300"
"knockback" "0"
"jump_height" "1.3"
"jump_distance" "1.2"
}
Не забудьте добавить в файл playerclasses.txt параметр stepsound
"zombie_classic"
{
// General
"enabled" "yes"
"team" "0"
"team_default" "yes"
"flags" "0"
"group" ""

"name" "Classic"
"description" "Need brains!!! Arrrrggghh!"
"stepsound" "*/zpzs/player_zombie_nomal_male_footstep1.mp3;*/zpzs/player_zombie_nomal_male_footstep2.mp3"
// Model
"model_path" "models\player\Csgo\zombie.mdl"
"model_skin_index" "0"
"alpha_initial" "255"
"alpha_damaged" "255"
"alpha_damage" "0"

// Hud
"overlay_path" ""
"nvgs" "no"
"fov" "90"

// Effects
"has_napalm" "no"
"napalm_time" "10.0"

// Player behavior
"immunity_mode" "none"
"immunity_amount" "1"
"immunity_cooldown" "60"
"no_fall_damage" "yes"

"health" "8500"
"health_regen_interval" "1.0"
"health_regen_amount" "75"
"health_infect_gain" "4000"
"kill_bonus" "2"

"speed" "300"
"knockback" "0"
"jump_height" "1.3"
"jump_distance" "1.2"
}
Квары
C-подобный:
zr_stepsound_path_to_playerclasses (def. addons/sourcemod/configs/zr/playerclasses.txt) - Путь к playerclass.txt файлу

Видео:

Отдельная благодарность:
gubka - За звуки в плагине Zombie Plague
KrolZ - За толчок в мир SourcePawn
Ginek22 - За идею
AS TRO - За идею с параметром stepsound в версии 2.0

Идеи пишите в ЛС, если есть время и желание, сделаю.
И еще, прошу IP серверов с этим плагином мне писать в ЛС. Хочу знать сколько таких серверов :)[/spoiler][/spoiler]
 
Последнее редактирование модератором:

amauri

Участник
Сообщения
4
Реакции
1
Он работает в источнике забастовки счетчика
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #4
Action на эвенте не нужен и вместо return Plugin_Continue просто return;
Action Нужен только на Pre хуках.

PHP:
new Float:pos[3]
    GetClientAbsOrigin(client, pos);
    decl String:arg[256]
Можно оба через decl создать. Быстрее будет.

FormatEx быстрее чем Format
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #5
@AlmazON, ну так пусть тогда весь код будет уже на новом синтаксисе, а то каша получается.
 

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
966
  • Автор ресурса
  • #6
Action на эвенте не нужен и вместо return Plugin_Continue просто return;
Action Нужен только на Pre хуках.

PHP:
new Float:pos[3]
    GetClientAbsOrigin(client, pos);
    decl String:arg[256]
Можно оба через decl создать. Быстрее будет.

FormatEx быстрее чем Format
Я привык строки создавать под decl, а остальное под new. Насчет Format учту.

Action на евенте я никогда не делаю... Наверно лень было тогда писать функцию под event(+не знал тогда какие там аргументы), и скопировал с Pre хука.
 

AS TRO

Участник
Сообщения
1,159
Реакции
750
@inklesspen, С радостью бы поставил себе, если бы для каждого класса были бы свои индивидуальные звуки, которые можно вписать в playerclasses.txt :) Конечно же приведу пример:
"zombie_classic"
{
// General
"enabled" "yes"
"team" "0"
"team_default" "yes"
"flags" "0"
"group" ""

"name" "Classic"
"description" "Need brains!!! Arrrrggghh!"

"stepsound" "sound/.../st1.mp3;sound/.../st2.mp3;sound/...ddd.mp3"
// Model
"model_path" "models/player/kuristaja/zombies/corpse/corpse.mdl"
"model_skin_index" "0"
"alpha_initial" "255"
"alpha_damaged" "255"
"alpha_damage" "0"

// Hud
"overlay_path" ""
"nvgs" "no"
"fov" "90"

// Effects
"has_napalm" "no"
"napalm_time" "10.0"

// Player behavior
"immunity_mode" "none"
"immunity_amount" "1"
"immunity_cooldown" "60"
"no_fall_damage" "yes"

"health" "3200"
"health_regen_interval" "0.0"
"health_regen_amount" "0"
"health_infect_gain" "500"
"kill_bonus" "2"

"speed" "390"
"knockback" "3.2"
"jump_height" "1.1"
"jump_distance" "1.2"
}

"zombie_fast"
{
// General
"enabled" "yes"
"team" "0"
"team_default" "yes"
"flags" "0"
"group" ""

"name" "Classic"
"description" "Need brains!!! Arrrrggghh!"

"stepsound" "sound/.../dddd23.mp3;sound/.../ggg3s.mp3;sound/...fafd244.mp3"
// Model
"model_path" "models/player/kuristaja/zombies/corpse/corpse.mdl"
"model_skin_index" "0"
"alpha_initial" "255"
"alpha_damaged" "255"
"alpha_damage" "0"

// Hud
"overlay_path" ""
"nvgs" "no"
"fov" "90"

// Effects
"has_napalm" "no"
"napalm_time" "10.0"

// Player behavior
"immunity_mode" "none"
"immunity_amount" "1"
"immunity_cooldown" "60"
"no_fall_damage" "yes"

"health" "3200"
"health_regen_interval" "0.0"
"health_regen_amount" "0"
"health_infect_gain" "500"
"kill_bonus" "2"

"speed" "390"
"knockback" "3.2"
"jump_height" "1.1"
"jump_distance" "1.2"
}
--- Добавлено позже ---
Сможешь реализовать? :)
 

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
966
  • Автор ресурса
  • #8
@inklesspen, С радостью бы поставил себе, если бы для каждого класса были бы свои индивидуальные звуки, которые можно вписать в playerclasses.txt :) Конечно же приведу пример:
"zombie_classic"
{
// General
"enabled" "yes"
"team" "0"
"team_default" "yes"
"flags" "0"
"group" ""

"name" "Classic"
"description" "Need brains!!! Arrrrggghh!"

"stepsound" "sound/.../st1.mp3;sound/.../st2.mp3;sound/...ddd.mp3"
// Model
"model_path" "models/player/kuristaja/zombies/corpse/corpse.mdl"
"model_skin_index" "0"
"alpha_initial" "255"
"alpha_damaged" "255"
"alpha_damage" "0"

// Hud
"overlay_path" ""
"nvgs" "no"
"fov" "90"

// Effects
"has_napalm" "no"
"napalm_time" "10.0"

// Player behavior
"immunity_mode" "none"
"immunity_amount" "1"
"immunity_cooldown" "60"
"no_fall_damage" "yes"

"health" "3200"
"health_regen_interval" "0.0"
"health_regen_amount" "0"
"health_infect_gain" "500"
"kill_bonus" "2"

"speed" "390"
"knockback" "3.2"
"jump_height" "1.1"
"jump_distance" "1.2"
}

"zombie_fast"
{
// General
"enabled" "yes"
"team" "0"
"team_default" "yes"
"flags" "0"
"group" ""

"name" "Classic"
"description" "Need brains!!! Arrrrggghh!"

"stepsound" "sound/.../dddd23.mp3;sound/.../ggg3s.mp3;sound/...fafd244.mp3"
// Model
"model_path" "models/player/kuristaja/zombies/corpse/corpse.mdl"
"model_skin_index" "0"
"alpha_initial" "255"
"alpha_damaged" "255"
"alpha_damage" "0"

// Hud
"overlay_path" ""
"nvgs" "no"
"fov" "90"

// Effects
"has_napalm" "no"
"napalm_time" "10.0"

// Player behavior
"immunity_mode" "none"
"immunity_amount" "1"
"immunity_cooldown" "60"
"no_fall_damage" "yes"

"health" "3200"
"health_regen_interval" "0.0"
"health_regen_amount" "0"
"health_infect_gain" "500"
"kill_bonus" "2"

"speed" "390"
"knockback" "3.2"
"jump_height" "1.1"
"jump_distance" "1.2"
}
--- Добавлено позже ---
Сможешь реализовать? :)
Хм... можно... Время есть
--- Добавлено позже ---
Но можешь ли написать цикл перехода с 1 ключа на другой?
Тоесть сверху вниз по порядку. Я толком не знаю как это соорудить, если увижу пример, сделаю даже доп.закачку.
--- Добавлено позже ---
Я разобрался, почитал про циклы и нашел while
--- Добавлено позже ---
@inklesspen, С радостью бы поставил себе, если бы для каждого класса были бы свои индивидуальные звуки, которые можно вписать в playerclasses.txt :) Конечно же приведу пример:
"zombie_classic"
{
// General
"enabled" "yes"
"team" "0"
"team_default" "yes"
"flags" "0"
"group" ""

"name" "Classic"
"description" "Need brains!!! Arrrrggghh!"

"stepsound" "sound/.../st1.mp3;sound/.../st2.mp3;sound/...ddd.mp3"
// Model
"model_path" "models/player/kuristaja/zombies/corpse/corpse.mdl"
"model_skin_index" "0"
"alpha_initial" "255"
"alpha_damaged" "255"
"alpha_damage" "0"

// Hud
"overlay_path" ""
"nvgs" "no"
"fov" "90"

// Effects
"has_napalm" "no"
"napalm_time" "10.0"

// Player behavior
"immunity_mode" "none"
"immunity_amount" "1"
"immunity_cooldown" "60"
"no_fall_damage" "yes"

"health" "3200"
"health_regen_interval" "0.0"
"health_regen_amount" "0"
"health_infect_gain" "500"
"kill_bonus" "2"

"speed" "390"
"knockback" "3.2"
"jump_height" "1.1"
"jump_distance" "1.2"
}

"zombie_fast"
{
// General
"enabled" "yes"
"team" "0"
"team_default" "yes"
"flags" "0"
"group" ""

"name" "Classic"
"description" "Need brains!!! Arrrrggghh!"

"stepsound" "sound/.../dddd23.mp3;sound/.../ggg3s.mp3;sound/...fafd244.mp3"
// Model
"model_path" "models/player/kuristaja/zombies/corpse/corpse.mdl"
"model_skin_index" "0"
"alpha_initial" "255"
"alpha_damaged" "255"
"alpha_damage" "0"

// Hud
"overlay_path" ""
"nvgs" "no"
"fov" "90"

// Effects
"has_napalm" "no"
"napalm_time" "10.0"

// Player behavior
"immunity_mode" "none"
"immunity_amount" "1"
"immunity_cooldown" "60"
"no_fall_damage" "yes"

"health" "3200"
"health_regen_interval" "0.0"
"health_regen_amount" "0"
"health_infect_gain" "500"
"kill_bonus" "2"

"speed" "390"
"knockback" "3.2"
"jump_height" "1.1"
"jump_distance" "1.2"
}
--- Добавлено позже ---
Сможешь реализовать? :)
Воу, а как получить класс игрока? :D
C-подобный:
/*
 * ============================================================================
 *
 *  Zombie:Reloaded
 *
 *  File:          class.zr.inc
 *  Type:          Include
 *  Description:   Player class API.
 *
 *  Copyright (C) 2009-2013  Greyscale, Richard Helgeby
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * ============================================================================
 */

/**
 * @section Internal class cache types. Specifies which class data to access.
 */
#define ZR_CLASS_CACHE_ORIGINAL 0   /** Original class data loaded from file. */
#define ZR_CLASS_CACHE_MODIFIED 1   /** Default cache. Class data modified by eventual multipliers, map configs, commands, etc. */
#define ZR_CLASS_CACHE_PLAYER   2   /** Current player class attributes. The class index parameter is used as client index when reading from this cache. */
/**
 * @endsection
 */

/**
 * Results when selecting a class for a player.
 */
enum ClassSelectResult
{
    ClassSelected_NoChange,     /** No class change was necessary (class already selected). */
    ClassSelected_Instant,      /** Class was instantly changed. */
    ClassSelected_NextSpawn     /** Class will be used next spawn. */
}

/**
 * Returns whether a class index is valid or not.
 *
 * @param classIndex    Class index to validate.
 *
 * @return              True if valid, false otherwise.
 */
native bool:ZR_IsValidClassIndex(classIndex);

/**
 * Gets the currently active class index that the player is using.
 *
 * @param client    The client index.
 *
 * @return          The active class index.
 */
native bool:ZR_GetActiveClass(client);

/**
 * Selects a class for a player.
 *
 * Human class attribute may be instantly applied if player is alive, human and
 * instant class change is enabled. Otherwise only the selected index will be
 * updated for next spawn.
 *
 * Class selection will be saved in client cookies if enabled.
 *
 * @param client            Client index.
 * @param classIndex        Class index.
 * @param applyIfPossible   Optional. Apply class attributes if conditions allow
 *                          it. Default is true.
 * @param saveIfEnabled     Optional. Save class selection in client cookies if
 *                          enabled. Default is true.
 *
 * @return                  Class selection result. See enum ClassSelectResult.
 */
native ClassSelectResult:ZR_SelectClientClass(client, classIndex, bool:applyIfPossible = true, bool:saveIfEnabled = true);

/**
 * Gets the class index of the class with the specified name.
 *
 * Note: This search is linear and probably won't perform well in large loops.
 *
 * @param className     Class name to search for.
 * @param cacheType     Optional. Specifies which class cache to read from,
 *                      except player cache.
 *
 * @return              Class index, or -1 if none found.
 */
native ZR_GetClassByName(const String:className[], cacheType = ZR_CLASS_CACHE_MODIFIED);

/**
 * Gets the class name displayed in the class menu.
 *
 * @param index         Index of the class in a class cache or a client index,
 *                      depending on the cache type specified.
 * @param buffer        The destination string buffer.
 * @param maxlen        The length of the destination string buffer.
 * @param cacheType     Optional. Specifies which class cache to read from.
 * @return              Number of cells written. -1 on error.
 */
native ZR_GetClassDisplayName(index, String:buffer[], maxlen, cacheType = ZR_CLASS_CACHE_MODIFIED);
--- Добавлено позже ---
Нашел :D
 
Последнее редактирование:

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
966
  • Автор ресурса
  • #10

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #11
@inklesspen, в inc убери bool из native bool:ZR_GetActiveClass(client);
Может опечатка. Порылся в исходниках - возвращает inc.
 

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
966
  • Автор ресурса
  • #12
Не понимаю в чем проблема, думаю где-то в цикле while, ведь я с ней никогда не работал...
C-подобный:
#pragma dynamic 131072
#include <icpack/load>
#include <zombiereloaded>
new Handle:gtrie;
public Plugin:myinfo = {name = "[ZR&CSGO] Step sound", author = "inklesspen", version = "2.0 beta"}
public OnPluginStart()
{
    HookEvent("player_footstep", Event_Step, EventHookMode_Post)
    gtrie = CreateTrie();
}

public Event_Step(Handle event, char[] name, bool dbc)
{
    int client = GetClientOfUserId(GetEventInt(event, "userid"))
    if(!YesPlayer(client)||!IsPlayerAlive(client)||!ZR_IsClientZombie(client))
        return
    new cindex = ZR_GetActiveClass(client);
    if(!ZR_IsValidClassIndex(cindex)) return;
    decl String:namet[256]
    decl String:arg[3000]
    decl String:arg2[64][256]
    ZR_GetClassDisplayName(cindex, namet, sizeof(namet));
    PrintToConsole(client, "[StepSound] Class: %s", namet)
    new l = ExplodeString(arg, ";", arg2, 64, 256, false)
    new Float:pos[3]
    GetClientAbsOrigin(client, pos);
    EmitAmbientSound(arg2[GetRandomInt(0, l-1)], pos, client, SNDLEVEL_NORMAL, SND_NOFLAGS, 0.2)
}

public OnMapStart()
{
    ClearTrie(gtrie)
    decl String:arg[3000]
    new o
    new Handle:trie = CreateTrie()
    decl String:arg2[64][64]
    decl String:name[64]
    new Handle:kv = CreateKeyValues("classes")
    FileToKeyValues(kv, "addons/sourcemod/configs/zr/playerclasses.txt")
    if(KvGotoFirstSubKey(kv, false))
    {
        do
        {   
            KvGetString(kv, "name", name, 64, "none")
            KvGetString(kv, "stepsound", arg, 3077, "none")
            SetTrieString(gtrie, name, arg)
            if(!StrEqual(arg, "none"))
            {
                new l = ExplodeString(arg, ";", arg2, 64, 64, false)
                for(new i=0;i<l;i++)
                {
                    if(!GetTrieValue(trie, arg2[l], o))
                    {
                        SetTrieValue(trie, arg2[l], 1)
                        CSGOPrecacheSound(arg2[l])
                        ReplaceString(arg2[l], 64, "*", "sound", false)
                        AddFileToDownloadsTable(arg2[l])
                    }
                }
            }
        } while(KvGotoNextKey(kv, false))
    }
    CloseHandle(kv)
    CloseHandle(trie)
}
--- Добавлено позже ---
А, охренеть, я забыл вписать получение звуков из ключа :D
 
Последнее редактирование:

AS TRO

Участник
Сообщения
1,159
Реакции
750
FileToKeyValues(kv, "addons/sourcemod/configs/zr/playerclasses.txt")
Добавь пожалуйста чтобы можно было кваром менять путь к файлу. Это бы добавило плагину "гибкость" под нужные карты :)
Тобишь, с плагином map configs у меня для ЗЕ и ЗМ карт каждый свой конфиг классов зомби :) аль можно сделать проще) чтобы путь к файлу с классами брался из квара в самом ЗР. Там есть квар, который отвечает за путь к классам игроков :)
Чувствую плагин будет просто конфеткой :3
 

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
966
  • Автор ресурса
  • #14
Добавь пожалуйста чтобы можно было кваром менять путь к файлу. Это бы добавило плагину "гибкость" под нужные карты :)
Тобишь, с плагином map configs у меня для ЗЕ и ЗМ карт каждый свой конфиг классов зомби :) аль можно сделать проще) чтобы путь к файлу с классами брался из квара в самом ЗР. Там есть квар, который отвечает за путь к классам игроков :)
Чувствую плагин будет просто конфеткой :3
Хорошо.
--- Добавлено позже ---
Щас залил версию 2.0 без квара, щас делаю с кваром
--- Добавлено позже ---
Добавь пожалуйста чтобы можно было кваром менять путь к файлу. Это бы добавило плагину "гибкость" под нужные карты :)
Тобишь, с плагином map configs у меня для ЗЕ и ЗМ карт каждый свой конфиг классов зомби :) аль можно сделать проще) чтобы путь к файлу с классами брался из квара в самом ЗР. Там есть квар, который отвечает за путь к классам игроков :)
Чувствую плагин будет просто конфеткой :3
Залил 2.1 версию
 
Последнее редактирование:

AS TRO

Участник
Сообщения
1,159
Реакции
750
@inklesspen, спасибо большое! :) Завтра протестирую и отпишусь :)
Теперь осталось найти нормальные звуки шагов зомби :D
 

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
966
  • Автор ресурса
  • #16
Последнее редактирование:

Колян

Участник
Сообщения
180
Реакции
5
А стандартный звук убрать можешь? а то топот слышится.
 
Сверху Снизу