Dn1pRo » 26 окт 2010, 11:38
Не, это скорее всего RegClientCookie, SetClientCookie, GetClientCookie.
upd: Я вот думаю, как мне через них реализовать защиту от "кражи фрагов". Ну допустим, один человек попал в голову, а другой просто добил уже полумертвого противника. И тогда фраг забирается у второго и прибавляется первому.
Как забрать и дать фраг я знаю (через SetEntProp()), а вот как проверить, что фраг был действительно "сворован"?
2 upd: Все, дошло. Надо было просто ставить 2 куки на игрока, получившего ранение в голову. 1-я определяла было ли нанесено фатальное ранение, 2-я содержала ид игрока, нанесшего фатальное ранение.
А при убийстве проверяем 1-ю куку на предмет нанесения фатального ранения, 2-ю проверяем с игроком, совершившим убийство=)
Выглядит это так: (вдруг кому понадобится)
[pawn]new Handle:CookieFatal;
new Handle:CookieFatalId;
new String:CookieFatalStr[100];
new String:CookieFatalIdStr[100];
...
public OnPluginStart()
{
HookEvent("player_hurt", Event_PlayerHurt);
HookEvent("player_death", Event_PlayerDeath);
CookieFatal = RegClientCookie("fatalhit", "Checking of fatal hit", CookieAccess_Public);
CookieFatalId = RegClientCookie("fatalhit_id", "Userid who did fatal hit", CookieAccess_Public);
}
public Action:Event_PlayerHurt(Handle:event, const String:name[], bool:dontBroadcast)
{
new attacker = GetClientOfUserId(GetEventInt(event, "attacker"));
new client = GetClientOfUserId(GetEventInt(event, "userid"));
new String:attacker_str[100] = IntToString(attacker);
new hitgroup = GetEventInt(event, "hitgroup");
IntToString(attacker, attacker_str, sizeof(attacker_str));
if (hitgroup == 1 && GetClientTeam(attacker) == 2)
{
SetClientCookie(client, CookieFatal, "1");
SetClientCookie(client, CookieFatalId, attacker_str);
SetEntityHealth(client, 2);
PrintCenterText(attacker, "%t", "Finish Him");
}
return Plugin_Continue;
}
public Action:Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
{
new attacker = GetClientOfUserId(GetEventInt(event, "attacker"));
new client = GetClientOfUserId(GetEventInt(event, "userid"));
GetClientCookie(client, CookieFatal, CookieFatalStr, sizeof(CookieFatalStr));
if (StringToInt(CookieFatalStr) == 1)
{
GetClientCookie(client, CookieFatalId, CookieFatalIdStr, sizeof(CookieFatalIdStr));
if (StringToInt(CookieFatalIdStr) != attacker)
{
SetEntProp(attacker, Prop_Data, "m_iFrags", GetClientFrags(attacker) - 1);
SetEntProp(StringToInt(CookieFatalIdStr), Prop_Data, "m_iFrags", GetClientFrags(StringToInt(CookieFatalIdStr)) + 1);
}
}
return Plugin_Continue;
}
[/pawn]