- Регистрация
- 16 Авг 2017
- Сообщения
- 36
- Симпатии
- 0
- Предупреждения
- 400
- Пол
- Мужской
Уважаемые, что отвечает за свечение данной модели? не могу найти в исходнике, хочу взять этот код и приделать к другой модели
Код:
/*
Плагин: VIP Bonus time
Автор: DUKKHAZ0R | Сайт: http://aimbat.ru/plugins/
Описание:
В нужное время, к примеру 30/08/2015 в 18:00 на карте появляются 4 сундука. Перед появлением сундуков сверху висит худ отсчет времени.
Как только все четыре сундука будут найдены, то произойдет отсчет о розыгрыше между ними, отсчет будет писать снизу экрана 10 секунд.
Победителю выскочит motd окно с поздравлениями и будет dhud оповещение по середине экрана (все это будут видеть).
Победитель пишется в лог файл: addons/amxmodx/logs/winner.log
По умолчанию точки расставлены на 10-ти картах, но администратор с флагом ADMIN_RCON сможет расставить точки через команду: amx_ps_spawn
Квары:
bonus_time "18:00:00 30/08/2015" - Время спавна сундуков на карте.
*/
#include <amxmodx>
#include <engine>
#include <dhudmessage>
#define MENU_LEVEL_ACCESS ADMIN_RCON
#define SIZE_SPAWN 4 //Сколько сундучков будет спавнить.
//#define FIX_TIME //Раскомментировать, если сундуки появляются на 1 час раньше розыгрыша.
new const PREFIX[] = "^1[^4BonusTime^1]";
new bool:g_bBonusEnable, bool:g_bRandomEnable, bool:g_bHasBonus[33], g_iPlayerId[SIZE_SPAWN], Float:g_fvOrigin[SIZE_SPAWN][3];
new g_iCaseCount, g_pCvarTime, gHudSync, g_szCfgDir[96], g_iRandomCounter = 10;
public plugin_init()
{
register_plugin("VIP bonus time", "1.0", "DUKKHAZ0R");
register_cvar("vip_bonustime", "1.0", FCVAR_SERVER|FCVAR_SPONLY);
register_touch("info_present", "player", "fw_TouchPresent");
register_clcmd("amx_ps_spawn", "ClCmdSpawnMenu");
g_pCvarTime = register_cvar("bonus_time", "04:00 08/05/2015");
gHudSync = CreateHudSyncObj();
}
public plugin_precache()
precache_model("models/supplybox.mdl");
public client_disconnect(id)
g_bHasBonus[id] = false;
public plugin_cfg()
{
if(!get_overtime())
{
log_amx("Current time bigger then time in cvar!");
pause("ad");
}
new szMap[32]; get_mapname(szMap, charsmax(szMap));
get_localinfo("amxx_configsdir", g_szCfgDir, charsmax(g_szCfgDir));
formatex(g_szCfgDir, charsmax(g_szCfgDir), "%s/presents_origin/%s.ini", g_szCfgDir, szMap);
if(!file_exists(g_szCfgDir))
{
log_amx("Can't find origin for this map! Stopped.");
pause("ad");
}
new i, fp, szLine[64], szOrigin[3][10];
fp = fopen(g_szCfgDir, "rt");
while(g_iCaseCount < SIZE_SPAWN && fp && !feof(fp))
{
fgets(fp, szLine, charsmax(szLine));
if(szLine[0] && szLine[0] != ';' && parse(szLine, szOrigin[0], charsmax(szOrigin[]), szOrigin[1], charsmax(szOrigin[]), szOrigin[2], charsmax(szOrigin[])))
{
for(i = 0; i < 3; i++) g_fvOrigin[g_iCaseCount][i] = str_to_float(szOrigin[i]);
++g_iCaseCount;
}
}
fclose(fp);
set_task(1.0, "Informer", 77123, .flags="b");
}
public Informer(taskId)
{
new iOverTime = get_overtime();
if(iOverTime < 1 && g_bBonusEnable)
{
if(g_bRandomEnable) ShowRandomHudInfo();
else
{
set_dhudmessage(0, 255, 0, -1.0, 0.06, 0, 6.0, 1.0);
show_dhudmessage(0, "Внимание! Сундуки появились на карте!^nИщите их!");
}
return;
}
else if(iOverTime < 1 && !g_bBonusEnable)
{
g_bBonusEnable = true;
SpawnPresents();
}
static iHour, iMinute, iSecond, iDay, iLen, szMessage[192];
iDay = iOverTime / 86400;
iHour = iOverTime % 86400 / 3600;
iMinute = iOverTime % 86400 % 3600 / 60;
iSecond = iOverTime % 86400 % 3600 % 60;
iLen = formatex(szMessage, charsmax(szMessage), "Розыгрыш VIP через ");
if(iDay) iLen += formatex(szMessage[iLen], charsmax(szMessage) - iLen, "%d дней ", iDay);
if(iHour) iLen += formatex(szMessage[iLen], charsmax(szMessage) - iLen, "%d часов ", iHour);
if(iMinute) iLen += formatex(szMessage[iLen], charsmax(szMessage) - iLen, "%d минут ", iMinute);
if(iSecond) iLen += formatex(szMessage[iLen], charsmax(szMessage) - iLen, "%d секунд", iSecond);
set_hudmessage(255, 0, 0, -1.0, 0.08, 0, 6.0, 1.0);
ShowSyncHudMsg(0, gHudSync, szMessage);
}
public ClCmdSpawnPresents(id)
{
g_bBonusEnable = true;
SpawnPresents();
return PLUGIN_HANDLED;
}
public ClCmdSpawnMenu(id)
{
if(!(get_user_flags(id) & MENU_LEVEL_ACCESS))
return;
new menu = menu_create("\yVIP Bonus time:", "MenuSpawn");
menu_additem(menu, "Добавить эту позицию");
menu_additem(menu, "Удалить последнюю позицию");
menu_additem(menu, "Сохранить позиции");
menu_display(id, menu);
}
public MenuSpawn(id, menu, iItem)
{
switch(iItem)
{
case 0:
{
if(g_iCaseCount >= SIZE_SPAWN)
{
ChatColor(id, "%s Превышен лимит на количество подарков.", PREFIX);
return PLUGIN_HANDLED;
}
entity_get_vector(id, EV_VEC_origin, g_fvOrigin[g_iCaseCount++]);
ChatColor(id, "%s Точка успешно сохранена.", PREFIX);
ClCmdSpawnMenu(id);
}
case 1:
{
ChatColor(id, "%s Точка успешно удалена.", PREFIX);
g_iCaseCount--;
ClCmdSpawnMenu(id);
}
case 2:
{
delete_file(g_szCfgDir);
new szText[64];
for(new i; i < g_iCaseCount; i++)
{
formatex(szText, charsmax(szText), "^"%f^" ^"%f^" ^"%f^"", g_fvOrigin[i][0], g_fvOrigin[i][1], g_fvOrigin[i][2]);
write_file(g_szCfgDir, szText, i);
}
ChatColor(id, "^4[VBT] ^1Точки успешно сохранены.");
ClCmdSpawnMenu(id);
}
case MENU_EXIT: {}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public SpawnPresents()
{
for(new i; i < g_iCaseCount; i++)
{
new iEnt = create_entity("info_target");
if(!is_valid_ent(iEnt))
continue;
entity_set_vector(iEnt, EV_VEC_origin, g_fvOrigin[i]);
entity_set_string(iEnt, EV_SZ_classname, "info_present");
entity_set_int(iEnt, EV_INT_solid, SOLID_TRIGGER);
entity_set_int(iEnt, EV_INT_movetype, MOVETYPE_NONE);
entity_set_model(iEnt, "models/supplybox.mdl");
entity_set_size(iEnt, Float:{-16.0,-16.0,-16.0}, Float:{16.0,16.0,16.0});
drop_to_floor(iEnt);
}
}
public ShowRandomHudInfo()
{
if(g_iRandomCounter < 1)
{
remove_task(77123);
GiveRandomWinner();
}
set_hudmessage(255, 212, 0, -1.0, 0.78, 0, 6.0, 1.0);
ShowSyncHudMsg(0, gHudSync, "Выбор рандомного победителя через %d сек.", --g_iRandomCounter);
}
stock GiveRandomWinner()
{
new pPlayer = g_iPlayerId[random(g_iCaseCount)];
show_motd(pPlayer, "winner.txt", "Вы победили!");
new name[32], authid[32], ip[16];
get_user_name(pPlayer, name, charsmax(name));
get_user_authid(pPlayer, authid, charsmax(authid));
get_user_ip(pPlayer, ip, charsmax(ip), 1);
log_to_file("winners.log", "Winner! name: '%s' steamid: '%s' IP: '%s'", name, authid, ip);
set_dhudmessage(0, 255, 0, -1.0, 0.35, 0, 6.0, 10.0);
show_dhudmessage(0, "В розыгрыше выиграл %s, поздравляем его!", name);
}
public fw_TouchPresent(iEnt, id)
{
static iTouchedCases;
if(!is_valid_ent(iEnt) || g_bHasBonus[id])
return PLUGIN_HANDLED;
g_bHasBonus[id] = true;
entity_set_int(iEnt, EV_INT_flags, FL_KILLME);
g_iPlayerId[iTouchedCases++] = id;
ChatColor(id, "%s Вы подняли сундук.", PREFIX);
if(iTouchedCases >= g_iCaseCount)
g_bRandomEnable = true;
return PLUGIN_HANDLED;
}
stock get_overtime()
{
static iCurrentTime, iSpawntime, iOvertime, szSpawntime[32];
get_pcvar_string(g_pCvarTime, szSpawntime, charsmax(szSpawntime));
iCurrentTime = get_systime();
iSpawntime = parse_time(szSpawntime, "%H:%M:%S %d/%m/%Y");
#if defined FIX_TIME
iOvertime = iSpawntime - iCurrentTime + 3600;
#else
iOvertime = iSpawntime - iCurrentTime;
#endif
return iOvertime ? iOvertime : 0;
}
stock ChatColor(const id, const szRawMessage[], any:...)
{
static szMessage[191], apPlayers[32], iPlayers;
vformat(szMessage, charsmax(szMessage), szRawMessage, 3);
if(id)
{
if(!is_user_connected(id)) return;
apPlayers[0] = id;
iPlayers = 1;
}
else get_players(apPlayers, iPlayers, "ch");
for(new i; i < iPlayers; i++)
{
message_begin(MSG_ONE_UNRELIABLE, 76, .player = apPlayers[i]);
write_byte(apPlayers[i]);
write_string(szMessage);
message_end();
}
}
Вложения
-
55,2 KB Просмотры: 21