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


Фотография

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

плагин

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

#1421 Game Over - L4D2 - CS:GO

Game Over - L4D2 - CS:GO

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

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

Отправлено 30 Август 2018 - 17:41

Здравствуйте, господа! Подскажите пожалуйста, у меня есть плагин, на выдачу оружия командой в чат (к примеру !m60), как сделать, чтобы игроки могли брать оружие только определенное количество раз за карту?

Пример https://forums.allie...ad.php?p=996491


  • Player100 и StevMype это нравится

#1422 Slaven555

Slaven555

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

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

Отправлено 30 Август 2018 - 17:44

Здравствуйте, господа! Подскажите пожалуйста, у меня есть плагин, на выдачу оружия командой в чат (к примеру !m60), как сделать, чтобы игроки могли брать оружие только определенное количество раз за карту?

там в плагине что стоит? если -1 то это безлимит на выдачу, а так ставится любое число в пределах которого можно будет взять оружие за карту.


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

#1423 JettXavier

JettXavier

    Новичок

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

Отправлено 30 Август 2018 - 18:55

Ещё раз привет, можно такой плагин, что бы 20 секунд выжившие не могли выходить из убеги, то есть - откидывало/тпхало назад
 


Сообщение отредактировал JettXavier: 30 Август 2018 - 19:16


#1424 BodaCore

BodaCore

    Новичок

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

Отправлено 30 Август 2018 - 19:24

Здравствуйте, я установил плагин l4d_boss_percent, прописываю !tank/!witch/!boss и вместо процентов - [None]. Как это пофиксить?



#1425 Player100

Player100

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

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

Отправлено 30 Август 2018 - 21:14

Спасибо, посмотрю!


там в плагине что стоит? если -1 то это безлимит на выдачу, а так ставится любое число в пределах которого можно будет взять оружие за карту.

В плагине нет -1, но тем не менее оружие можно брать без лимита.


 

 

там в плагине что стоит? если -1 то это безлимит на выдачу, а так ставится любое число в пределах которого можно будет взять оружие за карту.

А строку нужную сможете вписать в ллагин, пожалуйста. Там нет строки на лимит.

Прикрепленные файлы

  • Прикрепленный файл  ammo5.sp   1,78К   11 Количество загрузок:

Сообщение отредактировал Player100: 06 Октябрь 2018 - 4:08


#1426 BloodyBlade

BloodyBlade

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

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

Отправлено 30 Август 2018 - 22:16

Ещё раз привет, можно такой плагин, что бы 20 секунд выжившие не могли выходить из убеги, то есть - откидывало/тпхало назад
 

https://cloud.mail.r.../249N/VG6n36Lwc

 

P.S.: скомпилированный плагин, файл перевода, а также, исходник и нужные для компиляции инклюды присутствуют в папке. Также, для использования данного плагина нужен установленный на сервер left4downtown2-v0.5.4.2


Сообщение отредактировал BloodyBlade: 30 Август 2018 - 22:19


#1427 Slaven555

Slaven555

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

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

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

Спасибо, посмотрю!

В плагине нет -1, но тем не менее оружие можно брать без лимита.



А строку нужную сможете вписать в ллагин, пожалуйста. Там нет строки на лимит. ammo5.sp

Проще тогда юзать плагин что по советовали.
  • Player100 это нравится

#1428 dr_lex

dr_lex

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

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

Отправлено 30 Август 2018 - 23:53

А строку нужную сможете вписать в ллагин, пожалуйста. Там нет строки на лимит.attachicon.gifammo5.sp

Где вы берете весь этот хлам!!!
Как пример я бы сделал бы так:

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

хз только как работает, так как не поверял! Только по логике сделал


Сообщение отредактировал dr_lex: 30 Август 2018 - 23:55

  • Slaven555, Player100 и Game Over - L4D2 - CS:GO это нравится

#1429 BodaCore

BodaCore

    Новичок

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

Отправлено 31 Август 2018 - 0:38

Можно плагин l4d2_skill_detect на русском?



#1430 Game Over - L4D2 - CS:GO

Game Over - L4D2 - CS:GO

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

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

Отправлено 31 Август 2018 - 2:15

Здравствуйте, господа! Подскажите пожалуйста, у меня есть плагин, на выдачу оружия командой в чат (к примеру !m60), как сделать, чтобы игроки могли брать оружие только определенное количество раз за карту?

Плагин который я скидывал как пример, там эти функции уже реализованы,  просто замените -1 на то кол-во, что вам нужно
Если нужна конкретно команда !g, то делается это просто
Открывается исходник находится строчка RegConsoleCmd 
В данном случае у она такая RegConsoleCmd("tankbuster", TankBusterMenu);
"tankbuster" меняем на любое своё // в самом исходники перед командой, ! - писать не нужно. 


Сообщение отредактировал Game Over - L4D2 - CS:GO: 31 Август 2018 - 2:19

  • Slaven555 и Player100 это нравится

#1431 BHaType

BHaType

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

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

Отправлено 31 Август 2018 - 6:27


void HxFakeCHEAT(int &client, const char[] sCmd, const char[] sArg)
{
	int iFlags = GetCommandFlags(sCmd);
	SetCommandFlags(sCmd, iFlags & ~FCVAR_CHEAT);
	FakeClientCommand(client, "%s %s", sCmd, sArg);
	SetCommandFlags(sCmd, iFlags);
}

Можете пожалуйста объяснить зачем вот это нужно?

Во многих исходниках это видел, но зачем оно так и не понял.



#1432 AlexMy

AlexMy

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

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

Отправлено 31 Август 2018 - 7:13

Где вы берете весь этот хлам!!!
Как пример я бы сделал бы так:

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

хз только как работает, так как не поверял! Только по логике сделал

можно  ещё короче.


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

#1433 dr_lex

dr_lex

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

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

Отправлено 31 Август 2018 - 9:30

можно ещё короче.

Ну давай показывай
  • Player100 это нравится

#1434 BHaType

BHaType

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

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

Отправлено 31 Август 2018 - 13:34

Видимо для красоты пишут.



#1435 AlexMy

AlexMy

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

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

Отправлено 31 Август 2018 - 14:28

Ну давай показывай

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

bool MAX_PLAYERS[MAXPLAYERS + 1] = false;

#define Players 2     //Если добавлять игроков дописывать +1


public void OnPluginStart()
{
	RegConsoleCmd("sm_knife", sm_knife);
	
	for(int i = 1; i <= MaxClients; i++) MAX_PLAYERS[i] = false;
}

public Action sm_knife(int client, int args)
{
	int count = 0;
	for(int i = 0;i<= MAXPLAYERS;i++)
	{
		if(MAX_PLAYERS[i])
			count++;
		if(count == Players)
			return Plugin_Continue;
	}
	if(GetClientTeam(client) == 2 && IsPlayerAlive(client))
	{
		int userflags = GetUserFlagBits(client);
		SetUserFlagBits(client, ADMFLAG_ROOT);
		int iflags=GetCommandFlags("give");
		SetCommandFlags("give", iflags & ~FCVAR_CHEAT);
		FakeClientCommand(client,"give knife");
		SetCommandFlags("give", iflags);
		SetUserFlagBits(client, userflags);
	}
	return Plugin_Handled;
}

Сообщение отредактировал AlexMy: 31 Август 2018 - 14:29

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

#1436 Ren89

Ren89

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

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

Отправлено 31 Август 2018 - 16:02

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

 

Очень странно!



#1437 dr_lex

dr_lex

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

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

Отправлено 31 Август 2018 - 18:46

Видимо для красоты пишут.

HxFakeCHEAT(client, "give", "knife");  не о чем не говорит?

Тогда более понятнее HxFakeCHEAT создает предмет и т.д
Например Танк на карте просто добавить HxFakeCHEAT(client, "z_spawn_old", "tank auto"); так же и с ведьмами т.д
Если нужно оружие или полный набор игроку то можно сделать так

HxFakeCHEAT(client, "give", "weapon_sniper_awp"); 
HxFakeCHEAT(client, "give", "knife"); 
HxFakeCHEAT(client, "give", "weapon_first_aid_kit"); 
HxFakeCHEAT(client, "give", "weapon_adrenaline"); 

Короче как фантазия пойдет у вас.


Сообщение отредактировал dr_lex: 31 Август 2018 - 18:58

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

#1438 BloodyBlade

BloodyBlade

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

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

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


void HxFakeCHEAT(int &client, const char[] sCmd, const char[] sArg)
{
	int iFlags = GetCommandFlags(sCmd);
	SetCommandFlags(sCmd, iFlags & ~FCVAR_CHEAT);
	FakeClientCommand(client, "%s %s", sCmd, sArg);
	SetCommandFlags(sCmd, iFlags);
}

Можете пожалуйста объяснить зачем вот это нужно?

Во многих исходниках это видел, но зачем оно так и не понял.

 

Насколько я понимаю, это нужно, чтобы не использовать sv_cheats "1"


HxFakeCHEAT(client, "give", "knife");  не о чем не говорит?

Тогда более понятнее HxFakeCHEAT создает предмет и т.д
Например Танк на карте просто добавить HxFakeCHEAT(client, "z_spawn_old", "tank auto"); так же и с ведьмами т.д
Если нужно оружие или полный набор игроку то можно сделать так

HxFakeCHEAT(client, "give", "weapon_sniper_awp"); 
HxFakeCHEAT(client, "give", "knife"); 
HxFakeCHEAT(client, "give", "weapon_first_aid_kit"); 
HxFakeCHEAT(client, "give", "weapon_adrenaline"); 

Короче как фантазия пойдет у вас.

Если уж выдавать набор, то, проще уже готовым плагином воспользоваться(также, данный плагин позволяет настроить выдачу спец. набора по SteamID игрока):

// Survivor Starter Pack
#include <sourcemod>
#include <sdktools>
#pragma semicolon 1
#pragma newdecls required
#define SSP_PREFIX "[SSP]"
#define SSP_VERSION "1.3"

public Plugin myinfo =
{
	name = "Survivor Starter Pack",
	author = "Psyk0tik (Crasher_3637)",
	description = "Provides starter packs for survivors.",
	version = SSP_VERSION,
	url = "https://forums.alliedmods.net/showthread.php?t=309990"
};

char g_sDefaultPack[325];
char g_sPlayerPack[MAXPLAYERS + 1][325];
char g_sSavePath[255];
int g_iFileTimeOld;
int g_iFileTimeNew;
int g_iPluginEnabled;

public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max)
{
	EngineVersion evEngine = GetEngineVersion();
	if (evEngine != Engine_Left4Dead && evEngine != Engine_Left4Dead2)
	{
		strcopy(error, err_max, "Survivor Starter Pack only supports Left 4 Dead 1 & 2.");
		return APLRes_SilentFailure;
	}
	return APLRes_Success;
}

public void OnPluginStart()
{
	Format(g_sSavePath, sizeof(g_sSavePath), "cfg/sourcemod/survivor_starter_pack.cfg");
	vLoadConfigs();
	g_iFileTimeOld = GetFileTime(g_sSavePath, FileTime_LastChange);
	LoadTranslations("common.phrases");
	RegAdminCmd("sm_starter", cmdStarterPack, ADMFLAG_ROOT, "Set a survivor's starter pack.");
	CreateConVar("ssp_pluginversion", SSP_VERSION, "Survivor Starter Pack Version", FCVAR_NOTIFY|FCVAR_DONTRECORD);
	HookEvent("player_spawn", eEventPlayerSpawn);
}

public void OnConfigsExecuted()
{
	vLoadConfigs();
	char sMapName[128];
	GetCurrentMap(sMapName, sizeof(sMapName));
	if (IsMapValid(sMapName))
	{
		CreateTimer(1.0, tTimerReloadConfig, _, TIMER_FLAG_NO_MAPCHANGE|TIMER_REPEAT);
	}
}

void vLoadConfigs()
{
	KeyValues kvStarterPack = new KeyValues("Survivor Starter Pack");
	kvStarterPack.ImportFromFile(g_sSavePath);
	if (kvStarterPack.JumpToKey("General", true))
	{
		g_iPluginEnabled = kvStarterPack.GetNum("Plugin Enabled", 1);
		g_iPluginEnabled = iSetCellLimit(g_iPluginEnabled, 0, 1);
		kvStarterPack.GetString("Default Pack", g_sDefaultPack, sizeof(g_sDefaultPack), "smg_mp5,tonfa,first_aid_kit");
		kvStarterPack.SetNum("Plugin Enabled", g_iPluginEnabled);
		kvStarterPack.SetString("Default Pack", g_sDefaultPack);
		kvStarterPack.Rewind();
	}
	kvStarterPack.ExportToFile(g_sSavePath);
	delete kvStarterPack;
}

public void eEventPlayerSpawn(Event event, const char[] name, bool dontBroadcast)
{
	int iSurvivorId = event.GetInt("userid");
	int iSurvivor = GetClientOfUserId(iSurvivorId);
	if (bIsSurvivor(iSurvivor))
	{
		CreateTimer(1.0, tTimerStarterPack, iSurvivorId, TIMER_FLAG_NO_MAPCHANGE);
	}
}

public Action cmdStarterPack(int client, int args)
{
	if (g_iPluginEnabled == 0)
	{
		ReplyToCommand(client, "\x04%s\x05 Survivor Starter Pack\x01 is disabled.", SSP_PREFIX);
		return Plugin_Handled;
	}
	char target[32];
	GetCmdArg(1, target, sizeof(target));
	char sLoadout[325];
	GetCmdArg(2, sLoadout, sizeof(sLoadout));
	char target_name[32];
	int target_list[MAXPLAYERS];
	int target_count;
	bool tn_is_ml;
	if ((target_count = ProcessTargetString(target, client, target_list, MAXPLAYERS, COMMAND_FILTER_ALIVE, target_name, sizeof(target_name), tn_is_ml)) <= 0)
	{
		ReplyToTargetError(client, target_count);
		return Plugin_Handled;
	}
	for (int iPlayer = 0; iPlayer < target_count; iPlayer++)
	{
		if (bIsSurvivor(target_list[iPlayer]))
		{
			KeyValues kvStarterPack = new KeyValues("Survivor Starter Pack");
			kvStarterPack.ImportFromFile(g_sSavePath);
			char sSteamID[32];
			GetClientAuthId(target_list[iPlayer], AuthId_Steam2, sSteamID, sizeof(sSteamID));
			if (kvStarterPack.JumpToKey(sSteamID, true))
			{
				kvStarterPack.SetString("Starter Pack", sLoadout);
				kvStarterPack.Rewind();
			}
			kvStarterPack.ExportToFile(g_sSavePath);
			delete kvStarterPack;
			if (GetCmdReplySource() == SM_REPLY_TO_CHAT)
			{
				PrintToChat(client, "\x04%s\x01 Saved\x05 %s\x01 to the config file with this loadout: \x05%s", SSP_PREFIX, sSteamID, sLoadout);
			}
		}
	}
	return Plugin_Handled;
}

bool bIsSurvivor(int client)
{
	return client > 0 && client <= MaxClients && IsClientInGame(client) && !IsClientInKickQueue(client) && GetClientTeam(client) == 2 && IsPlayerAlive(client);
}

int iSetCellLimit(int value, int min, int max)
{
	if (value < min)
	{
		value = min;
	}
	else if (value > max)
	{
		value = max;
	}
	return value;
}

void vCheatCommand(int client, char[] command, char[] arguments = "", any ...)
{
	int iCmdFlags = GetCommandFlags(command);
	SetCommandFlags(command, iCmdFlags & ~FCVAR_CHEAT);
	FakeClientCommand(client, "%s %s", command, arguments);
	SetCommandFlags(command, iCmdFlags|FCVAR_CHEAT);
}

void vRemoveWeapon(int client, int slot)
{
	int iSlot = GetPlayerWeaponSlot(client, slot);
	if (iSlot > 0)
	{
		RemovePlayerItem(client, iSlot);
	}
}

public Action tTimerStarterPack(Handle timer, any userid)
{
	int iSurvivor = GetClientOfUserId(userid);
	if (g_iPluginEnabled == 0 || !bIsSurvivor(iSurvivor))
	{
		return Plugin_Stop;
	}
	vRemoveWeapon(iSurvivor, 0);
	vRemoveWeapon(iSurvivor, 1);
	vRemoveWeapon(iSurvivor, 2);
	vRemoveWeapon(iSurvivor, 3);
	vRemoveWeapon(iSurvivor, 4);
	KeyValues kvStarterPack = new KeyValues("Survivor Starter Pack");
	kvStarterPack.ImportFromFile(g_sSavePath);
	char sSteamID[32];
	GetClientAuthId(iSurvivor, AuthId_Steam2, sSteamID, sizeof(sSteamID));
	if (kvStarterPack.JumpToKey(sSteamID))
	{
		kvStarterPack.GetString("Starter Pack", g_sPlayerPack[iSurvivor], sizeof(g_sPlayerPack[]), g_sDefaultPack);
		kvStarterPack.Rewind();
	}
	delete kvStarterPack;
	char sItem[5][64];
	char sStarterPack[325];
	sStarterPack = (g_sPlayerPack[iSurvivor][0] != '\0') ? g_sPlayerPack[iSurvivor] : g_sDefaultPack;
	ExplodeString(sStarterPack, ",", sItem, sizeof(sItem), sizeof(sItem[]));
	for (int iItem = 0; iItem < sizeof(sItem); iItem++)
	{
		if (sItem[iItem][0] != '\0')
		{
			vCheatCommand(iSurvivor, "give", sItem[iItem]);
		}
	}
	return Plugin_Continue;
}

public Action tTimerReloadConfig(Handle timer)
{
	if (g_iPluginEnabled == 0)
	{
		return Plugin_Continue;
	}
	g_iFileTimeNew = GetFileTime(g_sSavePath, FileTime_LastChange);
	if (g_iFileTimeOld != g_iFileTimeNew)
	{
		PrintToServer("%s Reloading config file (%s)...", SSP_PREFIX, g_sSavePath);
		KeyValues kvStarterPack = new KeyValues("Survivor Starter Pack");
		kvStarterPack.ImportFromFile(g_sSavePath);
		if (kvStarterPack.JumpToKey("General"))
		{
			g_iPluginEnabled = kvStarterPack.GetNum("Plugin Enabled", 1);
			g_iPluginEnabled = iSetCellLimit(g_iPluginEnabled, 0, 1);
			kvStarterPack.GetString("Default Pack", g_sDefaultPack, sizeof(g_sDefaultPack), "smg_mp5,tonfa,first_aid_kit");
			kvStarterPack.Rewind();
		}
		for (int iPlayer = 1; iPlayer <= MaxClients; iPlayer++)
		{
			if (bIsSurvivor(iPlayer))
			{
				char sSteamID[32];
				GetClientAuthId(iPlayer, AuthId_Steam2, sSteamID, sizeof(sSteamID));
				if (kvStarterPack.JumpToKey(sSteamID))
				{
					kvStarterPack.GetString("Starter Pack", g_sPlayerPack[iPlayer], sizeof(g_sPlayerPack[]));
					kvStarterPack.Rewind();
				}
			}
		}
		delete kvStarterPack;
		g_iFileTimeOld = g_iFileTimeNew;
	}
	return Plugin_Continue;
}

Сообщение отредактировал BloodyBlade: 31 Август 2018 - 19:05

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

#1439 AlexMy

AlexMy

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

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

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


void HxFakeCHEAT(int &client, const char[] sCmd, const char[] sArg)
{
	int iFlags = GetCommandFlags(sCmd);
	SetCommandFlags(sCmd, iFlags & ~FCVAR_CHEAT);
	FakeClientCommand(client, "%s %s", sCmd, sArg);
	SetCommandFlags(sCmd, iFlags);
}

Можете пожалуйста объяснить зачем вот это нужно?

Во многих исходниках это видел, но зачем оно так и не понял.

 

Принцип такой у этого кода:

int iFlags = GetCommandFlags(sCmd);
SetCommandFlags(sCmd, iFlags & ~FCVAR_CHEAT);

Создаем и открываем чит флаг.

FakeClientCommand(client, "%s %s", sCmd, sArg);

Тут не посредственно с помощью FakeClientCommand идет ввод команд. Выше показано идет ввод каких либо команд с помощью аргументов. Первый аргумент sCmd. Второй аргумент sArg. Можно всё делать на много проще, Лекс выше показал :)

SetCommandFlags(sCmd, iFlags);

После ввода команды, нужно закрывать чит флаг.

P.S. вообщем как то так было, уже не помню.



#1440 JettXavier

JettXavier

    Новичок

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

Отправлено 31 Август 2018 - 21:50

Можно плагин l4d2_skill_detect на русском?

Тоже ищу





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

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

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