[CS:S/CS:GO] Exclusive Deathrun Manager для CSS и CS:GO

pihmih

Участник
Сообщения
512
Реакции
23
В deathrun_manager.sp найти с 212 строчки:
PHP:
	HookEventEx("player_death", DR_Action_Death, EventHookMode_Pre);
	HookEventEx("round_end", DR_Action_RoundEnd, EventHookMode);
	HookEventEx("round_start", DR_Action_RoundStart, EventHookMode);
	HookEvent("player_spawn", DR_Action_Spawn, EventHookMode);
	HookEvent("player_disconnect", DR_Action_Disconnect, EventHookMode_Pre);
	HookEvent("player_team", DR_BlockTeamMessage, EventHookMode_Pre);
	HookEvent("player_jump", DR_PlayerJump);
и лучше заменить на:
PHP:
	HookEvent("player_death", DR_Action_Death, EventHookMode_Pre);
	HookEvent("round_end", DR_Action_RoundEnd);
	HookEvent("round_start", DR_Action_RoundStart);
	HookEvent("player_spawn", DR_Action_Spawn);
	HookEvent("player_disconnect", DR_Action_Disconnect, EventHookMode_Pre);
	HookEvent("player_team", DR_BlockTeamMessage, EventHookMode_Pre);
	HookEvent("player_jump", DR_PlayerJump);
Оффтоп
Предупреждение при компиляции можно игнорировать или будет критичным?
warning217.jpg
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
можно игнорировать или будет критичным?
Можешь забыть. Это тебе напоминание, что ты не сделал табуляцию кода (определённое количество пробелов для "лесенки").
 
  • Мне нравится
Реакции: TWRP

pihmih

Участник
Сообщения
512
Реакции
23
Появилась новая регулярная ошибка в логах сорсмода.
L 12/17/2014 - 06:58:29: SourceMod error session started
L 12/17/2014 - 06:58:29: Info (map "deathrun_adrenalin_go") (file "errors_20141217.log")
L 12/17/2014 - 06:58:29: [SM] Native "GetArrayCell" reported: Invalid index 0 (count: 0)
L 12/17/2014 - 06:58:29: [SM] Displaying call stack trace for plugin "deathrun_manager.smx":
L 12/17/2014 - 06:58:29: [SM] [0] Line 49, deathrun_manager/action_timers.sp::ChooseTerrorist()
L 12/17/2014 - 06:59:31: [SM] Native "GetArrayCell" reported: Invalid index 0 (count: 0)
L 12/17/2014 - 06:59:31: [SM] Displaying call stack trace for plugin "deathrun_manager.smx":
L 12/17/2014 - 06:59:31: [SM] [0] Line 49, deathrun_manager/action_timers.sp::ChooseTerrorist()
L 12/17/2014 - 07:00:33: [SM] Native "GetArrayCell" reported: Invalid index 0 (count: 0)
L 12/17/2014 - 07:00:33: [SM] Displaying call stack trace for plugin "deathrun_manager.smx":
L 12/17/2014 - 07:00:33: [SM] [0] Line 49, deathrun_manager/action_timers.sp::ChooseTerrorist()
L 12/17/2014 - 07:01:45: [SM] Native "GetArrayCell" reported: Invalid index 0 (count: 0)
L 12/17/2014 - 07:01:45: [SM] Displaying call stack trace for plugin "deathrun_manager.smx":
L 12/17/2014 - 07:01:45: [SM] [0] Line 49, deathrun_manager/action_timers.sp::ChooseTerrorist()
L 12/17/2014 - 07:02:53: [SM] Native "GetArrayCell" reported: Invalid index 0 (count: 0)
L 12/17/2014 - 07:02:53: [SM] Displaying call stack trace for plugin "deathrun_manager.smx":
L 12/17/2014 - 07:02:53: [SM] [0] Line 49, deathrun_manager/action_timers.sp::ChooseTerrorist()
L 12/17/2014 - 07:08:29: Error log file session closed.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
FreeDOMz, ну, а мне что, весь плагин теперь переписывать? :)
Я так понял, это бесполезно - одну "дыру" залатаешь, то всплывает другое слабое место плагина.
Если бы в том же месте - в том модуле, что я правил, то понятно, а тут - на совсем другой теперь указывает.
 

Daniil Krasilnikov

Участник
Сообщения
62
Реакции
4
Мод отлично работает, стоит на сервере около 4 месяцев (CS:GO)
Наглядный пример у меня в подписи.
Спасибо :)
 

cfgmazda

Участник
Сообщения
53
Реакции
34
Полностью заменить содержимое файла action_roundstart.sp на это:
PHP:
public DR_Action_RoundStart(Handle:event, String:name[], bool:dontBroadcast)
{
    if (GetConVarBool(dr_active)) {
        if (GetConVarBool(dr_scouts))
            ResetScouts();
        dr_ForceTerrorist = 0;
        if (GetConVarBool(dr_respawn) && GetConVarInt(dr_respawn) > 0) {
            CreateTimer(GetConVarFloat(dr_respawn), EndRespawnTimer);
            RespawnTime = true;
        }
        for (new i = 1; i <= MaxClients; i++) {
            if (IsClientInGame(i) && IsFakeClient(i)) {
                ChangeClientTeam(i, 1);
            }
        }
        if (GetConVarBool(dr_forceroundend)) {
            if (RouneEndTimer != INVALID_HANDLE)  {
                KillTimer(RouneEndTimer);
            }
            if (event != INVALID_HANDLE) RouneEndTimer = CreateTimer(float(GetEventInt(event, "timelimit")), RoundEndTimerActivate);
        }
    }
    for (new i = 1; i <= MaxClients; i++) {
        FakeTer[i] = false;
        if (NoRandomNum[i] > 0) {
            NoRandomNum[i]--;
            if (NoRandomNum[i] < -1) {
                NoRandomNum[i] = 0;
            }
        }
    }
}
В deathrun_manager.sp найти с 212 строчки:
PHP:
    HookEventEx("player_death", DR_Action_Death, EventHookMode_Pre);
    HookEventEx("round_end", DR_Action_RoundEnd, EventHookMode);
    HookEventEx("round_start", DR_Action_RoundStart, EventHookMode);
    HookEvent("player_spawn", DR_Action_Spawn, EventHookMode);
    HookEvent("player_disconnect", DR_Action_Disconnect, EventHookMode_Pre);
    HookEvent("player_team", DR_BlockTeamMessage, EventHookMode_Pre);
    HookEvent("player_jump", DR_PlayerJump);
и лучше заменить на:
PHP:
    HookEvent("player_death", DR_Action_Death, EventHookMode_Pre);
    HookEvent("round_end", DR_Action_RoundEnd);
    HookEvent("round_start", DR_Action_RoundStart);
    HookEvent("player_spawn", DR_Action_Spawn);
    HookEvent("player_disconnect", DR_Action_Disconnect, EventHookMode_Pre);
    HookEvent("player_team", DR_BlockTeamMessage, EventHookMode_Pre);
    HookEvent("player_jump", DR_PlayerJump);
Оффтоп

к твоему офф топу, к сведению:

  • EventHookMode_Pre - хукать событие перед
  • EventHookMode_Post - хукать событие после
  • EventHookMode - хукать настоящие событие.
  • EventHookMode_PostNoCopy - хукать после того, но без переменных
HookEvent - хукает событие.
HookEventEx - хукает событие раньше чем оно случилось.


HookEventEx("round_start", DR_Action_RoundStart, EventHookMode);
Это стоит специально, для того чтобы скауты перед началом раунда делали резет, а ты сделал так что они будут во время начала раунда, и кол во будет оставаться с прошлого раунда скорее всего и с остальным тоже самое. так что верни как было, иначе события будут работать не правильно, от этого ошибок точно течь не может.


чтобы убрать вот эту ошибку

L 12/17/2014 - 07:02:53: [SM] Native "GetArrayCell" reported: Invalid index 0 (count: 0)
L 12/17/2014 - 07:02:53: [SM] Displaying call stack trace for plugin "deathrun_manager.smx":
L 12/17/2014 - 07:02:53: [SM] [0] Line 49, deathrun_manager/action_timers.sp::ChooseTerrorist()

в action_check.sp есть проверка FillTheList, нужно сделать так чтобы когда игроков нет на сервере или он вышел в тот момент когда идет проверка, проверка отменялась либо не считывала его, и тогда эта ошибка прекратиться!
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755

cfgmazda

Участник
Сообщения
53
Реакции
34
у меня на сервере проблема больше 12 кт на сервер не пускает помогите решить?

mp_autobalance 0
mp_limitteams 99

Добавлено через 2 минуты
EventHookMode_Pre правильно.
Тогда и будет

тоже не нужен, так как и не нужен возврат значения.

ошибок в этом точно нету, ты возможно чучуть нагрузку снял, а так изменений от тебя никаких.
 
Последнее редактирование:

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
Exclusive Deathrun Manager: HookEventEx или HookEvent? Что такое просто EventHookMode?

а так изменений от тебя никаких
Ошибка из логов пропала. Я устранил последствие, но не следствие этого)

Хорошо, будем оперировать фактами:
HookEventEx - хукает событие раньше чем оно случилось.
Для этого есть EventHookMode_Pre.
PHP:
public OnPluginStart()
{
	HookEventEx("round_start", DR_ActionEx_RoundStartEventHookMode_Pre, EventHookMode_Pre);
	HookEvent("round_start", DR_Action_RoundStartEventHookMode_Pre, EventHookMode_Pre);
}

public Action:DR_ActionEx_RoundStartEventHookMode_Pre(Handle:event, String:name[], bool:dontBroadcast)
{
	PrintToServer("DR_ActionEx_RoundStartEventHookMode_Pre !!!Ex!!!");
	return Plugin_Continue;
}

public Action:DR_Action_RoundStartEventHookMode_Pre(Handle:event, String:name[], bool:dontBroadcast)
{
	PrintToServer("DR_Action_RoundStartEventHookMode_Pre");
	return Plugin_Continue;
}
8d03d89c389d.jpg

Тут ты прав, НО...
Просто поменяв местами хуки:
PHP:
public OnPluginStart()
{	
	HookEvent("round_start", DR_Action_RoundStartEventHookMode_Pre, EventHookMode_Pre);
	HookEventEx("round_start", DR_ActionEx_RoundStartEventHookMode_Pre, EventHookMode_Pre);
}

public Action:DR_ActionEx_RoundStartEventHookMode_Pre(Handle:event, String:name[], bool:dontBroadcast)
{
	PrintToServer("DR_ActionEx_RoundStartEventHookMode_Pre !!!Ex!!!");
	return Plugin_Continue;
}

public Action:DR_Action_RoundStartEventHookMode_Pre(Handle:event, String:name[], bool:dontBroadcast)
{
	PrintToServer("DR_Action_RoundStartEventHookMode_Pre");
	return Plugin_Continue;
}
85e61aa67b60.jpg
Если HookEventEx вызывается прежде HookEvent, то почему же сейчас он не отображается (т.е. фактически не вызывается) первым?!
Да всё банально просто - они идентичны! То, что захукано ("прочтено") первым для одинакового, то и будет вызвано первее.
Разница между ними только в том, что HookEventEx - с возратом значения (успешно/неудачно).
EventHookMode - хукать настоящие событие.
Кликни API на events - там:
C-подобный:
enum EventHookMode
{
	EventHookMode_Pre,					/**< Hook callback fired before event is fired */
	EventHookMode_Post,					/**< Hook callback fired after event is fired */
	EventHookMode_PostNoCopy			/**< Hook callback fired after event is fired, but event data won't be copied */
};
PHP:
public OnPluginStart()
{
	HookEvent("round_start", DR_Action_RoundStartEventHookMode, EventHookMode);
	HookEvent("round_start", DR_RoundStartEventHookMode, EventHookMode);
	HookEvent("round_start", DR_Action_RoundStartEventHookMode_Post, EventHookMode_Post);
}

public Action:DR_Action_RoundStartEventHookMode(Handle:event, String:name[], bool:dontBroadcast)
{
	PrintToServer("DR_Action_RoundStartEventHookMode");
	return Plugin_Continue;
}

public DR_RoundStartEventHookMode(Handle:event, String:name[], bool:dontBroadcast)
{
	PrintToServer("DR_RoundStartEventHookMode");
}

public Action:DR_Action_RoundStartEventHookMode_Post(Handle:event, String:name[], bool:dontBroadcast)
{
	PrintToServer("DR_Action_RoundStartEventHookMode_Post");
	return Plugin_Continue;
}
d92364fef2d8.jpg

EventHookMode "побеждает", НО...
меняем местами хуки:
PHP:
public OnPluginStart()
{
	HookEvent("round_start", DR_Action_RoundStartEventHookMode_Post, EventHookMode_Post);
	HookEvent("round_start", DR_RoundStartEventHookMode, EventHookMode);
	HookEvent("round_start", DR_Action_RoundStartEventHookMode, EventHookMode);
}

public Action:DR_Action_RoundStartEventHookMode(Handle:event, String:name[], bool:dontBroadcast)
{
	PrintToServer("DR_Action_RoundStartEventHookMode");
	return Plugin_Continue;
}

public DR_RoundStartEventHookMode(Handle:event, String:name[], bool:dontBroadcast)
{
	PrintToServer("DR_RoundStartEventHookMode");
}

public Action:DR_Action_RoundStartEventHookMode_Post(Handle:event, String:name[], bool:dontBroadcast)
{
	PrintToServer("DR_Action_RoundStartEventHookMode_Post");
	return Plugin_Continue;
}
7292c1bce2dc.jpg
EventHookMode_Post было вызвано первее всех! И даже приставка Action: не спасла EventHookMode - он вообще был вызван последним.
Почему? Потому что, они снова - идентичны!
Компилятор просто воспринимает EventHookMode, как EventHookMode_Post. По сути, их тогда лучше вовсе не писать, как сделал я.
Итого: ты не прав.
 
Последнее редактирование:

Джускaси

Участник
Сообщения
259
Реакции
40
Как сделать чтобы игроку писало Для получения скаута введите в чате: !scout и еще не пишит какие бонусы есть у игрока я так и не понял где это настроить
 
Сообщения
98
Реакции
17
С этим плагином сервер падает без всяких Эрроров и Логов,час или два работает норм потом краш и рестарт,если нету краша или рестарта сервер виснет!Автор исправь!ОС win!Набор плагинов стандарт из SM 1.6.3 тестил без всяких лишних плагинов!

Добавлено через 5 минут
А где можно drshop взять?
Могу NCS Shop без привязки и без скрытых команд,продать:-D
author = "[RUS] DiviX" О цене договоримся!
 
Последнее редактирование:

Tesloz

JDK
Сообщения
283
Реакции
246
С этим плагином сервер падает без всяких Эрроров и Логов,час или два работает норм потом краш и рестарт,если нету краша или рестарта сервер виснет!Автор исправь!ОС win!Набор плагинов стандарт из SM 1.6.3 тестил без всяких лишних плагинов!

Добавлено через 5 минут

Могу NCS Shop без привязки и без скрытых команд,продать:-D
author = "[RUS] DiviX" О цене договоримся!

Тоже самое рестарты сервера есть,но без ерорров,как фиксить?
 

pihmih

Участник
Сообщения
512
Реакции
23
Как сделать, чтоб при падении или убийстае миром, фраги не уходили в минус?
 
Сообщения
98
Реакции
17
drshop приватный плагин все подробности в личку или в стим!
О автор появился, о своей работе ни слова, крутая поддержка работы!Объясни почему сервер падает от твоего плагина?Или может это не твоя работа?
 
Сверху Снизу