HookEvent, HookEventEx, UnhookEvent - отлавливаем события
|
|
Vitaminoz
|
Дата: Суббота, 21.12.2013, 22:13:57 | Сообщение # 16 |
|
Сообщений: 141
Репутация: 1 [ +/- ]
|
|
Хм ... Тогда почему при компиляции не было ошибок !
|
|
| |
Artems
|
Дата: Вторник, 25.02.2014, 05:04:18 | Сообщение # 17 |
|
Сообщений: 2
Репутация: 0 [ +/- ]
|
|
Как отловить событие на сервере если игрока убили гранатой? Игра Counter-Strike: Source.
|
|
| |
BarD
|
Дата: Четверг, 27.02.2014, 12:20:40 | Сообщение # 18 |
|
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
Код new String:grenade[32] = {"weapon_hegrenade"};
public OnPluginStart() { HookEvent("player_death", Death); }
public Action:Death(Handle:event, const String:name[], bool:dontBroadcast) { decl String:weapon[32]; GetEventString(event, "weapon", weapon, sizeof(weapon)); if (weapon[32] == grenade[32]) { PrintToChatAll("Убили гранатой"); } }
Сам не проверял, но должно сработать
|
|
| |
_wS_
|
Дата: Четверг, 27.02.2014, 12:24:26 | Сообщение # 19 |
|
BarD, это неправильно.
Цитата Artems ( ) Как отловить событие на сервере если игрока убили гранатой? Игра Counter-Strike: Source. Код player_death
decl String:weapon[15]; GetEventString(event, "weapon", weapon, 15); if (strcmp(weapon, "hegrenade", false) == 0) {
}
|
|
| |
Valeriks
|
Дата: Пятница, 14.03.2014, 22:57:06 | Сообщение # 20 |
|
Сообщений: 100
Репутация: 3 [ +/- ]
|
|
А как поймать событие когда игрок выбрал определенную команду? Не то чтобы узнать в какой он уже команде GetClientTeam(client), а поймать тот момент когда он выбрал команду. То есть, когда игрок заходит на сервер и выбирает команду (либо спектр) в чате сразу появляется надпись за какую команду он вошел, либо сел в спектр. Как это поймать?
|
|
| |
_wS_
|
Дата: Пятница, 14.03.2014, 22:58:32 | Сообщение # 21 |
|
|
|
| |
Valeriks
|
Дата: Пятница, 14.03.2014, 23:01:11 | Сообщение # 22 |
|
Сообщений: 100
Репутация: 3 [ +/- ]
|
|
Благодарю!
|
|
| |
DEMO-Stalker
|
Дата: Понедельник, 17.03.2014, 18:58:47 | Сообщение # 23 |
|
Сообщений: 49
Репутация: 0 [ +/- ]
|
|
Почему-то пишет ошибку, не распознанный символ round public OnPluginStart() { HookEvent("round_start", round); } Можете подсказать причину?
Сообщение отредактировал DEMO-Stalker - Понедельник, 17.03.2014, 19:29:35 |
|
| |
dron216
|
Дата: Вторник, 18.03.2014, 00:58:24 | Сообщение # 24 |
|
Сообщений: 151
Репутация: 18 [ +/- ]
|
|
Добавь в код сам callback:
Код public Action:round(Handle:Event, const String:EventName[], bool:Silent) { }
Сообщение отредактировал dron216 - Вторник, 18.03.2014, 11:55:56 |
|
| |
Loco
|
Дата: Вторник, 01.04.2014, 16:44:00 | Сообщение # 25 |
|
Сообщений: 42
Репутация: 0 [ +/- ]
|
|
Здравствуйте.
Помогите, пожалуйста. Как можно отловить событие выбора оружия игроком?
То есть, если игрок, например, выбирает гранату, то выполняется определенная команда (моя).
Заранее спасибо.
|
|
| |
rotmir1989
|
Дата: Суббота, 01.11.2014, 10:28:53 | Сообщение # 26 |
|
Сообщений: 2
Репутация: 0 [ +/- ]
|
|
Здравствуйте . Не могу понять как после отлова события round_start , сделать что бы админу выдавало 120 хп . Киньте код и если не трудно описание к нему что бы понять код и изучить его .
|
|
| |
Samil
|
Дата: Суббота, 01.11.2014, 11:40:19 | Сообщение # 27 |
|
Сообщений: 59
Репутация: 11 [ +/- ]
|
|
#include <sourcemod>//Подключаем библиотки #include <cstrike> #include <sdktools> #include <sdkhooks>
#pragma semicolon 1
public OnPluginStart() { HookEvent("round_start", Event_RoundStart); //Отлавливаем раунд старт }
public Action:Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast) { for (new i=1;i<=MaxClients;i++) //Цикл проверки всех игроков { new flags = GetUserFlagBits(i); //Создаем переменную ответственную за флаги
if (flags & ADMFLAG_GENERIC) //Если флаг b { SetEntityHealth(i, 120); //То устанавливаем 120 хп } } }
Сообщение отредактировал Samil - Суббота, 01.11.2014, 12:05:18 |
|
| |
king(rus)
|
Дата: Суббота, 15.11.2014, 20:09:16 | Сообщение # 28 |
|
Сообщений: 109
Репутация: 2 [ +/- ]
|
|
Цитата Samil ( ) Здравствуйте . Не могу понять как после отлова события round_start , сделать что бы админу выдавало 120 хп . Киньте код и если не трудно описание к нему что бы понять код и изучить его . Лучше не в round_start, а в player_spawn, ибо игрок может быть ещё мёртв, когда начинается раунд.
Добавлено (15.11.2014, 20:09:16) --------------------------------------------- Цитата Samil ( ) #include <sourcemod>//Подключаем библиотки #include <cstrike> #include <sdktools> #include <sdkhooks>
#pragma semicolon 1
public OnPluginStart() { HookEvent("round_start", Event_RoundStart); //Отлавливаем раунд старт }
public Action:Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast) { for (new i=1;i<=MaxClients;i++) //Цикл проверки всех игроков { new flags = GetUserFlagBits(i); //Создаем переменную ответственную за флаги
if (flags & ADMFLAG_GENERIC) //Если флаг b { SetEntityHealth(i, 120); //То устанавливаем 120 хп } } }
Код ужасен. А если игрок мёртв? Если его нету на сервере? Полетят еррорки. И зачем создавать переменную, если мы её используем один раз?
Сообщение отредактировал king(rus) - Воскресенье, 16.11.2014, 10:01:15 |
|
| |
maxim5442
|
Дата: Четверг, 12.02.2015, 19:47:13 | Сообщение # 29 |
|
Сообщений: 18
Репутация: 0 [ +/- ]
|
|
Здравствуйте. Как отловить прицел? ( то есть на какого игрока нацелен)
|
|
| |
_wS_
|
Дата: Четверг, 12.02.2015, 20:56:17 | Сообщение # 30 |
|
|
|
| |