[CS: Source] Требуется плагин!!

Статус
В этой теме нельзя размещать новые ответы.

Brody

Участник
Сообщения
28
Реакции
1
Доброго времени суток.
Нужен плагин, аналог Weapon CleanUp специально для Bhop сервера под v34, SourceMod.

Суть: Плагин CleanUp сносит все упавшее оружие, вместе с призами в конце карты, а мне нужно, чтоб плагин не трогал призовое оружие.
Примерную цену говорите заранее.

На скрине результат работы плагина Weapon CleanUp. Над каменным блоком должен висеть призовой Scout, который дает освещение вокруг скина игрока.
http://pixs.ru/showimage/2345652JPG_4487956_17671386.jpg

Либо напишите плагин, который сломает кнопки спавнеров скаутов на картах! У меня стоит плагин, который скауты выдает, и есть ограничение у этого плагина на выдачу скаутов. Спавнеры на картах не нужны! Но ломая кнопку, нужно учитывать, что на некоторых картах двери открываются кнопками! На скрине видна кнопка спавнера, и справа кнопка, открывающая дверь.
Скрин спавнера:
http://pixs.ru/showimage/234467457J_5314239_17672345.jpg

P.s Иногда встречаются на некоторых картах спавнеры без кнопки! Становишься в неоновый лучик, и тебе скаут выдается. Если стать и не отходить, он накидает тебе под ноги гору скаутов.
2345652JPG_4487956_17671386.jpg
 
Последнее редактирование:

Andy Freeman

Fatal error
Сообщения
400
Реакции
91
Доброго времени суток.
Нужен плагин, аналог Weapon CleanUp специально для Bhop сервера под v34, SourceMod.

Суть: Плагин CleanUp сносит все упавшее оружие, вместе с призами в конце карты, а мне нужно, чтоб плагин не трогал призовое оружие.
Примерную цену говорите заранее.

На скрине результат работы плагина Weapon CleanUp. Над каменным блоком должен висеть призовой Scout, который дает освещение вокруг скина игрока.
http://pixs.ru/showimage/2345652JPG_4487956_17671386.jpg

Либо напишите плагин, который сломает кнопки спавнеров скаутов на картах! У меня стоит плагин, который скауты выдает, и есть ограничение у этого плагина на выдачу скаутов. Спавнеры на картах не нужны! Но ломая кнопку, нужно учитывать, что на некоторых картах двери открываются кнопками! На скрине видна кнопка спавнера, и справа кнопка, открывающая дверь.
Скрин спавнера:
http://pixs.ru/showimage/234467457J_5314239_17672345.jpg

P.s Иногда встречаются на некоторых картах спавнеры без кнопки! Становишься в неоновый лучик, и тебе скаут выдается. Если стать и не отходить, он накидает тебе под ноги гору скаутов.
2345652JPG_4487956_17671386.jpg
Могу продать данный плагин за 50р с сп - у меня он работает так что на карте все оружия есть (не пропадают) если ты кидаешь оружия напал то он пропадает по wS_Map_Plugins можно настраивать данный плагин где будет работать где нет

Данный плагин всего лишь написан на пару строков - скайп unfire-345
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
[CS:GO/CS:S] Удаление всего выброшенного оружия

на карте все оружия есть (не пропадают) если ты кидаешь оружия напал то он пропадает
Данный плагин всего лишь написан на пару строков
PHP:
public Action:CS_OnCSWeaponDrop(client, weaponIndex)
{
	if(IsValidEdict(weaponIndex)) RemoveEdict(weaponIndex);
	return Plugin_Continue;
}
Оффтоп
 

Brody

Участник
Сообщения
28
Реакции
1
Re: [CS:GO/CS:S] Удаление всего выброшенного оружия

PHP:
public Action:CS_OnCSWeaponDrop(client, weaponIndex)
{
    if(IsValidEdict(weaponIndex)) RemoveEdict(weaponIndex);
    return Plugin_Continue;
}
Оффтоп

Мне нужно чтоб удалялось не только то оружие, которое игрок бросает, а чтоб удаляло то, что выпадает из спавнеров. Но чтоб не убиралось то оружие, которое по умолчанию висит или лежит на карте. Тобишь то, что добавил сам мапер.
 

Andy Freeman

Fatal error
Сообщения
400
Реакции
91
Re: [CS:GO/CS:S] Удаление всего выброшенного оружия

Мне нужно чтоб удалялось не только то оружие, которое игрок бросает, а чтоб удаляло то, что выпадает из спавнеров. Но чтоб не убиралось то оружие, которое по умолчанию висит или лежит на карте. Тобишь то, что добавил сам мапер.
Используй Weapon CleanUp он все удаляет из мапы
 

DarklSide

Участник
Сообщения
931
Реакции
468
Brody,
PHP:
public OnPluginStart()
{
    HookEvent("round_start", Event_OnRoundStart, EventHookMode_PostNoCopy);
}
public Event_OnRoundStart(Handle:event, const String:name[], bool:silent)
{
    disptemp();
}
disptemp()
{
    new maxEntities = GetMaxEntities();
    decl String:s_pt[18];
    for (new i = 0; i < maxEntities; ++i)
    {
        if (IsValidEdict(i) && IsValidEntity(i) && GetEdictClassname(i, s_pt, sizeof(s_pt)))
        {
            if (StrEqual(s_pt, "point_template") || StrEqual(s_pt, "env_entity_maker"))
            {
                RemoveEdict(i);
            }
        }
    }
}
Map config/s ->

PHP:
new bool:b_ptempenb = true;
public OnPluginStart()
{
    new Handle:cvar;
    HookConVarChange((cvar = CreateConVar("sm_ptemp_enable", "1", "Включить плагин", FCVAR_PLUGIN, true, 0.0, true, 1.0)), Cvar_b_ptempenb);
    b_ptempenb = GetConVarBool(cvar);
    CloseHandle(cvar);
    HookEvent("round_start", Event_OnRoundStart, EventHookMode_PostNoCopy);
    AutoExecConfig(true, "sm_ptemp");
}
public Cvar_b_ptempenb(Handle:cvar, const String:oldvalue[], const String:newvalue[])
{
    b_ptempenb = GetConVarBool(cvar);
}
public Event_OnRoundStart(Handle:event, const String:name[], bool:silent)
{
    if (b_ptempenb)
    {
        disptemp();
    }
}
disptemp()
{
    new maxEntities = GetMaxEntities();
    decl String:s_pt[18];
    for (new i = 0; i < maxEntities; ++i)
    {
        if (IsValidEdict(i) && IsValidEntity(i) && GetEdictClassname(i, s_pt, sizeof(s_pt)))
        {
            if (StrEqual(s_pt, "point_template") || StrEqual(s_pt, "env_entity_maker"))
            {
                RemoveEdict(i);
            }
        }
    }
}
 
Последнее редактирование:

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
DarklSide, FindEntityByClassname для одного конкретного поиска лучше. Оффтоп
 

DarklSide

Участник
Сообщения
931
Реакции
468
Оффтоп

PHP:
maxEntities = 3;
for (new i = 0; i < maxEntities; ++i)
{
 //
}

new i = 0;
if(i < 3) // i = 0; i = i+1;
{
 //№1 Entities
}
if(i < 3) // i = 1;
{
 //№2 Entities
}
if(i < 3) // i = 2;
{
 //№3 Entities
}
if(i < 3) // i = 3;
{
 //no
}

///////////////

maxEntities = 3;
for (new i = 0; i <= maxEntities; ++i)
{
 //
}

new i = 0;
if(i <= 3) // i = 0; i = i+1;
{
 //№1 Entities
}
if(i <= 3) // i = 1;
{
 //№2 Entities
}
if(i <= 3) // i = 2;
{
 //№3 Entities
}
if(i <= 3) // i = 3;
{
 //№4 Entities
}
 
if(i <= 3) // i = 4;
{
 //no
}
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #10
DarklSide, начинай с new i = MaxClients
 

DarklSide

Участник
Сообщения
931
Реакции
468
R1KO, верно worldspawn не нужен,

тогда уж:

new i = MaxClients+1 и только тогда приравниваем ->

i <= maxEntities

т.к. упустим какую-нибудь entity, и проверим последнего клиента.
 
Последнее редактирование:

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
DarklSide, расписано неубедительно.
только тогда приравниваем
С чего вдруг "только тогда"? Ты изменил только начало цикла, почему же вдруг приравнивание понадобилось?
И ещё: проверять надо до GetEntityCount(), а не всего максимума энтити. Зачем, если на карте их заведомо нет?
Говорю, написано очень не оптимально, будто копипаст вижу. Я давно уже начинаю с MaxClients+1, ибо энтити ниже быть просто не может - это же просто индексы наших игроков (это всё энтити 'player') и они не меняются. Триггеров там быть просто никогда не может, а 0 - это да, worldspawn. Так зачем всё это зазря проверять ниже и выше?
PHP:
disptemp()
{
   decl String:s_pt[18];
    for (new i = GetEntityCount(); i > MaxClients; i--)
    {
        if (IsValidEdict(i)) if (GetEdictClassname(i, s_pt, 18))
        {
            if (strcmp(s_pt, "point_template") == 0 || strcmp(s_pt, "env_entity_maker") == 0)
            {
                RemoveEdict(i);
            }
        }
    }
}
Поскольку мы удаляем собственно edict, то зачем проверяем IsValidEntity(edict)? Ошибки уже не будет - его удалит.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
i <= maxEntities
т.к. упустим какую-нибудь entity
DarklSide, либо не приравниваем вовсе, либо всегда приравниваем. Ты уж определись. Проверка не с 0 максимальное количество энтити не меняет.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
DarklSide, я не уверен, что 0 входит в это количество энтити. По мне - это нечто нейтральное, неизменимое (если количество энтити игроков можно регулировать количеством слотом, то здесь мы ничего и никак не поделаем).
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #17
И ещё: проверять надо до GetEntityCount(), а не всего максимума энтити. Зачем, если на карте их заведомо нет?
Вынужден не согласиться.
Тут та же ситуация что и с игроками. Игрок вошел, получил индекс, и так далее.. один из первых вышел - индекс освободился пока не зайдет второй.
На объектах так же, было 200 объектов первых 20 умерло, GetEntityCount() вернет 180 в итоге последних 20 не попадают в цикл. Потому GetMaxEntities() в даном случае верно.

PHP:
maxEntities = 3;
for (new i = 0; i < maxEntities; ++i)
{
 //
}

new i = 0;
if(i < 3) // i = 0; i = i+1;
{
 //№1 Entities
}
if(i < 3) // i = 1;
{
 //№2 Entities
}
if(i < 3) // i = 2;
{
 //№3 Entities
}
if(i < 3) // i = 3;
{
 //no
}

///////////////

maxEntities = 3;
for (new i = 0; i <= maxEntities; ++i)
{
 //
}

new i = 0;
if(i <= 3) // i = 0; i = i+1;
{
 //№1 Entities
}
if(i <= 3) // i = 1;
{
 //№2 Entities
}
if(i <= 3) // i = 2;
{
 //№3 Entities
}
if(i <= 3) // i = 3;
{
 //№4 Entities
}
 
if(i <= 3) // i = 4;
{
 //no
}

не прав в этом моменте:
PHP:
if(i < 3) // i = 0; i = i+1; 
{ 
 //№1 Entities 
}
даже если стоит ++i то это будет происходить после выполнения цикла, а не до. Преинкремент только быстрее чем пост.

цикл for после компиляции


PHP:
new i = 0;
while(i < 4)
{
// тело
i++;
}
И преинкремент:
PHP:
new i = 0;
while(i < 4)
{
// тело
++i;
}
как видишь для последовательности действий цикла разницы не будет.
 

DarklSide

Участник
Сообщения
931
Реакции
468
первых 20 умерло
Вышли...
Неправильно ты, дядя DarklSide плагин готовишь! Ты ДО максимума энтити сравниваешь, а надо ещё равно поставить - так вернее будет.
Следующий пост за ним, опровергает данное утверждение.

Добавлено через 1 минуту
не прав. даже если стоит ++i то это будет происходить после выполнения цикла, а не до.
PHP:
if(i < 3) // i = 0; i = i+1;
i = 0
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу