stock void AddSound()
{
FormatEx(sSound, sizeof(sSound), "sound/%s", sCvarPath);
AddFileToDownloadsTable(sSound);
...
FormatEx(sSound, sizeof(sSound), "%s", sCvarPath);
PrecacheSound(sSound, true);
}
if(sSound[0]) EmitAmbientSound(sSound, fDeathPos[target]);
привет бро, поможешь сделать файл .sp ?@7pElllHuK, у меня в Revival вот так было сделано:
А воспроизводил звук так:C-подобный:stock void AddSound() { FormatEx(sSound, sizeof(sSound), "sound/%s", sCvarPath); AddFileToDownloadsTable(sSound); ... FormatEx(sSound, sizeof(sSound), "%s", sCvarPath); PrecacheSound(sSound, true); }
if(sSound[0]) EmitAmbientSound(sSound, fDeathPos[target]);
привет, если силен, помоги с вопросом выше пожалуйста@alexnet Проверьте в этой версии присутствует данная проблема?
Оставлял чисто функционал как то, без настроек и прочего
C-подобный:#include <cstrike> #include <sdktools_functions> #pragma semicolon 1 #pragma newdecls required public Plugin myinfo = { name = "Replacing Bot", author = "babka68", description = "Игрок может заменить бота", version = "1.0", url = "https://vk.com/zakazserver68" } public Action OnPlayerRunCmd(int client, int &buttons) { if (buttons & IN_USE && !IsPlayerAlive(client)) { int team_client = GetClientTeam(client); static int i = 0; i = GetEntPropEnt(client, Prop_Send, "m_hObserverTarget"); if (i > 0 && IsFakeClient(i)) { int teami = GetClientTeam(i); if (team_client == teami) { static float pos[3]; GetClientAbsOrigin(i, pos); KickClient(i); CS_RespawnPlayer(client); TeleportEntity(client, pos, NULL_VECTOR, NULL_VECTOR); } } } return Plugin_Continue; }
на c# надо плагины писать для кс2, это уже не ко мнепривет бро, поможешь сделать файл .sp ?
в кс го использовал этот скрипт - public bool:OnClientConnect(client, String:rejectmsg[], maxlen) strcopy(rejectmsg, maxlen, "ОШИБКА");
в кс 2 при компиляции выдаёт ошибкипомоги пожалуйста, будь добр// error.sp(1) : error 437: functions in global scope must use braces
// 1 | public bool:OnClientConnect(client, String:rejectmsg[], maxlen) strcopy(rejectmsg, maxlen, "Access Denied:You are a new user on our server. Please visit rush-point.com to register and gain access");
// -----------------------------------------------------------------------^
//
// error.sp(1) : error 010: invalid function or declaration
// 1 | public bool:OnClientConnect(client, String:rejectmsg[], maxlen) strcopy(rejectmsg, maxlen, "Access Denied:You are a new user on our server. Please visit rush-point.com to register and gain access");
// ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^
//
// 2 Errors.
//
// Compilation Time: 0,09 sec
Сообщения автоматически склеены:
привет, если силен, помоги с вопросом выше пожалуйста
Привет, помогите пожалуйста скомпилировать плагин. При компиляции ошибка:
// C:\Users\admin\Desktop\scripting\deathmatch.sp(3001) : error 101: fixed dimensions must be after the array name, not on the type
error 101: fixed dimensions must be after the array name, not on the type
The following code will trigger this error:
void GetVector(float[3] pos) {}
The brackets ([]) are in the wrong position. Next to the type, they indicate an array of unknown or any size. Next to the name, they indicate a fixed size. The correct syntax is:
void GetVector(float pos[3]) {}
Я так делал, новые ошибки появлялись. Фикс grey83 помог решить все ошибки. СпасибоC-подобный:error 101: fixed dimensions must be after the array name, not on the type The following code will trigger this error: void GetVector(float[3] pos) {} The brackets ([]) are in the wrong position. Next to the type, they indicate an array of unknown or any size. Next to the name, they indicate a fixed size. The correct syntax is: void GetVector(float pos[3]) {}
#pragma semicolon 1
#pragma newdecls required
#include <cstrike>
#include <sdktools_functions>
public Plugin myinfo =
{
name = "Bot Replacer",
author = "SenatoR, babka68",
description = "Игрок может сыграть вместо бота",
version = "1.3.0_22.01.2024 (rewritten by Grey83)",
url = "https://vk.com/zakazserver68, hlmod.ru"
}
Handle
hTimer;
bool
bShow,
bNotify,
iRemove;
int
iUses[MAXPLAYERS + 1],
iAmount,
iCost,
iTarget;
public void OnPluginStart()
{
ConVar cvar;
cvar = CreateConVar("sm_bot_replacer_amount", "20", "Сколько раз за раунд игрок может сыграть вместо бота?", _, true, _, true, 2.0);
cvar.AddChangeHook(CVarChanged_Amount_Bot);
iAmount = cvar.IntValue;
cvar = CreateConVar("sm_bot_replacer_price", "1", "Сколько стоит сыграть за бота?", _, true, _, true, 16000.0);
cvar.AddChangeHook(CVarChanged_Price_Bot);
iCost = cvar.IntValue;
cvar = CreateConVar("sm_bot_replacer_showhud", "1", "Показывать сообщение, что можно играть за бота?", _, true, _, true, 1.0);
cvar.AddChangeHook(CVarChanged_Show_Message_Hud);
CVarChanged_Show_Message_Hud(cvar, NULL_STRING, NULL_STRING);
cvar = CreateConVar("sm_bot_replacer_typekick", "0", "0 - Кикнуть бота, 1 - Удалить бота", _, true, _, true, 1.0);
cvar.AddChangeHook(CVarChanged_Type_Kick);
iRemove = cvar.BoolValue;
AutoExecConfig(true, "sm_bot_replacer");
HookEvent("round_freeze_end", Event_Round, EventHookMode_PostNoCopy);
HookEvent("round_end", Event_Round, EventHookMode_PostNoCopy);
}
public void CVarChanged_Amount_Bot(ConVar cvar, const char[] oldValue, const char[] newValue)
{
iAmount = cvar.IntValue;
}
public void CVarChanged_Price_Bot(ConVar cvar, const char[] oldValue, const char[] newValue)
{
iCost = cvar.IntValue;
}
public void CVarChanged_Show_Message_Hud(ConVar cvar, const char[] oldValue, const char[] newValue)
{
if((bNotify = cvar.BoolValue) == !hTimer) OnMapStart();
}
public void CVarChanged_Type_Kick(ConVar cvar, const char[] oldValue, const char[] newValue)
{
iRemove = cvar.BoolValue;
}
public void OnMapStart()
{
if(bNotify) hTimer = CreateTimer(1.0, Timer_Notify, _, TIMER_REPEAT);
else OnMapEnd();
}
public Action Timer_Notify(Handle timer)
{
if(!bShow)
return Plugin_Continue;
static int i, t;
for(i = 1; i <= MaxClients; i++)
if(iUses[i] < iAmount // может заменять?
&& IsClientInGame(i) && !IsFakeClient(i) && (t = GetClientTeam(i)) > 1 && !IsPlayerAlive(i)
&& (iTarget = GetEntPropEnt(i, Prop_Send, "m_hObserverTarget")) > 0 && IsFakeClient(iTarget)// наблюдает за ботом?
&& (!iCost || iCost <= GetEntProp(i, Prop_Send, "m_iAccount")) // достаточно средств?
&& t == GetClientTeam(iTarget) && IsPlayerAlive(iTarget)) // подходящий бот?
{
PrintHintText(i, "=====================================\nНАЖМИТЕ E ЧТОБЫ ИГРАТЬ ЗА БОТА %N \n=====================================", iTarget);
}
return Plugin_Continue;
}
public void Event_Round(Event event, const char[] name, bool dontBroadcast)
{
bShow = name[6] == 'f';
for(int i = 1; i <= MaxClients; i++) OnClientDisconnect(i);
}
public Action OnPlayerRunCmd(int client, int &buttons)
{
static bool use[MAXPLAYERS+1];
static int ap, h, armor, helmet, money;
static float pos[3];
if(buttons & IN_USE && !use[client] && iUses[client] < iAmount && !IsPlayerAlive(client)
&& (iTarget = GetEntPropEnt(client, Prop_Send, "m_hObserverTarget")) > 0 && IsFakeClient(iTarget)
&& GetClientTeam(client) == GetClientTeam(iTarget)
&& iCost <= (money = GetEntProp(client, Prop_Send, "m_iAccount")))
{
int health = GetClientHealth(iTarget);
if(ap > 0 || (ap = FindSendPropInfo("CCSPlayer", "m_ArmorValue")) > 0) armor = GetEntData(client, ap, 1);
if(h > 0 || (h = FindSendPropInfo("CCSPlayer", "m_bHasHelmet")) > 0) helmet = GetEntData(client, h, 1);
GetClientAbsOrigin(iTarget, pos);
if(iRemove)
ServerCommand("bot_kick %N", iTarget);
else KickClient(iTarget);
CS_RespawnPlayer(client);
iUses[client]++;
SetEntProp(client, Prop_Send, "m_iAccount", money - iCost);
TeleportEntity(client, pos, NULL_VECTOR, NULL_VECTOR);
SetEntityHealth(client, health);
if(ap > 0) SetEntData(client, ap, armor, 1, true);
if(h > 0) SetEntData(client, h, helmet, 1, true);
}
use[client] = !!(buttons & IN_USE);
return Plugin_Continue;
}
public void OnClientDisconnect(int client)
{
iUses[client] = 0;
}
public void OnMapEnd()
{
if(hTimer) delete hTimer;
}
можно договорится в плане денег
А точки на радаре от них остаются или это убрано?Недавно было обновление, а так же добавился новый модуль![]()
[Bot] Bot-System Core - G.G.W.P.
Bot-System Core — инновационный плагин, который позволяет игрокам «захватывать» ботов на сервере. После смерти игрока выводится меню с вопросом: «Хотите захватить бота?». Если игрок соглашается, он занимает место выбранного бота, который исчезает, а игрок возрождается […]ggwp.site
Что же касается вида при воскрешении, то а как мы узнаем заранее, где будет в тот момент противник?) Можно но сложно, такого функционала нет и нужно больше подробностей для реализации
Нет, не остаются, могу дать в ЛС адрес, сами посмотритеА точки на радаре от них остаются или это убрано?
Я в телеграме тебе написалНет, не остаются, могу дать в ЛС адрес, сами посмотрите
на 126-й строке нужно угол поворота прописывать, скопированый у бота перед его удалением (на 117-й строке только координаты получает плагин):когда за них заходишь не стояли спиной
TeleportEntity(client, pos, углы_поворота, NULL_VECTOR);
спасибо большое но уже решили вопросна 126-й строке нужно угол поворота прописывать, скопированый у бота перед его удалением (на 117-й строке только координаты получает плагин):
TeleportEntity(client, pos, углы_поворота, NULL_VECTOR);
Ты хочешь сделать всегда одного выжившего? Если я правильно помню этот квар то плагин и не нужен . Так как он отвечает за кол-во зараженных.Всем доброго времени суток, кто может написать не большой плагин?
цель плагина чтобы в начале каждого раунда был применён параметр zr_infect_mzombie_ratio -1
ну и квар на включение и выключение плагина