[CS: Source] Парочка м-фй на плагины (by Danyas)

Тема в разделе "Новые плагины", создана пользователем Danyas, 13 июл 2014.

  1. Danyas

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.730
    Симпатии:
    461
    Переделал плагины, оцените)
    Пойдет на OB и на v34
    Оффтоп
    P.S. не орите за авторство, делал для себя)

    1) Random C4Time
    1) Разукрасил
    [​IMG]
    2) Сделал ТОЛЬКО рандомное время на раунд
    3) Фиксонул error при анлоаде плагина (закоментил)
    Исходник:
    Код:
    #include <sourcemod>
    #pragma semicolon 1
    new Handle:CvarMin;
    new Handle:CvarMax;
    new Handle:mp_c4timer;
    new Random;
    //new bool:IsHooked;
    
    public Plugin:myinfo = 
    {
    	name = "Random C4 Time",
    	author = "Dark Style + Danyas",
    	description = "This plugin set a random time for c4 explode by map/round"
    };
    
    public OnPluginStart()
    {
    	CvarMin = CreateConVar("sm_random_c4t_mintime", "25", "Min. time for bomb count", FCVAR_PLUGIN, true, 0.0);
    	CvarMax = CreateConVar("sm_random_c4t_maxtime", "55", "Max. time for bomb count", FCVAR_PLUGIN, true, 1.0);
    	mp_c4timer = FindConVar("mp_c4timer");	
    	HookEvent("round_start", Event_RoundStart);
    	
    //	IsHooked = true;
    }
    
    //public OnPluginEnd()
    //{
    //	if(IsHooked == true) UnhookEvent("round_start", Event_RoundStart);
    //}
    
    public Action:Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
    {
    	Functions();
    	
    	PrintToChatAll("\x01Время взрыва \x03бомбы: \x04%i сек.", Random, (Random > 1) ? "s." : ".");
    }
    
    Functions()
    {
    	Random = GetRandomInt(GetConVarInt(CvarMin), GetConVarInt(CvarMax));
    	SetConVarInt(mp_c4timer, Random);
    }

    2) Last Man
    1) Разукрасил

    [​IMG]
    * цвет комманды у которой остался последний выживший
    2) Убрал всё кроме квара звука (анонсы, менюшка и т.д.)
    Код:
    #include <sourcemod>
    #include <sdktools>
    #pragma semicolon 1
    #include colors
    #define MAX_FILE_LEN 80
    
    public Plugin:myinfo = 
    {
    	name = "LastMan [by Danyas]",
    	author = "dalto+Danyas[Rus]"
    };
    
    new g_soundPreference[MAXPLAYERS + 1];
    new Handle:g_CvarSoundName = INVALID_HANDLE;
    new String:g_soundName[MAX_FILE_LEN];
    
    
    public OnPluginStart()
    {
    	g_CvarSoundName = CreateConVar("sm_lmd_sound", "lastman/oneandonly.wav", "Звук для проигрывания");
    	HookConVarChange(g_CvarSoundName, OnSoundChanged);
    	AutoExecConfig(true, "lmd");
    	HookEvent("player_death", EventPlayerDeath);
    }
    
    public OnConfigsExecuted()
    {
    	GetConVarString(g_CvarSoundName, g_soundName, MAX_FILE_LEN);
    	decl String:buffer[MAX_FILE_LEN];
    	PrecacheSound(g_soundName, true);
    	Format(buffer, sizeof(buffer), "sound/%s", g_soundName);
    	AddFileToDownloadsTable(buffer);
    }
    
    public OnSoundChanged(Handle:convar, const String:oldValue[], const String:newValue[])
    {
    	decl String:buffer[MAX_FILE_LEN];
    	strcopy(g_soundName, sizeof(g_soundName), newValue);
    	PrecacheSound(g_soundName, true);
    	Format(buffer, sizeof(buffer), "sound/%s", g_soundName);
    	AddFileToDownloadsTable(buffer);
    }
    
    public EventPlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
    {
    	new victimId = GetEventInt(event, "userid");
    
    	new victimClient = GetClientOfUserId(victimId);
    
    	new killedTeam = GetClientTeam(victimClient);
    
    	new playersConnected = GetMaxClients();
    
    	new lastManId = 0;
    	for (new i = 1; i < playersConnected; i++)
    	{
    		if(IsClientInGame(i))
    		{
    			if(killedTeam==GetClientTeam(i) && IsPlayerAlive(i))
    			{
    				if(lastManId)
    				{
    					lastManId = -1;
    				} else {
    					lastManId = i;
    				}
    			}
    		}
    	}
    	
    	if(lastManId > 0)
    	{
    		new String:clientname[64];
    		GetClientName(lastManId, clientname, sizeof(clientname));
    
    		if (GetClientTeam(lastManId) == 2)
    		CPrintToChatAll("{red}%s {default}последний, кто выжил.", clientname);
    		else
    		CPrintToChatAll("{blue}%s {default}последний, кто выжил.", clientname);
    		if(g_soundPreference[lastManId] && !IsFakeClient(lastManId))
    		{
    			EmitSoundToClient(lastManId, g_soundName);
    		}
    	}
    
    }
    P.S. Тему буду дополнять, если это не запрещено :-D
     
  2. Razor

    Razor wcs-world.ru team-vs.ru

    Сообщения:
    117
    Симпатии:
    34
    Оффтоп
     
  3. Danyas

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.730
    Симпатии:
    461
    Оффтоп

    Добавлено через 1 минуту
    В первом вставка строки заменяет букву секунды, что ли?
    Оффтоп
     
    Последнее редактирование: 13 июл 2014
  4. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.590
    Симпатии:
    1.995
    Ты это сам так то выдумал? Я уже давным-давно выложил улучшенную версию, но и там такого кода не было.
    Оффтоп
     
  5. Danyas

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.730
    Симпатии:
    461
    Оо, я даже не видел твой фиксеный плагин:(
    Я оригинал древний брал v0.0.1
    Оффтоп
     
  6. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.590
    Симпатии:
    1.995
    Тут хорошо рассказали.
    Нет. Плагин автоматом определяет, есть ли бомба на карте. Тогда ещё делал несколько грубовато, не так оптимизировано, но работает отлично.
     
    Danyas нравится это.
  7. R1KO

    R1KO Супер-модератор

    Сообщения:
    6.005
    Симпатии:
    2.994
    Danyas, коды в тег php закидай
     
  8. Danyas

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.730
    Симпатии:
    461
    Хорошо, спасибо за совет :)