Русское сообщество по скриптингу

Playervar

Все вопросы по скриптингу для SourceMod, помощь в редактировании плагинов.
Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптингу для SourceMod.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [pawn], в противном случае, если тег [pawn] не отображает ваш код, можно использовать тег [code].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sp плагина.

Playervar

Сообщение Dn1pRo » 25 окт 2010, 19:22

Какая есть альтернатива playervar от евента в сорсмоде?
Вы должны зарегистрироваться, чтобы видеть ссылки.
Аватара пользователя
Dn1pRo
 
Сообщения: 51
Зарегистрирован: 17 авг 2010, 22:17
Благодарил (а): 11 раз.
Поблагодарили: 3 раз.
Опыт программирования: Меньше недели
Языки программирования: Counter-Strike: Source

Re: Playervar

Сообщение DJ_WEST » 26 окт 2010, 00:15

А что она делает? Хранит данные по id игрока?
Может быть RegClientCookie, SetClientCookie, GetClientCookie и т.д.
Не пишите мне в ЛС: если вам нужна помощь на бесплатной основе. Любые вопросы на форум.
Аватара пользователя
DJ_WEST
Администратор
 
Сообщения: 3641
Зарегистрирован: 22 авг 2009, 00:38
Благодарил (а): 48 раз.
Поблагодарили: 2209 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Left 4 Dead
Left 4 Dead 2

Re: Playervar

Сообщение KLL » 26 окт 2010, 11:36

А может ClientCommand(client,".....")?
вроде похожа
Аватара пользователя
KLL
 
Сообщения: 41
Зарегистрирован: 25 сен 2010, 02:08
Благодарил (а): 3 раз.
Поблагодарили: 1 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike: Source

Re: Playervar

Сообщение Dn1pRo » 26 окт 2010, 11:38

Не, это скорее всего RegClientCookie, SetClientCookie, GetClientCookie.

upd: Я вот думаю, как мне через них реализовать защиту от "кражи фрагов". Ну допустим, один человек попал в голову, а другой просто добил уже полумертвого противника. И тогда фраг забирается у второго и прибавляется первому.
Как забрать и дать фраг я знаю (через SetEntProp()), а вот как проверить, что фраг был действительно "сворован"?

2 upd: Все, дошло. Надо было просто ставить 2 куки на игрока, получившего ранение в голову. 1-я определяла было ли нанесено фатальное ранение, 2-я содержала ид игрока, нанесшего фатальное ранение.

А при убийстве проверяем 1-ю куку на предмет нанесения фатального ранения, 2-ю проверяем с игроком, совершившим убийство=)
Выглядит это так: (вдруг кому понадобится)

[pawn]#pragma semicolon 1

#include <sourcemod>
#include <clientprefs.inc>

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(attackerattacker_strsizeof(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]
Аватара пользователя
Dn1pRo
 
Сообщения: 51
Зарегистрирован: 17 авг 2010, 22:17
Благодарил (а): 11 раз.
Поблагодарили: 3 раз.
Опыт программирования: Меньше недели
Языки программирования: Counter-Strike: Source


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3