#include #include #include #define MM_HOUR 3600 enum ChatColor{ CHATCOLOR_NORMAL = 1, CHATCOLOR_GREEN, CHATCOLOR_TEAM_COLOR, CHATCOLOR_GREY, CHATCOLOR_RED, CHATCOLOR_BLUE, } new g_TeamName[][] = { "", "TERRORIST", "CT", "SPECTATOR" } new g_msgSayText new g_msgTeamInfo new const gNazwaPluginu[] = "Play Time Bonus"; new const gWersjaPluginu[] = "0.1"; new const gAutorPluginu[] = "MisieQ"; // pcvarki na bonusy new pcvar_pt, pcvar_pt_bonus new pcvar_pt_bonus_1h, pcvar_pt_bonus_5h, pcvar_pt_bonus_10h, pcvar_pt_bonus_20h, pcvar_pt_bonus_30h new g_Vault public plugin_init(){ register_plugin(gNazwaPluginu, gWersjaPluginu, gAutorPluginu); pcvar_pt = register_cvar("pt_enabled", "1") pcvar_pt_bonus = register_cvar("pt_bonus", "1") pcvar_pt_bonus_1h = register_cvar("pt_bonus_1h", "200") pcvar_pt_bonus_5h = register_cvar("pt_bonus_5h", "500") pcvar_pt_bonus_10h = register_cvar("pt_bonus_10h", "1000") pcvar_pt_bonus_20h = register_cvar("pt_bonus_20h", "2000") pcvar_pt_bonus_30h = register_cvar("pt_bonus_30h", "3000") register_event("SendAudio", "eventEndRound", "a", "2=%!MRAD_terwin", "2=%!MRAD_ctwin", "2=%!MRAD_rounddraw") g_msgSayText = get_user_msgid("SayText") g_msgTeamInfo = get_user_msgid("TeamInfo") register_event("HLTV", "event_new_round", "a", "1=0", "2=0"); register_logevent("GameCommencing", 2, "1=Game_Commencing"); } new gRound=0; public event_new_round(){ ++gRound; } public GameCommencing(){ gRound=0; } // koniec pcvarek public plugin_cfg(){ if(get_pcvar_num(pcvar_pt)) { g_Vault = nvault_open("play_time") if(g_Vault == INVALID_HANDLE) { set_fail_state("Error opening nVault") } //nvault_prune(g_Vault , 0 , get_systime() - (30 * 86400 )) } } public plugin_end(){ if(get_pcvar_num(pcvar_pt)) { nvault_close(g_Vault) } } public client_disconnect(id){ if(get_pcvar_num(pcvar_pt)) { played_time(id) } } public eventEndRound(){ time_play_bonus() } public played_time(id){ new szPlayers[32], iNum, szKey[32], szData[128], szName[32] new szMinute[5], szHour[5], szDay[5], szMonth[5], szYear[5] new iMinute, iHour, iDay, iMonth, iYear format_time(szMinute, sizeof(szMinute) - 1, "%M") format_time(szHour, sizeof(szHour) - 1, "%H") format_time(szDay, sizeof(szDay) - 1, "%d") format_time(szMonth, sizeof(szMonth) - 1, "%m") format_time(szYear, sizeof(szYear) - 1, "%Y") iMinute = str_to_num(szMinute) iHour = str_to_num(szHour) iDay = str_to_num(szDay) iMonth = str_to_num(szMonth) iYear = str_to_num(szYear) get_players(szPlayers, iNum) get_user_name(id, szName, sizeof(szName) - 1) formatex(szKey, sizeof(szKey) - 1, "PLAYED_TIME#%s", szName) nvault_get(g_Vault, szKey, szData, sizeof(szData) - 1) new iTime = str_to_num(szData) formatex(szData, sizeof(szData) - 1, "%d", iTime + (get_user_time(id))) nvault_set(g_Vault , szKey, szData) formatex(szKey, sizeof(szKey) - 1, "LAST_VISIT#%s", szName) formatex(szData, sizeof(szData) - 1, "%d %d %d %d %d", iDay, iMonth, iYear,iHour, iMinute) nvault_set(g_Vault , szKey, szData) formatex(szKey, sizeof(szKey) - 1, "TODAY_PLAY#%s", szName) nvault_get(g_Vault, szKey, szData, sizeof(szData) - 1) new szToday[5], szTodayPlay[256] parse(szData, szToday, sizeof(szToday), szTodayPlay, sizeof(szTodayPlay)) if(str_to_num(szToday) != iDay) { formatex(szData, sizeof(szData) - 1, "%d 0", iDay) nvault_set(g_Vault , szKey, szData) } else { formatex(szData, sizeof(szData) - 1, "%d %d", iDay, (get_user_time(id) + str_to_num(szTodayPlay))) nvault_set(g_Vault , szKey, szData) } } // rozdawanie kasy public time_play_bonus(){ if(gRound<4) return PLUGIN_HANDLED; if(!get_pcvar_num(pcvar_pt_bonus) || !get_pcvar_num(pcvar_pt)) { return PLUGIN_HANDLED } new iCash, iTmpCash, iDay, szDay[5] new szPlayers[32], iNum, szName[32] new szKey[50], szData[128] new iCash_1h = get_pcvar_num(pcvar_pt_bonus_1h) new iCash_5h = get_pcvar_num(pcvar_pt_bonus_5h) new iCash_10h = get_pcvar_num(pcvar_pt_bonus_10h) new iCash_20h = get_pcvar_num(pcvar_pt_bonus_20h) new iCash_30h = get_pcvar_num(pcvar_pt_bonus_30h) format_time(szDay, sizeof(szDay) - 1, "%d") iDay = str_to_num(szDay) get_players(szPlayers, iNum) for(new i = 0; i < iNum; i++) { if(cs_get_user_team(szPlayers[i]) == CS_TEAM_SPECTATOR) { continue } get_user_name(szPlayers[i], szName, sizeof(szName) - 1) formatex(szKey, sizeof(szKey) - 1, "TODAY_PLAY#%s", szName) nvault_get(g_Vault, szKey, szData, sizeof(szData) - 1) new szToday[5], szTodayPlay[256] parse(szData, szToday, sizeof(szToday), szTodayPlay, sizeof(szTodayPlay)) if(iDay != str_to_num(szToday)) { formatex(szData, sizeof(szData) - 1, "%d 0", iDay) nvault_set(g_Vault, szKey, szData) continue } new iTime = (get_user_time(szPlayers[i]) + str_to_num(szTodayPlay)) / MM_HOUR iCash = cs_get_user_money(szPlayers[i]) if(!iTime) { continue } if(iTime == 1 && iCash_1h != 0) { if((iCash + iCash_1h) > 16000) { cs_set_user_money(szPlayers[i], 16000) } else { cs_set_user_money(szPlayers[i], iCash + iCash_1h) } iTmpCash = iCash_1h } if(iTime == 5 && iCash_5h != 0) { if((iCash + iCash_5h) > 16000) { cs_set_user_money(szPlayers[i], 16000) } else { cs_set_user_money(szPlayers[i], iCash + iCash_5h) } iTmpCash = iCash_5h } if(iTime == 10 && iCash_10h != 0) { if((iCash + iCash_10h) > 16000) { cs_set_user_money(szPlayers[i], 16000) } else { cs_set_user_money(szPlayers[i], iCash + iCash_10h) } iTmpCash = iCash_10h } if(iTime == 20 && iCash_20h != 0) { if((iCash + iCash_20h) > 16000) { cs_set_user_money(szPlayers[i], 16000) } else { cs_set_user_money(szPlayers[i], iCash + iCash_20h) } iTmpCash = iCash_20h } if(iTime > 30 && iCash_30h != 0) { if((iCash + iCash_30h) > 16000) { cs_set_user_money(szPlayers[i], 16000) } else { cs_set_user_money(szPlayers[i], iCash + iCash_30h) } iTmpCash = iCash_30h } colorChat(szPlayers[i], CHATCOLOR_GREEN, "Grasz juz u nas $t%d h.$g dlatego dostajesz $t%d$$g bonusu", iTime, iTmpCash) } return PLUGIN_HANDLED } // koniec rozdawania kasy colorChat(id, ChatColor:color, const msg[], {Float,Sql,Result,_}:...){ new team, index, MSG_Type new bool:teamChanged = false static message[192] switch(color) { case CHATCOLOR_NORMAL: // Normal { message[0] = 0x01; } case CHATCOLOR_GREEN: // Green { message[0] = 0x04; } default: // Grey, Red, Blue { message[0] = 0x03; } } vformat(message[1], 190, msg, 4); replace_all(message, 190, "$g", "^x04") replace_all(message, 190, "$n", "^x01") replace_all(message, 190, "$t", "^x03") if(id == 0) { index = findAnyPlayer(); MSG_Type = MSG_ALL; } else { index = id; MSG_Type = MSG_ONE; } if(index != 0) { team = get_user_team(index); if(color == CHATCOLOR_RED && team != 1) { messageTeamInfo(index, MSG_Type, g_TeamName[1]) teamChanged = true } else if(color == CHATCOLOR_BLUE && team != 2) { messageTeamInfo(index, MSG_Type, g_TeamName[2]) teamChanged = true } else if(color == CHATCOLOR_GREY && team != 0) { messageTeamInfo(index, MSG_Type, g_TeamName[0]) teamChanged = true } messageSayText(index, MSG_Type, message); if(teamChanged) { messageTeamInfo(index, MSG_Type, g_TeamName[team]) } } } messageSayText(id, type, message[]){ message_begin(type, g_msgSayText, _, id) write_byte(id) write_string(message) message_end() } messageTeamInfo(id, type, team[]){ message_begin(type, g_msgTeamInfo, _, id) write_byte(id) write_string(team) message_end() } findAnyPlayer(){ static players[32], inum, pid get_players(players, inum, "ch") for (new a = 0; a < inum; a++) { pid = players[a] if(is_user_connected(pid)) return pid } return 0 }