Veteran Member
Join Date: Feb 2012
Location: GuateAmala
|
02-08-2020
, 15:44
Re: Remove hours
|
#5
|
Thanks it works, another question I try to adapt that code to a barter menu for zombie plague, I mean, you can change hours for ammo packs, the problem is that when I choose an option (any) does not reduce the time, Could you tell me what is the problem please? .. thanks for your help
PHP Code:
#include <amxmisc>
#include <nvault>
#include <zp50_ammopacks>
#define PLUGIN "Barter System"
#define VERSION "1.0"
#define AUTHOR "kha"
enum
{
DEFAULT,
RED,
BLUE,
GRAY,
GREEN
}
enum _:tDataBarter
{
tInfo[64],
tTime,
tReduce,
tPts,
tItem
}
enum _:UserData
{
DATA_TOTAL,
DATA_YEARS,
DATA_MONTHS,
DATA_DAYS,
DATA_HOURS,
DATA_MIN,
DATA_SEC
}
new const tBarter[][tDataBarter] =
{
/* Descripcion Hours Reduce Ammo Packs #Item*/
{ "1 Hour = 15 Ammo Packs", 1, 1 * 3600, 15, 1 },
{ "2 Hours = 30 Ammo Packs", 2, 2 * 3600, 30, 2 },
{ "3 Hours = 45 Ammo Packs", 3, 3 * 3600, 45, 3 },
{ "4 Hours = 60 Ammo Packs", 4, 4 * 3600, 60, 4 },
{ "5 Hours = 75 Ammo Packs", 5, 5 * 3600, 75, 5 },
{ "6 Hours = 90 Ammo Packs", 6, 6 * 3600, 90, 6 },
{ "7 Hours = 105 Ammo Packs", 7, 7 * 3600, 105, 7 },
{ "8 Hours = 120 Ammo Packs", 8, 8 * 3600, 120, 8 },
{ "9 Hours = 135 Ammo Packs", 9, 9 * 3600, 135, 9 },
{ "10 Hours = 150 Ammo Packs", 10, 10 * 3600, 150, 10 }
}
new tPoints[33]
new g_Vault
new g_UserData[33][UserData]
new g_VaultKey[33][35]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /barter", "clcmd_barter")
}
public plugin_cfg()
{
g_Vault = nvault_open("VaultTime")
if(g_Vault == INVALID_HANDLE)
set_fail_state("Error opening vault")
}
public client_putinserver(id)
{
get_user_authid(id, g_VaultKey[id], charsmax(g_VaultKey[]))
tLoad(id)
}
public client_disconnect(id)
{
tSave(id)
}
public tLoad(id)
{
g_UserData[id][DATA_TOTAL] = nvault_get(g_Vault , g_VaultKey[id])
}
public tSave(id)
{
new Data[30]
num_to_str(max((g_UserData[id][DATA_TOTAL] + get_user_time(id)) - tBarter[id][tReduce], 0), Data, charsmax(Data))
nvault_set(g_Vault, g_VaultKey[id], Data)
}
public clcmd_barter(id)
{
get_time_played(max((g_UserData[id][DATA_TOTAL] + get_user_time(id)) - tBarter[id][tReduce], 0), g_UserData[id][DATA_YEARS], g_UserData[id][DATA_MONTHS], g_UserData[id][DATA_DAYS],
g_UserData[id][DATA_HOURS], g_UserData[id][DATA_MIN], g_UserData[id][DATA_SEC])
new tText[64], menu
formatex(tText, charsmax(tText), "\rZP | Barter Menu^n\rTime played: \d%02d/%02d/%02d %02d:%02d:%02d", g_UserData[id][DATA_YEARS], g_UserData[id][DATA_MONTHS], g_UserData[id][DATA_DAYS], g_UserData[id][DATA_HOURS], g_UserData[id][DATA_MIN], g_UserData[id][DATA_SEC])
menu = menu_create(tText, "opc_menu")
static i
for(i = 0; i < sizeof tBarter; i++)
{
if(g_UserData[id][DATA_HOURS] >= tBarter[i][tTime])
formatex(tText, charsmax(tText), "\w%s", tBarter[i][tInfo])
else
formatex(tText, charsmax(tText), "\d%s", tBarter[i][tInfo])
menu_additem(menu, tText, tBarter[i][tItem])
}
menu_setprop(menu, MPROP_NEXTNAME, "\wNext")
menu_setprop(menu, MPROP_BACKNAME, "\wBack")
menu_setprop(menu, MPROP_EXITNAME, "\wExit")
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public opc_menu(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
if(g_UserData[id][DATA_HOURS] >= tBarter[item][tTime])
{
g_UserData[id][DATA_HOURS] -= tBarter[item][tReduce]
tPoints[id] += zp_ammopacks_set(id, zp_ammopacks_get(id) + tBarter[item][tPts])
printf(id, DEFAULT, "^x04 ZP | ^x01You have bartered ^x04 %d Hours^x01 for ^x04 %d Ammo Packs", tBarter[item][tTime], tBarter[item][tPts])
}
else
printf(id, DEFAULT, "^x04 ZP | ^x01You don't have enough hours for this barter!")
menu_destroy(menu)
return PLUGIN_HANDLED
}
stock get_time_played(iTime, &iYear, &iMonth, &iDay, &iHour, &iMinute, &iSecond)
{
iTime -= 31536000 * (iYear = iTime / 31536000)
iTime -= 2678400 * (iMonth = iTime / 2678400)
iTime -= 86400 * (iDay = iTime / 86400)
iTime -= 3600 * (iHour = iTime / 3600)
iTime -= 60 * (iMinute = iTime / 60)
iSecond = iTime
return 1
}
public plugin_end()
{
nvault_close(g_Vault)
}
stock printf(id, color, const msg[], any:...) {
static Buffer[192], MsgSayText, MsgTeamInfo, Team[32]
if(!MsgSayText) {
MsgTeamInfo = get_user_msgid("TeamInfo")
MsgSayText = get_user_msgid("SayText")
}
vformat(Buffer[1], charsmax(Buffer) - 1, msg, 4)
static const Teams[2][10] = {
"TERRORIST",
"CT"
}
switch (color) {
case DEFAULT: {
Buffer[0] = 0x01
printf_do(id, id ? id : 33, Buffer, MsgSayText)
}
case GREEN: {
Buffer[0] = 0x04
printf_do(id, id ? id : 33, Buffer, MsgSayText)
}
case GRAY: {
Buffer[0] = 0x03
printf_do(id, 33, Buffer, MsgSayText)
}
case RED, BLUE: {
Buffer[0] = 0x03
if (id) {
if (get_user_team(id, Team, charsmax(Team)) == color) {
printf_do(id, id, Buffer, MsgSayText)
}
else {
printf_do(id, id, Teams[color-1], MsgTeamInfo)
printf_do(id, id, Buffer, MsgSayText)
printf_do(id, id, Team, MsgTeamInfo)
}
}
else {
static Num;
get_players(Team, Num, "e", Teams[color-1]);
if (Num) {
printf_do(id, Team[0], Buffer, MsgSayText)
}
else {
get_players(Team, Num, "h");
if (!Num) {
return;
}
Num = Team[0];
get_user_team(Num, Team, charsmax(Team));
printf_do(Num, Num, Teams[color-1], MsgTeamInfo)
printf_do(id, Num, Buffer, MsgSayText)
printf_do(Num, Num, Team, MsgTeamInfo)
}
}
}
}
}
printf_do(id, sender, const data[], MsgID)
{
message_begin(id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, MsgID, _, id)
write_byte(sender)
write_string(data)
message_end()
}
|
|