Не правильно работает hud

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
317
Реакции
131
Помог
4 раз(а)
Основная информация

Проблема: Не правильно работает hud

Ошибка:
Один hud "перекрывает" другой
Дополнительная информация

Amx Mod X: 1.8.2

Билд:
Код:
Не указан


ReGamedll:
Код:
Не указан


Список модулей:
Код:
Не указан


Список плагинов:
Код:
;opengl32.amxx
;aim_detector.amxx
reaimdetector.amxx ; v0.1.6 - http://dev-cs.ru/resources/66/
amxbans_core.amxx
amxbans_main.amxx
alias_detector082.amxx
cmdchecker.amxx ; цмд чекер. http://dev-cs.ru/threads/198/page-6#post-1610
;antiflood.amxx
admincmd.amxx
;adminhelp.amxx
;adminslots.amxx
adminvote.amxx
adminchat.amxx
cmdmenu.amxx
;imessage.amxx
mapsmenu.amxx
;menufront.amxx
server_menu.amxx
miscstats.amxx
;multilingual.amxx
;nextmap.amxx
pausecfg.amxx
plmenu.amxx
restmenu.amxx
csstatsx_sql.amxx
aes_statsx_cstrike.amxx
;scrollmsg.amxx
;stats_logging.amxx
statscfg.amxx
statsx.amxx
;telemenu.amxx
;timeleft.amxx
pluginmenu.amxx
;amxmod_compat.amxx
;admin_sql.amxx
admin_esp_mini.amxx
admin_freelook.amxx
ad_manager.amxx
amx_blockip.amxx
;bullet_damage.amxx
girl_models.amxx
;Resetscore.amxx
reset_score.amxx
top_awards.amxx
vip_system.amxx
admin_check.amxx
amx_autodemorec.amxx
;voteban.amxx
amx_hpk.amxx
;mutemenu.amxx
amx_gag.amxx
;amx_parachute.amxx
parachute_rbs.amxx
;colored_translit_config.amxx
;colored_translit.amxx
voteban.amxx
;auto-restart.amxx
bcd_hudtimer.amxx
descriptive_fire_in_the_hole.amxx
;automatic_knife_duel.amxx
knife_duel.amxx debug
knife_sound.amxx debug
knife_warmup.amxx debug
speclist_rus.amxx
mapmanager.amxx
mapmanager_subplugin.amxx
;new_weapons.amxx ; лазерные ножи
;models_replacement.amxx debug ; замена моделей у всех - models_replacement.ini
afk_manager_1.8.2.amxx ; afk в спектры + иммунитет адмминам + передача бомбы
voice_manager.amxx ; раздел голосового чата
replace_info_msg.amxx debug ; замена стандартных надписей
antireconnect.amxx
New_Steam_bonus.amxx ; бонус стим игрокам
block_HLproxy.amxx
;autorestart_ua.amxx
map_spawns_editor.amxx
;billy_model.amxx
;pavlodar_model.amxx ; моделька пантеры по флагу "s"
players_models.amxx
hud_killer_info.amxx ; pokazivaet skolko hp i ap y ybiitsi
;mode.amxx debug ; блокирует половину карты когда мало игроков
;mode2.amxx debug ; блокирует половину карты когда мало игроков + цветной чат
no_team_flash.amxx debug ; своих не слепит
mode_re.amxx debug ; блокирует половину карты когда мало игроков. под рехлдс
;WinTeam_Sprite.amxx
MarioCoins21.amxx debug
lite_translit.amxx


Список метамодулей:
Код:
[ 1] SafeNameAndChat  RUN   -    SafeNameAndChat.  v1.1      ini   ANY   ANY  
[ 2] Reunion RUN - reunion_mm_i386. v0.1.75 ini Start Never
[ 3] AMX Mod X RUN - amxmodx_mm_i386. v1.8.2 ini Start ANY
[ 4] ReSemiclip RUN - resemiclip_mm_i3 v2.3.9 ini Chlvl ANY
[ 5] VoiceTranscoder RUN - VoiceTranscoder. v2017 RC ini ANY ANY
[ 6] Rechecker RUN - rechecker_mm_i38 v2.3 ini Chlvl ANY
[ 7] MySQL RUN - mysql_amxx_i386. v1.8.2 pl3 ANY ANY
[ 8] Fun RUN - fun_amxx_i386.so v1.8.2 pl3 ANY ANY
[ 9] Engine RUN - engine_amxx_i386 v1.8.2 pl3 ANY ANY
[10] FakeMeta RUN - fakemeta_amxx_i3 v1.8.2 pl3 ANY ANY
[11] Ham Sandwich RUN - hamsandwich_amxx v1.8.2 pl3 ANY ANY
[12] ReAimDetector RUN - reaimdetector_am v0.1.6 pl3 ANY Never
[13] CStrike RUN - cstrike_amxx_i38 v1.8.2 pl3 ANY ANY
[14] ReAPI RUN - reapi_amxx_i386. v5.1.0.1 pl3 ANY Never


Исходник:
Код:
/* CVARs
mc_enable — 0/1 — плагин выключен/включен. При установке значения больше 1, плагин автоматически выставляет 0 и выключается.
mc_bodycoin — количество монет, выпадающих с противника после его убийства.
mc_maxcoins — количество монет, необходимых для получения возможности возрождения.
mc_defusecoins — количество монет, дающихся игроку после разминирования бомбы. Если значение равно 0, то функция отключается.
mc_explodecoins — количество монет, дающихся игроку после взрыва бомбы. Если значение равно 0, то функция отключается.
mc_coinstype — 0/1 — обычные монетки/динамичные(после выпадения монетки будут отскакивать от стен, пола, ящиков и т.д.).
При установке значения больше 1, плагин автоматически выставляет 0 и включаются обычные монетки.
*/
#include <amxmodx>
#include <engine>
#include <hamsandwich>
//#include <dhudmessage>

#define Mplayers 32 + 1

new bCountTokenCoins[Mplayers];

new gCvarPluginEnable;
new gCvarPluginCoinsType;
new gCvarPluginMaxCoinsForLife;
new gCvarPluginCoinsPerBody;
new gCvarPluginCoinsForDefuse;
new gCvarPluginCoinsForExplode;
new gHudSyncronizer;

/* defolt
new const gCoinModel[] = "models/MarioCoins/mario_coin1.mdl";
new const gCoinGained[] = "MarioCoins/coingained.wav";
new const gLifeGained[] = "MarioCoins/lifegained.wav";
new const gRespawned[] = "MarioCoins/respawned.wav";
*/
// Precache
/*
public plugin_precache()
{
new const gCoinModel[] = precache_model("models/MarioCoins/mario_coin1.mdl")
new const gCoinGained[] = precache_sound("MarioCoins/coingained.wav")
new const gLifeGained[] = precache_sound("MarioCoins/lifegained.wav")
new const gRespawned[] = precache_sound("MarioCoins/respawned.wav")
}
*/
new const gCoinModel[] = "models/MarioCoins/mario_coin4.mdl";
new const gCoinGained[] = "MarioCoins/coingained.wav";
new const gLifeGained[] = "MarioCoins/lifegained.wav";
new const gRespawned[] = "MarioCoins/respawned.wav";

public plugin_precache()
{
precache_model(gCoinModel);
precache_sound(gCoinGained);
precache_sound(gLifeGained);
precache_sound(gRespawned);
}

public plugin_init()
{
register_plugin("Mario Coins","2.1","EvilCoder/tuty");
register_dictionary("MarioCoins.txt");
gCvarPluginEnable = register_cvar("mc_enable","1");
if(get_pcvar_num(gCvarPluginEnable) != 1)
{
set_pcvar_num(gCvarPluginEnable,0);
return;
}

register_event("TextMsg","EVENT_TextMsg","a","2&#Game_C","2&#Game_w","2&#Game_will_restart_in");
register_logevent("LOG_RoundEnd",2,"1=Round_End");
register_touch("MarioCoin$","player","TouchCoin");

RegisterHam(Ham_Killed,"player","bacon_PlayerKilled",1);
RegisterHam(Ham_Player_PreThink,"player","bacon_PlayerPreThink");

gCvarPluginCoinsType = register_cvar("mc_coinstype","0");
if(get_pcvar_num(gCvarPluginCoinsType) != 1)
{
set_pcvar_num(gCvarPluginCoinsType,0);
}
gCvarPluginCoinsPerBody = register_cvar("mc_bodycoin","1");
gCvarPluginMaxCoinsForLife = register_cvar("mc_maxcoins","10");
gCvarPluginCoinsForDefuse = register_cvar("mc_defusecoins","1");
gCvarPluginCoinsForExplode = register_cvar("mc_explodecoins","1");

gHudSyncronizer = CreateHudSyncObj();
}

public client_connect(iVictim)
{
bCountTokenCoins[iVictim] = 0;
}

public EVENT_TextMsg()
{
remove_entity_name("MarioCoin$");
}

public LOG_RoundEnd()
{
remove_entity_name("MarioCoin$");
}

public bomb_defused(defuser)
{
if(get_pcvar_num(gCvarPluginCoinsForDefuse) == 0)
{
return PLUGIN_CONTINUE;
}

bCountTokenCoins[defuser] += get_pcvar_num(gCvarPluginCoinsForDefuse);

new iMaxCoins = get_pcvar_num(gCvarPluginMaxCoinsForLife);

if(bCountTokenCoins[defuser] >= iMaxCoins)
{
emit_sound(defuser,CHAN_ITEM,gLifeGained,VOL_NORM,ATTN_NORM,0,PITCH_NORM);
bCountTokenCoins[defuser] = iMaxCoins;
return PLUGIN_CONTINUE;
}

emit_sound(defuser,CHAN_ITEM,gCoinGained,VOL_NORM,ATTN_NORM,0,PITCH_NORM);

remove_entity_name("MarioCoin$");

return PLUGIN_CONTINUE;
}

public bomb_explode(planter)
{
if(get_pcvar_num(gCvarPluginCoinsForExplode) == 0)
{
return PLUGIN_CONTINUE;
}

bCountTokenCoins[planter] += get_pcvar_num(gCvarPluginCoinsForExplode);

new iMaxCoins = get_pcvar_num(gCvarPluginMaxCoinsForLife);

if(bCountTokenCoins[planter] >= iMaxCoins)
{
emit_sound(planter,CHAN_ITEM,gLifeGained,VOL_NORM,ATTN_NORM,0,PITCH_NORM);
bCountTokenCoins[planter] = iMaxCoins;
return PLUGIN_CONTINUE;
}

emit_sound(planter,CHAN_ITEM,gCoinGained,VOL_NORM,ATTN_NORM,0,PITCH_NORM);

remove_entity_name("MarioCoin$");

return PLUGIN_CONTINUE;
}

public bacon_PlayerKilled(iVictim, iKiller, iGib)
{
// new iKiller = read_data(1);
// new iVictim = read_data(2);

if(iKiller == iVictim || get_user_team(iKiller) == get_user_team(iVictim))
{
return;
}

if(bCountTokenCoins[iVictim] >= get_pcvar_num(gCvarPluginMaxCoinsForLife))
{
/* if(!is_user_alive(iVictim)) ???*/
{
set_task(0.1,"RegMenu",iVictim);
}
}

new Float:flPlayerOrigin[3];
entity_get_vector(iVictim,EV_VEC_origin,flPlayerOrigin);

flPlayerOrigin[2] -= 36;

new packedOrigin[3];
FVecIVec(flPlayerOrigin,packedOrigin);

set_task(0.1,"spawnCoins",4142,packedOrigin,3,"a",get_pcvar_num(gCvarPluginCoinsPerBody));
}

public RegMenu(iVictim)
{
new regmenu[512 char];
formatex(regmenu,charsmax(regmenu),"%L",iVictim,"DO_YOU_WANT_RESPAWN");
new menu = menu_create(regmenu,"ShowMenu");

formatex(regmenu,charsmax(regmenu),"%L",iVictim,"YES_I_WANT");
menu_additem(menu,regmenu,"1",0);

formatex(regmenu,charsmax(regmenu),"%L",iVictim,"NO_I_DO_NOT");
menu_additem(menu,regmenu,"2",0);

menu_setprop(menu,MPROP_EXIT,MEXIT_NEVER,-1);

menu_display(iVictim,menu,0);

return PLUGIN_CONTINUE;
}

public ShowMenu(iVictim,menu,item)
{
new data[6],iName[64],access,callback;
menu_item_getinfo(menu,item,access,data,charsmax(data),iName,charsmax(iName),callback);

new key = str_to_num(data);

switch(key)
{
case 1:
{
set_task(0.1,"RespawnPlayerAndResetCoins",iVictim);
menu_destroy(menu);
}
case 2:
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
}

return PLUGIN_HANDLED;
}

public spawnCoins(packedOrigin[3])
{
new Float:origin[3];
IVecFVec(packedOrigin,origin);
new iEntity = create_entity("info_target");

if(!is_valid_ent(iEntity))
{
return;
}

origin[2] += 65.0;
entity_set_origin(iEntity,origin);

new Float:velocity[3];
velocity[0] = (random_float(0.0,256.0) - 128.0);
velocity[1] = (random_float(0.0,256.0) - 128.0);
velocity[2] = (random_float(0.0,300.0) + 75.0);
entity_set_vector(iEntity,EV_VEC_velocity,velocity);

static modelName[64];
formatex(modelName,63,"models/MarioCoins/mario_coin4.mdl");

//entity_set_model(iEntity,modelName);
entity_set_model(iEntity, gCoinModel)
entity_set_string(iEntity,EV_SZ_classname,"MarioCoin$");
entity_set_int(iEntity,EV_INT_solid,SOLID_TRIGGER);
if(get_pcvar_num(gCvarPluginCoinsType) != 1)
{
entity_set_int(iEntity,EV_INT_movetype,MOVETYPE_TOSS);
}
else
{
entity_set_int(iEntity,EV_INT_movetype,MOVETYPE_BOUNCE);
}
drop_to_floor(iEntity);

set_rendering(iEntity,kRenderFxGlowShell,255,255,0,kRenderNormal,10);
}

public TouchCoin(iEntity,id)
{
if(is_valid_ent(iEntity))
{
new iMaxCoins = get_pcvar_num(gCvarPluginMaxCoinsForLife);

bCountTokenCoins[id]++;

if(bCountTokenCoins[id] >= iMaxCoins)
{
emit_sound(id,CHAN_ITEM,gLifeGained,VOL_NORM,ATTN_NORM,0,PITCH_NORM);
set_entity_flags(iEntity,FL_KILLME,1);
bCountTokenCoins[id] = iMaxCoins;
return PLUGIN_CONTINUE;
}

emit_sound(id,CHAN_ITEM,gCoinGained,VOL_NORM,ATTN_NORM,0,PITCH_NORM);
set_entity_flags(iEntity,FL_KILLME,1);
}

remove_entity(iEntity);

return PLUGIN_CONTINUE;
}

public bacon_PlayerPreThink(id)
{
if(is_user_alive(id) && !is_user_bot(id))
{
//set_hudmessage(255,127,42,0.0,0.90,0,6.0);
set_hudmessage(255,127,42,0.03,0.88,0,6.0);
//set_dhudmessage(255,127,42,0.03,0.88,0,6.0);

new iMaxCoins = get_pcvar_num(gCvarPluginMaxCoinsForLife);
new szFormatHUDMessage[300];

if(bCountTokenCoins[id] == iMaxCoins)
{
formatex(szFormatHUDMessage,charsmax(szFormatHUDMessage),"%L",id,"CAN_RESPAWN");
}

else
{
formatex(szFormatHUDMessage,charsmax(szFormatHUDMessage),"%L: [%d/%d]",id,"COINS_COUNT",bCountTokenCoins[id],iMaxCoins);
}

ShowSyncHudMsg(id,gHudSyncronizer,szFormatHUDMessage);
}
}

public RespawnPlayerAndResetCoins(iVictim)
{
if(is_user_connected(iVictim) && !is_user_alive(iVictim) && get_user_team(iVictim) != 3)
{
ExecuteHamB(Ham_CS_RoundRespawn,iVictim);

emit_sound(iVictim,CHAN_ITEM,gRespawned,VOL_NORM,ATTN_NORM,0,PITCH_NORM);
bCountTokenCoins[iVictim] = 0;
}
}


Комментарий:
HUD в стоках 302 и 307 "перекрывает" остальные HUDы, такие как звания, /anew и т.п.. т.е. показывается только hud этого плагина, остальные пропадают, когда мертвый игрок, плагин не показывает hud, соответственно остальной hud возвращается(звания, /anew ...)
Можно заменить этот hud чем нибудь другим?
Например, когда подбираешь монетку, в чат пишет мол У вас монеток [.../...]
 
В этой теме было размещено решение! Перейти к решению.
Сообщения
87
Реакции
54
Помог
1 раз(а)
Канал забит....
Убирай не нужный Худ.
 
Сообщения
2,751
Реакции
3,016
Помог
61 раз(а)
Само исполнение показа сообщения в плагине изначально плохо сделано.
Код:

public bacon_PlayerPreThink(id)
{
if(is_user_alive(id) && !is_user_bot(id))
{
//set_hudmessage(255,127,42,0.0,0.90,0,6.0);
set_hudmessage(255,127,42,0.03,0.88,0,6.0);
//set_dhudmessage(255,127,42,0.03,0.88,0,6.0);

new iMaxCoins = get_pcvar_num(gCvarPluginMaxCoinsForLife);
new szFormatHUDMessage[300];

if(bCountTokenCoins[id] == iMaxCoins)
{
formatex(szFormatHUDMessage,charsmax(szFormatHUDMessage),"%L",id,"CAN_RESPAWN");
}

else
{
formatex(szFormatHUDMessage,charsmax(szFormatHUDMessage),"%L: [%d/%d]",id,"COINS_COUNT",bCountTokenCoins[id],iMaxCoins);
}

ShowSyncHudMsg(id,gHudSyncronizer,szFormatHUDMessage);
}
}

7 Мар 2017
заменить этот hud чем нибудь другим?
Да, переписать по-человечески с использованием set_task
7 Мар 2017
PreThink очень часто вызывается (не менее 60 раз в секунду)
 
Сообщения
2,751
Реакции
3,016
Помог
61 раз(а)
alabamaster1337, я бы вам поправаил, но хотел бы дождаться ответов ещё ребят :blush2:
 
Сообщения
443
Реакции
319
Помог
13 раз(а)
ShowSyncHudMsg на одном канале ж посылает не?
проблема в том что дохрена худа, не?

Шучу. Никогда не используй это если у тебя есть еще хоть 1 худ
он исчезнет.

set_task + set_hud/show_hud
 
Сообщения
2,751
Реакции
3,016
Помог
61 раз(а)
Вот мини пример, как надо сделать.
Кто угадает, откуда код?):tease:
perforator
FrukT
Delica


Код:
#include <amxmodx>

const Float:HUD_Kd_UpdateTime = 3.0

#define TASKID_SHOWKD 123

public plugin_init()
{
set_task(HUD_Kd_UpdateTime, "HUDShow_Kd", TASKID_SHOWKD, .flags = "b");
}

public HUDShow_Kd()
{
for(new i; i < MAX_PLAYERS; i++)
{
if(IsSetBit(g_aPlayerSettings[SHOW_KD], i))
{
static Float: fFrags;
fFrags = get_entvar(i, var_frags);

static Float: iDeaths;
iDeaths = float(get_member(i, m_iDeaths));

static Float: fKD;
fKD = (iDeaths ? fFrags/iDeaths : fFrags);

static iR, iG, iB;

if(1.5 <= fKD <= 3.0)
{
iR = g_iKDColors[KD_MIDDLE][R];
iG = g_iKDColors[KD_MIDDLE][G];
iB = g_iKDColors[KD_MIDDLE];
}else
if(3.0 < fKD < 10.0)
{
iR = g_iKDColors[KD_HIGH][R];
iG = g_iKDColors[KD_HIGH][G];
iB = g_iKDColors[KD_HIGH];
}
else
{
iR = g_iKDColors[KD_LOW][R];
iG = g_iKDColors[KD_LOW][G];
iB = g_iKDColors[KD_LOW];
}

set_hudmessage(
.red = iR,
.green = iG,
.blue = iB,
.x = 0.15,
.y = 0.0,
.effects = 0,
.holdtime = HUD_Kd_UpdateTime
);

show_hudmessage(i,
"K/D: %0.2f",
fKD
);
}
}
}
 
Последнее редактирование:
Сообщения
317
Реакции
131
Помог
4 раз(а)
wopox1337, видимо этим 3м пользователям не интересны квесты на угадайку.
Как сделать подсветку кода в сообщение? И как под спойлер запихнуть?

Я не супер умный, вот что получилось(даже компилится), правда варнинг есть в 86 строке: warning 213 : tag mismatch
Код:
#include <amxmodx>
#include <engine>
#include <hamsandwich>
#include <dhudmessage>
#define Mplayers 32 + 1
#define TASKID_COINS 123
new bCountTokenCoins[Mplayers];
new gCvarPluginEnable;
new gCvarPluginCoinsType;
new gCvarPluginMaxCoinsForLife;
new gCvarPluginCoinsPerBody;
new gCvarPluginCoinsForDefuse;
new gCvarPluginCoinsForExplode;
new gHudSyncronizer;
/* defolt
new const gCoinModel[] = "models/MarioCoins/mario_coin1.mdl";
new const gCoinGained[] = "MarioCoins/coingained.wav";
new const gLifeGained[] = "MarioCoins/lifegained.wav";
new const gRespawned[] = "MarioCoins/respawned.wav";
*/
// Precache
/*
public plugin_precache()
{
new const gCoinModel[] = precache_model("models/MarioCoins/mario_coin1.mdl")
new const gCoinGained[] = precache_sound("MarioCoins/coingained.wav")
new const gLifeGained[] = precache_sound("MarioCoins/lifegained.wav")
new const gRespawned[] = precache_sound("MarioCoins/respawned.wav")
}
*/
new const gCoinModel[] = "models/MarioCoins/mario_coin4.mdl";
new const gCoinGained[] = "MarioCoins/coingained.wav";
new const gLifeGained[] = "MarioCoins/lifegained.wav";
new const gRespawned[] = "MarioCoins/respawned.wav";
public plugin_precache()
{
precache_model(gCoinModel);
precache_sound(gCoinGained);
precache_sound(gLifeGained);
precache_sound(gRespawned);
}
public plugin_init()
{
register_plugin("Mario Coins","2.1","EvilCoder/tuty");
register_dictionary("MarioCoins.txt");
gCvarPluginEnable = register_cvar("mc_enable","1");
if(get_pcvar_num(gCvarPluginEnable) != 1)
{
set_pcvar_num(gCvarPluginEnable,0);
return;
}
register_event("TextMsg","EVENT_TextMsg","a","2&#Game_C","2&#Game_w","2&#Game_will_restart_in");
register_logevent("LOG_RoundEnd",2,"1=Round_End");
register_touch("MarioCoin$","player","TouchCoin");
RegisterHam(Ham_Killed,"player","bacon_PlayerKilled",1);
RegisterHam(Ham_Player_PreThink,"player","bacon_PlayerPreThink");
gCvarPluginCoinsType = register_cvar("mc_coinstype","0");
if(get_pcvar_num(gCvarPluginCoinsType) != 1)
{
set_pcvar_num(gCvarPluginCoinsType,0);
}
gCvarPluginCoinsPerBody = register_cvar("mc_bodycoin","1");
gCvarPluginMaxCoinsForLife = register_cvar("mc_maxcoins","10");
gCvarPluginCoinsForDefuse = register_cvar("mc_defusecoins","1");
gCvarPluginCoinsForExplode = register_cvar("mc_explodecoins","1");
gHudSyncronizer = CreateHudSyncObj();
set_task(gCvarPluginMaxCoinsForLife, "bacon_PlayerPreThink", TASKID_COINS, .flags = "b");
}
public client_connect(iVictim)
{
bCountTokenCoins[iVictim] = 0;
}
public EVENT_TextMsg()
{
remove_entity_name("MarioCoin$");
}
public LOG_RoundEnd()
{
remove_entity_name("MarioCoin$");
}
public bomb_defused(defuser)
{
if(get_pcvar_num(gCvarPluginCoinsForDefuse) == 0)
{
return PLUGIN_CONTINUE;
}
bCountTokenCoins[defuser] += get_pcvar_num(gCvarPluginCoinsForDefuse);
new iMaxCoins = get_pcvar_num(gCvarPluginMaxCoinsForLife);
if(bCountTokenCoins[defuser] >= iMaxCoins)
{
emit_sound(defuser,CHAN_ITEM,gLifeGained,VOL_NORM,ATTN_NORM,0,PITCH_NORM);
bCountTokenCoins[defuser] = iMaxCoins;
return PLUGIN_CONTINUE;
}
emit_sound(defuser,CHAN_ITEM,gCoinGained,VOL_NORM,ATTN_NORM,0,PITCH_NORM);
remove_entity_name("MarioCoin$");
return PLUGIN_CONTINUE;
}
public bomb_explode(planter)
{
if(get_pcvar_num(gCvarPluginCoinsForExplode) == 0)
{
return PLUGIN_CONTINUE;
}
bCountTokenCoins[planter] += get_pcvar_num(gCvarPluginCoinsForExplode);
new iMaxCoins = get_pcvar_num(gCvarPluginMaxCoinsForLife);
if(bCountTokenCoins[planter] >= iMaxCoins)
{
emit_sound(planter,CHAN_ITEM,gLifeGained,VOL_NORM,ATTN_NORM,0,PITCH_NORM);
bCountTokenCoins[planter] = iMaxCoins;
return PLUGIN_CONTINUE;
}
emit_sound(planter,CHAN_ITEM,gCoinGained,VOL_NORM,ATTN_NORM,0,PITCH_NORM);
remove_entity_name("MarioCoin$");
return PLUGIN_CONTINUE;
}
public bacon_PlayerKilled(iVictim, iKiller, iGib)
{
// new iKiller = read_data(1);
// new iVictim = read_data(2);
if(iKiller == iVictim || get_user_team(iKiller) == get_user_team(iVictim))
{
return;
}
if(bCountTokenCoins[iVictim] >= get_pcvar_num(gCvarPluginMaxCoinsForLife))
{
/* if(!is_user_alive(iVictim)) ???*/
{
set_task(0.1,"RegMenu",iVictim);
}
}
new Float:flPlayerOrigin[3];
entity_get_vector(iVictim,EV_VEC_origin,flPlayerOrigin);
flPlayerOrigin[2] -= 36;
new packedOrigin[3];
FVecIVec(flPlayerOrigin,packedOrigin);
set_task(0.1,"spawnCoins",4142,packedOrigin,3,"a",get_pcvar_num(gCvarPluginCoinsPerBody));
}
public RegMenu(iVictim)
{
new regmenu[512 char];
formatex(regmenu,charsmax(regmenu),"%L",iVictim,"DO_YOU_WANT_RESPAWN");
new menu = menu_create(regmenu,"ShowMenu");
formatex(regmenu,charsmax(regmenu),"%L",iVictim,"YES_I_WANT");
menu_additem(menu,regmenu,"1",0);
formatex(regmenu,charsmax(regmenu),"%L",iVictim,"NO_I_DO_NOT");
menu_additem(menu,regmenu,"2",0);
menu_setprop(menu,MPROP_EXIT,MEXIT_NEVER,-1);
menu_display(iVictim,menu,0);
return PLUGIN_CONTINUE;
}
public ShowMenu(iVictim,menu,item)
{
new data[6],iName[64],access,callback;
menu_item_getinfo(menu,item,access,data,charsmax(data),iName,charsmax(iName),callback);
new key = str_to_num(data);
switch(key)
{
case 1:
{
set_task(0.1,"RespawnPlayerAndResetCoins",iVictim);
menu_destroy(menu);
}
case 2:
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
}
return PLUGIN_HANDLED;
}
public spawnCoins(packedOrigin[3])
{
new Float:origin[3];
IVecFVec(packedOrigin,origin);
new iEntity = create_entity("info_target");
if(!is_valid_ent(iEntity))
{
return;
}
origin[2] += 65.0;
entity_set_origin(iEntity,origin);
new Float:velocity[3];
velocity[0] = (random_float(0.0,256.0) - 128.0);
velocity[1] = (random_float(0.0,256.0) - 128.0);
velocity[2] = (random_float(0.0,300.0) + 75.0);
entity_set_vector(iEntity,EV_VEC_velocity,velocity);
static modelName[64];
formatex(modelName,63,"models/MarioCoins/mario_coin4.mdl");
//entity_set_model(iEntity,modelName);
entity_set_model(iEntity, gCoinModel)
entity_set_string(iEntity,EV_SZ_classname,"MarioCoin$");
entity_set_int(iEntity,EV_INT_solid,SOLID_TRIGGER);
if(get_pcvar_num(gCvarPluginCoinsType) != 1)
{
entity_set_int(iEntity,EV_INT_movetype,MOVETYPE_TOSS);
}
else
{
entity_set_int(iEntity,EV_INT_movetype,MOVETYPE_BOUNCE);
}
drop_to_floor(iEntity);
set_rendering(iEntity,kRenderFxGlowShell,255,255,0,kRenderNormal,10);
}
public TouchCoin(iEntity,id)
{
if(is_valid_ent(iEntity))
{
new iMaxCoins = get_pcvar_num(gCvarPluginMaxCoinsForLife);
bCountTokenCoins[id]++;
if(bCountTokenCoins[id] >= iMaxCoins)
{
emit_sound(id,CHAN_ITEM,gLifeGained,VOL_NORM,ATTN_NORM,0,PITCH_NORM);
set_entity_flags(iEntity,FL_KILLME,1);
bCountTokenCoins[id] = iMaxCoins;
return PLUGIN_CONTINUE;
}
emit_sound(id,CHAN_ITEM,gCoinGained,VOL_NORM,ATTN_NORM,0,PITCH_NORM);
set_entity_flags(iEntity,FL_KILLME,1);
}
remove_entity(iEntity);
return PLUGIN_CONTINUE;
}
public bacon_PlayerPreThink(id)
{
if(is_user_alive(id) && !is_user_bot(id))
{
//set_hudmessage(255,127,42,0.0,0.90,0,6.0);
set_hudmessage(255,127,42,0.03,0.88,0,6.0);
new iMaxCoins = get_pcvar_num(gCvarPluginMaxCoinsForLife);
new szFormatHUDMessage[300];
if(bCountTokenCoins[id] == iMaxCoins)
{
//formatex(szFormatHUDMessage,charsmax(szFormatHUDMessage),"%L",id,"CAN_RESPAWN");
show_hudmessage(id,"%L","CAN_RESPAWN");
}
else
{
//formatex(szFormatHUDMessage,charsmax(szFormatHUDMessage),"%L: [%d/%d]",id,"COINS_COUNT",bCountTokenCoins[id],iMaxCoins);
show_hudmessage(id,"%L: [%d/%d]","COINS_COUNT",bCountTokenCoins[id],iMaxCoins);
}
ShowSyncHudMsg(id,gHudSyncronizer,szFormatHUDMessage);
}
}
public RespawnPlayerAndResetCoins(iVictim)
{
if(is_user_connected(iVictim) && !is_user_alive(iVictim) && get_user_team(iVictim) != 3)
{
ExecuteHamB(Ham_CS_RoundRespawn,iVictim);
emit_sound(iVictim,CHAN_ITEM,gRespawned,VOL_NORM,ATTN_NORM,0,PITCH_NORM);
bCountTokenCoins[iVictim] = 0;
}
}
 
Последнее редактирование модератором:
Сообщения
443
Реакции
319
Помог
13 раз(а)
Сообщения
443
Реакции
319
Помог
13 раз(а)
gCvarPluginMaxCoinsForLife замени на 1.0 прост
хватит думаю
 
Сообщения
317
Реакции
131
Помог
4 раз(а)
Дебаг
Код:
L 03/08/2017 - 00:02:38: [AMXX] Displaying debug trace (plugin "MarioCoins21.amxx")
L 03/08/2017 - 00:02:38: [AMXX] Run time error 25: parameter error
L 03/08/2017 - 00:02:38: [AMXX] [0] MarioCoins21.sma::bacon_PlayerPreThink (line 310)
L 03/08/2017 - 00:02:38: String formatted incorrectly - parameter 6 (total 5)
 
Сообщения
443
Реакции
319
Помог
13 раз(а)
мде
таких глупых издевательств я еще не видал
 
Сообщения
317
Реакции
131
Помог
4 раз(а)
shelru, сори, не селен в скриптинге:scratch_one-s_head:
омог бы уже кто нибудь, я бы давно отстал))
 
Сообщения
317
Реакции
131
Помог
4 раз(а)
shelru, появились варнинги, убрал
new szFormatHUDMessage[300];
gHudSyncronizer = CreateHudSyncObj();
new gHudSyncronizer;

Дебаг
Код:
L 03/08/2017 - 14:03:18: [AMXX] Displaying debug trace (plugin "MarioCoins21.amxx")
L 03/08/2017 - 14:03:18: [AMXX] Run time error 25: parameter error
L 03/08/2017 - 14:03:18: [AMXX] [0] MarioCoins211.sma::bacon_PlayerPreThink (line 310)
L 03/08/2017 - 14:03:18: String formatted incorrectly - parameter 6 (total 5)


Я точно show_hudmessage правильно написал?
 
Сообщения
443
Реакции
319
Помог
13 раз(а)
ну ты код покажи
у тебя строки съезжают непонятно где че
 
Статус
В этой теме нельзя размещать новые ответы.

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

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