Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

VIP/ADMIN Models по ip [оцените]

Статус пользователя soneekk
сообщение 21.2.2015, 20:23
Сообщение #1


Стаж: 13 лет

Сообщений: 335
Благодарностей: 13
Полезность: < 0

ребята переделал plugin Lady Models By Freedo.m чтоб модельки давались по ip/steamid/nick, вроде всё работает но хочу чтоб кто разбирается хорошо подсказал всё ли правильно сделал.

что изменил ?

Скрытый текст
добавил public Check(id),

g_iBitClientAccess изменил на szModelacces[33].

public client_putinserver(id)
{
if(~get_user_flags(id) & ADMIN_LEVEL_G) return;
BIT_ADD(g_iBitClientAccess, id);
}

переделал на

public client_putinserver(id)
{
set_task(1.0, "Check", id);
}


public Ham_PlayerSpawn_Post(id)
{
if(BIT_VALID(g_iBitClientAccess, id) && is_user_alive(id))
{
switch(cs_get_user_team(id))
{
case CS_TEAM_T: fm_cs_set_user_model(id, "ladyadmin_teeee");
case CS_TEAM_CT: fm_cs_set_user_model(id, "ladyadmin_ctttt");
}
}
}

изменил на:

public Ham_PlayerSpawn_Post(id)
{
if(szModelacces[id] && is_user_alive(id))
{
switch(cs_get_user_team(id))
{
case CS_TEAM_T: fm_cs_set_user_model(id, "gign");
case CS_TEAM_CT: fm_cs_set_user_model(id, "gign");
}
}
}

public client_disconnect(id)
{
BIT_SUB(g_iBitClientAccess, id);
BIT_SUB(g_iBitCustomModel, id);
}

изменил на:

public client_disconnect(id)
{
szModelacces[id] = false;
BIT_SUB(g_iBitCustomModel, id);
}


Код:
#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <engine>
#include <amxmisc>
#pragma semicolon 1

#define MAX_PLAYERS 32

#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_iBitClientAccess, g_iBitCustomModel, szModelacces[33], g_Load[81];

public plugin_init()
{
register_plugin("Lady Models", "0.1b", "Freedo.m");
RegisterHam(Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1);
register_forward(FM_SetClientKeyValue, "FM_SetClientKeyValue_Pre", 0);
}

public plugin_cfg()
{
get_configsdir(g_Load, charsmax(g_Load));
formatex(g_Load, charsmax(g_Load), "%s/vip_usermodels.ini", g_Load);
}

public plugin_precache()
{
precache_model("models/player/gign/gign.mdl");
precache_model("models/player/gign/gign.mdl");
}

public client_putinserver(id)
{
set_task(1.0, "Check", id);
}

public Check(id)
{
new szName[32], szSteamID[35], szIP[32];
new szParseText[64], szParseName[35];
new szLine, szNum;

get_user_name(id, szName, charsmax(szName));
get_user_authid(id, szSteamID, charsmax(szSteamID));
get_user_ip(id, szIP, 31,1);

for(szLine=0;read_file(g_Load, szLine, szParseText, charsmax(szParseText), szNum);szLine++)
{
if(szNum > 0 && szParseText[0] != ';')
{
parse(szParseText, szParseName, charsmax(szParseName));

if(equal(szName, szParseName) || equal(szSteamID, szParseName) || equal(szIP, szParseName))
{
szModelacces[id] = true;
break;
}
}
}
}

public client_disconnect(id)
{
szModelacces[id] = false;
BIT_SUB(g_iBitCustomModel, id);
}

public Ham_PlayerSpawn_Post(id)
{
if(szModelacces[id] && is_user_alive(id))
{
switch(cs_get_user_team(id))
{
case CS_TEAM_T: fm_cs_set_user_model(id, "gign");
case CS_TEAM_CT: fm_cs_set_user_model(id, "gign");
}
}
}

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));
}


Отредактировал: soneekk, - 21.2.2015, 20:24
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: