[CS: Source] Reset Deaths

FBZA

Участник
Сообщения
58
Реакции
8
AlmazON, -1 в отображении? Не будет -1 в отображении, в отображении будет 0 смертей после того, как игрок умирает.
EventHookMode_PostNoCopy — пусть будет просто Post, исправил.
Я написал простенький плагин, почему ты сразу доеживаешься до массивов?

Добавлено через 5 минут
Я проверяю плагин на работоспособность прежде, чем выкладывать исходник, понимаешь? Плагин отлично работает.<br>
 
Последнее редактирование:

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
И ничего не будет работать
Обычно и так работает, но по докам не рекомендуется, да.
Не будет -1 в отображении, в отображении будет 0 смертей после того, как игрок умирает
Оффтоп
e00a387b6c14.jpg
 

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
По логике, ты ставишь значение смертей -1 после того, как игрок умер.
А когда игрок умирает, ему уже добавляется значение к смертям.
Иначе, тебе нужно ставить значение -1 до того, как ему прибавится значение смерти.
 

FBZA

Участник
Сообщения
58
Реакции
8
AlmazON, это ведь от самоубийства, лол. В случае, когда игрок умирает от другого игрока, этого нет. <br>

Добавлено через 1 минуту
<strong>Primo</strong>, исправляй мой код, кто мешает? Я делаю так, как удобно мне, ведь этого никто не заказывал, я сделал «А-ля, кому-то будет интересно»<br>
 
Последнее редактирование:

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
AlmazON, это ведь от самоубийства, лол. В случае, когда игрок умирает от другого игрока, этого нет. <br>

Да с какого перепуга?

В данном случае убийцей является сам игрок, т.е. индекс убийцы и жертвы один и тот же.
Здесь не играет роли тот факт, что это самоубийца.
Сам факт, что игрок умер от чьей-то руки.

<strong>Primo</strong>, исправляй мой код, кто мешает? Я делаю так, как удобно мне, ведь этого никто не заказывал, я сделал «А-ля, кому-то будет интересно»<br>

Ты сделал неправильно, без применения банальной логики и алгоритмизации.
Что у тебя было по информатике в школе? 3?
 
Последнее редактирование:

FBZA

Участник
Сообщения
58
Реакции
8
Primo, AlmazON, дружно берем и исправляем код, ибо, видимо, я слишком туп, чтобы понять то, что вы говорите.
Оффтоп
 

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
<b>Primo</b>, <br><b>AlmazON</b>,<br>дружно берем и исправляем код, ибо, видимо, я слишком туп, чтобы понять то, что вы говорите.<br>

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

Там точно такие же переменные attacker и victim в этом событии, они просто носят индекс участников события, и всё. А самоубийство или т.п. здесь не имеет значения.

Подумай сам.

У игрока 0 смертей. Он умирает, ему ставится смерти +1.
Ты же ставишь значение -1 после того, как ему уже прибавилась 1 смерть.
Т.е. получается так.
PHP:
a = 0
PlayerDeath() a++;
a = -1;

Обрати внимание на порядок.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
понять то, что вы говорите
PHP:
public OnPluginStart() HookEvent("player_death", ND)

public ND(Handle:E, String:N[], bool:B)
{
    new i = GetClientOfUserId(GetEventInt(E, "userid"));
	if (i) SetEntProp(i, Prop_Data, "m_iDeaths", 0);
}
Следующий вопрос: а кому он вообще нужен, этот код?!
 

FBZA

Участник
Сообщения
58
Реакции
8
Тебе никто не говорит, что ты туп. Тебе говорят, что ты сделал неправильно, а ты просто не хочешь прислушаться к нашим советам.

Там точно такие же переменные attacker и victim в этом событии, они просто носят индекс участников события, и всё. А самоубийство или т.п. здесь не имеет значения.

Подумай сам.

У игрока 0 смертей. Он умирает, ему ставится смерти +1.
Ты же ставишь значение -1 после того, как ему уже прибавилась 1 смерть.
Т.е. получается так.
PHP:
a = 0
PlayerDeath() a++;
a = -1;
Обрати внимание на порядок.
Я говорю, что я туп, я не не вникаю, я не могу понять, прошу объяснить подробнее, раз уж на то пошло.
 

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
Я говорю, что я туп, я не не вникаю, я не могу понять, прошу объяснить подробнее, раз уж на то пошло.

Хорошо, объясняю подробнее.

Тут всё делается по алгоритму, одновременно не может происходить несколько действий.

Ты ставишь тип функции отлова события EventHookMode_Post, который означает, что фукнция _ND будет вызвана после выполнения события.
Т.е. когда событие уже произойдёт, игрок умер, ему дали смерти и т.п., вызывается твоя фукнция, т.е. ты ставишь значение смертей -1.

Алгоритм:

Игрок умер -> Выполняются стандартные фукнции -> Выполняется твоя фукнция.

Добавлено через 1 минуту
В идеале, конечно же, убери типы отлова события, и просто ставь значение смертей 0, а не -1, и тогда проблем не будет.
 
Последнее редактирование:

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #31
Primo,
AlmazON, Сам в шоке:
PHP:
#include <sourcemod>
#pragma semicolon 1

public OnPluginStart()
{
	HookEvent("player_death", Event_OnPlayerDeath_Pre, EventHookMode_Pre);
	HookEvent("player_death", Event_OnPlayerDeath_Post);
	HookEvent("player_death", Event_OnPlayerDeath_PostNoCopy, EventHookMode_PostNoCopy);
}

public Event_OnPlayerDeath_Pre(Handle:hEvent, const String:name[], bool:dontBroadcast)
{
	decl String:sWeapon[64];
	sWeapon[0] = '\0';
	GetEventString(hEvent, "weapon", sWeapon, sizeof(sWeapon));
	LogAction(-1, -1, "Event_OnPlayerDeath_Pre:\n\
	userid - %i\n\
	victim_ndex - %i\n\
	attacker - %i\n\
	victim_index - %i\n\
	weapon - %s\n\
	headshot - %b\n\
	dominated - %i\n\
	revenge - %i\n",
	GetEventInt(hEvent, "userid"),
	GetClientOfUserId(GetEventInt(hEvent, "userid")),
	GetEventInt(hEvent, "attacker"),
	GetClientOfUserId(GetEventInt(hEvent, "attacker")),
	sWeapon,
	GetEventBool(hEvent, "headshot"),
	GetEventInt(hEvent, "dominated"),
	GetEventInt(hEvent, "revenge"));
}

public Event_OnPlayerDeath_Post(Handle:hEvent, const String:name[], bool:dontBroadcast)
{
	decl String:sWeapon[64];
	sWeapon[0] = '\0';
	GetEventString(hEvent, "weapon", sWeapon, sizeof(sWeapon));
	LogAction(-1, -1, "Event_OnPlayerDeath_Post:\n\
	userid - %i\n\
	victim_ndex - %i\n\
	attacker - %i\n\
	victim_index - %i\n\
	weapon - %s\n\
	headshot - %b\n\
	dominated - %i\n\
	revenge - %i\n",
	GetEventInt(hEvent, "userid"),
	GetClientOfUserId(GetEventInt(hEvent, "userid")),
	GetEventInt(hEvent, "attacker"),
	GetClientOfUserId(GetEventInt(hEvent, "attacker")),
	sWeapon,
	GetEventBool(hEvent, "headshot"),
	GetEventInt(hEvent, "dominated"),
	GetEventInt(hEvent, "revenge"));
}

public Event_OnPlayerDeath_PostNoCopy(Handle:hEvent, const String:name[], bool:dontBroadcast)
{
	decl String:sWeapon[64];
	sWeapon[0] = '\0';
	GetEventString(hEvent, "weapon", sWeapon, sizeof(sWeapon));
	LogAction(-1, -1, "Event_OnPlayerDeath_PostNoCopy:\n\
	userid - %i\n\
	victim_ndex - %i\n\
	attacker - %i\n\
	victim_index - %i\n\
	weapon - %s\n\
	headshot - %b\n\
	dominated - %i\n\
	revenge - %i\n",
	GetEventInt(hEvent, "userid"),
	GetClientOfUserId(GetEventInt(hEvent, "userid")),
	GetEventInt(hEvent, "attacker"),
	GetClientOfUserId(GetEventInt(hEvent, "attacker")),
	sWeapon,
	GetEventBool(hEvent, "headshot"),
	GetEventInt(hEvent, "dominated"),
	GetEventInt(hEvent, "revenge"));
}
L 09/05/2014 - 01:11:02: SourceMod log file session started (file "L20140905.log") (Version "1.6.0")
L 09/05/2014 - 01:11:02: -------- Mapchange to de_dust2 --------
L 09/05/2014 - 01:11:17: [he.smx] Event_OnPlayerDeath_Pre:
userid - 5
victim_ndex - 4
attacker - 2
victim_index - 1
weapon - ak47
headshot - 0
dominated - 0
revenge - 0

L 09/05/2014 - 01:11:17: [he.smx] Event_OnPlayerDeath_Post:
userid - 5
victim_ndex - 4
attacker - 2
victim_index - 1
weapon - ak47
headshot - 0
dominated - 0
revenge - 0

L 09/05/2014 - 01:11:17: [he.smx] Event_OnPlayerDeath_PostNoCopy:
userid - 5
victim_ndex - 4
attacker - 2
victim_index - 1
weapon - ak47
headshot - 0
dominated - 0
revenge - 0

L 09/05/2014 - 01:11:17: [he.smx] Event_OnPlayerDeath_Pre:
userid - 3
victim_ndex - 2
attacker - 2
victim_index - 1
weapon - ak47
headshot - 1
dominated - 0
revenge - 0

L 09/05/2014 - 01:11:17: [he.smx] Event_OnPlayerDeath_Post:
userid - 3
victim_ndex - 2
attacker - 2
victim_index - 1
weapon - ak47
headshot - 1
dominated - 0
revenge - 0

L 09/05/2014 - 01:11:17: [he.smx] Event_OnPlayerDeath_PostNoCopy:
userid - 3
victim_ndex - 2
attacker - 2
victim_index - 1
weapon - ak47
headshot - 1
dominated - 0
revenge - 0

L 09/05/2014 - 01:11:20: [he.smx] Event_OnPlayerDeath_Pre:
userid - 2
victim_ndex - 1
attacker - 6
victim_index - 5
weapon - awp
headshot - 0
dominated - 0
revenge - 0

L 09/05/2014 - 01:11:20: [he.smx] Event_OnPlayerDeath_Post:
userid - 2
victim_ndex - 1
attacker - 6
victim_index - 5
weapon - awp
headshot - 0
dominated - 0
revenge - 0

L 09/05/2014 - 01:11:20: [he.smx] Event_OnPlayerDeath_PostNoCopy:
userid - 2
victim_ndex - 1
attacker - 6
victim_index - 5
weapon - awp
headshot - 0
dominated - 0
revenge - 0

L 09/05/2014 - 01:11:35: [he.smx] Event_OnPlayerDeath_Pre:
userid - 4
victim_ndex - 3
attacker - 6
victim_index - 5
weapon - awp
headshot - 0
dominated - 0
revenge - 0

L 09/05/2014 - 01:11:35: [he.smx] Event_OnPlayerDeath_Post:
userid - 4
victim_ndex - 3
attacker - 6
victim_index - 5
weapon - awp
headshot - 0
dominated - 0
revenge - 0

L 09/05/2014 - 01:11:35: [he.smx] Event_OnPlayerDeath_PostNoCopy:
userid - 4
victim_ndex - 3
attacker - 6
victim_index - 5
weapon - awp
headshot - 0
dominated - 0
revenge - 0

L 09/05/2014 - 01:11:47: [he.smx] Event_OnPlayerDeath_Pre:
userid - 7
victim_ndex - 6
attacker - 6
victim_index - 5
weapon - awp
headshot - 0
dominated - 0
revenge - 0

L 09/05/2014 - 01:11:47: [he.smx] Event_OnPlayerDeath_Post:
userid - 7
victim_ndex - 6
attacker - 6
victim_index - 5
weapon - awp
headshot - 0
dominated - 0
revenge - 0

L 09/05/2014 - 01:11:47: [he.smx] Event_OnPlayerDeath_PostNoCopy:
userid - 7
victim_ndex - 6
attacker - 6
victim_index - 5
weapon - awp
headshot - 0
dominated - 0
revenge - 0

L 09/05/2014 - 01:12:04: [he.smx] Event_OnPlayerDeath_Pre:
userid - 4
victim_ndex - 3
attacker - 5
victim_index - 4
weapon - xm1014
headshot - 1
dominated - 0
revenge - 0

L 09/05/2014 - 01:12:04: [he.smx] Event_OnPlayerDeath_Post:
userid - 4
victim_ndex - 3
attacker - 5
victim_index - 4
weapon - xm1014
headshot - 1
dominated - 0
revenge - 0

L 09/05/2014 - 01:12:04: [he.smx] Event_OnPlayerDeath_PostNoCopy:
userid - 4
victim_ndex - 3
attacker - 5
victim_index - 4
weapon - xm1014
headshot - 1
dominated - 0
revenge - 0

L 09/05/2014 - 01:12:04: [he.smx] Event_OnPlayerDeath_Pre:
userid - 5
victim_ndex - 4
attacker - 7
victim_index - 6
weapon - p90
headshot - 0
dominated - 0
revenge - 0

L 09/05/2014 - 01:12:04: [he.smx] Event_OnPlayerDeath_Post:
userid - 5
victim_ndex - 4
attacker - 7
victim_index - 6
weapon - p90
headshot - 0
dominated - 0
revenge - 0

L 09/05/2014 - 01:12:04: [he.smx] Event_OnPlayerDeath_PostNoCopy:
userid - 5
victim_ndex - 4
attacker - 7
victim_index - 6
weapon - p90
headshot - 0
dominated - 0
revenge - 0

L 09/05/2014 - 01:12:05: [he.smx] Event_OnPlayerDeath_Pre:
userid - 7
victim_ndex - 6
attacker - 3
victim_index - 2
weapon - m4a1
headshot - 1
dominated - 0
revenge - 0

L 09/05/2014 - 01:12:05: [he.smx] Event_OnPlayerDeath_Post:
userid - 7
victim_ndex - 6
attacker - 3
victim_index - 2
weapon - m4a1
headshot - 1
dominated - 0
revenge - 0

L 09/05/2014 - 01:12:05: [he.smx] Event_OnPlayerDeath_PostNoCopy:
userid - 7
victim_ndex - 6
attacker - 3
victim_index - 2
weapon - m4a1
headshot - 1
dominated - 0
revenge - 0

Поковырял исходники см, не нашел ни одного упоминания EventHookMode_PostNoCopy в обработе событий. Тоесть выход что это тоже самое что и EventHookMode_Post ?!
 

FBZA

Участник
Сообщения
58
Реакции
8
Primo, Я оставляю -1, ибо при 0 смерти +1 идут и никак не выставляется, смертей всегда 1, если только EventHookMode_Pre?
 

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
Primo, Я оставляю -1, ибо при 0 смерти +1 идут и никак не выставляется, смертей всегда 1, если только EventHookMode_Pre?

Если ты обнуляешь смерти, то тебе нужно получить 0 смертей. Просто выставь значение смертей 0, если это не Pre тип, хотя я хз как этот тип точно работает.
 

FBZA

Участник
Сообщения
58
Реакции
8
Primo, SetEntProp(i, Prop_Data, "m_iDeaths", -1); Без _Pre
Работает, подтирает все единички на нолики.
В то время, как
SetEntProp(i, Prop_Data, "m_iDeaths", 0);
Подтирает, если только deaths > 1 и выставляет значение 1.
 

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
Primo,
AlmazON, Сам в шоке:
PHP:
#include <sourcemod>
#pragma semicolon 1

public OnPluginStart()
{
	HookEvent("player_death", Event_OnPlayerDeath_Pre, EventHookMode_Pre);
	HookEvent("player_death", Event_OnPlayerDeath_Post);
	HookEvent("player_death", Event_OnPlayerDeath_PostNoCopy, EventHookMode_PostNoCopy);
}

public Event_OnPlayerDeath_Pre(Handle:hEvent, const String:name[], bool:dontBroadcast)
{
	decl String:sWeapon[64];
	sWeapon[0] = '\0';
	GetEventString(hEvent, "weapon", sWeapon, sizeof(sWeapon));
	LogAction(-1, -1, "Event_OnPlayerDeath_Pre:\n\
	userid - %i\n\
	victim_ndex - %i\n\
	attacker - %i\n\
	victim_index - %i\n\
	weapon - %s\n\
	headshot - %b\n\
	dominated - %i\n\
	revenge - %i\n",
	GetEventInt(hEvent, "userid"),
	GetClientOfUserId(GetEventInt(hEvent, "userid")),
	GetEventInt(hEvent, "attacker"),
	GetClientOfUserId(GetEventInt(hEvent, "attacker")),
	sWeapon,
	GetEventBool(hEvent, "headshot"),
	GetEventInt(hEvent, "dominated"),
	GetEventInt(hEvent, "revenge"));
}

public Event_OnPlayerDeath_Post(Handle:hEvent, const String:name[], bool:dontBroadcast)
{
	decl String:sWeapon[64];
	sWeapon[0] = '\0';
	GetEventString(hEvent, "weapon", sWeapon, sizeof(sWeapon));
	LogAction(-1, -1, "Event_OnPlayerDeath_Post:\n\
	userid - %i\n\
	victim_ndex - %i\n\
	attacker - %i\n\
	victim_index - %i\n\
	weapon - %s\n\
	headshot - %b\n\
	dominated - %i\n\
	revenge - %i\n",
	GetEventInt(hEvent, "userid"),
	GetClientOfUserId(GetEventInt(hEvent, "userid")),
	GetEventInt(hEvent, "attacker"),
	GetClientOfUserId(GetEventInt(hEvent, "attacker")),
	sWeapon,
	GetEventBool(hEvent, "headshot"),
	GetEventInt(hEvent, "dominated"),
	GetEventInt(hEvent, "revenge"));
}

public Event_OnPlayerDeath_PostNoCopy(Handle:hEvent, const String:name[], bool:dontBroadcast)
{
	decl String:sWeapon[64];
	sWeapon[0] = '\0';
	GetEventString(hEvent, "weapon", sWeapon, sizeof(sWeapon));
	LogAction(-1, -1, "Event_OnPlayerDeath_PostNoCopy:\n\
	userid - %i\n\
	victim_ndex - %i\n\
	attacker - %i\n\
	victim_index - %i\n\
	weapon - %s\n\
	headshot - %b\n\
	dominated - %i\n\
	revenge - %i\n",
	GetEventInt(hEvent, "userid"),
	GetClientOfUserId(GetEventInt(hEvent, "userid")),
	GetEventInt(hEvent, "attacker"),
	GetClientOfUserId(GetEventInt(hEvent, "attacker")),
	sWeapon,
	GetEventBool(hEvent, "headshot"),
	GetEventInt(hEvent, "dominated"),
	GetEventInt(hEvent, "revenge"));
}

А в чем, собственно, шок заключается?
Я не вижу ни смерти, ни убийства. Значения их не изменяются функциями плагина.
А индексы игроков не меняются, да и не должны, умирает то определённый игрк с определённым индексом.

Добавлено через 1 минуту
Primo, SetEntProp(i, Prop_Data, "m_iDeaths", -1); Без _Pre
Работает, подтирает все единички на нолики.
В то время, как
SetEntProp(i, Prop_Data, "m_iDeaths", 0);
Подтирает, если только deaths > 1 и выставляет значение 1.

Он не подтирает.

По логике, ты выполняешь свою функцию перед стандартными фукнциями.
Т.е.
Игрок умер -> Твоя фукнция -> Стандартные функции.
Ну это если c _Pre

На примере:
Ты выставишь значение смертей 0 перед тем, как игроку добавятся смерти.
 
Последнее редактирование:

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
Поковырял исходники см, не нашел ни одного упоминания EventHookMode_PostNoCopy в обработе событий. Тоесть выход что это тоже самое что и EventHookMode_Post ?!

А чем они должны отличаться? Я лишь понял, что переменные не выводятся в фукнции.
 

FBZA

Участник
Сообщения
58
Реакции
8
Primo, Я же говорю, я делаю без _Pre, и там выставлять надо -1, а тут начали возмущаться, мол как так и что это такое, надо ставить 0.
 

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
Primo, Я же говорю, я делаю без _Pre, и там выставлять надо -1, а тут начали возмущаться, мол как так и что это такое, надо ставить 0.

Я тебе обратное говорю.
Ставь -1, если ты используешь _Pre, т.к. стандартные фукнции выставляют значение смертей +1.

Т.е. -1+1=0
А ты просто выставляешь в самом конце всего этого дела значение смертей -1.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #39
AlmazON,
Primo, Выходит что мы не верно что-то поняли.
В таком виде хука эвент передает те же параметры, но походу их не принимает если их изменить. Точно не уверен.
 

FBZA

Участник
Сообщения
58
Реакции
8
Primo, в каком случае тогда ставить 0, лол?
 
Сверху Снизу