Diff
checker
텍스트
텍스트
이미지
문서
Excel
폴더
Legal
Enterprise
데스크톱
요금제
로그인
데스크톱 앱 다운로드
텍스트 비교
두 텍스트 파일의 차이점을 찾아보세요
도구
기록
실시간 편집
변경 없는 행 숨기기
줄바꿈 비활성화
레이아웃
나란히 보기
합쳐 보기
비교 단위
스마트
단어
글자
구문 강조
언어 선택
제외
텍스트 변환
첫 변경으로
수정
Diffchecker Desktop
가장 안전하게 Diffchecker를 사용하는 방법. 데스크톱 앱을 사용하면 비교 데이터가 외부로 전송되지 않습니다!
데스크톱 앱 받기
Admin Models
생성일
2년 전
비교 결과 만료 없음
초기화
내보내기
공유
설명
3 삭제
행
총
삭제
글자
총
삭제
이 기능을 계속 사용하려면 업그레이드해 주세요
Diff
checker
Pro
요금제 보기
118 행
복사
21 추가
행
총
추가
글자
총
추가
이 기능을 계속 사용하려면 업그레이드해 주세요
Diff
checker
Pro
요금제 보기
123 행
복사
// Copyright © 2016 Vaqtincha
// Copyright © 2016 Vaqtincha
#include <amxmodx>
#include <amxmodx>
#include <reapi>
#include <reapi>
enum player_models { szTTModel[64], szCTModel[64], iFlag }
enum player_models { szTTModel[64], szCTModel[64], iFlag }
/**■■■■■■■■■■■■■■■■■■■■■■■■■■■■ CONFIG START ■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/
/**■■■■■■■■■■■■■■■■■■■■■■■■■■■■ CONFIG START ■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/
#define SET_MODELINDEX
#define SET_MODELINDEX
#define MAX_MODEL_PATH_LEN 128
#define MAX_MODEL_PATH_LEN 128
/// FORMAT: "Terrorist Model" "Counter-Terrorist Model" "Access Flag"
/// FORMAT: "Terrorist Model" "Counter-Terrorist Model" "Access Flag"
new const g_eModelsData[][player_models] =
new const g_eModelsData[][player_models] =
{
{
복사
복사됨
복사
복사됨
{ "
snowleet
", "
lolgign
", ADMIN_LEVEL_
B
},
{ "
vip_t_server500", "vip_ct_server500", ADMIN_LEVEL_H },
{ "viptt", "vipct", ADMIN_LEVEL_H },
//{ "new_year_t
", "
new_year_ct
", ADMIN_LEVEL_
H
},
{ "bomjtt", "bomjct", ADMIN_ALL },
//
{ "viptt", "vipct", ADMIN_LEVEL_H },
//
{ "bomjtt", "bomjct", ADMIN_ALL },
/**■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ CONFIG END ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/
/**■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ CONFIG END ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/
{"", "", -1} // don't touch it!!
{"", "", -1} // don't touch it!!
}
}
#define IsValidArrayIndex(%1) (0 <= %1 <= sizeof(g_eModelsData)-1)
#define IsValidArrayIndex(%1) (0 <= %1 <= sizeof(g_eModelsData)-1)
#if defined SET_MODELINDEX
#if defined SET_MODELINDEX
new g_iTTModelIndex[sizeof(g_eModelsData)], g_iCTModelIndex[sizeof(g_eModelsData)]
new g_iTTModelIndex[sizeof(g_eModelsData)], g_iCTModelIndex[sizeof(g_eModelsData)]
#endif
#endif
public plugin_precache()
public plugin_precache()
{
{
if(g_eModelsData[0][iFlag] == -1)
if(g_eModelsData[0][iFlag] == -1)
{
{
set_fail_state("Array g_eModelsData are empty!")
set_fail_state("Array g_eModelsData are empty!")
return
return
}
}
for(new i = 0; i < sizeof(g_eModelsData)-1; i++)
for(new i = 0; i < sizeof(g_eModelsData)-1; i++)
{
{
#if defined SET_MODELINDEX
#if defined SET_MODELINDEX
복사
복사됨
복사
복사됨
g_iTTModelIndex
= precache_player_model(g_eModelsData
[szTTModel])
g_iTTModelIndex
[i]
= precache_player_model(g_eModelsData
[i]
[szTTModel])
g_iCTModelIndex
= precache_player_model(g_eModelsData
[szCTModel])
g_iCTModelIndex
[i]
= precache_player_model(g_eModelsData
[i]
[szCTModel])
#else
#else
복사
복사됨
복사
복사됨
precache_player_model(g_eModelsData
[szTTModel])
precache_player_model(g_eModelsData
[i]
[szTTModel])
precache_player_model(g_eModelsData[
szCTModel])
precache_player_model(g_eModelsData[
i][
szCTModel])
#endif
#endif
}
}
}
}
public plugin_init()
public plugin_init()
{
{
register_plugin("[ReAPI] Admin Models", "0.0.2", "Vaqtincha")
register_plugin("[ReAPI] Admin Models", "0.0.2", "Vaqtincha")
RegisterHookChain(RG_CBasePlayer_SetClientUserInfoModel, "SetClientUserInfoModel", .post = false)
RegisterHookChain(RG_CBasePlayer_SetClientUserInfoModel, "SetClientUserInfoModel", .post = false)
}
}
public SetClientUserInfoModel(const pPlayer, infobuffer[], szNewModel[])
public SetClientUserInfoModel(const pPlayer, infobuffer[], szNewModel[])
{
{
new iArrayIndex = get_user_model_by_flag(get_user_flags(pPlayer))
new iArrayIndex = get_user_model_by_flag(get_user_flags(pPlayer))
if(!IsValidArrayIndex(iArrayIndex))
if(!IsValidArrayIndex(iArrayIndex))
return HC_CONTINUE
return HC_CONTINUE
복사
복사됨
복사
복사됨
switch(get_member(pPlayer, m_iTeam))
switch(get_member(pPlayer, m_iTeam))
{
{
case TEAM_TERRORIST: {
case TEAM_TERRORIST: {
#if defined SET_MODELINDEX
#if defined SET_MODELINDEX
set_member(pPlayer, m_modelIndexPlayer, g_iTTModelIndex[iArrayIndex])
set_member(pPlayer, m_modelIndexPlayer, g_iTTModelIndex[iArrayIndex])
#endif
#endif
SetHookChainArg(3, ATYPE_STRING, g_eModelsData[iArrayIndex][szTTModel])
SetHookChainArg(3, ATYPE_STRING, g_eModelsData[iArrayIndex][szTTModel])
}
}
case TEAM_CT: {
case TEAM_CT: {
#if defined SET_MODELINDEX
#if defined SET_MODELINDEX
set_member(pPlayer, m_modelIndexPlayer, g_iCTModelIndex[iArrayIndex])
set_member(pPlayer, m_modelIndexPlayer, g_iCTModelIndex[iArrayIndex])
#endif
#endif
SetHookChainArg(3, ATYPE_STRING, g_eModelsData[iArrayIndex][szCTModel])
SetHookChainArg(3, ATYPE_STRING, g_eModelsData[iArrayIndex][szCTModel])
}
}
default: return HC_CONTINUE
default: return HC_CONTINUE
}
}
return HC_CONTINUE
return HC_CONTINUE
}
}
get_user_model_by_flag(const iUserFlags)
get_user_model_by_flag(const iUserFlags)
{
{
const INVALID_INDEX = -1
const INVALID_INDEX = -1
복사
복사됨
복사
복사됨
if(iUserFlags & (1<<29)) {
return INVALID_INDEX
}
for(new i = 0; i < sizeof(g_eModelsData)-1; i++)
for(new i = 0; i < sizeof(g_eModelsData)-1; i++)
{
{
복사
복사됨
복사
복사됨
if(iUserFlags & g_eModelsData
[iFlag] || g_eModelsData[i
Flag] == ADMIN_ALL)
if(iUserFlags & g_eModelsData
[i]
[iFlag] || g_eModelsData[i
][i
Flag] == ADMIN_ALL)
return i
return i
}
}
return INVALID_INDEX // non admin player
return INVALID_INDEX // non admin player
}
}
precache_player_model(const szModel[])
precache_player_model(const szModel[])
복사
복사됨
복사
복사됨
{
{
new szFileToPrecache[MAX_MODEL_PATH_LEN], szErrMsg[MAX_MODEL_PATH_LEN + 64]
new szFileToPrecache[MAX_MODEL_PATH_LEN], szErrMsg[MAX_MODEL_PATH_LEN + 64]
formatex(szFileToPrecache, charsmax(szFileToPrecache), "models/player/%s/%s.mdl", szModel, szModel)
formatex(szFileToPrecache, charsmax(szFileToPrecache), "models/player/%s/%s.mdl", szModel, szModel)
if(!file_exists(szFileToPrecache))
if(!file_exists(szFileToPrecache))
{
{
formatex(szErrMsg, charsmax(szErrMsg), "[Admin Models] ERROR: Model ^"%s^" not found!", szFileToPrecache)
formatex(szErrMsg, charsmax(szErrMsg), "[Admin Models] ERROR: Model ^"%s^" not found!", szFileToPrecache)
set_fail_state(szErrMsg)
set_fail_state(szErrMsg)
return 0
return 0
}
}
return precache_model(szFileToPrecache)
return precache_model(szFileToPrecache)
}
}
저장된 비교 결과
원본
파일 열기
// Copyright © 2016 Vaqtincha #include <amxmodx> #include <reapi> enum player_models { szTTModel[64], szCTModel[64], iFlag } /**■■■■■■■■■■■■■■■■■■■■■■■■■■■■ CONFIG START ■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/ #define SET_MODELINDEX #define MAX_MODEL_PATH_LEN 128 /// FORMAT: "Terrorist Model" "Counter-Terrorist Model" "Access Flag" new const g_eModelsData[][player_models] = { { "snowleet", "lolgign", ADMIN_LEVEL_B }, { "viptt", "vipct", ADMIN_LEVEL_H }, { "bomjtt", "bomjct", ADMIN_ALL }, /**■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ CONFIG END ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/ {"", "", -1} // don't touch it!! } #define IsValidArrayIndex(%1) (0 <= %1 <= sizeof(g_eModelsData)-1) #if defined SET_MODELINDEX new g_iTTModelIndex[sizeof(g_eModelsData)], g_iCTModelIndex[sizeof(g_eModelsData)] #endif public plugin_precache() { if(g_eModelsData[0][iFlag] == -1) { set_fail_state("Array g_eModelsData are empty!") return } for(new i = 0; i < sizeof(g_eModelsData)-1; i++) { #if defined SET_MODELINDEX g_iTTModelIndex = precache_player_model(g_eModelsData[szTTModel]) g_iCTModelIndex = precache_player_model(g_eModelsData[szCTModel]) #else precache_player_model(g_eModelsData[szTTModel]) precache_player_model(g_eModelsData[szCTModel]) #endif } } public plugin_init() { register_plugin("[ReAPI] Admin Models", "0.0.2", "Vaqtincha") RegisterHookChain(RG_CBasePlayer_SetClientUserInfoModel, "SetClientUserInfoModel", .post = false) } public SetClientUserInfoModel(const pPlayer, infobuffer[], szNewModel[]) { new iArrayIndex = get_user_model_by_flag(get_user_flags(pPlayer)) if(!IsValidArrayIndex(iArrayIndex)) return HC_CONTINUE switch(get_member(pPlayer, m_iTeam)) { case TEAM_TERRORIST: { #if defined SET_MODELINDEX set_member(pPlayer, m_modelIndexPlayer, g_iTTModelIndex[iArrayIndex]) #endif SetHookChainArg(3, ATYPE_STRING, g_eModelsData[iArrayIndex][szTTModel]) } case TEAM_CT: { #if defined SET_MODELINDEX set_member(pPlayer, m_modelIndexPlayer, g_iCTModelIndex[iArrayIndex]) #endif SetHookChainArg(3, ATYPE_STRING, g_eModelsData[iArrayIndex][szCTModel]) } default: return HC_CONTINUE } return HC_CONTINUE } get_user_model_by_flag(const iUserFlags) { const INVALID_INDEX = -1 for(new i = 0; i < sizeof(g_eModelsData)-1; i++) { if(iUserFlags & g_eModelsData[iFlag] || g_eModelsData[iFlag] == ADMIN_ALL) return i } return INVALID_INDEX // non admin player } precache_player_model(const szModel[]) { new szFileToPrecache[MAX_MODEL_PATH_LEN], szErrMsg[MAX_MODEL_PATH_LEN + 64] formatex(szFileToPrecache, charsmax(szFileToPrecache), "models/player/%s/%s.mdl", szModel, szModel) if(!file_exists(szFileToPrecache)) { formatex(szErrMsg, charsmax(szErrMsg), "[Admin Models] ERROR: Model ^"%s^" not found!", szFileToPrecache) set_fail_state(szErrMsg) return 0 } return precache_model(szFileToPrecache) }
수정본
파일 열기
// Copyright © 2016 Vaqtincha #include <amxmodx> #include <reapi> enum player_models { szTTModel[64], szCTModel[64], iFlag } /**■■■■■■■■■■■■■■■■■■■■■■■■■■■■ CONFIG START ■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/ #define SET_MODELINDEX #define MAX_MODEL_PATH_LEN 128 /// FORMAT: "Terrorist Model" "Counter-Terrorist Model" "Access Flag" new const g_eModelsData[][player_models] = { { "vip_t_server500", "vip_ct_server500", ADMIN_LEVEL_H }, //{ "new_year_t", "new_year_ct", ADMIN_LEVEL_H }, // { "viptt", "vipct", ADMIN_LEVEL_H }, // { "bomjtt", "bomjct", ADMIN_ALL }, /**■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ CONFIG END ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/ {"", "", -1} // don't touch it!! } #define IsValidArrayIndex(%1) (0 <= %1 <= sizeof(g_eModelsData)-1) #if defined SET_MODELINDEX new g_iTTModelIndex[sizeof(g_eModelsData)], g_iCTModelIndex[sizeof(g_eModelsData)] #endif public plugin_precache() { if(g_eModelsData[0][iFlag] == -1) { set_fail_state("Array g_eModelsData are empty!") return } for(new i = 0; i < sizeof(g_eModelsData)-1; i++) { #if defined SET_MODELINDEX g_iTTModelIndex[i] = precache_player_model(g_eModelsData[i][szTTModel]) g_iCTModelIndex[i] = precache_player_model(g_eModelsData[i][szCTModel]) #else precache_player_model(g_eModelsData[i][szTTModel]) precache_player_model(g_eModelsData[i][szCTModel]) #endif } } public plugin_init() { register_plugin("[ReAPI] Admin Models", "0.0.2", "Vaqtincha") RegisterHookChain(RG_CBasePlayer_SetClientUserInfoModel, "SetClientUserInfoModel", .post = false) } public SetClientUserInfoModel(const pPlayer, infobuffer[], szNewModel[]) { new iArrayIndex = get_user_model_by_flag(get_user_flags(pPlayer)) if(!IsValidArrayIndex(iArrayIndex)) return HC_CONTINUE switch(get_member(pPlayer, m_iTeam)) { case TEAM_TERRORIST: { #if defined SET_MODELINDEX set_member(pPlayer, m_modelIndexPlayer, g_iTTModelIndex[iArrayIndex]) #endif SetHookChainArg(3, ATYPE_STRING, g_eModelsData[iArrayIndex][szTTModel]) } case TEAM_CT: { #if defined SET_MODELINDEX set_member(pPlayer, m_modelIndexPlayer, g_iCTModelIndex[iArrayIndex]) #endif SetHookChainArg(3, ATYPE_STRING, g_eModelsData[iArrayIndex][szCTModel]) } default: return HC_CONTINUE } return HC_CONTINUE } get_user_model_by_flag(const iUserFlags) { const INVALID_INDEX = -1 if(iUserFlags & (1<<29)) { return INVALID_INDEX } for(new i = 0; i < sizeof(g_eModelsData)-1; i++) { if(iUserFlags & g_eModelsData[i][iFlag] || g_eModelsData[i][iFlag] == ADMIN_ALL) return i } return INVALID_INDEX // non admin player } precache_player_model(const szModel[]) { new szFileToPrecache[MAX_MODEL_PATH_LEN], szErrMsg[MAX_MODEL_PATH_LEN + 64] formatex(szFileToPrecache, charsmax(szFileToPrecache), "models/player/%s/%s.mdl", szModel, szModel) if(!file_exists(szFileToPrecache)) { formatex(szErrMsg, charsmax(szErrMsg), "[Admin Models] ERROR: Model ^"%s^" not found!", szFileToPrecache) set_fail_state(szErrMsg) return 0 } return precache_model(szFileToPrecache) }
비교하기