Фраги за раунд
|
|
Scarface_slv
|
Дата: Пятница, 06.04.2012, 23:59:32 | Сообщение # 1 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
в общем не знаю с каким событием это делается, да и вообще не понимаю:
1.За один раунд какой либо игрок набрал 4 фрага 2.И ему сразу пишет PrintToChatAll("вы набрали 4 фрага") 3.А не в конце раунда или не в начале нового раунда 4.Ну и в следующим раунде уже новый отсчет до 4 фрагов для всех игроков и так постоянно
через нее можно? HookEvent("round_start", round_start)
|
|
| |
_wS_
|
Дата: Суббота, 07.04.2012, 09:21:46 | Сообщение # 2 |
|
Code new frags[MAXPLAYERS+1];
player_spawn { frags[client] = 0; }
player_death { frags[attacker_client] += 1; if (frags[attacker_client] == 4) { PrintToChat(attacker_client, "Вы набрали 4 фрага"); } }
|
|
| |
Scarface_slv
|
Дата: Суббота, 07.04.2012, 14:31:55 | Сообщение # 3 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
я понял что я вообще не понимаю HookEvent у меня плагин не работает и как только я не делаю не работает 1.<error>frags.smx Code #include <sourcemod>
new frags[MAXPLAYERS+1];
public OnPluginStart() { HookEvent("player_spawn", player_spawn, EventHookMode_Post); HookEvent("player_dead", player_dead, EventHookMode_Pre); }
public player_spawn(Handle:event, const String:name[], bool:dontBroadcast) { new client = GetClientOfUserId(GetEventInt(event, "userid")); frags[client] = 0; }
public Action:player_dead(Handle:event, const String:name[], bool:dontBroadcast) { new attacker_client = GetEventInt(event, "attacker") new attacker = GetClientOfUserId(attacker_client) frags[attacker] += 1; if (frags[attacker] == 4) { PrintToChat(attacker, "Вы набрали 4 фрага"); } return Plugin_Continue; }
|
|
| |
_wS_
|
Дата: Суббота, 07.04.2012, 15:41:34 | Сообщение # 4 |
|
Нет события player_dead.. Есть player_death
|
|
| |
Scarface_slv
|
Дата: Суббота, 07.04.2012, 19:17:30 | Сообщение # 5 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
ой хдДобавлено (07.04.2012, 16:17:10) --------------------------------------------- Спасибо, не заметил) и компилятор ниче не сказал) Добавлено (07.04.2012, 19:17:30) --------------------------------------------- у меня снова вопрос как проверить игрока есть ли у него определенное оружие awp например, в evente
|
|
| |
_wS_
|
Дата: Суббота, 07.04.2012, 19:26:16 | Сообщение # 6 |
|
С помощью GetPlayerWeaponSlot и GetEntityClassname
|
|
| |
Scarface_slv
|
Дата: Суббота, 07.04.2012, 20:49:37 | Сообщение # 7 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
вообщем у меня получилось с GetPlayerWeaponSlot пример: Code #include <sourcemod> #include <sdktools> #include <cstrike>
public OnPluginStart() { HookEvent("player_spawn", player_spawn, EventHookMode_Post); }
public Action:player_spawn(Handle:event, const String:name[], bool:dontBroadcast) { new client = GetClientOfUserId(GetEventInt(event, "userid")); if (GetPlayerWeaponSlot(client, 2)) { PrintToChatAll("У вас есть нож"); } else PrintToChatAll("У вас нет ножа"); } а вот с помощью GetEntityClassname нет не могу понять что такое index Code #include <sourcemod> #include <sdktools> #include <cstrike>
public OnPluginStart() { HookEvent("player_spawn", player_spawn, EventHookMode_Post); }
public Action:player_spawn(Handle:event, const String:name[], bool:dontBroadcast) { decl String:knife[25]; if (GetEntityClassname(index, knife, sizeof(knife))); { PrintToChatAll("У вас есть нож"); } else PrintToChatAll("У вас нет ножа"); }
|
|
| |
_wS_
|
Дата: Суббота, 07.04.2012, 20:58:22 | Сообщение # 8 |
|
Индекс это как уникальное имя, ключ. Есть userid, есть индекс, есть handle. GetPlayerWeaponSlot возвращает индекс оружия или -1, если его нет. И используя этот индекс, можешь узнать все что нужно:
Code new index = GetPlayerWeaponSlot(client, 2); if (index > 0) { decl String:class[20]; GetEntityClassname(index, class, 20); PrintToChatAll("index = %d, classname = %s", index, class); } else PrintToChatAll("Оружия нет");
Индекс это целое уникальное число. Вот пример объектов с de_cbble: http://world-source.ru/de_cbble_entities.txt
ents - это просто имя группы (не важно). Ниже 0 - это индекс, а внутри classname - что это за объект и его параметры, которые можно изменять/узнавать только с помощью индекса.
|
|
| |
Scarface_slv
|
Дата: Воскресенье, 08.04.2012, 10:58:33 | Сообщение # 9 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
Спасибо большое=)Добавлено (08.04.2012, 10:22:20) --------------------------------------------- SetEntProp(attacker, Prop_Data, "m_ArmorValue", 100, 4); вот так дает броню без шлема, а как дать с шлемом? Добавлено (08.04.2012, 10:58:33) --------------------------------------------- сорри нашел: Code new armor = GetEntProp(attacker,Prop_Send,"m_ArmorValue"); val = 100 SetEntProp(attacker, Prop_Data, "m_ArmorValue", val); SetEntProp(attacker, Prop_Send, "m_bHasHelmet", val?1:0);
|
|
| |