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

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

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

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

Помогите сделать шапки только для админов

Статус пользователя evilforce
сообщение 6.8.2014, 13:50
Сообщение #1
Стаж: 13 лет

Сообщений: 33
Благодарностей: 2
Полезность: 48

Код:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>

new g_bwEnt[33]

#define PLUG_NAME "Evilforce Hats"
#define PLUG_AUTH "trofian"
#define PLUG_VERS "1.0"

#define menusize 1024

#define HATS_PATH "models/next21_hats"

new HatFile[128]
new MenuPages, TotalHats
new CurrentMenu[33]

new UserHaveHatWith[33] = 'o' // s - skin, m - two models, n - normal hat, o - not connected
new UserHatModel[33][256]

#define MAX_HATS 64
new HATMDL[MAX_HATS][128]
new HATNAME[MAX_HATS][128]

public plugin_init()
{
register_plugin(PLUG_NAME, PLUG_VERS, PLUG_AUTH)
register_concmd("amx_givehat", "Give_Hat", ADMIN_RCON, "<nick> <mdl #>")
register_concmd("amx_removehats", "Remove_Hat", ADMIN_RCON, " - Removes hats from everyone.")
register_menucmd(register_menuid("\yHat Menu: [Page"),(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9),"MenuCommand")
register_clcmd("say /hats", "ShowMenu", -1, "Shows Knife menu")
register_clcmd("hats", "ShowMenu", -1, "Shows Knife menu")
register_event("ResetHUD", "ResetHUD", "be")
}

public ResetHUD(id) set_task(2.0, "reload_hat", id)

public reload_hat(id)
{
if(!is_user_alive(id))
return

new CsTeams:team = cs_get_user_team(id)

if(!pev_valid(g_bwEnt[id]))
return

if(UserHaveHatWith[id] == 's')
{
if(team == CS_TEAM_CT)
set_pev(g_bwEnt[id], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[id], pev_skin, 0)
}
if(UserHaveHatWith[id] == 'm')
{
new hatmodel[256]

if(team == CS_TEAM_CT)
formatex(hatmodel, charsmax(hatmodel), "%s/c_%s", HATS_PATH, UserHatModel[id])
else if(team == CS_TEAM_T)
formatex(hatmodel, charsmax(hatmodel), "%s/t_%s", HATS_PATH, UserHatModel[id])

engfunc(EngFunc_SetModel, g_bwEnt[id], hatmodel)
}
}

public ShowMenu(id)
{
CurrentMenu[id] = 1
ShowHats(id)
return PLUGIN_HANDLED
}

public ShowHats(id)
{
new keys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9)

new szMenuBody[menusize + 1], WpnID
new nLen = format(szMenuBody, menusize, "\yHat Menu: [Page %i/%i]^n",CurrentMenu[id],MenuPages)

// Get Hat Names And Add Them To The List
for (new hatid=0; hatid < 8; hatid++) {
WpnID = ((CurrentMenu[id] * 8) + hatid - 8)
if (WpnID < TotalHats) {
new hatText[256]
if(WpnID > 0)
{
if(HATNAME[WpnID][0] == 's')
format(hatText, charsmax(hatText), "\y%s \w[\rцвет команды\w]", HATNAME[WpnID][1])
else if(HATNAME[WpnID][0] == 'm')
format(hatText, charsmax(hatText), "\y%s \w[\rмодель команды\w]", HATNAME[WpnID][1])
else
format(hatText, charsmax(hatText), "\y%s", HATNAME[WpnID])
}
else
format(hatText, charsmax(hatText), "\r%s", HATNAME[WpnID])
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w %i. %s",hatid + 1,hatText)
}
}

// Next Page And Previous/Close
if (CurrentMenu[id] == MenuPages) {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n^n\d9. Следующая")
} else {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n^n\w9. Следующая")
}

if (CurrentMenu[id] > 1) {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w0. Предудыщая")
} else {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w0. Выход")
}
show_menu(id, keys, szMenuBody, -1)
return PLUGIN_HANDLED
}
public MenuCommand(id, key)
{
switch(key)
{
case 8: //9 - [Next Page]
{
if (CurrentMenu[id] < MenuPages) CurrentMenu[id]++
ShowHats(id)
return PLUGIN_HANDLED
}
case 9: //0 - [Close]
{
CurrentMenu[id]--
if (CurrentMenu[id] > 0) ShowHats(id)
return PLUGIN_HANDLED
}
default:
{
new HatID = ((CurrentMenu[id] * 8) + key - 8)
if (HatID < TotalHats) {
Set_Hat(id,HatID,id)
}
}
}
return PLUGIN_HANDLED
}

public plugin_precache()
{
new cfgDir[32]
get_configsdir(cfgDir,31)
formatex(HatFile,63,"%s/HatList.ini",cfgDir)
command_load()

for (new i = 1; i < TotalHats; ++i) {
if(HATNAME[i][0] == 'm')
{
new CurrFile[256]

formatex(CurrFile, charsmax(CurrFile), "%s/t_%s", HATS_PATH, HATMDL[i])
if(file_exists(CurrFile)) precache_model(CurrFile)

formatex(CurrFile, charsmax(CurrFile), "%s/c_%s", HATS_PATH, HATMDL[i])
if(file_exists(CurrFile)) precache_model(CurrFile)
}
else
{
new CurrFile[256]
formatex(CurrFile, charsmax(CurrFile), "%s/%s", HATS_PATH, HATMDL[i])

if (file_exists (CurrFile))
{
precache_model(CurrFile)
server_print("[%s] Precached %s",PLUG_NAME,CurrFile)
}
else
server_print("[%s] Failed to precache %s",PLUG_NAME,CurrFile)
}
}
}

public client_connect(id)
{
if(g_bwEnt[id] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[id])
g_bwEnt[id] = 0
}

public client_disconnect(id)
{
if(g_bwEnt[id] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[id])
g_bwEnt[id] = 0
UserHaveHatWith[id] = 'o'
formatex(UserHatModel[id], 255, "!NULL")
}

public Give_Hat(id)
{
new smodelnum[5], name[32]
read_argv(1,name,31)
read_argv(2,smodelnum,4)

new player = cmd_target(id,name,2)
if (!player) {
print_col_chat(id, "!g[%s] !yИгрок с таким именем не найден", PLUG_NAME)
return PLUGIN_HANDLED
}

new imodelnum = (str_to_num(smodelnum))
if (imodelnum > MAX_HATS) return PLUGIN_HANDLED

Set_Hat(player,imodelnum,id)

return PLUGIN_CONTINUE
}

public Remove_Hat(id)
{
for (new i = 0; i < get_maxplayers(); ++i) {
if (is_user_connected(i) && g_bwEnt[i] > 0) {
engfunc(EngFunc_RemoveEntity,g_bwEnt[i])
g_bwEnt[i] = 0
}
}
client_print(id,print_chat,"[%s] Removed hats from everyone.",PLUG_NAME)
return PLUGIN_CONTINUE
}

public Set_Hat(player,imodelnum,targeter)
{
new name[32]
get_user_name(player, name, 31)
if (imodelnum == 0) {
if(g_bwEnt[player] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[player])
g_bwEnt[player] = 0
print_col_chat(targeter, "!g[%s] !yШапка снята с !t%s", PLUG_NAME, name)

} else {
if(g_bwEnt[player] < 1) {
g_bwEnt[player] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
if(g_bwEnt[player] > 0)
{
UserHaveHatWith[player] = 'n'
new mdlName[256]
new CsTeams:team = cs_get_user_team(player)

formatex(UserHatModel[player], 255, "%s", HATMDL[imodelnum])

set_pev(g_bwEnt[player], pev_movetype, MOVETYPE_FOLLOW)
set_pev(g_bwEnt[player], pev_aiment, player)
set_pev(g_bwEnt[player], pev_rendermode, kRenderNormal)
set_pev(g_bwEnt[player], pev_renderamt, 0.0)

if(HATNAME[imodelnum][0] == 'm')
{
UserHaveHatWith[player] = 'm'

if(team == CS_TEAM_CT)
formatex(mdlName, charsmax(mdlName), "%s/c_%s", HATS_PATH, HATMDL[imodelnum])
else if(team == CS_TEAM_T)
formatex(mdlName, charsmax(mdlName), "%s/t_%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}
else
{
format(mdlName, charsmax(mdlName), "%s/%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}

if(HATNAME[imodelnum][0] == 's')
{
UserHaveHatWith[player] = 's'

if(team == CS_TEAM_CT)
set_pev(g_bwEnt[player], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[player], pev_skin, 0)
}
}
} else {
UserHaveHatWith[player] = 'n'
new mdlName[256]
new CsTeams:team = cs_get_user_team(player)
formatex(UserHatModel[player], 255, "%s", HATMDL[imodelnum])

if(HATNAME[imodelnum][0] == 'm')
{
UserHaveHatWith[player] = 'm'
if(team == CS_TEAM_CT)
formatex(mdlName, charsmax(mdlName), "%s/c_%s", HATS_PATH, HATMDL[imodelnum])
else if(team == CS_TEAM_T)
formatex(mdlName, charsmax(mdlName), "%s/t_%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}
else
{
formatex(mdlName, charsmax(mdlName), "%s/%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}

if(HATNAME[imodelnum][0] == 's')
{
UserHaveHatWith[player] = 's'

if(team == CS_TEAM_CT)
set_pev(g_bwEnt[player], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[player], pev_skin, 0)
}
}
if(HATNAME[imodelnum][0] == 's' || HATNAME[imodelnum][0] == 'm')
print_col_chat(targeter, "!g[%s] !yШапку !g%s !yодел !t%s", PLUG_NAME, HATNAME[imodelnum][1],name)
else
print_col_chat(targeter, "!g[%s] !yШапку !g%s !yодел !t%s", PLUG_NAME, HATNAME[imodelnum],name)
}
}

public command_load()
{
if(file_exists(HatFile)) {
HATMDL[0] = ""
HATNAME[0] = "Снять шапку"
TotalHats = 1
new sfLineData[128]
new file = fopen(HatFile,"rt")
while(file && !feof(file)) {
fgets(file,sfLineData,127)

// Skip Comment and Empty Lines
if (containi(sfLineData,";") > -1) continue

// BREAK IT UP!
parse(sfLineData, HATMDL[TotalHats],40,HATNAME[TotalHats],40)

TotalHats += 1
if(TotalHats >= MAX_HATS) {
server_print("[%s] Reached hat limit",PLUG_NAME)
break
}
}
if(file) fclose(file)
}
MenuPages = floatround((TotalHats / 8.0), floatround_ceil)
server_print("[%s] Loaded %i hats, Generated %i pages)",PLUG_NAME,TotalHats,MenuPages)
}

stock print_col_chat(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!t", "^3") // Team Color

if (id)
players[0] = id
else
get_players(players, count, "ch")

{
for ( new i = 0; i < count; i++ )
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i])
write_string(msg)
message_end()
}
}
}
}


Цитата(evilforce @ 6.8.2014, 14:48) *
Код:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>

new g_bwEnt[33]

#define PLUG_NAME "Evilforce Hats"
#define PLUG_AUTH "trofian"
#define PLUG_VERS "1.0"

#define menusize 1024

#define HATS_PATH "models/next21_hats"

new HatFile[128]
new MenuPages, TotalHats
new CurrentMenu[33]

new UserHaveHatWith[33] = 'o' // s - skin, m - two models, n - normal hat, o - not connected
new UserHatModel[33][256]

#define MAX_HATS 64
new HATMDL[MAX_HATS][128]
new HATNAME[MAX_HATS][128]

public plugin_init()
{
register_plugin(PLUG_NAME, PLUG_VERS, PLUG_AUTH)
register_concmd("amx_givehat", "Give_Hat", ADMIN_RCON, "<nick> <mdl #>")
register_concmd("amx_removehats", "Remove_Hat", ADMIN_RCON, " - Removes hats from everyone.")
register_menucmd(register_menuid("\yHat Menu: [Page"),(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9),"MenuCommand")
register_clcmd("say /hats", "ShowMenu", -1, "Shows Knife menu")
register_clcmd("hats", "ShowMenu", -1, "Shows Knife menu")
register_event("ResetHUD", "ResetHUD", "be")
}

public ResetHUD(id) set_task(2.0, "reload_hat", id)

public reload_hat(id)
{
if(!is_user_alive(id))
return

new CsTeams:team = cs_get_user_team(id)

if(!pev_valid(g_bwEnt[id]))
return

if(UserHaveHatWith[id] == 's')
{
if(team == CS_TEAM_CT)
set_pev(g_bwEnt[id], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[id], pev_skin, 0)
}
if(UserHaveHatWith[id] == 'm')
{
new hatmodel[256]

if(team == CS_TEAM_CT)
formatex(hatmodel, charsmax(hatmodel), "%s/c_%s", HATS_PATH, UserHatModel[id])
else if(team == CS_TEAM_T)
formatex(hatmodel, charsmax(hatmodel), "%s/t_%s", HATS_PATH, UserHatModel[id])

engfunc(EngFunc_SetModel, g_bwEnt[id], hatmodel)
}
}

public ShowMenu(id)
{
CurrentMenu[id] = 1
ShowHats(id)
return PLUGIN_HANDLED
}

public ShowHats(id)
{
new keys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9)

new szMenuBody[menusize + 1], WpnID
new nLen = format(szMenuBody, menusize, "\yHat Menu: [Page %i/%i]^n",CurrentMenu[id],MenuPages)

// Get Hat Names And Add Them To The List
for (new hatid=0; hatid < 8; hatid++) {
WpnID = ((CurrentMenu[id] * 8) + hatid - 8)
if (WpnID < TotalHats) {
new hatText[256]
if(WpnID > 0)
{
if(HATNAME[WpnID][0] == 's')
format(hatText, charsmax(hatText), "\y%s \w[\rцвет команды\w]", HATNAME[WpnID][1])
else if(HATNAME[WpnID][0] == 'm')
format(hatText, charsmax(hatText), "\y%s \w[\rмодель команды\w]", HATNAME[WpnID][1])
else
format(hatText, charsmax(hatText), "\y%s", HATNAME[WpnID])
}
else
format(hatText, charsmax(hatText), "\r%s", HATNAME[WpnID])
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w %i. %s",hatid + 1,hatText)
}
}

// Next Page And Previous/Close
if (CurrentMenu[id] == MenuPages) {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n^n\d9. Следующая")
} else {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n^n\w9. Следующая")
}

if (CurrentMenu[id] > 1) {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w0. Предудыщая")
} else {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w0. Выход")
}
show_menu(id, keys, szMenuBody, -1)
return PLUGIN_HANDLED
}
public MenuCommand(id, key)
{
switch(key)
{
case 8: //9 - [Next Page]
{
if (CurrentMenu[id] < MenuPages) CurrentMenu[id]++
ShowHats(id)
return PLUGIN_HANDLED
}
case 9: //0 - [Close]
{
CurrentMenu[id]--
if (CurrentMenu[id] > 0) ShowHats(id)
return PLUGIN_HANDLED
}
default:
{
new HatID = ((CurrentMenu[id] * 8) + key - 8)
if (HatID < TotalHats) {
Set_Hat(id,HatID,id)
}
}
}
return PLUGIN_HANDLED
}

public plugin_precache()
{
new cfgDir[32]
get_configsdir(cfgDir,31)
formatex(HatFile,63,"%s/HatList.ini",cfgDir)
command_load()

for (new i = 1; i < TotalHats; ++i) {
if(HATNAME[i][0] == 'm')
{
new CurrFile[256]

formatex(CurrFile, charsmax(CurrFile), "%s/t_%s", HATS_PATH, HATMDL[i])
if(file_exists(CurrFile)) precache_model(CurrFile)

formatex(CurrFile, charsmax(CurrFile), "%s/c_%s", HATS_PATH, HATMDL[i])
if(file_exists(CurrFile)) precache_model(CurrFile)
}
else
{
new CurrFile[256]
formatex(CurrFile, charsmax(CurrFile), "%s/%s", HATS_PATH, HATMDL[i])

if (file_exists (CurrFile))
{
precache_model(CurrFile)
server_print("[%s] Precached %s",PLUG_NAME,CurrFile)
}
else
server_print("[%s] Failed to precache %s",PLUG_NAME,CurrFile)
}
}
}

public client_connect(id)
{
if(g_bwEnt[id] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[id])
g_bwEnt[id] = 0
}

public client_disconnect(id)
{
if(g_bwEnt[id] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[id])
g_bwEnt[id] = 0
UserHaveHatWith[id] = 'o'
formatex(UserHatModel[id], 255, "!NULL")
}

public Give_Hat(id)
{
new smodelnum[5], name[32]
read_argv(1,name,31)
read_argv(2,smodelnum,4)

new player = cmd_target(id,name,2)
if (!player) {
print_col_chat(id, "!g[%s] !yИгрок с таким именем не найден", PLUG_NAME)
return PLUGIN_HANDLED
}

new imodelnum = (str_to_num(smodelnum))
if (imodelnum > MAX_HATS) return PLUGIN_HANDLED

Set_Hat(player,imodelnum,id)

return PLUGIN_CONTINUE
}

public Remove_Hat(id)
{
for (new i = 0; i < get_maxplayers(); ++i) {
if (is_user_connected(i) && g_bwEnt[i] > 0) {
engfunc(EngFunc_RemoveEntity,g_bwEnt[i])
g_bwEnt[i] = 0
}
}
client_print(id,print_chat,"[%s] Removed hats from everyone.",PLUG_NAME)
return PLUGIN_CONTINUE
}

public Set_Hat(player,imodelnum,targeter)
{
new name[32]
get_user_name(player, name, 31)
if (imodelnum == 0) {
if(g_bwEnt[player] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[player])
g_bwEnt[player] = 0
print_col_chat(targeter, "!g[%s] !yШапка снята с !t%s", PLUG_NAME, name)

} else {
if(g_bwEnt[player] < 1) {
g_bwEnt[player] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
if(g_bwEnt[player] > 0)
{
UserHaveHatWith[player] = 'n'
new mdlName[256]
new CsTeams:team = cs_get_user_team(player)

formatex(UserHatModel[player], 255, "%s", HATMDL[imodelnum])

set_pev(g_bwEnt[player], pev_movetype, MOVETYPE_FOLLOW)
set_pev(g_bwEnt[player], pev_aiment, player)
set_pev(g_bwEnt[player], pev_rendermode, kRenderNormal)
set_pev(g_bwEnt[player], pev_renderamt, 0.0)

if(HATNAME[imodelnum][0] == 'm')
{
UserHaveHatWith[player] = 'm'

if(team == CS_TEAM_CT)
formatex(mdlName, charsmax(mdlName), "%s/c_%s", HATS_PATH, HATMDL[imodelnum])
else if(team == CS_TEAM_T)
formatex(mdlName, charsmax(mdlName), "%s/t_%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}
else
{
format(mdlName, charsmax(mdlName), "%s/%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}

if(HATNAME[imodelnum][0] == 's')
{
UserHaveHatWith[player] = 's'

if(team == CS_TEAM_CT)
set_pev(g_bwEnt[player], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[player], pev_skin, 0)
}
}
} else {
UserHaveHatWith[player] = 'n'
new mdlName[256]
new CsTeams:team = cs_get_user_team(player)
formatex(UserHatModel[player], 255, "%s", HATMDL[imodelnum])

if(HATNAME[imodelnum][0] == 'm')
{
UserHaveHatWith[player] = 'm'
if(team == CS_TEAM_CT)
formatex(mdlName, charsmax(mdlName), "%s/c_%s", HATS_PATH, HATMDL[imodelnum])
else if(team == CS_TEAM_T)
formatex(mdlName, charsmax(mdlName), "%s/t_%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}
else
{
formatex(mdlName, charsmax(mdlName), "%s/%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}

if(HATNAME[imodelnum][0] == 's')
{
UserHaveHatWith[player] = 's'

if(team == CS_TEAM_CT)
set_pev(g_bwEnt[player], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[player], pev_skin, 0)
}
}
if(HATNAME[imodelnum][0] == 's' || HATNAME[imodelnum][0] == 'm')
print_col_chat(targeter, "!g[%s] !yШапку !g%s !yодел !t%s", PLUG_NAME, HATNAME[imodelnum][1],name)
else
print_col_chat(targeter, "!g[%s] !yШапку !g%s !yодел !t%s", PLUG_NAME, HATNAME[imodelnum],name)
}
}

public command_load()
{
if(file_exists(HatFile)) {
HATMDL[0] = ""
HATNAME[0] = "Снять шапку"
TotalHats = 1
new sfLineData[128]
new file = fopen(HatFile,"rt")
while(file && !feof(file)) {
fgets(file,sfLineData,127)

// Skip Comment and Empty Lines
if (containi(sfLineData,";") > -1) continue

// BREAK IT UP!
parse(sfLineData, HATMDL[TotalHats],40,HATNAME[TotalHats],40)

TotalHats += 1
if(TotalHats >= MAX_HATS) {
server_print("[%s] Reached hat limit",PLUG_NAME)
break
}
}
if(file) fclose(file)
}
MenuPages = floatround((TotalHats / 8.0), floatround_ceil)
server_print("[%s] Loaded %i hats, Generated %i pages)",PLUG_NAME,TotalHats,MenuPages)
}

stock print_col_chat(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!t", "^3") // Team Color

if (id)
players[0] = id
else
get_players(players, count, "ch")

{
for ( new i = 0; i < count; i++ )
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i])
write_string(msg)
message_end()
}
}
}
}


пробывал ставить непомагает
#define ADMIN ADMIN_LEVEL_F
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя MiXa
сообщение 6.8.2014, 14:19
Сообщение #2


Стаж: 12 лет

Сообщений: 415
Благодарностей: 91
Полезность: 181

попробуй так:

строка 40
Код:
public reload_hat(id)
{
if(!is_user_alive(id))
return

>>
Код:

#define ADMIN_FLAG ADMIN_LEVEL_F

public reload_hat(id)
{
if(!is_user_alive(id) && !get_user_flags(id) && ADMIN_FLAG)
return


Отредактировал: MiXa, - 6.8.2014, 14:20


Допомога з встановлення / налаштування / оновлення за $ :>>> Сервери \ Моди \ Плагіни \ Модулі
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя evilforce
сообщение 6.8.2014, 14:55
Сообщение #3
Стаж: 13 лет

Сообщений: 33
Благодарностей: 2
Полезность: 48

Цитата(MiXa @ 6.8.2014, 15:19) *
попробуй так:

строка 40
Код:
public reload_hat(id)
{
if(!is_user_alive(id))
return

>>
Код:

#define ADMIN_FLAG ADMIN_LEVEL_F

public reload_hat(id)
{
if(!is_user_alive(id) && !get_user_flags(id) && ADMIN_FLAG)
return


Код:


#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>

new g_bwEnt[33]

#define PLUG_NAME "Evilforce Hats"
#define PLUG_AUTH "trofian"
#define PLUG_VERS "1.0"

#define menusize 1024

#define HATS_PATH "models/next21_hats"

new HatFile[128]
new MenuPages, TotalHats
new CurrentMenu[33]

new UserHaveHatWith[33] = 'o' // s - skin, m - two models, n - normal hat, o - not connected
new UserHatModel[33][256]

#define MAX_HATS 64
new HATMDL[MAX_HATS][128]
new HATNAME[MAX_HATS][128]

public plugin_init()
{
register_plugin(PLUG_NAME, PLUG_VERS, PLUG_AUTH)
register_concmd("amx_givehat", "Give_Hat", ADMIN_RCON, "<nick> <mdl #>")
register_concmd("amx_removehats", "Remove_Hat", ADMIN_RCON, " - Removes hats from everyone.")
register_menucmd(register_menuid("\yHat Menu: [Page"),(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9),"MenuCommand")
register_clcmd("say /hats", "ShowMenu", -1, "Shows Knife menu")
register_clcmd("hats", "ShowMenu", -1, "Shows Knife menu")
register_event("ResetHUD", "ResetHUD", "be")
}

public ResetHUD(id) set_task(2.0, "reload_hat", id)

#define ADMIN_FLAG ADMIN_LEVEL_F

public reload_hat(id)
{
if(!is_user_alive(id) && !get_user_flags(id) && ADMIN_FLAG)
return

new CsTeams:team = cs_get_user_team(id)

if(!pev_valid(g_bwEnt[id]))
return

if(UserHaveHatWith[id] == 's')
{
if(team == CS_TEAM_CT)
set_pev(g_bwEnt[id], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[id], pev_skin, 0)
}
if(UserHaveHatWith[id] == 'm')
{
new hatmodel[256]

if(team == CS_TEAM_CT)
formatex(hatmodel, charsmax(hatmodel), "%s/c_%s", HATS_PATH, UserHatModel[id])
else if(team == CS_TEAM_T)
formatex(hatmodel, charsmax(hatmodel), "%s/t_%s", HATS_PATH, UserHatModel[id])

engfunc(EngFunc_SetModel, g_bwEnt[id], hatmodel)
}
}

public ShowMenu(id)
{
CurrentMenu[id] = 1
ShowHats(id)
return PLUGIN_HANDLED
}

public ShowHats(id)
{
new keys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9)

new szMenuBody[menusize + 1], WpnID
new nLen = format(szMenuBody, menusize, "\yHat Menu: [Page %i/%i]^n",CurrentMenu[id],MenuPages)

// Get Hat Names And Add Them To The List
for (new hatid=0; hatid < 8; hatid++) {
WpnID = ((CurrentMenu[id] * 8) + hatid - 8)
if (WpnID < TotalHats) {
new hatText[256]
if(WpnID > 0)
{
if(HATNAME[WpnID][0] == 's')
format(hatText, charsmax(hatText), "\y%s \w[\rцвет команды\w]", HATNAME[WpnID][1])
else if(HATNAME[WpnID][0] == 'm')
format(hatText, charsmax(hatText), "\y%s \w[\rмодель команды\w]", HATNAME[WpnID][1])
else
format(hatText, charsmax(hatText), "\y%s", HATNAME[WpnID])
}
else
format(hatText, charsmax(hatText), "\r%s", HATNAME[WpnID])
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w %i. %s",hatid + 1,hatText)
}
}

// Next Page And Previous/Close
if (CurrentMenu[id] == MenuPages) {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n^n\d9. Следующая")
} else {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n^n\w9. Следующая")
}

if (CurrentMenu[id] > 1) {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w0. Предудыщая")
} else {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w0. Выход")
}
show_menu(id, keys, szMenuBody, -1)
return PLUGIN_HANDLED
}
public MenuCommand(id, key)
{
switch(key)
{
case 8: //9 - [Next Page]
{
if (CurrentMenu[id] < MenuPages) CurrentMenu[id]++
ShowHats(id)
return PLUGIN_HANDLED
}
case 9: //0 - [Close]
{
CurrentMenu[id]--
if (CurrentMenu[id] > 0) ShowHats(id)
return PLUGIN_HANDLED
}
default:
{
new HatID = ((CurrentMenu[id] * 8) + key - 8)
if (HatID < TotalHats) {
Set_Hat(id,HatID,id)
}
}
}
return PLUGIN_HANDLED
}

public plugin_precache()
{
new cfgDir[32]
get_configsdir(cfgDir,31)
formatex(HatFile,63,"%s/HatList.ini",cfgDir)
command_load()

for (new i = 1; i < TotalHats; ++i) {
if(HATNAME[i][0] == 'm')
{
new CurrFile[256]

formatex(CurrFile, charsmax(CurrFile), "%s/t_%s", HATS_PATH, HATMDL[i])
if(file_exists(CurrFile)) precache_model(CurrFile)

formatex(CurrFile, charsmax(CurrFile), "%s/c_%s", HATS_PATH, HATMDL[i])
if(file_exists(CurrFile)) precache_model(CurrFile)
}
else
{
new CurrFile[256]
formatex(CurrFile, charsmax(CurrFile), "%s/%s", HATS_PATH, HATMDL[i])

if (file_exists (CurrFile))
{
precache_model(CurrFile)
server_print("[%s] Precached %s",PLUG_NAME,CurrFile)
}
else
server_print("[%s] Failed to precache %s",PLUG_NAME,CurrFile)
}
}
}

public client_connect(id)
{
if(g_bwEnt[id] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[id])
g_bwEnt[id] = 0
}

public client_disconnect(id)
{
if(g_bwEnt[id] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[id])
g_bwEnt[id] = 0
UserHaveHatWith[id] = 'o'
formatex(UserHatModel[id], 255, "!NULL")
}

public Give_Hat(id)
{
new smodelnum[5], name[32]
read_argv(1,name,31)
read_argv(2,smodelnum,4)

new player = cmd_target(id,name,2)
if (!player) {
print_col_chat(id, "!g[%s] !yИгрок с таким именем не найден", PLUG_NAME)
return PLUGIN_HANDLED
}

new imodelnum = (str_to_num(smodelnum))
if (imodelnum > MAX_HATS) return PLUGIN_HANDLED

Set_Hat(player,imodelnum,id)

return PLUGIN_CONTINUE
}

public Remove_Hat(id)
{
for (new i = 0; i < get_maxplayers(); ++i) {
if (is_user_connected(i) && g_bwEnt[i] > 0) {
engfunc(EngFunc_RemoveEntity,g_bwEnt[i])
g_bwEnt[i] = 0
}
}
client_print(id,print_chat,"[%s] Removed hats from everyone.",PLUG_NAME)
return PLUGIN_CONTINUE
}

public Set_Hat(player,imodelnum,targeter)
{
new name[32]
get_user_name(player, name, 31)
if (imodelnum == 0) {
if(g_bwEnt[player] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[player])
g_bwEnt[player] = 0
print_col_chat(targeter, "!g[%s] !yШапка снята с !t%s", PLUG_NAME, name)

} else {
if(g_bwEnt[player] < 1) {
g_bwEnt[player] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
if(g_bwEnt[player] > 0)
{
UserHaveHatWith[player] = 'n'
new mdlName[256]
new CsTeams:team = cs_get_user_team(player)

formatex(UserHatModel[player], 255, "%s", HATMDL[imodelnum])

set_pev(g_bwEnt[player], pev_movetype, MOVETYPE_FOLLOW)
set_pev(g_bwEnt[player], pev_aiment, player)
set_pev(g_bwEnt[player], pev_rendermode, kRenderNormal)
set_pev(g_bwEnt[player], pev_renderamt, 0.0)

if(HATNAME[imodelnum][0] == 'm')
{
UserHaveHatWith[player] = 'm'

if(team == CS_TEAM_CT)
formatex(mdlName, charsmax(mdlName), "%s/c_%s", HATS_PATH, HATMDL[imodelnum])
else if(team == CS_TEAM_T)
formatex(mdlName, charsmax(mdlName), "%s/t_%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}
else
{
format(mdlName, charsmax(mdlName), "%s/%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}

if(HATNAME[imodelnum][0] == 's')
{
UserHaveHatWith[player] = 's'

if(team == CS_TEAM_CT)
set_pev(g_bwEnt[player], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[player], pev_skin, 0)
}
}
} else {
UserHaveHatWith[player] = 'n'
new mdlName[256]
new CsTeams:team = cs_get_user_team(player)
formatex(UserHatModel[player], 255, "%s", HATMDL[imodelnum])

if(HATNAME[imodelnum][0] == 'm')
{
UserHaveHatWith[player] = 'm'
if(team == CS_TEAM_CT)
formatex(mdlName, charsmax(mdlName), "%s/c_%s", HATS_PATH, HATMDL[imodelnum])
else if(team == CS_TEAM_T)
formatex(mdlName, charsmax(mdlName), "%s/t_%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}
else
{
formatex(mdlName, charsmax(mdlName), "%s/%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}

if(HATNAME[imodelnum][0] == 's')
{
UserHaveHatWith[player] = 's'

if(team == CS_TEAM_CT)
set_pev(g_bwEnt[player], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[player], pev_skin, 0)
}
}
if(HATNAME[imodelnum][0] == 's' || HATNAME[imodelnum][0] == 'm')
print_col_chat(targeter, "!g[%s] !yШапку !g%s !yодел !t%s", PLUG_NAME, HATNAME[imodelnum][1],name)
else
print_col_chat(targeter, "!g[%s] !yШапку !g%s !yодел !t%s", PLUG_NAME, HATNAME[imodelnum],name)
}
}

public command_load()
{
if(file_exists(HatFile)) {
HATMDL[0] = ""
HATNAME[0] = "Снять шапку"
TotalHats = 1
new sfLineData[128]
new file = fopen(HatFile,"rt")
while(file && !feof(file)) {
fgets(file,sfLineData,127)

// Skip Comment and Empty Lines
if (containi(sfLineData,";") > -1) continue

// BREAK IT UP!
parse(sfLineData, HATMDL[TotalHats],40,HATNAME[TotalHats],40)

TotalHats += 1
if(TotalHats >= MAX_HATS) {
server_print("[%s] Reached hat limit",PLUG_NAME)
break
}
}
if(file) fclose(file)
}
MenuPages = floatround((TotalHats / 8.0), floatround_ceil)
server_print("[%s] Loaded %i hats, Generated %i pages)",PLUG_NAME,TotalHats,MenuPages)
}

stock print_col_chat(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!t", "^3") // Team Color

if (id)
players[0] = id
else
get_players(players, count, "ch")

{
for ( new i = 0; i < count; i++ )
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i])
write_string(msg)
message_end()
}
}
}
}


Сделал не работает =(
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MiXa
сообщение 6.8.2014, 15:15
Сообщение #4


Стаж: 12 лет

Сообщений: 415
Благодарностей: 91
Полезность: 181

evilforce,

Так должно заработать:

Скрытый текст
Код:
#include <amxmisc>
#include <cstrike>
#include <fakemeta>

new g_bwEnt[33]

#define PLUG_NAME "Evilforce Hats"
#define PLUG_AUTH "trofian"
#define PLUG_VERS "1.0"

#define menusize 1024

#define HATS_PATH "models/next21_hats"

new HatFile[128]
new MenuPages, TotalHats
new CurrentMenu[33]

new UserHaveHatWith[33] = 'o' // s - skin, m - two models, n - normal hat, o - not connected
new UserHatModel[33][256]

#define MAX_HATS 64
new HATMDL[MAX_HATS][128]
new HATNAME[MAX_HATS][128]

public plugin_init()
{
register_plugin(PLUG_NAME, PLUG_VERS, PLUG_AUTH)
register_concmd("amx_givehat", "Give_Hat", ADMIN_RCON, "<nick> <mdl #>")
register_concmd("amx_removehats", "Remove_Hat", ADMIN_RCON, " - Removes hats from everyone.")
register_menucmd(register_menuid("\yHat Menu: [Page"),(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9),"MenuCommand")
register_clcmd("say /hats", "ShowMenu", -1, "Shows Knife menu")
register_clcmd("hats", "ShowMenu", -1, "Shows Knife menu")
register_event("ResetHUD", "ResetHUD", "be")
}

public ResetHUD(id) set_task(2.0, "reload_hat", id)

#define ADMIN_FLAG ADMIN_LEVEL_F

public reload_hat(id)
{
if(is_user_alive(id) && get_user_flags(id) & ADMIN_FLAG)
{

new CsTeams:team = cs_get_user_team(id)

if(!pev_valid(g_bwEnt[id]))
return

if(UserHaveHatWith[id] == 's')
{
if(team == CS_TEAM_CT)
set_pev(g_bwEnt[id], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[id], pev_skin, 0)
}
if(UserHaveHatWith[id] == 'm')
{
new hatmodel[256]

if(team == CS_TEAM_CT)
formatex(hatmodel, charsmax(hatmodel), "%s/c_%s", HATS_PATH, UserHatModel[id])
else if(team == CS_TEAM_T)
formatex(hatmodel, charsmax(hatmodel), "%s/t_%s", HATS_PATH, UserHatModel[id])

engfunc(EngFunc_SetModel, g_bwEnt[id], hatmodel)
}
}
}


public ShowMenu(id)
{
CurrentMenu[id] = 1
ShowHats(id)
return PLUGIN_HANDLED
}

public ShowHats(id)
{
new keys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9)

new szMenuBody[menusize + 1], WpnID
new nLen = format(szMenuBody, menusize, "\yHat Menu: [Page %i/%i]^n",CurrentMenu[id],MenuPages)

// Get Hat Names And Add Them To The List
for (new hatid=0; hatid < 8; hatid++) {
WpnID = ((CurrentMenu[id] * 8) + hatid - 8)
if (WpnID < TotalHats) {
new hatText[256]
if(WpnID > 0)
{
if(HATNAME[WpnID][0] == 's')
format(hatText, charsmax(hatText), "\y%s \w[\rцвет команды\w]", HATNAME[WpnID][1])
else if(HATNAME[WpnID][0] == 'm')
format(hatText, charsmax(hatText), "\y%s \w[\rмодель команды\w]", HATNAME[WpnID][1])
else
format(hatText, charsmax(hatText), "\y%s", HATNAME[WpnID])
}
else
format(hatText, charsmax(hatText), "\r%s", HATNAME[WpnID])
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w %i. %s",hatid + 1,hatText)
}
}

// Next Page And Previous/Close
if (CurrentMenu[id] == MenuPages) {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n^n\d9. Следующая")
} else {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n^n\w9. Следующая")
}

if (CurrentMenu[id] > 1) {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w0. Предудыщая")
} else {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w0. Выход")
}
show_menu(id, keys, szMenuBody, -1)
return PLUGIN_HANDLED
}
public MenuCommand(id, key)
{
switch(key)
{
case 8: //9 - [Next Page]
{
if (CurrentMenu[id] < MenuPages) CurrentMenu[id]++
ShowHats(id)
return PLUGIN_HANDLED
}
case 9: //0 - [Close]
{
CurrentMenu[id]--
if (CurrentMenu[id] > 0) ShowHats(id)
return PLUGIN_HANDLED
}
default:
{
new HatID = ((CurrentMenu[id] * 8) + key - 8)
if (HatID < TotalHats) {
Set_Hat(id,HatID,id)
}
}
}
return PLUGIN_HANDLED
}

public plugin_precache()
{
new cfgDir[32]
get_configsdir(cfgDir,31)
formatex(HatFile,63,"%s/HatList.ini",cfgDir)
command_load()

for (new i = 1; i < TotalHats; ++i) {
if(HATNAME[i][0] == 'm')
{
new CurrFile[256]

formatex(CurrFile, charsmax(CurrFile), "%s/t_%s", HATS_PATH, HATMDL[i])
if(file_exists(CurrFile)) precache_model(CurrFile)

formatex(CurrFile, charsmax(CurrFile), "%s/c_%s", HATS_PATH, HATMDL[i])
if(file_exists(CurrFile)) precache_model(CurrFile)
}
else
{
new CurrFile[256]
formatex(CurrFile, charsmax(CurrFile), "%s/%s", HATS_PATH, HATMDL[i])

if (file_exists (CurrFile))
{
precache_model(CurrFile)
server_print("[%s] Precached %s",PLUG_NAME,CurrFile)
}
else
server_print("[%s] Failed to precache %s",PLUG_NAME,CurrFile)
}
}
}

public client_connect(id)
{
if(g_bwEnt[id] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[id])
g_bwEnt[id] = 0
}

public client_disconnect(id)
{
if(g_bwEnt[id] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[id])
g_bwEnt[id] = 0
UserHaveHatWith[id] = 'o'
formatex(UserHatModel[id], 255, "!NULL")
}

public Give_Hat(id)
{
new smodelnum[5], name[32]
read_argv(1,name,31)
read_argv(2,smodelnum,4)

new player = cmd_target(id,name,2)
if (!player) {
print_col_chat(id, "!g[%s] !yИгрок с таким именем не найден", PLUG_NAME)
return PLUGIN_HANDLED
}

new imodelnum = (str_to_num(smodelnum))
if (imodelnum > MAX_HATS) return PLUGIN_HANDLED

Set_Hat(player,imodelnum,id)

return PLUGIN_CONTINUE
}

public Remove_Hat(id)
{
for (new i = 0; i < get_maxplayers(); ++i) {
if (is_user_connected(i) && g_bwEnt[i] > 0) {
engfunc(EngFunc_RemoveEntity,g_bwEnt[i])
g_bwEnt[i] = 0
}
}
client_print(id,print_chat,"[%s] Removed hats from everyone.",PLUG_NAME)
return PLUGIN_CONTINUE
}

public Set_Hat(player,imodelnum,targeter)
{
new name[32]
get_user_name(player, name, 31)
if (imodelnum == 0) {
if(g_bwEnt[player] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[player])
g_bwEnt[player] = 0
print_col_chat(targeter, "!g[%s] !yШапка снята с !t%s", PLUG_NAME, name)

} else {
if(g_bwEnt[player] < 1) {
g_bwEnt[player] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
if(g_bwEnt[player] > 0)
{
UserHaveHatWith[player] = 'n'
new mdlName[256]
new CsTeams:team = cs_get_user_team(player)

formatex(UserHatModel[player], 255, "%s", HATMDL[imodelnum])

set_pev(g_bwEnt[player], pev_movetype, MOVETYPE_FOLLOW)
set_pev(g_bwEnt[player], pev_aiment, player)
set_pev(g_bwEnt[player], pev_rendermode, kRenderNormal)
set_pev(g_bwEnt[player], pev_renderamt, 0.0)

if(HATNAME[imodelnum][0] == 'm')
{
UserHaveHatWith[player] = 'm'

if(team == CS_TEAM_CT)
formatex(mdlName, charsmax(mdlName), "%s/c_%s", HATS_PATH, HATMDL[imodelnum])
else if(team == CS_TEAM_T)
formatex(mdlName, charsmax(mdlName), "%s/t_%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}
else
{
format(mdlName, charsmax(mdlName), "%s/%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}

if(HATNAME[imodelnum][0] == 's')
{
UserHaveHatWith[player] = 's'

if(team == CS_TEAM_CT)
set_pev(g_bwEnt[player], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[player], pev_skin, 0)
}
}
} else {
UserHaveHatWith[player] = 'n'
new mdlName[256]
new CsTeams:team = cs_get_user_team(player)
formatex(UserHatModel[player], 255, "%s", HATMDL[imodelnum])

if(HATNAME[imodelnum][0] == 'm')
{
UserHaveHatWith[player] = 'm'
if(team == CS_TEAM_CT)
formatex(mdlName, charsmax(mdlName), "%s/c_%s", HATS_PATH, HATMDL[imodelnum])
else if(team == CS_TEAM_T)
formatex(mdlName, charsmax(mdlName), "%s/t_%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}
else
{
formatex(mdlName, charsmax(mdlName), "%s/%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}

if(HATNAME[imodelnum][0] == 's')
{
UserHaveHatWith[player] = 's'

if(team == CS_TEAM_CT)
set_pev(g_bwEnt[player], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[player], pev_skin, 0)
}
}
if(HATNAME[imodelnum][0] == 's' || HATNAME[imodelnum][0] == 'm')
print_col_chat(targeter, "!g[%s] !yШапку !g%s !yодел !t%s", PLUG_NAME, HATNAME[imodelnum][1],name)
else
print_col_chat(targeter, "!g[%s] !yШапку !g%s !yодел !t%s", PLUG_NAME, HATNAME[imodelnum],name)
}
}

public command_load()
{
if(file_exists(HatFile)) {
HATMDL[0] = ""
HATNAME[0] = "Снять шапку"
TotalHats = 1
new sfLineData[128]
new file = fopen(HatFile,"rt")
while(file && !feof(file)) {
fgets(file,sfLineData,127)

// Skip Comment and Empty Lines
if (containi(sfLineData,";") > -1) continue

// BREAK IT UP!
parse(sfLineData, HATMDL[TotalHats],40,HATNAME[TotalHats],40)

TotalHats += 1
if(TotalHats >= MAX_HATS) {
server_print("[%s] Reached hat limit",PLUG_NAME)
break
}
}
if(file) fclose(file)
}
MenuPages = floatround((TotalHats / 8.0), floatround_ceil)
server_print("[%s] Loaded %i hats, Generated %i pages)",PLUG_NAME,TotalHats,MenuPages)
}

stock print_col_chat(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!t", "^3") // Team Color

if (id)
players[0] = id
else
get_players(players, count, "ch")

{
for ( new i = 0; i < count; i++ )
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i])
write_string(msg)
message_end()
}
}
}
}


Допомога з встановлення / налаштування / оновлення за $ :>>> Сервери \ Моди \ Плагіни \ Модулі
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя evilforce
сообщение 6.8.2014, 15:26
Сообщение #5
Стаж: 13 лет

Сообщений: 33
Благодарностей: 2
Полезность: 48

Цитата(MiXa @ 6.8.2014, 16:15) *
evilforce,

Так должно заработать:

Скрытый текст
Код:
#include <amxmisc>
#include <cstrike>
#include <fakemeta>

new g_bwEnt[33]

#define PLUG_NAME "Evilforce Hats"
#define PLUG_AUTH "trofian"
#define PLUG_VERS "1.0"

#define menusize 1024

#define HATS_PATH "models/next21_hats"

new HatFile[128]
new MenuPages, TotalHats
new CurrentMenu[33]

new UserHaveHatWith[33] = 'o' // s - skin, m - two models, n - normal hat, o - not connected
new UserHatModel[33][256]

#define MAX_HATS 64
new HATMDL[MAX_HATS][128]
new HATNAME[MAX_HATS][128]

public plugin_init()
{
register_plugin(PLUG_NAME, PLUG_VERS, PLUG_AUTH)
register_concmd("amx_givehat", "Give_Hat", ADMIN_RCON, "<nick> <mdl #>")
register_concmd("amx_removehats", "Remove_Hat", ADMIN_RCON, " - Removes hats from everyone.")
register_menucmd(register_menuid("\yHat Menu: [Page"),(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9),"MenuCommand")
register_clcmd("say /hats", "ShowMenu", -1, "Shows Knife menu")
register_clcmd("hats", "ShowMenu", -1, "Shows Knife menu")
register_event("ResetHUD", "ResetHUD", "be")
}

public ResetHUD(id) set_task(2.0, "reload_hat", id)

#define ADMIN_FLAG ADMIN_LEVEL_F

public reload_hat(id)
{
if(is_user_alive(id) && get_user_flags(id) & ADMIN_FLAG)
{

new CsTeams:team = cs_get_user_team(id)

if(!pev_valid(g_bwEnt[id]))
return

if(UserHaveHatWith[id] == 's')
{
if(team == CS_TEAM_CT)
set_pev(g_bwEnt[id], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[id], pev_skin, 0)
}
if(UserHaveHatWith[id] == 'm')
{
new hatmodel[256]

if(team == CS_TEAM_CT)
formatex(hatmodel, charsmax(hatmodel), "%s/c_%s", HATS_PATH, UserHatModel[id])
else if(team == CS_TEAM_T)
formatex(hatmodel, charsmax(hatmodel), "%s/t_%s", HATS_PATH, UserHatModel[id])

engfunc(EngFunc_SetModel, g_bwEnt[id], hatmodel)
}
}
}


public ShowMenu(id)
{
CurrentMenu[id] = 1
ShowHats(id)
return PLUGIN_HANDLED
}

public ShowHats(id)
{
new keys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9)

new szMenuBody[menusize + 1], WpnID
new nLen = format(szMenuBody, menusize, "\yHat Menu: [Page %i/%i]^n",CurrentMenu[id],MenuPages)

// Get Hat Names And Add Them To The List
for (new hatid=0; hatid < 8; hatid++) {
WpnID = ((CurrentMenu[id] * 8) + hatid - 8)
if (WpnID < TotalHats) {
new hatText[256]
if(WpnID > 0)
{
if(HATNAME[WpnID][0] == 's')
format(hatText, charsmax(hatText), "\y%s \w[\rцвет команды\w]", HATNAME[WpnID][1])
else if(HATNAME[WpnID][0] == 'm')
format(hatText, charsmax(hatText), "\y%s \w[\rмодель команды\w]", HATNAME[WpnID][1])
else
format(hatText, charsmax(hatText), "\y%s", HATNAME[WpnID])
}
else
format(hatText, charsmax(hatText), "\r%s", HATNAME[WpnID])
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w %i. %s",hatid + 1,hatText)
}
}

// Next Page And Previous/Close
if (CurrentMenu[id] == MenuPages) {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n^n\d9. Следующая")
} else {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n^n\w9. Следующая")
}

if (CurrentMenu[id] > 1) {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w0. Предудыщая")
} else {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w0. Выход")
}
show_menu(id, keys, szMenuBody, -1)
return PLUGIN_HANDLED
}
public MenuCommand(id, key)
{
switch(key)
{
case 8: //9 - [Next Page]
{
if (CurrentMenu[id] < MenuPages) CurrentMenu[id]++
ShowHats(id)
return PLUGIN_HANDLED
}
case 9: //0 - [Close]
{
CurrentMenu[id]--
if (CurrentMenu[id] > 0) ShowHats(id)
return PLUGIN_HANDLED
}
default:
{
new HatID = ((CurrentMenu[id] * 8) + key - 8)
if (HatID < TotalHats) {
Set_Hat(id,HatID,id)
}
}
}
return PLUGIN_HANDLED
}

public plugin_precache()
{
new cfgDir[32]
get_configsdir(cfgDir,31)
formatex(HatFile,63,"%s/HatList.ini",cfgDir)
command_load()

for (new i = 1; i < TotalHats; ++i) {
if(HATNAME[i][0] == 'm')
{
new CurrFile[256]

formatex(CurrFile, charsmax(CurrFile), "%s/t_%s", HATS_PATH, HATMDL[i])
if(file_exists(CurrFile)) precache_model(CurrFile)

formatex(CurrFile, charsmax(CurrFile), "%s/c_%s", HATS_PATH, HATMDL[i])
if(file_exists(CurrFile)) precache_model(CurrFile)
}
else
{
new CurrFile[256]
formatex(CurrFile, charsmax(CurrFile), "%s/%s", HATS_PATH, HATMDL[i])

if (file_exists (CurrFile))
{
precache_model(CurrFile)
server_print("[%s] Precached %s",PLUG_NAME,CurrFile)
}
else
server_print("[%s] Failed to precache %s",PLUG_NAME,CurrFile)
}
}
}

public client_connect(id)
{
if(g_bwEnt[id] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[id])
g_bwEnt[id] = 0
}

public client_disconnect(id)
{
if(g_bwEnt[id] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[id])
g_bwEnt[id] = 0
UserHaveHatWith[id] = 'o'
formatex(UserHatModel[id], 255, "!NULL")
}

public Give_Hat(id)
{
new smodelnum[5], name[32]
read_argv(1,name,31)
read_argv(2,smodelnum,4)

new player = cmd_target(id,name,2)
if (!player) {
print_col_chat(id, "!g[%s] !yИгрок с таким именем не найден", PLUG_NAME)
return PLUGIN_HANDLED
}

new imodelnum = (str_to_num(smodelnum))
if (imodelnum > MAX_HATS) return PLUGIN_HANDLED

Set_Hat(player,imodelnum,id)

return PLUGIN_CONTINUE
}

public Remove_Hat(id)
{
for (new i = 0; i < get_maxplayers(); ++i) {
if (is_user_connected(i) && g_bwEnt[i] > 0) {
engfunc(EngFunc_RemoveEntity,g_bwEnt[i])
g_bwEnt[i] = 0
}
}
client_print(id,print_chat,"[%s] Removed hats from everyone.",PLUG_NAME)
return PLUGIN_CONTINUE
}

public Set_Hat(player,imodelnum,targeter)
{
new name[32]
get_user_name(player, name, 31)
if (imodelnum == 0) {
if(g_bwEnt[player] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[player])
g_bwEnt[player] = 0
print_col_chat(targeter, "!g[%s] !yШапка снята с !t%s", PLUG_NAME, name)

} else {
if(g_bwEnt[player] < 1) {
g_bwEnt[player] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
if(g_bwEnt[player] > 0)
{
UserHaveHatWith[player] = 'n'
new mdlName[256]
new CsTeams:team = cs_get_user_team(player)

formatex(UserHatModel[player], 255, "%s", HATMDL[imodelnum])

set_pev(g_bwEnt[player], pev_movetype, MOVETYPE_FOLLOW)
set_pev(g_bwEnt[player], pev_aiment, player)
set_pev(g_bwEnt[player], pev_rendermode, kRenderNormal)
set_pev(g_bwEnt[player], pev_renderamt, 0.0)

if(HATNAME[imodelnum][0] == 'm')
{
UserHaveHatWith[player] = 'm'

if(team == CS_TEAM_CT)
formatex(mdlName, charsmax(mdlName), "%s/c_%s", HATS_PATH, HATMDL[imodelnum])
else if(team == CS_TEAM_T)
formatex(mdlName, charsmax(mdlName), "%s/t_%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}
else
{
format(mdlName, charsmax(mdlName), "%s/%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}

if(HATNAME[imodelnum][0] == 's')
{
UserHaveHatWith[player] = 's'

if(team == CS_TEAM_CT)
set_pev(g_bwEnt[player], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[player], pev_skin, 0)
}
}
} else {
UserHaveHatWith[player] = 'n'
new mdlName[256]
new CsTeams:team = cs_get_user_team(player)
formatex(UserHatModel[player], 255, "%s", HATMDL[imodelnum])

if(HATNAME[imodelnum][0] == 'm')
{
UserHaveHatWith[player] = 'm'
if(team == CS_TEAM_CT)
formatex(mdlName, charsmax(mdlName), "%s/c_%s", HATS_PATH, HATMDL[imodelnum])
else if(team == CS_TEAM_T)
formatex(mdlName, charsmax(mdlName), "%s/t_%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}
else
{
formatex(mdlName, charsmax(mdlName), "%s/%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}

if(HATNAME[imodelnum][0] == 's')
{
UserHaveHatWith[player] = 's'

if(team == CS_TEAM_CT)
set_pev(g_bwEnt[player], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[player], pev_skin, 0)
}
}
if(HATNAME[imodelnum][0] == 's' || HATNAME[imodelnum][0] == 'm')
print_col_chat(targeter, "!g[%s] !yШапку !g%s !yодел !t%s", PLUG_NAME, HATNAME[imodelnum][1],name)
else
print_col_chat(targeter, "!g[%s] !yШапку !g%s !yодел !t%s", PLUG_NAME, HATNAME[imodelnum],name)
}
}

public command_load()
{
if(file_exists(HatFile)) {
HATMDL[0] = ""
HATNAME[0] = "Снять шапку"
TotalHats = 1
new sfLineData[128]
new file = fopen(HatFile,"rt")
while(file && !feof(file)) {
fgets(file,sfLineData,127)

// Skip Comment and Empty Lines
if (containi(sfLineData,";") > -1) continue

// BREAK IT UP!
parse(sfLineData, HATMDL[TotalHats],40,HATNAME[TotalHats],40)

TotalHats += 1
if(TotalHats >= MAX_HATS) {
server_print("[%s] Reached hat limit",PLUG_NAME)
break
}
}
if(file) fclose(file)
}
MenuPages = floatround((TotalHats / 8.0), floatround_ceil)
server_print("[%s] Loaded %i hats, Generated %i pages)",PLUG_NAME,TotalHats,MenuPages)
}

stock print_col_chat(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!t", "^3") // Team Color

if (id)
players[0] = id
else
get_players(players, count, "ch")

{
for ( new i = 0; i < count; i++ )
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i])
write_string(msg)
message_end()
}
}
}
}

При компиляции пишет hat.sma 376 :error 001: exprecred token: ")", but found "-end of file-"
1error
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя vovan4ik1997
сообщение 6.8.2014, 15:28
Сообщение #6


Стаж: 13 лет

Сообщений: 1087
Благодарностей: 433
Полезность: 718

evilforce, все компилируется отлично.


Представь, что ты заплатил однажды, а получаешь прибыль постоянно.
Закажи правильный контент тут
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя evilforce
сообщение 6.8.2014, 15:38
Сообщение #7
Стаж: 13 лет

Сообщений: 33
Благодарностей: 2
Полезность: 48

Цитата(vovan4ik1997 @ 6.8.2014, 16:28) *
evilforce, все компилируется отлично.

Да скомпилировал =( но всеравно можно обычным юзером брать шапки =(
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MiXa
сообщение 6.8.2014, 16:01
Сообщение #8


Стаж: 12 лет

Сообщений: 415
Благодарностей: 91
Полезность: 181

evilforce,
держите )

Скрытый текст
Код:
#include <amxmisc>
#include <cstrike>
#include <fakemeta>

new g_bwEnt[33]

#define PLUG_NAME "Evilforce Hats"
#define PLUG_AUTH "trofian"
#define PLUG_VERS "1.0"

#define menusize 1024

#define HATS_PATH "models/next21_hats"

#define ADMIN_FLAG ADMIN_LEVEL_F

new HatFile[128]
new MenuPages, TotalHats
new CurrentMenu[33]

new UserHaveHatWith[33] = 'o' // s - skin, m - two models, n - normal hat, o - not connected
new UserHatModel[33][256]

#define MAX_HATS 64
new HATMDL[MAX_HATS][128]
new HATNAME[MAX_HATS][128]

public plugin_init()
{
register_plugin(PLUG_NAME, PLUG_VERS, PLUG_AUTH)
register_concmd("amx_givehat", "Give_Hat", ADMIN_RCON, "<nick> <mdl #>")
register_concmd("amx_removehats", "Remove_Hat", ADMIN_RCON, " - Removes hats from everyone.")
register_menucmd(register_menuid("\yHat Menu: [Page"),(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9),"MenuCommand")
register_clcmd("say /hats", "ShowMenu", -1, "Shows Knife menu")
register_clcmd("hats", "ShowMenu", -1, "Shows Knife menu")
register_event("ResetHUD", "ResetHUD", "be")
}

public ResetHUD(id) set_task(2.0, "reload_hat", id)

public reload_hat(id)
{
if(is_user_alive(id) && get_user_flags(id) & ADMIN_FLAG)
{

new CsTeams:team = cs_get_user_team(id)

if(!pev_valid(g_bwEnt[id]))
return

if(UserHaveHatWith[id] == 's')
{
if(team == CS_TEAM_CT)
set_pev(g_bwEnt[id], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[id], pev_skin, 0)
}
if(UserHaveHatWith[id] == 'm')
{
new hatmodel[256]

if(team == CS_TEAM_CT)
formatex(hatmodel, charsmax(hatmodel), "%s/c_%s", HATS_PATH, UserHatModel[id])
else if(team == CS_TEAM_T)
formatex(hatmodel, charsmax(hatmodel), "%s/t_%s", HATS_PATH, UserHatModel[id])

engfunc(EngFunc_SetModel, g_bwEnt[id], hatmodel)
}
}
}


public ShowMenu(id)
{
if ( ! ( get_user_flags ( id ) & ADMIN_FLAG ) )
{
print_col_chat(id, "!gУ тебя нету доступа для входа в меню")
return PLUGIN_HANDLED;
}
CurrentMenu[id] = 1
ShowHats(id)
return PLUGIN_HANDLED
}

public ShowHats(id)
{
new keys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9)

new szMenuBody[menusize + 1], WpnID
new nLen = format(szMenuBody, menusize, "\yHat Menu: [Page %i/%i]^n",CurrentMenu[id],MenuPages)

// Get Hat Names And Add Them To The List
for (new hatid=0; hatid < 8; hatid++) {
WpnID = ((CurrentMenu[id] * 8) + hatid - 8)
if (WpnID < TotalHats) {
new hatText[256]
if(WpnID > 0)
{
if(HATNAME[WpnID][0] == 's')
format(hatText, charsmax(hatText), "\y%s \w[\rцвет команды\w]", HATNAME[WpnID][1])
else if(HATNAME[WpnID][0] == 'm')
format(hatText, charsmax(hatText), "\y%s \w[\rмодель команды\w]", HATNAME[WpnID][1])
else
format(hatText, charsmax(hatText), "\y%s", HATNAME[WpnID])
}
else
format(hatText, charsmax(hatText), "\r%s", HATNAME[WpnID])
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w %i. %s",hatid + 1,hatText)
}
}

// Next Page And Previous/Close
if (CurrentMenu[id] == MenuPages) {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n^n\d9. Следующая")
} else {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n^n\w9. Следующая")
}

if (CurrentMenu[id] > 1) {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w0. Предудыщая")
} else {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w0. Выход")
}
show_menu(id, keys, szMenuBody, -1)
return PLUGIN_HANDLED
}
public MenuCommand(id, key)
{
switch(key)
{
case 8: //9 - [Next Page]
{
if (CurrentMenu[id] < MenuPages) CurrentMenu[id]++
ShowHats(id)
return PLUGIN_HANDLED
}
case 9: //0 - [Close]
{
CurrentMenu[id]--
if (CurrentMenu[id] > 0) ShowHats(id)
return PLUGIN_HANDLED
}
default:
{
new HatID = ((CurrentMenu[id] * 8) + key - 8)
if (HatID < TotalHats) {
Set_Hat(id,HatID,id)
}
}
}
return PLUGIN_HANDLED
}

public plugin_precache()
{
new cfgDir[32]
get_configsdir(cfgDir,31)
formatex(HatFile,63,"%s/HatList.ini",cfgDir)
command_load()

for (new i = 1; i < TotalHats; ++i) {
if(HATNAME[i][0] == 'm')
{
new CurrFile[256]

formatex(CurrFile, charsmax(CurrFile), "%s/t_%s", HATS_PATH, HATMDL[i])
if(file_exists(CurrFile)) precache_model(CurrFile)

formatex(CurrFile, charsmax(CurrFile), "%s/c_%s", HATS_PATH, HATMDL[i])
if(file_exists(CurrFile)) precache_model(CurrFile)
}
else
{
new CurrFile[256]
formatex(CurrFile, charsmax(CurrFile), "%s/%s", HATS_PATH, HATMDL[i])

if (file_exists (CurrFile))
{
precache_model(CurrFile)
server_print("[%s] Precached %s",PLUG_NAME,CurrFile)
}
else
server_print("[%s] Failed to precache %s",PLUG_NAME,CurrFile)
}
}
}

public client_connect(id)
{
if(g_bwEnt[id] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[id])
g_bwEnt[id] = 0
}

public client_disconnect(id)
{
if(g_bwEnt[id] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[id])
g_bwEnt[id] = 0
UserHaveHatWith[id] = 'o'
formatex(UserHatModel[id], 255, "!NULL")
}

public Give_Hat(id)
{
new smodelnum[5], name[32]
read_argv(1,name,31)
read_argv(2,smodelnum,4)

new player = cmd_target(id,name,2)
if (!player) {
print_col_chat(id, "!g[%s] !yИгрок с таким именем не найден", PLUG_NAME)
return PLUGIN_HANDLED
}

new imodelnum = (str_to_num(smodelnum))
if (imodelnum > MAX_HATS) return PLUGIN_HANDLED

Set_Hat(player,imodelnum,id)

return PLUGIN_CONTINUE
}

public Remove_Hat(id)
{
for (new i = 0; i < get_maxplayers(); ++i) {
if (is_user_connected(i) && g_bwEnt[i] > 0) {
engfunc(EngFunc_RemoveEntity,g_bwEnt[i])
g_bwEnt[i] = 0
}
}
client_print(id,print_chat,"[%s] Removed hats from everyone.",PLUG_NAME)
return PLUGIN_CONTINUE
}

public Set_Hat(player,imodelnum,targeter)
{
new name[32]
get_user_name(player, name, 31)
if (imodelnum == 0) {
if(g_bwEnt[player] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[player])
g_bwEnt[player] = 0
print_col_chat(targeter, "!g[%s] !yШапка снята с !t%s", PLUG_NAME, name)

} else {
if(g_bwEnt[player] < 1) {
g_bwEnt[player] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
if(g_bwEnt[player] > 0)
{
UserHaveHatWith[player] = 'n'
new mdlName[256]
new CsTeams:team = cs_get_user_team(player)

formatex(UserHatModel[player], 255, "%s", HATMDL[imodelnum])

set_pev(g_bwEnt[player], pev_movetype, MOVETYPE_FOLLOW)
set_pev(g_bwEnt[player], pev_aiment, player)
set_pev(g_bwEnt[player], pev_rendermode, kRenderNormal)
set_pev(g_bwEnt[player], pev_renderamt, 0.0)

if(HATNAME[imodelnum][0] == 'm')
{
UserHaveHatWith[player] = 'm'

if(team == CS_TEAM_CT)
formatex(mdlName, charsmax(mdlName), "%s/c_%s", HATS_PATH, HATMDL[imodelnum])
else if(team == CS_TEAM_T)
formatex(mdlName, charsmax(mdlName), "%s/t_%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}
else
{
format(mdlName, charsmax(mdlName), "%s/%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}

if(HATNAME[imodelnum][0] == 's')
{
UserHaveHatWith[player] = 's'

if(team == CS_TEAM_CT)
set_pev(g_bwEnt[player], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[player], pev_skin, 0)
}
}
} else {
UserHaveHatWith[player] = 'n'
new mdlName[256]
new CsTeams:team = cs_get_user_team(player)
formatex(UserHatModel[player], 255, "%s", HATMDL[imodelnum])

if(HATNAME[imodelnum][0] == 'm')
{
UserHaveHatWith[player] = 'm'
if(team == CS_TEAM_CT)
formatex(mdlName, charsmax(mdlName), "%s/c_%s", HATS_PATH, HATMDL[imodelnum])
else if(team == CS_TEAM_T)
formatex(mdlName, charsmax(mdlName), "%s/t_%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}
else
{
formatex(mdlName, charsmax(mdlName), "%s/%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}

if(HATNAME[imodelnum][0] == 's')
{
UserHaveHatWith[player] = 's'

if(team == CS_TEAM_CT)
set_pev(g_bwEnt[player], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[player], pev_skin, 0)
}
}
if(HATNAME[imodelnum][0] == 's' || HATNAME[imodelnum][0] == 'm')
print_col_chat(targeter, "!g[%s] !yШапку !g%s !yодел !t%s", PLUG_NAME, HATNAME[imodelnum][1],name)
else
print_col_chat(targeter, "!g[%s] !yШапку !g%s !yодел !t%s", PLUG_NAME, HATNAME[imodelnum],name)
}
}

public command_load()
{
if(file_exists(HatFile)) {
HATMDL[0] = ""
HATNAME[0] = "Снять шапку"
TotalHats = 1
new sfLineData[128]
new file = fopen(HatFile,"rt")
while(file && !feof(file)) {
fgets(file,sfLineData,127)

// Skip Comment and Empty Lines
if (containi(sfLineData,";") > -1) continue

// BREAK IT UP!
parse(sfLineData, HATMDL[TotalHats],40,HATNAME[TotalHats],40)

TotalHats += 1
if(TotalHats >= MAX_HATS) {
server_print("[%s] Reached hat limit",PLUG_NAME)
break
}
}
if(file) fclose(file)
}
MenuPages = floatround((TotalHats / 8.0), floatround_ceil)
server_print("[%s] Loaded %i hats, Generated %i pages)",PLUG_NAME,TotalHats,MenuPages)
}

stock print_col_chat(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!t", "^3") // Team Color

if (id)
players[0] = id
else
get_players(players, count, "ch")

{
for ( new i = 0; i < count; i++ )
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i])
write_string(msg)
message_end()
}
}
}
}


Допомога з встановлення / налаштування / оновлення за $ :>>> Сервери \ Моди \ Плагіни \ Модулі
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя evilforce
сообщение 6.8.2014, 21:51
Сообщение #9
Стаж: 13 лет

Сообщений: 33
Благодарностей: 2
Полезность: 48

Цитата(MiXa @ 6.8.2014, 17:01) *
evilforce,
держите )

Скрытый текст
Код:
#include <amxmisc>
#include <cstrike>
#include <fakemeta>

new g_bwEnt[33]

#define PLUG_NAME "Evilforce Hats"
#define PLUG_AUTH "trofian"
#define PLUG_VERS "1.0"

#define menusize 1024

#define HATS_PATH "models/next21_hats"

#define ADMIN_FLAG ADMIN_LEVEL_F

new HatFile[128]
new MenuPages, TotalHats
new CurrentMenu[33]

new UserHaveHatWith[33] = 'o' // s - skin, m - two models, n - normal hat, o - not connected
new UserHatModel[33][256]

#define MAX_HATS 64
new HATMDL[MAX_HATS][128]
new HATNAME[MAX_HATS][128]

public plugin_init()
{
register_plugin(PLUG_NAME, PLUG_VERS, PLUG_AUTH)
register_concmd("amx_givehat", "Give_Hat", ADMIN_RCON, "<nick> <mdl #>")
register_concmd("amx_removehats", "Remove_Hat", ADMIN_RCON, " - Removes hats from everyone.")
register_menucmd(register_menuid("\yHat Menu: [Page"),(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9),"MenuCommand")
register_clcmd("say /hats", "ShowMenu", -1, "Shows Knife menu")
register_clcmd("hats", "ShowMenu", -1, "Shows Knife menu")
register_event("ResetHUD", "ResetHUD", "be")
}

public ResetHUD(id) set_task(2.0, "reload_hat", id)

public reload_hat(id)
{
if(is_user_alive(id) && get_user_flags(id) & ADMIN_FLAG)
{

new CsTeams:team = cs_get_user_team(id)

if(!pev_valid(g_bwEnt[id]))
return

if(UserHaveHatWith[id] == 's')
{
if(team == CS_TEAM_CT)
set_pev(g_bwEnt[id], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[id], pev_skin, 0)
}
if(UserHaveHatWith[id] == 'm')
{
new hatmodel[256]

if(team == CS_TEAM_CT)
formatex(hatmodel, charsmax(hatmodel), "%s/c_%s", HATS_PATH, UserHatModel[id])
else if(team == CS_TEAM_T)
formatex(hatmodel, charsmax(hatmodel), "%s/t_%s", HATS_PATH, UserHatModel[id])

engfunc(EngFunc_SetModel, g_bwEnt[id], hatmodel)
}
}
}


public ShowMenu(id)
{
if ( ! ( get_user_flags ( id ) & ADMIN_FLAG ) )
{
print_col_chat(id, "!gУ тебя нету доступа для входа в меню")
return PLUGIN_HANDLED;
}
CurrentMenu[id] = 1
ShowHats(id)
return PLUGIN_HANDLED
}

public ShowHats(id)
{
new keys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9)

new szMenuBody[menusize + 1], WpnID
new nLen = format(szMenuBody, menusize, "\yHat Menu: [Page %i/%i]^n",CurrentMenu[id],MenuPages)

// Get Hat Names And Add Them To The List
for (new hatid=0; hatid < 8; hatid++) {
WpnID = ((CurrentMenu[id] * 8) + hatid - 8)
if (WpnID < TotalHats) {
new hatText[256]
if(WpnID > 0)
{
if(HATNAME[WpnID][0] == 's')
format(hatText, charsmax(hatText), "\y%s \w[\rцвет команды\w]", HATNAME[WpnID][1])
else if(HATNAME[WpnID][0] == 'm')
format(hatText, charsmax(hatText), "\y%s \w[\rмодель команды\w]", HATNAME[WpnID][1])
else
format(hatText, charsmax(hatText), "\y%s", HATNAME[WpnID])
}
else
format(hatText, charsmax(hatText), "\r%s", HATNAME[WpnID])
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w %i. %s",hatid + 1,hatText)
}
}

// Next Page And Previous/Close
if (CurrentMenu[id] == MenuPages) {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n^n\d9. Следующая")
} else {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n^n\w9. Следующая")
}

if (CurrentMenu[id] > 1) {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w0. Предудыщая")
} else {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w0. Выход")
}
show_menu(id, keys, szMenuBody, -1)
return PLUGIN_HANDLED
}
public MenuCommand(id, key)
{
switch(key)
{
case 8: //9 - [Next Page]
{
if (CurrentMenu[id] < MenuPages) CurrentMenu[id]++
ShowHats(id)
return PLUGIN_HANDLED
}
case 9: //0 - [Close]
{
CurrentMenu[id]--
if (CurrentMenu[id] > 0) ShowHats(id)
return PLUGIN_HANDLED
}
default:
{
new HatID = ((CurrentMenu[id] * 8) + key - 8)
if (HatID < TotalHats) {
Set_Hat(id,HatID,id)
}
}
}
return PLUGIN_HANDLED
}

public plugin_precache()
{
new cfgDir[32]
get_configsdir(cfgDir,31)
formatex(HatFile,63,"%s/HatList.ini",cfgDir)
command_load()

for (new i = 1; i < TotalHats; ++i) {
if(HATNAME[i][0] == 'm')
{
new CurrFile[256]

formatex(CurrFile, charsmax(CurrFile), "%s/t_%s", HATS_PATH, HATMDL[i])
if(file_exists(CurrFile)) precache_model(CurrFile)

formatex(CurrFile, charsmax(CurrFile), "%s/c_%s", HATS_PATH, HATMDL[i])
if(file_exists(CurrFile)) precache_model(CurrFile)
}
else
{
new CurrFile[256]
formatex(CurrFile, charsmax(CurrFile), "%s/%s", HATS_PATH, HATMDL[i])

if (file_exists (CurrFile))
{
precache_model(CurrFile)
server_print("[%s] Precached %s",PLUG_NAME,CurrFile)
}
else
server_print("[%s] Failed to precache %s",PLUG_NAME,CurrFile)
}
}
}

public client_connect(id)
{
if(g_bwEnt[id] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[id])
g_bwEnt[id] = 0
}

public client_disconnect(id)
{
if(g_bwEnt[id] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[id])
g_bwEnt[id] = 0
UserHaveHatWith[id] = 'o'
formatex(UserHatModel[id], 255, "!NULL")
}

public Give_Hat(id)
{
new smodelnum[5], name[32]
read_argv(1,name,31)
read_argv(2,smodelnum,4)

new player = cmd_target(id,name,2)
if (!player) {
print_col_chat(id, "!g[%s] !yИгрок с таким именем не найден", PLUG_NAME)
return PLUGIN_HANDLED
}

new imodelnum = (str_to_num(smodelnum))
if (imodelnum > MAX_HATS) return PLUGIN_HANDLED

Set_Hat(player,imodelnum,id)

return PLUGIN_CONTINUE
}

public Remove_Hat(id)
{
for (new i = 0; i < get_maxplayers(); ++i) {
if (is_user_connected(i) && g_bwEnt[i] > 0) {
engfunc(EngFunc_RemoveEntity,g_bwEnt[i])
g_bwEnt[i] = 0
}
}
client_print(id,print_chat,"[%s] Removed hats from everyone.",PLUG_NAME)
return PLUGIN_CONTINUE
}

public Set_Hat(player,imodelnum,targeter)
{
new name[32]
get_user_name(player, name, 31)
if (imodelnum == 0) {
if(g_bwEnt[player] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[player])
g_bwEnt[player] = 0
print_col_chat(targeter, "!g[%s] !yШапка снята с !t%s", PLUG_NAME, name)

} else {
if(g_bwEnt[player] < 1) {
g_bwEnt[player] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
if(g_bwEnt[player] > 0)
{
UserHaveHatWith[player] = 'n'
new mdlName[256]
new CsTeams:team = cs_get_user_team(player)

formatex(UserHatModel[player], 255, "%s", HATMDL[imodelnum])

set_pev(g_bwEnt[player], pev_movetype, MOVETYPE_FOLLOW)
set_pev(g_bwEnt[player], pev_aiment, player)
set_pev(g_bwEnt[player], pev_rendermode, kRenderNormal)
set_pev(g_bwEnt[player], pev_renderamt, 0.0)

if(HATNAME[imodelnum][0] == 'm')
{
UserHaveHatWith[player] = 'm'

if(team == CS_TEAM_CT)
formatex(mdlName, charsmax(mdlName), "%s/c_%s", HATS_PATH, HATMDL[imodelnum])
else if(team == CS_TEAM_T)
formatex(mdlName, charsmax(mdlName), "%s/t_%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}
else
{
format(mdlName, charsmax(mdlName), "%s/%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}

if(HATNAME[imodelnum][0] == 's')
{
UserHaveHatWith[player] = 's'

if(team == CS_TEAM_CT)
set_pev(g_bwEnt[player], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[player], pev_skin, 0)
}
}
} else {
UserHaveHatWith[player] = 'n'
new mdlName[256]
new CsTeams:team = cs_get_user_team(player)
formatex(UserHatModel[player], 255, "%s", HATMDL[imodelnum])

if(HATNAME[imodelnum][0] == 'm')
{
UserHaveHatWith[player] = 'm'
if(team == CS_TEAM_CT)
formatex(mdlName, charsmax(mdlName), "%s/c_%s", HATS_PATH, HATMDL[imodelnum])
else if(team == CS_TEAM_T)
formatex(mdlName, charsmax(mdlName), "%s/t_%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}
else
{
formatex(mdlName, charsmax(mdlName), "%s/%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}

if(HATNAME[imodelnum][0] == 's')
{
UserHaveHatWith[player] = 's'

if(team == CS_TEAM_CT)
set_pev(g_bwEnt[player], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[player], pev_skin, 0)
}
}
if(HATNAME[imodelnum][0] == 's' || HATNAME[imodelnum][0] == 'm')
print_col_chat(targeter, "!g[%s] !yШапку !g%s !yодел !t%s", PLUG_NAME, HATNAME[imodelnum][1],name)
else
print_col_chat(targeter, "!g[%s] !yШапку !g%s !yодел !t%s", PLUG_NAME, HATNAME[imodelnum],name)
}
}

public command_load()
{
if(file_exists(HatFile)) {
HATMDL[0] = ""
HATNAME[0] = "Снять шапку"
TotalHats = 1
new sfLineData[128]
new file = fopen(HatFile,"rt")
while(file && !feof(file)) {
fgets(file,sfLineData,127)

// Skip Comment and Empty Lines
if (containi(sfLineData,";") > -1) continue

// BREAK IT UP!
parse(sfLineData, HATMDL[TotalHats],40,HATNAME[TotalHats],40)

TotalHats += 1
if(TotalHats >= MAX_HATS) {
server_print("[%s] Reached hat limit",PLUG_NAME)
break
}
}
if(file) fclose(file)
}
MenuPages = floatround((TotalHats / 8.0), floatround_ceil)
server_print("[%s] Loaded %i hats, Generated %i pages)",PLUG_NAME,TotalHats,MenuPages)
}

stock print_col_chat(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!t", "^3") // Team Color

if (id)
players[0] = id
else
get_players(players, count, "ch")

{
for ( new i = 0; i < count; i++ )
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i])
write_string(msg)
message_end()
}
}
}
}

Спасибо тебе у тебя вебмани есть? могу за помощь отблагодарить ))) пиши лс
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MiXa
сообщение 7.8.2014, 10:03
Сообщение #10


Стаж: 12 лет

Сообщений: 415
Благодарностей: 91
Полезность: 181

evilforce,
чуть поправил код,была проблема с меню )))

Скрытый текст
Код:
#include <amxmisc>
#include <cstrike>
#include <fakemeta>

new g_bwEnt[33]

#define PLUG_NAME "Evilforce Hats"
#define PLUG_AUTH "trofian"
#define PLUG_VERS "1.0"

#define menusize 1024

#define HATS_PATH "models/next21_hats"

#define ADMIN_FLAG ADMIN_LEVEL_F

new HatFile[128]
new MenuPages, TotalHats
new CurrentMenu[33]

new UserHaveHatWith[33] = 'o' // s - skin, m - two models, n - normal hat, o - not connected
new UserHatModel[33][256]

#define MAX_HATS 64
new HATMDL[MAX_HATS][128]
new HATNAME[MAX_HATS][128]

public plugin_init()
{
register_plugin(PLUG_NAME, PLUG_VERS, PLUG_AUTH)
register_concmd("amx_givehat", "Give_Hat", ADMIN_RCON, "<nick> <mdl #>")
register_concmd("amx_removehats", "Remove_Hat", ADMIN_RCON, " - Removes hats from everyone.")
register_menucmd(register_menuid("\yHat Menu: [Page"),(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9),"MenuCommand")
register_clcmd("say /hats", "ShowMenu", -1, "Shows Knife menu")
register_clcmd("hats", "ShowMenu", -1, "Shows Knife menu")
register_event("ResetHUD", "ResetHUD", "be")
}

public ResetHUD(id) set_task(2.0, "reload_hat", id)

public reload_hat(id)
{
if(is_user_alive(id) && get_user_flags(id) & ADMIN_FLAG)
{

new CsTeams:team = cs_get_user_team(id)

if(!pev_valid(g_bwEnt[id]))
return

if(UserHaveHatWith[id] == 's')
{
if(team == CS_TEAM_CT)
set_pev(g_bwEnt[id], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[id], pev_skin, 0)
}
if(UserHaveHatWith[id] == 'm')
{
new hatmodel[256]

if(team == CS_TEAM_CT)
formatex(hatmodel, charsmax(hatmodel), "%s/c_%s", HATS_PATH, UserHatModel[id])
else if(team == CS_TEAM_T)
formatex(hatmodel, charsmax(hatmodel), "%s/t_%s", HATS_PATH, UserHatModel[id])

engfunc(EngFunc_SetModel, g_bwEnt[id], hatmodel)
}
}
}


public ShowMenu(id)
{
CurrentMenu[id] = 1
ShowHats(id)
return PLUGIN_HANDLED
}

public ShowHats(id)
{
if ( ! ( get_user_flags ( id ) & ADMIN_FLAG ) )
{
print_col_chat(id, "!gУ тебя нету доступа для входа в меню")
return PLUGIN_HANDLED;
}
new keys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9)

new szMenuBody[menusize + 1], WpnID
new nLen = format(szMenuBody, menusize, "\yHat Menu: [Page %i/%i]^n",CurrentMenu[id],MenuPages)

// Get Hat Names And Add Them To The List
for (new hatid=0; hatid < 8; hatid++) {
WpnID = ((CurrentMenu[id] * 8) + hatid - 8)
if (WpnID < TotalHats) {
new hatText[256]
if(WpnID > 0)
{
if(HATNAME[WpnID][0] == 's')
format(hatText, charsmax(hatText), "\y%s \w[\rцвет команды\w]", HATNAME[WpnID][1])
else if(HATNAME[WpnID][0] == 'm')
format(hatText, charsmax(hatText), "\y%s \w[\rмодель команды\w]", HATNAME[WpnID][1])
else
format(hatText, charsmax(hatText), "\y%s", HATNAME[WpnID])
}
else
format(hatText, charsmax(hatText), "\r%s", HATNAME[WpnID])
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w %i. %s",hatid + 1,hatText)
}
}

// Next Page And Previous/Close
if (CurrentMenu[id] == MenuPages) {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n^n\d9. Следующая")
} else {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n^n\w9. Следующая")
}

if (CurrentMenu[id] > 1) {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w0. Предудыщая")
} else {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w0. Выход")
}
show_menu(id, keys, szMenuBody, -1)
return PLUGIN_HANDLED
}
public MenuCommand(id, key)
{
switch(key)
{
case 8: //9 - [Next Page]
{
if (CurrentMenu[id] < MenuPages) CurrentMenu[id]++
ShowHats(id)
return PLUGIN_HANDLED
}
case 9: //0 - [Close]
{
CurrentMenu[id]--
if (CurrentMenu[id] > 0) ShowHats(id)
return PLUGIN_HANDLED
}
default:
{
new HatID = ((CurrentMenu[id] * 8) + key - 8)
if (HatID < TotalHats) {
Set_Hat(id,HatID,id)
}
}
}
return PLUGIN_HANDLED
}

public plugin_precache()
{
new cfgDir[32]
get_configsdir(cfgDir,31)
formatex(HatFile,63,"%s/HatList.ini",cfgDir)
command_load()

for (new i = 1; i < TotalHats; ++i) {
if(HATNAME[i][0] == 'm')
{
new CurrFile[256]

formatex(CurrFile, charsmax(CurrFile), "%s/t_%s", HATS_PATH, HATMDL[i])
if(file_exists(CurrFile)) precache_model(CurrFile)

formatex(CurrFile, charsmax(CurrFile), "%s/c_%s", HATS_PATH, HATMDL[i])
if(file_exists(CurrFile)) precache_model(CurrFile)
}
else
{
new CurrFile[256]
formatex(CurrFile, charsmax(CurrFile), "%s/%s", HATS_PATH, HATMDL[i])

if (file_exists (CurrFile))
{
precache_model(CurrFile)
server_print("[%s] Precached %s",PLUG_NAME,CurrFile)
}
else
server_print("[%s] Failed to precache %s",PLUG_NAME,CurrFile)
}
}
}

public client_connect(id)
{
if(g_bwEnt[id] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[id])
g_bwEnt[id] = 0
}

public client_disconnect(id)
{
if(g_bwEnt[id] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[id])
g_bwEnt[id] = 0
UserHaveHatWith[id] = 'o'
formatex(UserHatModel[id], 255, "!NULL")
}

public Give_Hat(id)
{
new smodelnum[5], name[32]
read_argv(1,name,31)
read_argv(2,smodelnum,4)

new player = cmd_target(id,name,2)
if (!player) {
print_col_chat(id, "!g[%s] !yИгрок с таким именем не найден", PLUG_NAME)
return PLUGIN_HANDLED
}

new imodelnum = (str_to_num(smodelnum))
if (imodelnum > MAX_HATS) return PLUGIN_HANDLED

Set_Hat(player,imodelnum,id)

return PLUGIN_CONTINUE
}

public Remove_Hat(id)
{
for (new i = 0; i < get_maxplayers(); ++i) {
if (is_user_connected(i) && g_bwEnt[i] > 0) {
engfunc(EngFunc_RemoveEntity,g_bwEnt[i])
g_bwEnt[i] = 0
}
}
client_print(id,print_chat,"[%s] Removed hats from everyone.",PLUG_NAME)
return PLUGIN_CONTINUE
}

public Set_Hat(player,imodelnum,targeter)
{
new name[32]
get_user_name(player, name, 31)
if (imodelnum == 0) {
if(g_bwEnt[player] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[player])
g_bwEnt[player] = 0
print_col_chat(targeter, "!g[%s] !yШапка снята с !t%s", PLUG_NAME, name)

} else {
if(g_bwEnt[player] < 1) {
g_bwEnt[player] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
if(g_bwEnt[player] > 0)
{
UserHaveHatWith[player] = 'n'
new mdlName[256]
new CsTeams:team = cs_get_user_team(player)

formatex(UserHatModel[player], 255, "%s", HATMDL[imodelnum])

set_pev(g_bwEnt[player], pev_movetype, MOVETYPE_FOLLOW)
set_pev(g_bwEnt[player], pev_aiment, player)
set_pev(g_bwEnt[player], pev_rendermode, kRenderNormal)
set_pev(g_bwEnt[player], pev_renderamt, 0.0)

if(HATNAME[imodelnum][0] == 'm')
{
UserHaveHatWith[player] = 'm'

if(team == CS_TEAM_CT)
formatex(mdlName, charsmax(mdlName), "%s/c_%s", HATS_PATH, HATMDL[imodelnum])
else if(team == CS_TEAM_T)
formatex(mdlName, charsmax(mdlName), "%s/t_%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}
else
{
format(mdlName, charsmax(mdlName), "%s/%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}

if(HATNAME[imodelnum][0] == 's')
{
UserHaveHatWith[player] = 's'

if(team == CS_TEAM_CT)
set_pev(g_bwEnt[player], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[player], pev_skin, 0)
}
}
} else {
UserHaveHatWith[player] = 'n'
new mdlName[256]
new CsTeams:team = cs_get_user_team(player)
formatex(UserHatModel[player], 255, "%s", HATMDL[imodelnum])

if(HATNAME[imodelnum][0] == 'm')
{
UserHaveHatWith[player] = 'm'
if(team == CS_TEAM_CT)
formatex(mdlName, charsmax(mdlName), "%s/c_%s", HATS_PATH, HATMDL[imodelnum])
else if(team == CS_TEAM_T)
formatex(mdlName, charsmax(mdlName), "%s/t_%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}
else
{
formatex(mdlName, charsmax(mdlName), "%s/%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}

if(HATNAME[imodelnum][0] == 's')
{
UserHaveHatWith[player] = 's'

if(team == CS_TEAM_CT)
set_pev(g_bwEnt[player], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[player], pev_skin, 0)
}
}
if(HATNAME[imodelnum][0] == 's' || HATNAME[imodelnum][0] == 'm')
print_col_chat(targeter, "!g[%s] !yШапку !g%s !yодел !t%s", PLUG_NAME, HATNAME[imodelnum][1],name)
else
print_col_chat(targeter, "!g[%s] !yШапку !g%s !yодел !t%s", PLUG_NAME, HATNAME[imodelnum],name)
}
}

public command_load()
{
if(file_exists(HatFile)) {
HATMDL[0] = ""
HATNAME[0] = "Снять шапку"
TotalHats = 1
new sfLineData[128]
new file = fopen(HatFile,"rt")
while(file && !feof(file)) {
fgets(file,sfLineData,127)

// Skip Comment and Empty Lines
if (containi(sfLineData,";") > -1) continue

// BREAK IT UP!
parse(sfLineData, HATMDL[TotalHats],40,HATNAME[TotalHats],40)

TotalHats += 1
if(TotalHats >= MAX_HATS) {
server_print("[%s] Reached hat limit",PLUG_NAME)
break
}
}
if(file) fclose(file)
}
MenuPages = floatround((TotalHats / 8.0), floatround_ceil)
server_print("[%s] Loaded %i hats, Generated %i pages)",PLUG_NAME,TotalHats,MenuPages)
}

stock print_col_chat(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!t", "^3") // Team Color

if (id)
players[0] = id
else
get_players(players, count, "ch")

{
for ( new i = 0; i < count; i++ )
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i])
write_string(msg)
message_end()
}
}
}
}


Допомога з встановлення / налаштування / оновлення за $ :>>> Сервери \ Моди \ Плагіни \ Модулі
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя evilforce
сообщение 7.8.2014, 10:05
Сообщение #11
Стаж: 13 лет

Сообщений: 33
Благодарностей: 2
Полезность: 48

Цитата(MiXa @ 7.8.2014, 11:03) *
evilforce,
чуть поправил код,была проблема с меню )))

Скрытый текст
Код:
#include <amxmisc>
#include <cstrike>
#include <fakemeta>

new g_bwEnt[33]

#define PLUG_NAME "Evilforce Hats"
#define PLUG_AUTH "trofian"
#define PLUG_VERS "1.0"

#define menusize 1024

#define HATS_PATH "models/next21_hats"

#define ADMIN_FLAG ADMIN_LEVEL_F

new HatFile[128]
new MenuPages, TotalHats
new CurrentMenu[33]

new UserHaveHatWith[33] = 'o' // s - skin, m - two models, n - normal hat, o - not connected
new UserHatModel[33][256]

#define MAX_HATS 64
new HATMDL[MAX_HATS][128]
new HATNAME[MAX_HATS][128]

public plugin_init()
{
register_plugin(PLUG_NAME, PLUG_VERS, PLUG_AUTH)
register_concmd("amx_givehat", "Give_Hat", ADMIN_RCON, "<nick> <mdl #>")
register_concmd("amx_removehats", "Remove_Hat", ADMIN_RCON, " - Removes hats from everyone.")
register_menucmd(register_menuid("\yHat Menu: [Page"),(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9),"MenuCommand")
register_clcmd("say /hats", "ShowMenu", -1, "Shows Knife menu")
register_clcmd("hats", "ShowMenu", -1, "Shows Knife menu")
register_event("ResetHUD", "ResetHUD", "be")
}

public ResetHUD(id) set_task(2.0, "reload_hat", id)

public reload_hat(id)
{
if(is_user_alive(id) && get_user_flags(id) & ADMIN_FLAG)
{

new CsTeams:team = cs_get_user_team(id)

if(!pev_valid(g_bwEnt[id]))
return

if(UserHaveHatWith[id] == 's')
{
if(team == CS_TEAM_CT)
set_pev(g_bwEnt[id], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[id], pev_skin, 0)
}
if(UserHaveHatWith[id] == 'm')
{
new hatmodel[256]

if(team == CS_TEAM_CT)
formatex(hatmodel, charsmax(hatmodel), "%s/c_%s", HATS_PATH, UserHatModel[id])
else if(team == CS_TEAM_T)
formatex(hatmodel, charsmax(hatmodel), "%s/t_%s", HATS_PATH, UserHatModel[id])

engfunc(EngFunc_SetModel, g_bwEnt[id], hatmodel)
}
}
}


public ShowMenu(id)
{
CurrentMenu[id] = 1
ShowHats(id)
return PLUGIN_HANDLED
}

public ShowHats(id)
{
if ( ! ( get_user_flags ( id ) & ADMIN_FLAG ) )
{
print_col_chat(id, "!gУ тебя нету доступа для входа в меню")
return PLUGIN_HANDLED;
}
new keys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9)

new szMenuBody[menusize + 1], WpnID
new nLen = format(szMenuBody, menusize, "\yHat Menu: [Page %i/%i]^n",CurrentMenu[id],MenuPages)

// Get Hat Names And Add Them To The List
for (new hatid=0; hatid < 8; hatid++) {
WpnID = ((CurrentMenu[id] * 8) + hatid - 8)
if (WpnID < TotalHats) {
new hatText[256]
if(WpnID > 0)
{
if(HATNAME[WpnID][0] == 's')
format(hatText, charsmax(hatText), "\y%s \w[\rцвет команды\w]", HATNAME[WpnID][1])
else if(HATNAME[WpnID][0] == 'm')
format(hatText, charsmax(hatText), "\y%s \w[\rмодель команды\w]", HATNAME[WpnID][1])
else
format(hatText, charsmax(hatText), "\y%s", HATNAME[WpnID])
}
else
format(hatText, charsmax(hatText), "\r%s", HATNAME[WpnID])
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w %i. %s",hatid + 1,hatText)
}
}

// Next Page And Previous/Close
if (CurrentMenu[id] == MenuPages) {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n^n\d9. Следующая")
} else {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n^n\w9. Следующая")
}

if (CurrentMenu[id] > 1) {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w0. Предудыщая")
} else {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w0. Выход")
}
show_menu(id, keys, szMenuBody, -1)
return PLUGIN_HANDLED
}
public MenuCommand(id, key)
{
switch(key)
{
case 8: //9 - [Next Page]
{
if (CurrentMenu[id] < MenuPages) CurrentMenu[id]++
ShowHats(id)
return PLUGIN_HANDLED
}
case 9: //0 - [Close]
{
CurrentMenu[id]--
if (CurrentMenu[id] > 0) ShowHats(id)
return PLUGIN_HANDLED
}
default:
{
new HatID = ((CurrentMenu[id] * 8) + key - 8)
if (HatID < TotalHats) {
Set_Hat(id,HatID,id)
}
}
}
return PLUGIN_HANDLED
}

public plugin_precache()
{
new cfgDir[32]
get_configsdir(cfgDir,31)
formatex(HatFile,63,"%s/HatList.ini",cfgDir)
command_load()

for (new i = 1; i < TotalHats; ++i) {
if(HATNAME[i][0] == 'm')
{
new CurrFile[256]

formatex(CurrFile, charsmax(CurrFile), "%s/t_%s", HATS_PATH, HATMDL[i])
if(file_exists(CurrFile)) precache_model(CurrFile)

formatex(CurrFile, charsmax(CurrFile), "%s/c_%s", HATS_PATH, HATMDL[i])
if(file_exists(CurrFile)) precache_model(CurrFile)
}
else
{
new CurrFile[256]
formatex(CurrFile, charsmax(CurrFile), "%s/%s", HATS_PATH, HATMDL[i])

if (file_exists (CurrFile))
{
precache_model(CurrFile)
server_print("[%s] Precached %s",PLUG_NAME,CurrFile)
}
else
server_print("[%s] Failed to precache %s",PLUG_NAME,CurrFile)
}
}
}

public client_connect(id)
{
if(g_bwEnt[id] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[id])
g_bwEnt[id] = 0
}

public client_disconnect(id)
{
if(g_bwEnt[id] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[id])
g_bwEnt[id] = 0
UserHaveHatWith[id] = 'o'
formatex(UserHatModel[id], 255, "!NULL")
}

public Give_Hat(id)
{
new smodelnum[5], name[32]
read_argv(1,name,31)
read_argv(2,smodelnum,4)

new player = cmd_target(id,name,2)
if (!player) {
print_col_chat(id, "!g[%s] !yИгрок с таким именем не найден", PLUG_NAME)
return PLUGIN_HANDLED
}

new imodelnum = (str_to_num(smodelnum))
if (imodelnum > MAX_HATS) return PLUGIN_HANDLED

Set_Hat(player,imodelnum,id)

return PLUGIN_CONTINUE
}

public Remove_Hat(id)
{
for (new i = 0; i < get_maxplayers(); ++i) {
if (is_user_connected(i) && g_bwEnt[i] > 0) {
engfunc(EngFunc_RemoveEntity,g_bwEnt[i])
g_bwEnt[i] = 0
}
}
client_print(id,print_chat,"[%s] Removed hats from everyone.",PLUG_NAME)
return PLUGIN_CONTINUE
}

public Set_Hat(player,imodelnum,targeter)
{
new name[32]
get_user_name(player, name, 31)
if (imodelnum == 0) {
if(g_bwEnt[player] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[player])
g_bwEnt[player] = 0
print_col_chat(targeter, "!g[%s] !yШапка снята с !t%s", PLUG_NAME, name)

} else {
if(g_bwEnt[player] < 1) {
g_bwEnt[player] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
if(g_bwEnt[player] > 0)
{
UserHaveHatWith[player] = 'n'
new mdlName[256]
new CsTeams:team = cs_get_user_team(player)

formatex(UserHatModel[player], 255, "%s", HATMDL[imodelnum])

set_pev(g_bwEnt[player], pev_movetype, MOVETYPE_FOLLOW)
set_pev(g_bwEnt[player], pev_aiment, player)
set_pev(g_bwEnt[player], pev_rendermode, kRenderNormal)
set_pev(g_bwEnt[player], pev_renderamt, 0.0)

if(HATNAME[imodelnum][0] == 'm')
{
UserHaveHatWith[player] = 'm'

if(team == CS_TEAM_CT)
formatex(mdlName, charsmax(mdlName), "%s/c_%s", HATS_PATH, HATMDL[imodelnum])
else if(team == CS_TEAM_T)
formatex(mdlName, charsmax(mdlName), "%s/t_%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}
else
{
format(mdlName, charsmax(mdlName), "%s/%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}

if(HATNAME[imodelnum][0] == 's')
{
UserHaveHatWith[player] = 's'

if(team == CS_TEAM_CT)
set_pev(g_bwEnt[player], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[player], pev_skin, 0)
}
}
} else {
UserHaveHatWith[player] = 'n'
new mdlName[256]
new CsTeams:team = cs_get_user_team(player)
formatex(UserHatModel[player], 255, "%s", HATMDL[imodelnum])

if(HATNAME[imodelnum][0] == 'm')
{
UserHaveHatWith[player] = 'm'
if(team == CS_TEAM_CT)
formatex(mdlName, charsmax(mdlName), "%s/c_%s", HATS_PATH, HATMDL[imodelnum])
else if(team == CS_TEAM_T)
formatex(mdlName, charsmax(mdlName), "%s/t_%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}
else
{
formatex(mdlName, charsmax(mdlName), "%s/%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}

if(HATNAME[imodelnum][0] == 's')
{
UserHaveHatWith[player] = 's'

if(team == CS_TEAM_CT)
set_pev(g_bwEnt[player], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[player], pev_skin, 0)
}
}
if(HATNAME[imodelnum][0] == 's' || HATNAME[imodelnum][0] == 'm')
print_col_chat(targeter, "!g[%s] !yШапку !g%s !yодел !t%s", PLUG_NAME, HATNAME[imodelnum][1],name)
else
print_col_chat(targeter, "!g[%s] !yШапку !g%s !yодел !t%s", PLUG_NAME, HATNAME[imodelnum],name)
}
}

public command_load()
{
if(file_exists(HatFile)) {
HATMDL[0] = ""
HATNAME[0] = "Снять шапку"
TotalHats = 1
new sfLineData[128]
new file = fopen(HatFile,"rt")
while(file && !feof(file)) {
fgets(file,sfLineData,127)

// Skip Comment and Empty Lines
if (containi(sfLineData,";") > -1) continue

// BREAK IT UP!
parse(sfLineData, HATMDL[TotalHats],40,HATNAME[TotalHats],40)

TotalHats += 1
if(TotalHats >= MAX_HATS) {
server_print("[%s] Reached hat limit",PLUG_NAME)
break
}
}
if(file) fclose(file)
}
MenuPages = floatround((TotalHats / 8.0), floatround_ceil)
server_print("[%s] Loaded %i hats, Generated %i pages)",PLUG_NAME,TotalHats,MenuPages)
}

stock print_col_chat(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!t", "^3") // Team Color

if (id)
players[0] = id
else
get_players(players, count, "ch")

{
for ( new i = 0; i < count; i++ )
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i])
write_string(msg)
message_end()
}
}
}
}

все работает спасибо)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
yukish
сообщение 7.8.2014, 10:17
Сообщение #12
Стаж: 12 лет

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

Напишите в 2х словах возможности этого плагина.
И выложите пожалуйста модели шапок.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MiXa
сообщение 7.8.2014, 18:52
Сообщение #13


Стаж: 12 лет

Сообщений: 415
Благодарностей: 91
Полезность: 181

evilforce,
здесь будут вестись логи,как вы просили в этой теме Логирование команды /hats (одолжил из кода gavrilyuc )

Скрытый текст
Код:
#include <amxmisc>
#include <cstrike>
#include <fakemeta>

new g_bwEnt[33]

#define PLUG_NAME "Evilforce Hats"
#define PLUG_AUTH "trofian"
#define PLUG_VERS "1.0"

#define menusize 1024

#define HATS_PATH "models/next21_hats"

#define ADMIN_FLAG ADMIN_LEVEL_F

new HatFile[128]
new MenuPages, TotalHats
new CurrentMenu[33]

new UserHaveHatWith[33] = 'o' // s - skin, m - two models, n - normal hat, o - not connected
new UserHatModel[33][256]

#define MAX_HATS 64
new HATMDL[MAX_HATS][128]
new HATNAME[MAX_HATS][128]

public plugin_init()
{
register_plugin(PLUG_NAME, PLUG_VERS, PLUG_AUTH)
register_concmd("amx_givehat", "Give_Hat", ADMIN_RCON, "<nick> <mdl #>")
register_concmd("amx_removehats", "Remove_Hat", ADMIN_RCON, " - Removes hats from everyone.")
register_menucmd(register_menuid("\yHat Menu: [Page"),(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9),"MenuCommand")
register_clcmd("say /hats", "ShowMenu", -1, "Shows Knife menu")
register_clcmd("hats", "ShowMenu", -1, "Shows Knife menu")
register_event("ResetHUD", "ResetHUD", "be")
}

public ResetHUD(id) set_task(2.0, "reload_hat", id)

public reload_hat(id)
{
if(is_user_alive(id) && get_user_flags(id) & ADMIN_FLAG)
{

new CsTeams:team = cs_get_user_team(id)

if(!pev_valid(g_bwEnt[id]))
return

if(UserHaveHatWith[id] == 's')
{
if(team == CS_TEAM_CT)
set_pev(g_bwEnt[id], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[id], pev_skin, 0)
}
if(UserHaveHatWith[id] == 'm')
{
new hatmodel[256]

if(team == CS_TEAM_CT)
formatex(hatmodel, charsmax(hatmodel), "%s/c_%s", HATS_PATH, UserHatModel[id])
else if(team == CS_TEAM_T)
formatex(hatmodel, charsmax(hatmodel), "%s/t_%s", HATS_PATH, UserHatModel[id])

engfunc(EngFunc_SetModel, g_bwEnt[id], hatmodel)
}
}
}


public ShowMenu(id)
{
CurrentMenu[id] = 1
ShowHats(id)
return PLUGIN_HANDLED
}

public ShowHats(id)
{
if ( ! ( get_user_flags ( id ) & ADMIN_FLAG ) )
{
print_col_chat(id, "!gУ тебя нету доступа для входа в меню")
return PLUGIN_HANDLED;
}
new keys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9)

new szMenuBody[menusize + 1], WpnID
new nLen = format(szMenuBody, menusize, "\yHat Menu: [Page %i/%i]^n",CurrentMenu[id],MenuPages)

// Get Hat Names And Add Them To The List
for (new hatid=0; hatid < 8; hatid++) {
WpnID = ((CurrentMenu[id] * 8) + hatid - 8)
if (WpnID < TotalHats) {
new hatText[256]
if(WpnID > 0)
{
if(HATNAME[WpnID][0] == 's')
format(hatText, charsmax(hatText), "\y%s \w[\rцвет команды\w]", HATNAME[WpnID][1])
else if(HATNAME[WpnID][0] == 'm')
format(hatText, charsmax(hatText), "\y%s \w[\rмодель команды\w]", HATNAME[WpnID][1])
else
format(hatText, charsmax(hatText), "\y%s", HATNAME[WpnID])
}
else
format(hatText, charsmax(hatText), "\r%s", HATNAME[WpnID])
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w %i. %s",hatid + 1,hatText)
}
}

// Next Page And Previous/Close
if (CurrentMenu[id] == MenuPages) {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n^n\d9. Следующая")
} else {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n^n\w9. Следующая")
}

if (CurrentMenu[id] > 1) {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w0. Предудыщая")
} else {
nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w0. Выход")
}
show_menu(id, keys, szMenuBody, -1)
return PLUGIN_HANDLED
}
public MenuCommand(id, key)
{
switch(key)
{
case 8: //9 - [Next Page]
{
if (CurrentMenu[id] < MenuPages) CurrentMenu[id]++
ShowHats(id)
return PLUGIN_HANDLED
}
case 9: //0 - [Close]
{
CurrentMenu[id]--
if (CurrentMenu[id] > 0) ShowHats(id)
return PLUGIN_HANDLED
}
default:
{
new HatID = ((CurrentMenu[id] * 8) + key - 8)
if (HatID < TotalHats) {
Set_Hat(id,HatID,id)
}
}
}
return PLUGIN_HANDLED
}

public plugin_precache()
{
new cfgDir[32]
get_configsdir(cfgDir,31)
formatex(HatFile,63,"%s/HatList.ini",cfgDir)
command_load()

for (new i = 1; i < TotalHats; ++i) {
if(HATNAME[i][0] == 'm')
{
new CurrFile[256]

formatex(CurrFile, charsmax(CurrFile), "%s/t_%s", HATS_PATH, HATMDL[i])
if(file_exists(CurrFile)) precache_model(CurrFile)

formatex(CurrFile, charsmax(CurrFile), "%s/c_%s", HATS_PATH, HATMDL[i])
if(file_exists(CurrFile)) precache_model(CurrFile)
}
else
{
new CurrFile[256]
formatex(CurrFile, charsmax(CurrFile), "%s/%s", HATS_PATH, HATMDL[i])

if (file_exists (CurrFile))
{
precache_model(CurrFile)
server_print("[%s] Precached %s",PLUG_NAME,CurrFile)
}
else
server_print("[%s] Failed to precache %s",PLUG_NAME,CurrFile)
}
}
}

public client_connect(id)
{
if(g_bwEnt[id] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[id])
g_bwEnt[id] = 0
}

public client_disconnect(id)
{
if(g_bwEnt[id] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[id])
g_bwEnt[id] = 0
UserHaveHatWith[id] = 'o'
formatex(UserHatModel[id], 255, "!NULL")
}

public Give_Hat(id)
{
new smodelnum[5], name[32]
read_argv(1,name,31)
read_argv(2,smodelnum,4)

new player = cmd_target(id,name,2)
if (!player) {
print_col_chat(id, "!g[%s] !yИгрок с таким именем не найден", PLUG_NAME)
return PLUGIN_HANDLED
}

new imodelnum = (str_to_num(smodelnum))
if (imodelnum > MAX_HATS) return PLUGIN_HANDLED

Set_Hat(player,imodelnum,id)

return PLUGIN_CONTINUE
}

public Remove_Hat(id)
{
for (new i = 0; i < get_maxplayers(); ++i) {
if (is_user_connected(i) && g_bwEnt[i] > 0) {
engfunc(EngFunc_RemoveEntity,g_bwEnt[i])
g_bwEnt[i] = 0
}
}
client_print(id,print_chat,"[%s] Removed hats from everyone.",PLUG_NAME)
return PLUGIN_CONTINUE
}

public Set_Hat(player,imodelnum,targeter)
{
new name[32]
get_user_name(player, name, 31)
if (imodelnum == 0) {
if(g_bwEnt[player] > 0) engfunc(EngFunc_RemoveEntity,g_bwEnt[player])
g_bwEnt[player] = 0
print_col_chat(targeter, "!g[%s] !yШапка снята с !t%s", PLUG_NAME, name)

} else {
if(g_bwEnt[player] < 1) {
g_bwEnt[player] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
if(g_bwEnt[player] > 0)
{
UserHaveHatWith[player] = 'n'
new mdlName[256]
new CsTeams:team = cs_get_user_team(player)

formatex(UserHatModel[player], 255, "%s", HATMDL[imodelnum])

set_pev(g_bwEnt[player], pev_movetype, MOVETYPE_FOLLOW)
set_pev(g_bwEnt[player], pev_aiment, player)
set_pev(g_bwEnt[player], pev_rendermode, kRenderNormal)
set_pev(g_bwEnt[player], pev_renderamt, 0.0)

if(HATNAME[imodelnum][0] == 'm')
{
UserHaveHatWith[player] = 'm'

if(team == CS_TEAM_CT)
formatex(mdlName, charsmax(mdlName), "%s/c_%s", HATS_PATH, HATMDL[imodelnum])
else if(team == CS_TEAM_T)
formatex(mdlName, charsmax(mdlName), "%s/t_%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}
else
{
format(mdlName, charsmax(mdlName), "%s/%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}

if(HATNAME[imodelnum][0] == 's')
{
UserHaveHatWith[player] = 's'

if(team == CS_TEAM_CT)
set_pev(g_bwEnt[player], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[player], pev_skin, 0)
}
}
} else {
UserHaveHatWith[player] = 'n'
new mdlName[256]
new CsTeams:team = cs_get_user_team(player)
formatex(UserHatModel[player], 255, "%s", HATMDL[imodelnum])

if(HATNAME[imodelnum][0] == 'm')
{
UserHaveHatWith[player] = 'm'
if(team == CS_TEAM_CT)
formatex(mdlName, charsmax(mdlName), "%s/c_%s", HATS_PATH, HATMDL[imodelnum])
else if(team == CS_TEAM_T)
formatex(mdlName, charsmax(mdlName), "%s/t_%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}
else
{
formatex(mdlName, charsmax(mdlName), "%s/%s", HATS_PATH, HATMDL[imodelnum])

engfunc(EngFunc_SetModel, g_bwEnt[player], mdlName)
}

if(HATNAME[imodelnum][0] == 's')
{
UserHaveHatWith[player] = 's'

if(team == CS_TEAM_CT)
set_pev(g_bwEnt[player], pev_skin, 1)
else if(team == CS_TEAM_T)
set_pev(g_bwEnt[player], pev_skin, 0)
}
}
if(HATNAME[imodelnum][0] == 's' || HATNAME[imodelnum][0] == 'm') {
print_col_chat(targeter, "!g[%s] !yШапку !g%s !yодел !t%s", PLUG_NAME, HATNAME[imodelnum][1],name)
log_to_file("Hats.log", "%s selected hats ", name, HATNAME[imodelnum][1]);
}
else {
print_col_chat(targeter, "!g[%s] !yШапку !g%s !yодел !t%s", PLUG_NAME, HATNAME[imodelnum],name)
log_to_file("Hats.log", "%s selected hats ", name, HATNAME[imodelnum]);
}
}
}

public command_load()
{
if(file_exists(HatFile)) {
HATMDL[0] = ""
HATNAME[0] = "Снять шапку"
TotalHats = 1
new sfLineData[128]
new file = fopen(HatFile,"rt")
while(file && !feof(file)) {
fgets(file,sfLineData,127)

// Skip Comment and Empty Lines
if (containi(sfLineData,";") > -1) continue

// BREAK IT UP!
parse(sfLineData, HATMDL[TotalHats],40,HATNAME[TotalHats],40)

TotalHats += 1
if(TotalHats >= MAX_HATS) {
server_print("[%s] Reached hat limit",PLUG_NAME)
break
}
}
if(file) fclose(file)
}
MenuPages = floatround((TotalHats / 8.0), floatround_ceil)
server_print("[%s] Loaded %i hats, Generated %i pages)",PLUG_NAME,TotalHats,MenuPages)
}

stock print_col_chat(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!t", "^3") // Team Color

if (id)
players[0] = id
else
get_players(players, count, "ch")

{
for ( new i = 0; i < count; i++ )
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i])
write_string(msg)
message_end()
}
}
}
}


Отредактировал: MiXa, - 7.8.2014, 18:53


Допомога з встановлення / налаштування / оновлення за $ :>>> Сервери \ Моди \ Плагіни \ Модулі
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя evilforce
сообщение 8.8.2014, 9:49
Сообщение #14
Стаж: 13 лет

Сообщений: 33
Благодарностей: 2
Полезность: 48

Вот выкладываю ) Плагин + модели
Прикрепленные файлы:
Прикрепленный файл  hat.rar ( 19,33 килобайт ) Кол-во скачиваний: 14
Прикрепленный файл  pack_1.rar ( 1,92 мегабайт ) Кол-во скачиваний: 12
Прикрепленный файл  pack_2.rar ( 1,95 мегабайт ) Кол-во скачиваний: 11
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: