Перейти к содержимому


Фотография

Единая тема для поиска плагинов L4D

поиск плагин помогите найти

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 1447

#1181 Freedom77

Freedom77

    Новичок

  • Пользователь
  • Pip
  • 11 сообщений

Отправлено 29 Июль 2022 - 15:46

Тут есть квары по поводу ползать и не только. https://forum.myaren...peremennye-l4d/

Спасибо!


Позвольте ещё вопросик: а как повысить скорострельность из дробовика? Благодарю.

 

И ещё вопросик: я хотел изменить высоту прыжка кваром sv_gravity  "х", но ничего не получилось. не подскажете, как это правильно делается? Спасибо.


Сообщение отредактировал Freedom77: 29 Июль 2022 - 17:13


#1182 Profanuch

Profanuch

    Пользователь

  • Пользователь
  • PipPipPip
  • 156 сообщений

Отправлено 29 Июль 2022 - 21:29


И ещё вопросик: я хотел изменить высоту прыжка кваром sv_gravity  "х", но ничего не получилось. не подскажете, как это правильно делается? Спасибо.

sm_cvar sv_gravity "нужное значение"



#1183 Freedom77

Freedom77

    Новичок

  • Пользователь
  • Pip
  • 11 сообщений

Отправлено 30 Июль 2022 - 9:19

sm_cvar sv_gravity "нужное значение"

Спасибо большое!



#1184 Freedom77

Freedom77

    Новичок

  • Пользователь
  • Pip
  • 11 сообщений

Отправлено 30 Июль 2022 - 11:14

Ребята, а помогите ещё сделать полосу оставшегося здоровья танка, чтобы видеть, сколько ещё убивать его. Спасибо.



#1185 Noobik

Noobik

    Новичок

  • Пользователь
  • Pip
  • 8 сообщений

Отправлено 30 Июль 2022 - 15:57

Ребята, помогите с литературой! Так хочется самому писать плагины!



#1186 Profanuch

Profanuch

    Пользователь

  • Пользователь
  • PipPipPip
  • 156 сообщений

Отправлено 30 Июль 2022 - 21:25

Ребята, а помогите ещё сделать полосу оставшегося здоровья танка, чтобы видеть, сколько ещё убивать его. Спасибо.

[L4D1 & L4D2] Tank Show HP



#1187 Noobik

Noobik

    Новичок

  • Пользователь
  • Pip
  • 8 сообщений

Отправлено 01 Август 2022 - 17:01

Спасибо!


Совсем измучился, никак не получается сделать, чтобы статистика выводилась в игре по команде RANK (

Вроде делаю всё по инструкции, установил HLStatsX CE, установил плагин HLstatsX CE Ingame Plugin, а в игру статистику не получается вставить (

Помогите, пж...



#1188 Noobik

Noobik

    Новичок

  • Пользователь
  • Pip
  • 8 сообщений

Отправлено 02 Август 2022 - 1:00

Друзья, а подскажите, как поменять хп особым заражённым, может квары какие есть или плагин? Благодарю.



#1189 Noobik

Noobik

    Новичок

  • Пользователь
  • Pip
  • 8 сообщений

Отправлено 04 Август 2022 - 12:37

Ребята, а подскажите плагин, чтобы когда игрок заходил на сервер, ему показывалось приветствие в чате типа "ДОБРО ПОЖАЛОВАТЬ НА СЕРВЕР ТАКОЙ-ТО"

Благодарю. 



#1190 Alexander_Mirny

Alexander_Mirny

    Пользователь

  • Пользователь
  • PipPipPip
  • 368 сообщений

Отправлено 05 Август 2022 - 11:47

Ребята, а подскажите плагин, чтобы когда игрок заходил на сервер, ему показывалось приветствие в чате типа "ДОБРО ПОЖАЛОВАТЬ НА СЕРВЕР ТАКОЙ-ТО"

Благодарю. 

 

Туторил 

 

1. Открываешь Notepad++ 

 

2. Создаешь новый том

 

3. Вписываешь библиотеку #include <sourcemod>

 

4. Добавляешь событие public OnPluginStart() 

 

5. В событие добовляешь хок события player_spawn оно отвечает за спавн игрока.

 

Пример кода:

public OnPluginStart()
{
    HookEvent("player_spawn", OnPlayerSpawn);
}

6. Далее пишешь имя событию например OnPlayerSpawn

 

7. Создаешь событие  OnPlayerSpawn

 

Пример кода:

public OnPlayerSpawn(Handle:hEvent, const String:sEventName[], bool:bDontBroadcast) 
{ 
    new client  = GetClientOfUserId(GetEventInt(hEvent, "userid"));
}

userid - игрок.

 

8. Создаешь в событии таймер 

 

Пример кода:

public OnPlayerSpawn(Handle:hEvent, const String:sEventName[], bool:bDontBroadcast) 
{ 
    if (IsClientConnected(client)) && (IsClientInGame(client)) && (!IsFakeClient(client))
    {
         new client  = GetClientOfUserId(GetEventInt(hEvent, "userid"));
         CreateTimer(10.0, Announce, client);
    }
    return Plugin_Continue;
}
public Action:Announce(Handle:timer, any:client)
{
    if (IsClientInGame(client) && (GetClientTeam(client) == 2))
    {
         PrintToChat(client,"\x04Добро пожаловать на сервер \x03Название сервера");
    }
}

10.0 - Секунды через сколько появится сообщение 

 

9. Сохраняешь все это дело зажав клавиши ctrl + s

 

10. Дальше сохраняешь глобально, при сохранении указываешь тип файла .sp  

 

Пример: Plugin.sp

 

Функции которые использовались в этом туториале.

 

IsClientConnected - https://sm.alliedmod...ClientConnected

 

IsClientInGame - https://sm.alliedmod.../IsClientInGame

 

IsFakeClient - https://sm.alliedmod...ts/IsFakeClient

 

GetClientTeam - https://sm.alliedmod...s/GetClientTeam

 

CreateTimer - https://sm.alliedmod...ers/CreateTimer

 

Событие.

 

OnPluginStart - https://sm.alliedmod...d/OnPluginStart


Ну и финал - Компелируешь плагин, компелятор у тебя уже есть.



#1191 Noobik

Noobik

    Новичок

  • Пользователь
  • Pip
  • 8 сообщений

Отправлено 05 Август 2022 - 12:51

Туторил 

 

1. Открываешь Notepad++ 

 

2. Создаешь новый том

 

3. Вписываешь библиотеку #include <sourcemod>

 

4. Добавляешь событие public OnPluginStart() 

 

5. В событие добовляешь хок события player_spawn оно отвечает за спавн игрока.

 

Пример кода:

public OnPluginStart()
{
    HookEvent("player_spawn", OnPlayerSpawn);
}

6. Далее пишешь имя событию например OnPlayerSpawn

 

7. Создаешь событие  OnPlayerSpawn

 

Пример кода:

public OnPlayerSpawn(Handle:hEvent, const String:sEventName[], bool:bDontBroadcast) 
{ 
    new client  = GetClientOfUserId(GetEventInt(hEvent, "userid"));
}

userid - игрок.

 

8. Создаешь в событии таймер 

 

Пример кода:

public OnPlayerSpawn(Handle:hEvent, const String:sEventName[], bool:bDontBroadcast) 
{ 
    if (IsClientConnected(client)) && (IsClientInGame(client)) && (!IsFakeClient(client))
    {
         new client  = GetClientOfUserId(GetEventInt(hEvent, "userid"));
         CreateTimer(10.0, Announce, client);
    }
    return Plugin_Continue;
}
public Action:Announce(Handle:timer, any:client)
{
    if (IsClientInGame(client) && (GetClientTeam(client) == 2))
    {
         PrintToChat(client,"\x04Добро пожаловать на сервер \x03Название сервера");
    }
}

10.0 - Секунды через сколько появится сообщение 

 

9. Сохраняешь все это дело зажав клавиши ctrl + s

 

10. Дальше сохраняешь глобально, при сохранении указываешь тип файла .sp  

 

Пример: Plugin.sp

 

Функции которые использовались в этом туториале.

 

IsClientConnected - https://sm.alliedmod...ClientConnected

 

IsClientInGame - https://sm.alliedmod.../IsClientInGame

 

IsFakeClient - https://sm.alliedmod...ts/IsFakeClient

 

GetClientTeam - https://sm.alliedmod...s/GetClientTeam

 

CreateTimer - https://sm.alliedmod...ers/CreateTimer

 

Событие.

 

OnPluginStart - https://sm.alliedmod...d/OnPluginStart


Ну и финал - Компелируешь плагин, компелятор у тебя уже есть.

Спасибо огромное за столь подробное описание!



#1192 valedar

valedar

    Участник

  • Пользователь
  • PipPip
  • 62 сообщений

Отправлено 12 Август 2022 - 11:20

Туторил 

 

1. Открываешь Notepad++ 

 

2. Создаешь новый том

 

3. Вписываешь библиотеку #include <sourcemod>

 

4. Добавляешь событие public OnPluginStart() 

 

5. В событие добовляешь хок события player_spawn оно отвечает за спавн игрока.

 

Пример кода:

public OnPluginStart()
{
    HookEvent("player_spawn", OnPlayerSpawn);
}

6. Далее пишешь имя событию например OnPlayerSpawn

 

7. Создаешь событие  OnPlayerSpawn

 

Пример кода:

public OnPlayerSpawn(Handle:hEvent, const String:sEventName[], bool:bDontBroadcast) 
{ 
    new client  = GetClientOfUserId(GetEventInt(hEvent, "userid"));
}

userid - игрок.

 

8. Создаешь в событии таймер 

 

Пример кода:

public OnPlayerSpawn(Handle:hEvent, const String:sEventName[], bool:bDontBroadcast) 
{ 
    if (IsClientConnected(client)) && (IsClientInGame(client)) && (!IsFakeClient(client))
    {
         new client  = GetClientOfUserId(GetEventInt(hEvent, "userid"));
         CreateTimer(10.0, Announce, client);
    }
    return Plugin_Continue;
}
public Action:Announce(Handle:timer, any:client)
{
    if (IsClientInGame(client) && (GetClientTeam(client) == 2))
    {
         PrintToChat(client,"\x04Добро пожаловать на сервер \x03Название сервера");
    }
}

10.0 - Секунды через сколько появится сообщение 

 

9. Сохраняешь все это дело зажав клавиши ctrl + s

 

10. Дальше сохраняешь глобально, при сохранении указываешь тип файла .sp  

 

Пример: Plugin.sp

 

Функции которые использовались в этом туториале.

 

IsClientConnected - https://sm.alliedmod...ClientConnected

 

IsClientInGame - https://sm.alliedmod.../IsClientInGame

 

IsFakeClient - https://sm.alliedmod...ts/IsFakeClient

 

GetClientTeam - https://sm.alliedmod...s/GetClientTeam

 

CreateTimer - https://sm.alliedmod...ers/CreateTimer

 

Событие.

 

OnPluginStart - https://sm.alliedmod...d/OnPluginStart


Ну и финал - Компелируешь плагин, компелятор у тебя уже есть.

 

Так не скомпилируется.


Спасибо огромное за столь подробное описание!

Вот так:

#include<sourcemod>

public void OnPluginStart()
{
	HookEvent("player_spawn", OnPlayerSpawn);
}

public Action OnPlayerSpawn(Event event, const char[] name, bool DontBroadcast)
{
	int client = GetClientOfUserId(event.GetInt("userid"));
	if (IsClientConnected(client) && IsClientInGame(client))
	{
		CreateTimer(10.0, timers, client);
	}
	return Plugin_Continue;
}

public Action timers(Handle timer, any client)
{
       if (IsClientInGame(client) && GetClientTeam(client))
       {
       PrintToChat(client, "Здесь твое сообщение");
       }
       return Plugin_Continue;
}

[Редактировано]

Но есть одно но, почему то через евенты сообщения дублируются, вот поэтому не рекомендую использовать эвенты для чата.


Сообщение отредактировал valedar: 12 Август 2022 - 14:05


#1193 AlexMy

AlexMy

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 032 сообщений

Отправлено 12 Август 2022 - 17:05

Так не скомпилируется.


Вот так:

#include<sourcemod>

public void OnPluginStart()
{
	HookEvent("player_spawn", OnPlayerSpawn);
}

public Action OnPlayerSpawn(Event event, const char[] name, bool DontBroadcast)
{
	int client = GetClientOfUserId(event.GetInt("userid"));
	if (IsClientConnected(client) && IsClientInGame(client))
	{
		CreateTimer(10.0, timers, client);
	}
	return Plugin_Continue;
}

public Action timers(Handle timer, any client)
{
       if (IsClientInGame(client) && GetClientTeam(client))
       {
       PrintToChat(client, "Здесь твое сообщение");
       }
       return Plugin_Continue;
}

[Редактировано]

Но есть одно но, почему то через евенты сообщения дублируются, вот поэтому не рекомендую использовать эвенты для чата.

 

 

Ты не указал команду, так будут все команды получать сообщение, даже обычные боссы после спавна. К тому же нужно создавать переменную bool или int блокировать таймер после активации. 


В самом событие проверки бесполезны для одного таймера. если ты только не фильтруешь например нужную команду.

if (IsClientConnected(client) && IsClientInGame(client))


#1194 valedar

valedar

    Участник

  • Пользователь
  • PipPip
  • 62 сообщений

Отправлено 12 Август 2022 - 19:31

 

Ты не указал команду, так будут все команды получать сообщение, даже обычные боссы после спавна. К тому же нужно создавать переменную bool или int блокировать таймер после активации. 


В самом событие проверки бесполезны для одного таймера. если ты только не фильтруешь например нужную команду.

if (IsClientConnected(client) && IsClientInGame(client))

Да, убил таймер, нет двойного сообщения:

#include<sourcemod>

Handle g_Timer;
bool autoClose;

public void OnPluginStart()
{
	HookEvent("player_spawn", OnPlayerSpawn);
}

public Action OnPlayerSpawn(Event event, const char[] name, bool dontBroadcast)
{
	int client = GetClientOfUserId(event.GetInt("userid"));
	if (IsClientConnected(client) && IsClientInGame(client) && !IsPlayerAlive(client) && !IsFakeClient(client))
	{
		g_Timer = CreateTimer(5.0, timers, client, TIMER_FLAG_NO_MAPCHANGE);
	}
	return Plugin_Continue;
}

public Action timers(Handle timer, any client)
{
	if(GetClientTeam(client) && IsClientInGame(client))
	{
		KillTimer(g_Timer, autoClose);	
		PrintToChat(client, "Здесь твое сообщение");
	}
	return Plugin_Handled;
}

Сообщение отредактировал valedar: 12 Август 2022 - 20:04


#1195 AlexMy

AlexMy

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 032 сообщений

Отправлено 12 Август 2022 - 20:25

 

Да, убил таймер, нет двойного сообщения:

#include<sourcemod>

Handle g_Timer;
bool autoClose;

public void OnPluginStart()
{
	HookEvent("player_spawn", OnPlayerSpawn);
}

public Action OnPlayerSpawn(Event event, const char[] name, bool dontBroadcast)
{
	int client = GetClientOfUserId(event.GetInt("userid"));
	if (IsClientConnected(client) && IsClientInGame(client) && !IsPlayerAlive(client) && !IsFakeClient(client))
	{
		g_Timer = CreateTimer(5.0, timers, client, TIMER_FLAG_NO_MAPCHANGE);
	}
	return Plugin_Continue;
}

public Action timers(Handle timer, any client)
{
	if(GetClientTeam(client) && IsClientInGame(client))
	{
		KillTimer(g_Timer, autoClose);	
		PrintToChat(client, "Здесь твое сообщение");
	}
	return Plugin_Handled;
}

Ты это проверял сам? Это не будет работать, ты используешь проверку для мёртвого игрока  !IsPlayerAlive Если только когда игрок подключается к серверу и заходит за мёртвого бота к примеру. Зачем ты используешь GetClientTeam(client) не указав команду 1,2,3. К тому же ты с начало проверяешь в команде игрок а потом в игре или не в игре игрок, всё наоборот

if(GetClientTeam(client) && IsClientInGame(client))

Проверка GetClientTeam работает должным образом только так

GetClientTeam(client) == 1, GetClientTeam(client) == 2, GetClientTeam(client) == 3

1 - зритель, 2 - команда выживших, 3 - команда зараженных. На счёт 0 не помню что определяет. 



#1196 valedar

valedar

    Участник

  • Пользователь
  • PipPip
  • 62 сообщений

Отправлено 12 Август 2022 - 22:23

Ты это проверял сам? Это не будет работать, ты используешь проверку для мёртвого игрока  !IsPlayerAlive Если только когда игрок подключается к серверу и заходит за мёртвого бота к примеру. Зачем ты используешь GetClientTeam(client) не указав команду 1,2,3. К тому же ты с начало проверяешь в команде игрок а потом в игре или не в игре игрок, всё наоборот

if(GetClientTeam(client) && IsClientInGame(client))

Проверка GetClientTeam работает должным образом только так

GetClientTeam(client) == 1, GetClientTeam(client) == 2, GetClientTeam(client) == 3

1 - зритель, 2 - команда выживших, 3 - команда зараженных. На счёт 0 не помню что определяет. 

Если просто поставить IsPlayerAlive , то в команде зараженых начнется спам, при каждого возрождения, а !IsPlayerAlive,  то только у выжившего будет приветствие, у зараженых нет, я проверял это, могу скрин скинуть.

Да и у него наверника кооп, а не версус, не вижу смысла в кооп это использовать. 


Сообщение отредактировал valedar: 12 Август 2022 - 22:42


#1197 BloodyBlade

BloodyBlade

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 102 сообщений

Отправлено 12 Август 2022 - 22:41

Если просто поставить IsPlayerAlive , то в команде зараженых начнется спам, при каждого возрождения, а !IsPlayerAlive,  то только у выжившего будет приветствие, у зараженых нет, я проверял это.

Да и у него наверника кооп, а не версус, не вижу смысла в кооп это использовать. 

Если неважна команда игрока и чтобы не было спама, то можно и так:

Скрытый текст

Сообщение отредактировал BloodyBlade: 12 Август 2022 - 23:06


#1198 AlexMy

AlexMy

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 032 сообщений

Отправлено 12 Август 2022 - 23:29

Если неважна команда игрока и чтобы не было спама, то можно и так:

Скрытый текст
#pragma semicolon 1
#include <sourcemod>
#pragma newdecls required


public void OnPluginStart()
{
	HookEvent("player_first_spawn",	player_first_spawn);
}

public void player_first_spawn(Event event, const char [] name, bool dontBroadcast)
{
	int client = GetClientOfUserId(event.GetInt("userid"));
	if(client && IsClientInGame(client) && !IsFakeClient(client))
		CreateTimer(10.0, first_spawn, client, TIMER_FLAG_NO_MAPCHANGE);
}

public Action first_spawn(Handle timer, any client)
{
	if(client)
		PrintToChat(client, "Здесь твое сообщение");
	return Plugin_Stop;
}

без спама, и не будет спамить сообщение на каждой новой карте. 


  • BloodyBlade это нравится

#1199 valedar

valedar

    Участник

  • Пользователь
  • PipPip
  • 62 сообщений

Отправлено 13 Август 2022 - 0:26

#pragma semicolon 1
#include <sourcemod>
#pragma newdecls required


public void OnPluginStart()
{
	HookEvent("player_first_spawn",	player_first_spawn);
}

public void player_first_spawn(Event event, const char [] name, bool dontBroadcast)
{
	int client = GetClientOfUserId(event.GetInt("userid"));
	if(client && IsClientInGame(client) && !IsFakeClient(client))
		CreateTimer(10.0, first_spawn, client, TIMER_FLAG_NO_MAPCHANGE);
}

public Action first_spawn(Handle timer, any client)
{
	if(client)
		PrintToChat(client, "Здесь твое сообщение");
	return Plugin_Stop;
}

без спама, и не будет спамить сообщение на каждой новой карте. 

 

 

Вот это норм.


Сообщение отредактировал valedar: 13 Август 2022 - 0:29


#1200 DenMarko

DenMarko

    Участник

  • Пользователь
  • PipPip
  • 58 сообщений

Отправлено 14 Август 2022 - 13:53

Сообщение виводит только когда игрок входит на сервер последующи смены карты сообщение не будит
#pragma semicolon	1
#include <sourcemod>

ConVar CvarTimMes;
bool g_bRoundOve;

public OnPluginStart()
{
	CvarTimMes = CreateConVar("sm_time_messeg", "35", "", FCVAR_NONE);
	
	HookEvent("round_start", Event_RoundStart,	EventHookMode_PostNoCopy);
	HookEvent("round_end",	Event_RoundEnd,	EventHookMode_PostNoCopy);	
}

public Event_RoundStart(Event event, const char[] name, bool dontBroadcast)
{
	g_bRoundOve = false;
}

public Event_RoundEnd(Event event, const char[] name, bool dontBroadcast)
{
	g_bRoundOve = true;
}

public OnClientPostAdminCheck(client)
{
	if(!IsValidNow() && IsFakeClient(client))
	{
		return;
	}
	
	float CvarTimeMes = CvarTimMes.FloatValue;
	if(CvarTimeMes)
	{
		CreateTimer(CvarTimeMes, TimeMesseg, client);
	}
}

bool IsValidNow()
{
	if(g_bRoundOve)
	{
		return false;
	}
	return true;
}

public Action:TimeMesseg(Handle timer, any client)
{
	if(client && IsClientInGame(client) && GetClientTeam(client) == 2)
	{
		PrintToChat(client, "сообщение");
	}
}

Сообщение отредактировал DenMarko: 14 Август 2022 - 13:58




Темы с аналогичным тегами поиск, плагин, помогите, найти

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных