MapManager_gui Mistrick

Сообщения
103
Реакции
4
Ошибка
ошибок в консоли нету
ОС
Linux
Amx Mod X
AMX Mod X 1.9.0.5270 (http://www.amxmodx.org)
Authors:
David "BAILOPAN" Anderson, Pavol "PM OnoTo" Marko
Felix "SniperBeamer" Geyer, Jonny "Got His Gun" Bergstrom
Lukasz "SidLuke" Wlasinski, Christian "Basic-Master" Hammacher
Borja "faluco" Ferrer, Scott "DS" Ehlert
Compiled: Jun 3 2020 15:25:29
Built from: https://github.com/alliedmodders/amxmodx/commit/1bfec70
Build ID: 5270:1bfec70
Core mode: JIT+ASM32
Билд
Protocol version 48
Exe version 1.1.2.7/Stdio (cstrike)
ReHLDS version: 3.7.0.698-dev
Build date: 10:14:22 Aug 19 2020 (2321)
Build from: https://github.com/dreamstalker/rehlds/commit/376bc15
ReGamedll
ReGameDLL version: 5.18.0.474-dev
Build date: 11:07:34 Jul 16 2020
Build from: https://github.com/s1lentq/ReGameDLL_CS/commit/efb06a7
Версия Metamod
Metamod-r v1.3.0.128, API (5:13)
Metamod-r build: 17:47:54 Aug 24 2018
Metamod-r from: https://github.com/theAsmodai/metamod-r/commit/0cf2f70
Список метамодулей
[ 1] SafeNameAndChat RUN - SafeNameAndChat.so v1.1 ini ANY ANY
[ 2] Reunion RUN - reunion_mm_i386.so v0.1.0.92c ini Start Never
[ 3] Rechecker RUN - rechecker_mm_i386.so v2.5 ini Chlvl ANY
[ 4] AMX Mod X RUN - amxmodx_mm_i386.so v1.9.0.5270 ini Start ANY
[ 5] ReSemiclip RUN - resemiclip_mm_i386.so v2.3.9 ini Chlvl ANY
[ 6] ReAuthCheck RUN - reauthcheck_mm_i386.so v0.1.6 ini Start Never
[ 7] Revoice RUN - revoice_mm_i386.so v0.1.0.34 ini Start Never
[ 8] WHBlocker RUN - whblocker_mm_i386.so v1.5.697 ini Chlvl ANY
[ 9] Engine RUN - engine_amxx_i386.so v1.9.0.5270 pl4 ANY ANY
[10] FakeMeta RUN - fakemeta_amxx_i386.so v1.9.0.5270 pl4 ANY ANY
[11] Ham Sandwich RUN - hamsandwich_amxx_i386.so v1.9.0.5270 pl4 ANY ANY
[12] ReAimDetector RUN - reaimdetector_amxx_i386.so v0.2.2 pl4 ANY Never
[13] AuthEmu RUN - authemu_amxx_i386.so v4.2.12.311-dev+m pl4 ANY Never
[14] ReAPI RUN - reapi_amxx_i386.so v5.15.0.197-dev pl4 ANY Never
[15] MySQL RUN - mysql_amxx_i386.so v1.9.0.5270 pl4 ANY ANY
[16] CSX RUN - csx_amxx_i386.so v1.9.0.5271 pl4 ANY ANY
[17] Fun RUN - fun_amxx_i386.so v1.9.0.5270 pl4 ANY ANY
[18] CStrike RUN - cstrike_amxx_i386.so v1.9.0.5271 pl4 ANY ANY
Список плагинов
[ 1] Admin Loader 3.5 neygomon admin_loader.am running
[ 2] FreshBans 1.3.8b kanagava fresh_bans.amxx running
[ 3] Anti Flood 1.9.0.5271 AMXX Dev Team antiflood.amxx running
[ 4] ReAimDetector API 0.2.2 ReHLDS Team reaimdetector.a running
[ 5] [182] Fast Hack Detect 19.03.12 Valer4 fast_hack_detec running
[ 6] Anti Sound ESP 0.2.181 s3zy AntiSoundESP_82 running
[ 7] Aliases checker 1.0.6 kanagava alias_detector_ running
[ 8] Admin Chat 1.8.1.3746 AMXX Dev Team adminchat.amxx running
[ 9] [190] High Ping Kicker 20.06.06 SKAJIbnEJIb hpk_rbs.amxx running
[ 10] [190] Cvar On Map 20.06.06 SKAJIbnEJIb cvar_on_map.amx running
[ 11] Warm Up 2020 0.1.573 s3zy warmup2020.amxx running
[ 12] [190] Ultimate Weapons 20.06.06 SKAJIbnEJIb ultimate_weapon running
[ 13] Gag Me 2.3.4 Radius gag_me.amxx running
[ 14] [190] CsStats MySQL 20.06.06 SKAJIbnEJIb csstats_mysql.a running
[ 15] [190] CsStats Editor 20.06.06 SKAJIbnEJIb csstats_editor. running
[ 16] [190] Skill ELO 20.06.06 SKAJIbnEJIb skill_elo.amxx running
[ 17] [190] StatsX RBS 20.06.06 SKAJIbnEJIb & AM statsx_rbs.amxx running
[ 18] Stats Configuration 1.8.2 AMXX Dev Team statscfg.amxx running
[ 19] Menus Front-End 20.06.06 SKAJIbnEJIb & AM amxmodmenu_rbs. running
[ 20] [190] AdminCmd RBS 20.06.06 SKAJIbnEJIb & AM admincmd_rbs.am running
[ 21] Defused Sound 1.0 MayroN | Stimul Bomb_Defused_So running
[ 22] [190] VIP RBS 20.07.20 SKAJIbnEJIb vip_rbs.amxx running
[ 23] [190] CSDM Lite 20.08.08 SKAJIbnEJIb csdm_lite.amxx running
[ 24] [190] Army Ranks Ultim 20.06.06 SKAJIbnEJIb army_ranks_ulti running
[ 25] [182] C4 Real Timer 17.10.30 Sanlerus c4_realtimer.am running
[ 26] [190] Ultimate Informe 20.06.06 SKAJIbnEJIb ultimate_inform running
[ 27] [190] Damager RBS 20.06.06 SKAJIbnEJIb damager_rbs.amx running
[ 28] [190] No Team Flash 20.06.06 SKAJIbnEJIb NoTeamFlash.amx running
[ 29] [182] VoteBan L4D 17.10.30 Sanlerus voteban_l4d.amx running
[ 30] [190] RestMenu RBS 20.06.06 SKAJIbnEJIb & AM restmenu_rbs.am running
[ 31] Map Manager: Sub Plugi 0.1 Mistrick mapmanager_subp running
[ 32] Map Manager: Effects 0.0.8 Mistrick map_manager_eff running
[ 33] Map Manager: Informer 0.0.5 Mistrick map_manager_inf running
[ 34] Map Manager: Rtv 0.1.1 Mistrick map_manager_rtv running
[ 35] [190] Chat RBS 20.06.06 SKAJIbnEJIb chat_rbs.amxx running
[ 36] [190] MapsMenu RBS 20.06.06 SKAJIbnEJIb & AM mapsmenu_rbs.am running
[ 37] [190] Parachute RBS 20.06.06 SKAJIbnEJIb & KR parachute_rbs.a running
[ 38] DHUD Deads ALL 1.3.1 M1 TEAM dhud_message_de running
[ 39] [ReAPI] KiLL Assist poka_4to_b PRoSToTeM@ Kill_assist_rea running
[ 40] [Reapi] Custom Models 1.6.1 neygomon custom_models.a running
[ 41] Reset Score 1.0 M1 TEAM ResetScore.amxx running
[ 42] Money 1.1 M1 TEAM money.amxx running
[ 43] [190] AC Spectator ESP 20.06.06 SKAJIbnEJIb & Ko ac_esp.amxx running
[ 44] Advert Messages 1.22 neygomon adverts.amxx running
[ 45] Block grande info 1.0 neygomon BlockGrenadeInf running
[ 46] Kills Counter 0.3 serfreeman1337 kills_counter.a running
[ 47] Fake Ping 1.1 MeRcyLeZZ/gyxoBk fake_ping.amxx running
[ 48] HS Sound 1.0 M1 TEAM headshot.amxx running
[ 49] [ReAPI] Mode 2x2 2.5re M1 TEAM mode.amxx running
[ 50] [190] AR Bets 20.06.06 SKAJIbnEJIb ar_bets.amxx running
[ 51] [190] WallHack Viewer 20.06.06 SKAJIbnEJIb wallhack_viewer running
[ 52] [190] SlayLosers RBS 20.06.06 SKAJIbnEJIb & d3 slaylosers_rbs. running
[ 53] [190] DemoRecorder RBS 20.06.06 SKAJIbnEJIb demorecorder_rb running
[ 54] Nice Killer 1.6 Got Milk? / HoHo nice_killer.amx running
[ 55] Weapon Model + Sound R 1.2 GHW_Chronic GHW_Weapon_Repl running
[ 56] [190] Nick FIX RBS 20.06.06 SKAJIbnEJIb nickfix_rbs.amx running
[ 57] [190] Block Reconnect 20.06.06 ShaTalKiN Block_Reconnect running
[ 58] AFK Control 1.4.1 [Rnd neygomon afk_control.amx running
[ 59] [190] Blind RBS 20.06.06 SKAJIbnEJIb blind_rbs.amxx running
[ 60] [190] Ultimate Knife 20.06.06 SKAJIbnEJIb ultimate_knife. running
[ 61] Auto Team Balance Adva 1.5.1 Radius auto_team_balan running
[ 62] Join_Music 1.0 Makenzo muz.amxx running
[ 63] unknown unknown unknown vote.amxx running
[ 64] ReChecker Logging freesrv AMXX rc_logging.amxx running
[ 65] Color Flash Screen 1.6.4 Radius (Stimul i color_flash_scr running
[ 66] Screen Player 1.0 Dom1no_[KZ] screen_player.a running
[ 67] Real Nade Drops 0.4 VEN realnadedrops.a running
[ 68] [190] First Players Re 20.06.06 SKAJIbnEJIb FirstPlayersRes running
[ 69] AuthEmu API 1.0 Dev-MS Team authemu.amxx running
[ 70] [ReAPI] Healthnade 0.0.487 (m F@nt0M reapi_healthnad running
[ 71] RC BaseChanger freesrv AMXX rc_basechanger. running
[ 72] [190] Snipers RBS 20.06.06 SKAJIbnEJIb snipers_rbs.amx running
[ 73] Mute 1.0 Makenzo mute.amxx running
[ 74] Map Manager: Core 3.0.4 Mistrick map_manager_cor running
[ 75] Map Manager: Scheduler 0.1.4 Mistrick map_manager_sch running
[ 76] Map Manager: GUI 0.0.4 Mistrick map_manager_gui running
[ 77] Map Manager: Nominatio 0.1.0 Mistrick map_manager_nom running
[ 78] Map Manager: BlockList 0.0.3 Mistrick map_manager_blo running
[ 79] Map Manager: Advanced 0.0.5 Mistrick map_manager_adv running
79 plugins, 79 running
Автор плагина
Mistrick
Версия плагина
Map Manager: GUI 0.0.4
Исходный код
/*
Credits: [WPMG]PRoSToTeM@, Sanlerus
Models, sprites for test by 8dp
*/
#include <amxmodx>
#include <fakemeta>
#include <engine>
#include <map_manager>

#if AMXX_VERSION_NUM < 183
#include <colorchat>
#include <dhudmessage>
#endif

#define PLUGIN "Map Manager: GUI"
#define VERSION "0.0.4"
#define AUTHOR "Mistrick"

#pragma semicolon 1

#define get_num(%0) get_pcvar_num(g_pCvars[%0])
#define get_float(%0) get_pcvar_float(g_pCvars[%0])
#define hide_ent(%0) set_pev(%0, pev_effects, pev(%0, pev_effects) | EF_NODRAW)
#define show_ent(%0) set_pev(%0, pev_effects, pev(%0, pev_effects) & ~EF_NODRAW)

#define BOX_MODEL "models/map_manager/blackbox2.mdl"
#define MODEL_CURSOR "sprites/map_manager/cursor2.spr"

#define FILE_PACKS "mappacks.ini"

#define MAX_MAP_CUBES 9

#define MAX_CURSOR_X 140.0
#define MAX_CURSOR_Y 103.0
#define CURSOR_SENSITIVITY 2.2

#define UNKNOWN_MAP_FRAME 0.0
#define EXTEND_MAP_FRAME 1.0

#define COORD_X 0
#define COORD_Y 1

new const SELECTED_COLOR[3] = {55, 200, 55};

enum _:FramesStruct {
BeginFrame,
EndFrame
};

enum {
UNKNOWN_MAP,
PACK_MAP,
CURRENT_MAP
};

enum Cvars {
CURSOR_SENS,
HIDE_MAP_PREFIX,
SHOW_SELECTS,
SHOW_PERCENT
};

new g_pCvars[Cvars];

new g_pPointOfView;
new g_pCursorEntity;

new Float:g_vecCursorPos[33][3];
new Float:g_vecPOVOrigin[3];

new g_bShowGUI[33];
new g_iCurEnt[33];

enum _:CubeInfo {
Name[MAPNAME_LENGTH],
Float:Begin,
Float:End
};

new g_eCubesInfo[MAX_MAP_CUBES][CubeInfo];
new g_pMapCubes[MAX_MAP_CUBES];
new Float:g_fMapCubesOrigin[MAX_MAP_CUBES][3];

new Float:g_fDhudCoords[MAX_MAP_CUBES][2];
new g_bShowName[MAX_MAP_CUBES];

new g_iMapsCount;
new g_bVoted[33];

new g_iCurPos[33];
new Float:g_fCurFrame[33];

enum _:PackStruct {
Path[64],
Float:Scale,
Trie:Maps
};

new Array:g_aPacks;

new bool:g_bShowSelects;
new g_iCurMap;

new g_sCurMap[MAPNAME_LENGTH];
new g_sPrefix[32];

enum Forwards {
AddToFullPack_Pre,
AddToFullPack_Post,
CmdStart_Post,
CheckVisibility_Pre
};

new g_hForwards[Forwards];

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);

// TODO: cvars
g_pCvars[CURSOR_SENS] = register_cvar("mapm_cursor_sens", "2.5");
g_pCvars[HIDE_MAP_PREFIX] = register_cvar("mapm_hide_map_prefix", "1"); // TODO
}
public plugin_cfg()
{
mapm_get_prefix(g_sPrefix, charsmax(g_sPrefix));

g_pCvars[SHOW_SELECTS] = get_cvar_pointer("mapm_show_selects");
g_pCvars[SHOW_PERCENT] = get_cvar_pointer("mapm_show_percent");
}
public plugin_precache()
{
precache_model(BOX_MODEL);
precache_model(MODEL_CURSOR);

g_pPointOfView = create_entity("info_target");
set_pev(g_pPointOfView, pev_classname, "PointOfView");
entity_set_model(g_pPointOfView, BOX_MODEL);
entity_set_size(g_pPointOfView, Float:{ -5.0, -5.0, -5.0 }, Float:{ 5.0, 5.0, 5.0 });
set_pev(g_pPointOfView, pev_effects, EF_BRIGHTLIGHT);

g_pCursorEntity = create_entity("info_target");
set_pev(g_pCursorEntity, pev_classname, "CursorEntity");
set_pev(g_pCursorEntity, pev_scale, 0.1);
entity_set_model(g_pCursorEntity, MODEL_CURSOR);

for(new i; i < sizeof(g_pMapCubes); i++) {
g_pMapCubes[i] = create_entity("info_target");
set_pev(g_pMapCubes[i], pev_classname, "MapCube");
set_pev(g_pMapCubes[i], pev_scale, 0.2);
set_pev(g_pMapCubes[i], pev_effects, EF_BRIGHTLIGHT);
entity_set_size(g_pMapCubes[i], Float:{ -5.0, -5.0, -5.0 }, Float:{ 5.0, 5.0, 5.0 });
}

new Float:origin[3] = { -4000.0, -3800.0, -4000.0 };

entity_set_origin(g_pPointOfView, origin);
g_vecPOVOrigin = origin;

// TODO: Move offsets to defines
origin[0] += 144.0;
origin[1] += 96.0;
origin[2] += 48.0;

for(new i; i < sizeof(g_pMapCubes); i++) {
entity_set_origin(g_pMapCubes[i], origin);
g_fMapCubesOrigin[i] = origin;

origin[1] -= 96.0;

if((i + 1) % 3 == 0) {
origin[2] -= 48.0;
origin[1] += 96.0 * 3.0;
}
}

get_mapname(g_sCurMap, charsmax(g_sCurMap));

load_packs();

get_dhud_coords();
hide_gui();
}

get_dhud_coords()
{
new Float:start[3];
pev(g_pPointOfView, pev_origin, start);
start[1] += MAX_CURSOR_X;
start[2] += MAX_CURSOR_Y;

new Float:cube[3], Float:diff[2];

for(new i; i < sizeof(g_pMapCubes); i++) {
cube = g_fMapCubesOrigin[i];
diff[COORD_X] = start[1] - cube[1];
diff[COORD_Y] = start[2] - cube[2];

g_fDhudCoords[i][COORD_X] = diff[COORD_X] / (MAX_CURSOR_X * 2.0) - 0.07;
g_fDhudCoords[i][COORD_Y] = diff[COORD_Y] / (MAX_CURSOR_Y * 2.0);
g_fDhudCoords[i][COORD_Y] += (g_fDhudCoords[i][COORD_Y] > 0.5) ? 0.058 : 0.073;

// server_print("%d - %f %f", i, g_fDhudCoords[i][COORD_X], g_fDhudCoords[i][COORD_Y]);
}
}

load_packs()
{
new file_path[256]; get_localinfo("amxx_configsdir", file_path, charsmax(file_path));
format(file_path, charsmax(file_path), "%s/%s", file_path, FILE_PACKS);

if(!file_exists(file_path)) {
new error[192]; formatex(error, charsmax(error), "File doesn't exist ^"%s^".", file_path);
set_fail_state(error);
return 0;
}

new f = fopen(file_path, "rt");

if(!f) {
set_fail_state("Can't read map packs file.");
return 0;
}

g_aPacks = ArrayCreate(PackStruct, 1);

new text[128], pack_info[PackStruct], map[MAPNAME_LENGTH], frames_info[FramesStruct], cur_frame, frames, str_frames[8];

while(!feof(f)) {
fgets(f, text, charsmax(text));
trim(text);

if(!text[0] || text[0] == ';') {
continue;
}

// found new pack
if(containi(text, ".spr") != -1) {
new Float:scale, str_scale[8];
parse(text, pack_info[Path], charsmax(pack_info[Path]), str_scale, charsmax(str_scale));

scale = str_to_float(str_scale);
if(!scale) {
scale = 0.1;
}

pack_info[Scale] = _:scale;
pack_info[Maps] = _:TrieCreate();
ArrayPushArray(g_aPacks, pack_info);
precache_model(pack_info[Path]);
cur_frame = 2;
// log_amx("pack: %s, scale: %f", pack_info[Path], scale);
continue;
}

parse(text, map, charsmax(map), str_frames, charsmax(str_frames));

frames = str_to_num(str_frames);
if(!frames) {
frames = 1;
}

frames_info[BeginFrame] = cur_frame;
frames_info[EndFrame] = cur_frame + frames - 1;

// load maps to last pack
TrieSetArray(pack_info[Maps], map, frames_info, sizeof(frames_info));
// log_amx("map: %s, begin: %d, end: %d", map, frames_info[BeginFrame], frames_info[EndFrame]);

cur_frame = frames_info[EndFrame] + 1;
str_frames = "";
}
fclose(f);

return 1;
}

find_map_frame(map[], pack[], plen, &Float:scale,&Float:begin, &Float:end)
{
new pack_info[PackStruct];
if(equali(map, g_sCurMap)) {
ArrayGetArray(g_aPacks, 0, pack_info);
copy(pack, plen, pack_info[Path]);
scale = pack_info[Scale];
begin = end = EXTEND_MAP_FRAME;
return CURRENT_MAP;
}

new size = ArraySize(g_aPacks), frames_info[FramesStruct];
for(new i; i < size; i++) {
ArrayGetArray(g_aPacks, i, pack_info);
if(TrieGetArray(pack_info[Maps], map, frames_info, sizeof(frames_info))) {
copy(pack, plen, pack_info[Path]);
scale = pack_info[Scale];
begin = float(frames_info[BeginFrame]);
end = float(frames_info[EndFrame]);
return PACK_MAP;
}
}

copy(pack, plen, pack_info[Path]);
scale = pack_info[Scale];
begin = end = UNKNOWN_MAP_FRAME;

return UNKNOWN_MAP;
}

public mapm_vote_started(type)
{
mapm_block_show_vote();

show_gui();

g_iMapsCount = mapm_get_count_maps_in_vote();
g_iCurMap = -1;

new map[MAPNAME_LENGTH];
new pack[64], Float:scale, Float:frames_begin, Float:frames_end, ret;

for(new i; i < g_iMapsCount; i++) {
mapm_get_voteitem_info(i, map, charsmax(map));

ret = find_map_frame(map, pack, charsmax(pack), scale, frames_begin, frames_end);

if(ret == CURRENT_MAP) {
g_iCurMap = i;
}

g_bShowName[i] = !ret;

entity_set_model(g_pMapCubes[i], pack);
set_pev(g_pMapCubes[i], pev_frame, frames_begin);
set_pev(g_pMapCubes[i], pev_scale, scale);

copy(g_eCubesInfo[i][Name], charsmax(g_eCubesInfo[][Name]), map);
g_eCubesInfo[i][Begin] = _:frames_begin;
g_eCubesInfo[i][End] = _:frames_end;
}

arrayset(g_bVoted, false, sizeof(g_bVoted));

new players[32], pnum;
get_players(players, pnum, "ch");

for(new i, id; i < pnum; i++) {
id = players[i];
g_bShowGUI[id] = true;
attach_view(id, g_pPointOfView);
}

g_bShowSelects = bool:get_num(SHOW_SELECTS);

switch_hud(0, false);

g_hForwards[AddToFullPack_Pre] = register_forward(FM_AddToFullPack, "fm_add_to_full_pack_pre", false);
g_hForwards[AddToFullPack_Post] = register_forward(FM_AddToFullPack, "fm_add_to_full_pack_post", true);
g_hForwards[CmdStart_Post] = register_forward(FM_CmdStart, "fm_cmd_start_post", true);
g_hForwards[CheckVisibility_Pre] = register_forward(FM_CheckVisibility, "fm_check_visibility_pre", false);
}

public mapm_countdown(type, time)
{
if(type != COUNTDOWN_VOTETIME) {
return;
}

const Float:TIME = 1.0;

for(new i; i < g_iMapsCount; i++) {
// TODO: show percent
if(!g_bShowName[i]) {
continue;
}
set_dhudmessage(255, 255, 255, g_fDhudCoords[i][COORD_X], g_fDhudCoords[i][COORD_Y], 0, _, TIME);
show_dhudmessage(0, "%s", g_eCubesInfo[i][Name]);
}
}

hide_gui()
{
for(new i; i < MAX_MAP_CUBES; i++) {
hide_ent(g_pMapCubes[i]);
}
hide_ent(g_pCursorEntity);
hide_ent(g_pPointOfView);
}

show_gui()
{
for(new i; i < MAX_MAP_CUBES; i++) {
show_ent(g_pMapCubes[i]);
}
show_ent(g_pCursorEntity);
show_ent(g_pPointOfView);
}

disable_gui()
{
new players[32], pnum;
get_players(players, pnum, "ch");

for(new i, id; i < pnum; i++) {
id = players[i];
g_bShowGUI[id] = false;
attach_view(id, id);
}

for(new i; i < 8; i++) {
show_dhudmessage(0, "");
}

switch_hud(0, true);

unregister_forward(FM_AddToFullPack, g_hForwards[AddToFullPack_Pre], false);
unregister_forward(FM_AddToFullPack, g_hForwards[AddToFullPack_Post], true);
unregister_forward(FM_CmdStart, g_hForwards[CmdStart_Post], true);
unregister_forward(FM_CheckVisibility, g_hForwards[CheckVisibility_Pre], false);

hide_gui();
}

public mapm_vote_finished(const map[], type, total_votes)
{
disable_gui();
}

public mapm_vote_canceled(type)
{
disable_gui();
}

stock is_inside(Float:corigin[3], Float:borigin[3], Float:w, Float:h)
{
if(floatabs(corigin[1] - borigin[1]) <= w && floatabs(corigin[2] - borigin[2]) <= h) {
return true;
}
return false;
}

public fm_cmd_start_post(id, cmd, seed)
{
if (!g_bShowGUI[id]) {
return FMRES_IGNORED;
}

static Float:old_viewangles[33][3], old_buttons[33];
new Float:view_angles[3], buttons;
get_uc(cmd, UC_ViewAngles, view_angles);
buttons = get_uc(cmd, UC_Buttons);

new Float:flDelta = (view_angles[1] - old_viewangles[id][1]);
if (flDelta > 180.0) {
flDelta -= 360.0;
} else if (flDelta < -180.0) {
flDelta += 360.0;
}

g_vecCursorPos[id][1] += flDelta * CURSOR_SENSITIVITY;
g_vecCursorPos[id][2] += -(view_angles[0] - old_viewangles[id][0]) * CURSOR_SENSITIVITY;

g_vecCursorPos[id][1] = floatclamp(g_vecCursorPos[id][1], -MAX_CURSOR_X, MAX_CURSOR_X);
g_vecCursorPos[id][2] = floatclamp(g_vecCursorPos[id][2], -MAX_CURSOR_Y, MAX_CURSOR_Y);

if(!g_bVoted[id]) {
new Float:origin[3], Float:coord[3];
coord[0] = g_vecCursorPos[id][0] + g_vecPOVOrigin[0] + 144.0;
coord[1] = g_vecCursorPos[id][1] + g_vecPOVOrigin[1];
coord[2] = g_vecCursorPos[id][2] + g_vecPOVOrigin[2];

new pos = -1;
for(new i; i < g_iMapsCount; i++) {
origin = g_fMapCubesOrigin[i];
// TODO: find better sizes
if(is_inside(coord, origin, 28.0, 24.0)) {
pos = i;
}
}

if(pos >= 0 && pos != g_iCurPos[id]) {
g_iCurPos[id] = pos;
g_iCurEnt[id] = g_pMapCubes[pos];
g_fCurFrame[id] = g_eCubesInfo[pos][Begin];
} else if (pos == -1 && g_iCurPos[id] >= 0) {
g_iCurPos[id] = -1;
g_iCurEnt[id] = 0;
}

if(buttons & IN_ATTACK && !(old_buttons[id] & IN_ATTACK) && pos != -1) {
// console_print(id, "x: %f, y: %f, z: %f", coord[0], coord[1], coord[2]);
if(g_bShowSelects) {
new name[32]; get_user_name(id, name, charsmax(name));
if(pos == g_iCurMap) {
client_print_color(0, id, "%s^3 %L", g_sPrefix, LANG_PLAYER, "MAPM_CHOSE_EXTEND", name);
} else {
client_print_color(0, id, "%s^3 %L", g_sPrefix, LANG_PLAYER, "MAPM_CHOSE_MAP", name, g_eCubesInfo[pos][Name]);
}
}
g_bVoted[id] = true;
mapm_add_vote_to_item(pos, 1);
}
}

old_viewangles[id] = view_angles;
old_buttons[id] = buttons;

return FMRES_IGNORED;
}

is_gui_part(ent)
{
if(ent == g_pCursorEntity || ent == g_pPointOfView) {
return true;
}
for(new i; i < sizeof(g_pMapCubes); i++) {
if(ent == g_pMapCubes[i]) {
return true;
}
}
return false;
}
is_not_included(ent)
{
for(new i = g_iMapsCount; i < sizeof(g_pMapCubes); i++) {
if(ent == g_pMapCubes[i]) {
return true;
}
}
return false;
}

public fm_add_to_full_pack_pre(es, e, ent, host, flags, player, pSet)
{
if(!g_bShowGUI[host] && is_gui_part(ent)) {
return FMRES_SUPERCEDE;
}
if(g_bShowGUI[host] && is_not_included(ent)) {
return FMRES_SUPERCEDE;
}
return FMRES_IGNORED;
}

public fm_add_to_full_pack_post(es, e, ent, host, flags, player, pSet)
{
if(g_bShowGUI[host])
{
if(ent == g_iCurEnt[host] /* && !g_bVoted[host] */)
{
// set_rendering(g_pMapCubes[pos], kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 20);
set_es(es, ES_RenderMode, kRenderNormal);
set_es(es, ES_RenderAmt, 20);
set_es(es, ES_RenderColor, SELECTED_COLOR);
set_es(es, ES_RenderFx, kRenderFxGlowShell);

new pos = g_iCurPos[host];

if(g_bVoted[host] || g_eCubesInfo[pos][Begin] == g_eCubesInfo[pos][End]) {
return FMRES_IGNORED;
}

static Float:frame_rate = 0.5;
static Float:last_anim[33];

new Float:ftime = get_gametime();

if(ftime - last_anim[host] >= frame_rate) {
last_anim[host] = ftime;
if(g_fCurFrame[host] < g_eCubesInfo[pos][End]) {
g_fCurFrame[host]++;
} else if(g_fCurFrame[host] == g_eCubesInfo[pos][End]) {
g_fCurFrame[host] = g_eCubesInfo[pos][Begin];
}
// log_amx("pos: %d, cur fr %f", pos, g_fCurFrame[host]);
}
set_es(es, ES_Frame, g_fCurFrame[host]);
}
else if(ent == g_pCursorEntity) {
new Float:origin[3];
origin[0] = g_vecCursorPos[host][0] + g_vecPOVOrigin[0] + 143.0;
origin[1] = g_vecCursorPos[host][1] + g_vecPOVOrigin[1];
origin[2] = g_vecCursorPos[host][2] + g_vecPOVOrigin[2];

set_es(es, ES_Origin, origin);
}
}
return FMRES_IGNORED;
}

public fm_check_visibility_pre(pEnt, pSet)
{
if (is_gui_part(pEnt)) {
forward_return(FMV_CELL, 1);
return FMRES_SUPERCEDE;
}
return FMRES_IGNORED;
}

public switch_hud(id, enable)
{
static msg_hide_weapon;
static hud_flags = (1<<0) | (1<<1) | (1<<3) | (1<<4) | (1<<5) | (1<<6);
if(!msg_hide_weapon) {
msg_hide_weapon = get_user_msgid("HideWeapon");
}
message_begin((id) ? MSG_ONE : MSG_ALL, msg_hide_weapon, _, id);
write_byte(enable ? 0 : hud_flags);
message_end();
}
нету миниатюры карт, вместо них названия. так же отсутствует курсор мыши. спрайты и модели загружены на сервер по нужному пути:
"models/map_manager/blackbox2.mdl"
"sprites/map_manager/cursor2.spr"
 
Сообщения
1,560
Реакции
1,572
Помог
2 раз(а)
blackbox2.mdl - это просто чёрная модель фона

А миниатюры карт нужно делать ручками - создавать скриншоты карт и добавлять самому
 
Сообщения
103
Реакции
4
MayroN, хорошо, а добавить в какую папку, с каким разрешением и форматом? курсора мышки нету, это как можно решить?
 
Сообщения
1,340
Реакции
529
Помог
91 раз(а)
Последнее редактирование:
Сообщения
2,143
Реакции
1,225
Помог
44 раз(а)
present, чё за тупорылый совет?!
Lady, конфиги ММ приложи для начала.
 
Сообщения
103
Реакции
4
present, sheduler не компилируется
11 Сен 2020
Minni,
echo "Executing Map Manager Configuration File"

// Core

// Префикс перед сообщениями плагина.
// !d - default, !t - team, !g - green
// ^1 - default, ^3 - team, ^4 - green
mapm_prefix "^4[SKILL ZONE]"

// Число карт в голосовании.
mapm_votelist_size "6"

// Как отображать состояния голосования.
// Если вам требуется смена оружия, ставить 2. Использование меню блокирует смену оружия.
// 0 - disable, 1 - menu, 2 - hud
mapm_show_result_type "1"

// Вывод сообщений о выбранной карте
// 0 - disable, 1 - all
mapm_show_selects "0"

// Вывод процентов в меню голосования
// 0 - disable, 1 - always, 2 - after vote
mapm_show_percent "1"

// Меняет порядок нумерации в меню.
// 0 - disable, 1 - enable
mapm_random_nums "0"

// Время перед голосованием.
// seconds
mapm_prepare_time "3"

// Время на голосование
// seconds
mapm_vote_time "15"

// Смещение пунктов голосования.
// По умолчанию пункты начинаются с 1, ставите квар равным 4 и начало будет с 5.
mapm_vote_item_offset "0"


// Scheduler

// Тип смены карты после голосования.
// 0 - after end vote, 1 - in round end, 2 - after end map
mapm_change_type "1"

// Запуск голосования за N минут до конца карты.
// minutes
mapm_timeleft_to_vote "2"

// Запуск голосования за N раундов до mp_winlimit или mp_maxrounds.
// Должно быть больше нуля.
// rounds
mapm_rounds_to_vote "2"

// Запуск голосования за N фрагов до mp_fraglimit.
// frags
mapm_frags_to_vote "5"

// Голосование только в начале нового раунда.
// 0 - disable, 1 - enable
mapm_vote_in_new_round "1"

// Позволяет доиграть раунд после голосования.
// 0 - disable, 1 - enable
mapm_last_round "1"

// Второе голосование с двумя картами, которые набрали больше всех голосов.
// 0 - disable, 1 - enable
mapm_second_vote "0"

// Если карта набирает меньше процентов, чем в кваре, то происходит второе голосование.
mapm_second_vote_percent "35"

// Если вышел последний игрок, через сколько минут сменить на карту поумолчанию.
// 0 - disable
// minutes
mapm_change_to_default_map "2"

// Карта поумолчанию.
mapm_default_map "de_dust2"

// Тип продления карты.
// 0 - minutes, 1 - rounds
mapm_extended_type "0"

// Максимальное число продлений карты mapm_extended_type "0".
mapm_extended_map_max "2"

// Продление в минутах mapm_extended_type "1".
// minutes
mapm_extended_time "20"

// Продление в раундах для
// rounds
mapm_extended_rounds "3"


// GUI

// Скорость курсора
mapm_cursor_sens "5.0"


// Blocklist

// Количество последних карт, которые заблокирует от попадания в голосование.
mapm_blocklist_ban_last_maps "3"


// Rtv

// Тип ртв.
// 0 - percents, 1 - players
mapm_rtv_mode "0"

// Сменить карту после голосования от rtv, если "mapm_change_type" не ноль.
// 0 - disable, 1 - enable
mapm_rtv_change_after_vote "0"

// Необходимый процент голосов для досрочного голосования.
mapm_rtv_percent "40"

// Необходимое число голосов для досрочного голосования.
mapm_rtv_players "0"

// Запрещает ртв на N минут после начала карты.
// minutes
mapm_rtv_delay "5"

// Позволяет продлевать карту при ртв.
// 0 - disable, 1 - enable
mapm_rtv_allow_extend "0"


// Nomination

// Тип номинации.
// 0 - стандартный, позволяет игрокам номировать несколько карт, из которых несколько случайных попадут в голосование.
// 1 - фиксированный, первые игроки забивают слоты номинации и больше никто номинировать не может.
mapm_nom_type "0"

// Максимальное число номинированных карт в голосовании.
mapm_nom_maps_in_vote "6"

// Сколько карт может номинировать каждый игрок.
mapm_nom_maps_per_player "1"

// Не закрывать меню номинации, если игрок номировал максимум карт.
// 0 - disable, 1 - enable
mapm_nom_dont_close_menu "0"

// Защита от спама номинацией. Запрещает снимать номинацию чаще чем указано в кваре.
// seconds
mapm_nom_denominate_time "13"

// Вывод карт в случайном порядке в меню номинации.
// 0 - disable, 1 - enable
mapm_nom_random_sort "0"

// Удалять карты из номинации, которых нет в новом списке карт.
// 0 - disable, 1 - enable
mapm_nom_remove_maps "0"

// В меню номинации выводить активные списки карт (из advanced lists)
// 0 - disable, 1 - enable
mapm_nom_show_lists "0"

// Online sorter

// Проверит номирированные карты на соответсвие текущему онлайну при голосовании.
// 0 - disable, 1 - enable
mapm_sort_check_nominated_maps "0"


// Effects

// Черный экран при голосовании.
// 0 - disable, 1 - enable
mapm_black_screen "1"

// Блокировка чата при голосовании.
//
// Если у вас стоит чат менеджер, то он должен быть прописан ниже в списке плагинов
// По умолчанию все плагины ММ вынесены в отдельный plugins.ini, который читает позже
// основного, из-за чего ЧМ стоит выше и аддон не может блокировать чат во время голосования.
//
// 0 - disable, 1 - enable
mapm_block_chat "1"

// Блокировка голоса при голосовании.
// 0 - disable, 1 - enable
mapm_block_voice "1"

// Заморозка игроков при голосовании.
// При mapm_vote_in_new_round "1" используется mp_freezetime.
// Если поставить значение квара "2", то всегда будет использоваться заморозка с помощью флагов.
// 0 - disable, 1 - enable, 2 - force use flags
mapm_freeze_in_vote "0"
 

Вложения

  • 152.2 KB Просмотры: 233
Сообщения
2,143
Реакции
1,225
Помог
44 раз(а)
Lady, конфиг для gui еще добавь.
 
Сообщения
1,340
Реакции
529
Помог
91 раз(а)
sheduler не компилируется
инклюды закиньте в компилятор с архива
11 Сен 2020
Код:
[ 31] Map Manager: Sub Plugi 0.1 Mistrick mapmanager_subp running
он вам не нужен, это от старого плагина, закоментируйте

Код:
[ 32] Map Manager: Effects 0.0.8 Mistrick map_manager_eff running
[ 33] Map Manager: Informer 0.0.5 Mistrick map_manager_inf running
[ 34] Map Manager: Rtv 0.1.1 Mistrick map_manager_rtv running
перенесите в файл plugins-map_manager.ini как это сделано в оригинале, т.к. нарушать порядок плагинов не желательно.
 
Последнее редактирование:
Сообщения
1,560
Реакции
1,572
Помог
2 раз(а)
. спрайты и модели загружены на сервер по нужному пути:
Должен же быть ещё и maps.spr в \sprites\map_manager
Там есть скрины для стандартных карт - для других карт будет по Английски в круге - мол нет скрина карты
Вообщем Вам нужно для всех своих нестандартных карт делать скриншоты и добавлять в этот файл .spr
Ну я это понял так - "по своему"
 
Сообщения
103
Реакции
4
present, в оригинале нету gui, его каким по счету в списке прописать? сейчас выглядит так:

; Main plugins
map_manager_core.amxx
map_manager_scheduler.amxx
; Addons
;map_manager_gui.amxx
map_manager_rtv.amxx
map_manager_nomination.amxx
map_manager_blocklist.amxx
;map_manager_online_sorter.amxx
map_manager_effects.amxx
map_manager_informer.amxx
map_manager_adv_lists.amxx
gui пока что выключен из-за проблем
12 Сен 2020
MayroN, ой нет, не умею в spr добавлять, а так этот файл есть и расположен там же где и должен быть
12 Сен 2020
Minni,

Код:
// GUI

// Скорость курсора
mapm_cursor_sens "5.0"
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу