1. 93rus Пользователь

    Регистрация:
    27.02.16
    Сообщения:
    20
    Симпатии:
    2
    Пол:
    Мужской
    Уважаемы скриптеры помогите переделать данный код плагина под ZP 4.3, Проблема в том что: при заходе на сервер игрок получает свою модельку(купленную или т.п.). При заражении, моделька должна изменяться на модельку зомби, но не изменяется(остаётся такая же), Нужно чтобы модель которая закреплена за игроком была на нем всегда, когда он играет за Человека (СT или T) а вот когда он заражался, модель менялась соответственно на зомби модель. Еще момент в начале раунда человека может перекинуть из T в CT при этом он так же человек.. модель должна остаться та которая из плагина. Заранее благодарю:)
    #include <amxmodx>
    #include <cstrike>
    #include <fakemeta>
    #include <hamsandwich>

    #pragma semicolon 1

    #define MAX_PLAYERS 32

    #define admin ADMIN_BAN
    #define vip ADMIN_LEVEL_H
    #define lady ADMIN_LEVEL_G

    #define BIT_VALID(%1,%2) ((%1) & (1 << ((%2) - 1)))
    #define BIT_ADD(%1,%2) ((%1) |= (1 << ((%2) - 1)))
    #define BIT_SUB(%1,%2) ((%1) &= ~(1 << ((%2) - 1)))
    #define BIT_NOT_VALID(%1,%2) (~(%1) & (1 << ((%2) - 1)))

    new g_iBitClientAdmin, g_iBitClientVip, g_iBitClientLady, g_iBitCustomModel;

    public plugin_init()
    {
    register_plugin("Admin, Vip and Lady models", "0.3b", "Freedo.m +mod.Leg");
    RegisterHam(Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1);
    register_forward(FM_SetClientKeyValue, "FM_SetClientKeyValue_Pre", 0);
    }

    public plugin_precache()
    {
    precache_model("models/player/lady_teeee/lady_teeee.mdl");
    precache_model("models/player/lady_ctttt/lady_ctttt.mdl");

    precache_model("models/player/admin_teeee/admin_teeee.mdl");
    precache_model("models/player/admin_ctttt/admin_ctttt.mdl");

    precache_model("models/player/vipp_teeee/vipp_teeee.mdl");
    precache_model("models/player/vipp_ctttt/vipp_ctttt.mdl");
    }

    public client_putinserver(id)
    {
    resetBit(id);

    new flags = get_user_flags(id);
    if (flags & lady)
    BIT_ADD(g_iBitClientLady, id);
    else if (flags & admin)
    BIT_ADD(g_iBitClientAdmin, id);
    else if (flags & vip)
    BIT_ADD(g_iBitClientVip, id);
    }

    public client_disconnect(id)
    {
    resetBit(id);
    }
    public resetBit(id)
    {
    BIT_SUB(g_iBitCustomModel, id);
    BIT_SUB(g_iBitClientLady, id);
    BIT_SUB(g_iBitClientAdmin, id);
    BIT_SUB(g_iBitClientVip, id);
    }

    public Ham_PlayerSpawn_Post(id)
    {
    if (is_user_alive(id))
    {
    if(BIT_VALID(g_iBitClientLady, id))
    {
    switch(cs_get_user_team(id))
    {
    case CS_TEAM_T: fm_cs_set_user_model(id, "lady_teeee");
    case CS_TEAM_CT: fm_cs_set_user_model(id, "lady_ctttt");
    }
    }

    else if(BIT_VALID(g_iBitClientAdmin, id))
    {
    switch(cs_get_user_team(id))
    {
    case CS_TEAM_T: fm_cs_set_user_model(id, "admin_teeee");
    case CS_TEAM_CT: fm_cs_set_user_model(id, "admin_ctttt");
    }
    }

    else if(BIT_VALID(g_iBitClientVip, id))
    {
    switch(cs_get_user_team(id))
    {
    case CS_TEAM_T: fm_cs_set_user_model(id, "vipp_teeee");
    case CS_TEAM_CT: fm_cs_set_user_model(id, "vipp_ctttt");
    }
    }
    else fm_cs_reset_user_model(id);
    }

    }

    new g_szPlayerModel[MAX_PLAYERS + 1][32];

    public FM_SetClientKeyValue_Pre(id, const szInfobuffer[], const szKey[])
    {
    if(BIT_VALID(g_iBitCustomModel, id) && equal(szKey, "model"))
    {
    static szCurrentModel[32];
    fm_cs_get_user_model(id, szCurrentModel, charsmax(szCurrentModel));
    if(!equal(szCurrentModel, g_szPlayerModel[id])) fm_cs_set_user_model(id, g_szPlayerModel[id]);
    return FMRES_SUPERCEDE;
    }
    return FMRES_IGNORED;
    }

    stock fm_cs_get_user_model(id, szModel[], szLen) engfunc(EngFunc_InfoKeyValue, engfunc(EngFunc_GetInfoKeyBuffer, id), "model", szModel, szLen);
    stock fm_cs_set_user_model(id, const szModelName[])
    {
    engfunc(EngFunc_SetClientKeyValue, id, engfunc(EngFunc_GetInfoKeyBuffer, id), "model", szModelName);
    copy(g_szPlayerModel[id], charsmax(g_szPlayerModel[]), szModelName);
    BIT_ADD(g_iBitCustomModel, id);
    }

    stock fm_cs_reset_user_model(id)
    {
    BIT_SUB(g_iBitCustomModel, id);
    dllfunc(DLLFunc_ClientUserInfoChanged, id, engfunc(EngFunc_GetInfoKeyBuffer, id));
    }
     
  2. MakapoH. Команда форума

    Регистрация:
    06.02.16
    Сообщения:
    654
    Симпатии:
    241
    Пол:
    Мужской
    Отлавливать заражение игрока и устанавливать модель. Не знаю как работает зомби мод, но какие-нибудь отловы заражения в инклудах есть наверное...
     
  3. 93rus Пользователь

    Регистрация:
    27.02.16
    Сообщения:
    20
    Симпатии:
    2
    Пол:
    Мужской
    Парни, под это ТЗ может, кто поможет за оплату???