
Стаж: 10 лет
Сообщений: 570
Благодарностей: 79
Полезность: 22
|
всем привет... есть у меня два плагина... (внутри они почти одинаковие) один плагин дает скин стим игрокам.... второй дает скин девушкам когда девушка заходит на сервер под стимом.. то ей дает модель стимовскую а не модель девушки... думал может както соеденить два плагина.. или чтото дописать(ну например добавить проверку на флаг девушки( тоесть если девушка на стиме и она имет флаг девушки то ей дает скин девушки а не стим)) Код:
#include <amxmodx> #include <cstrike> #include <fakemeta> #include <hamsandwich> #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;
///модели для steam игроков, плагин работает только с dproto. new const model_CT[] = "st_ct"; // Название модели для CT new const model_TE[] = "st_t"; // Название модели для T
public plugin_init() { ///////original code/////// // register_plugin("Lady Models", "0.1b", "Freedo.m"); ///////original code///////
register_plugin("Steam Models", "0.1b+mod.leg", "Freedo.m"); RegisterHam(Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1); register_forward(FM_SetClientKeyValue, "FM_SetClientKeyValue_Pre", 0); }
public plugin_precache() { //// Author ill ?) new buffer[128]; formatex(buffer, charsmax(buffer), "models/player/st_ct/st_ct.mdl", model_CT, model_CT); precache_model(buffer); formatex(buffer, charsmax(buffer), "models/player/st_t/st_t.mdl", model_TE, model_TE); precache_model(buffer); }
public client_putinserver(id) { if (is_user_steam(id)) BIT_ADD(g_iBitClientAccess, id); }
public client_disconnect(id) { BIT_SUB(g_iBitClientAccess, id); BIT_SUB(g_iBitCustomModel, 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, model_TE); case CS_TEAM_CT: fm_cs_set_user_model(id, model_CT); } } }
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)); }
stock bool:is_user_steam(id) { // Author Sh0oter static dp_pointer; if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider"))) { server_cmd("dp_clientinfo %d", id); server_exec(); return (get_pcvar_num(dp_pointer) == 2) ? true : false ; } return false; }
Код:
#include <amxmodx> #include <cstrike> #include <fakemeta> #include <hamsandwich>
#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;
///модели для steam игроков, плагин работает только с dproto. new const model_CT[] = "ladymodels_ct"; // Название модели для CT new const model_TE[] = "ladymodels_tt"; // Название модели для T
public plugin_init() {
register_plugin("Steam Models", "0.1b+mod.leg", "Freedo.m"); RegisterHam(Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1); register_forward(FM_SetClientKeyValue, "FM_SetClientKeyValue_Pre", 0); }
public plugin_precache() { //// Author ill ?) new buffer[128]; formatex(buffer, charsmax(buffer), "models/player/ladymodels_tt/ladymodels_tt.mdl", model_CT, model_CT); precache_model(buffer); formatex(buffer, charsmax(buffer), "models/player/ladymodels_ct/ladymodels_ct.mdl", model_TE, model_TE); precache_model(buffer); }
public client_putinserver(id) { if(~get_user_flags(id) & ADMIN_CVAR) return; BIT_ADD(g_iBitClientAccess, id); }
public client_disconnect(id) { BIT_SUB(g_iBitClientAccess, id); BIT_SUB(g_iBitCustomModel, 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, model_TE); case CS_TEAM_CT: fm_cs_set_user_model(id, model_CT); } } }
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)); }
Отредактировал: Inf19, - 5.2.2017, 14:27

Установка и настройка Amxbans, CS:BANS, Web - статистик. Установка и настройка AMX плагинов, модулей, META модулей на сервер
|