Page 1 of 1

cerere modificare thetime

Posted: 17 Nov 2018, 12:05
by server_cmd
Am si eu o problema cu pluginul thetime, fiind hostat in strainatate, imi apare cand dau thetime cu 2ore in urma.
Imi poate modifica cineva sursa pluginului sa mai adauge inca 2 ore la ora luata de pe server?
| Afiseaza codul
/* AMX Mod X
*   TimeLeft Plugin
*
* by the AMX Mod X Development Team
*  originally developed by OLO
*
* This file is part of AMX Mod X.
*
*
*  This program is free software; you can redistribute it and/or modify it
*  under the terms of the GNU General Public License as published by the
*  Free Software Foundation; either version 2 of the License, or (at
*  your option) any later version.
*
*  This program is distributed in the hope that it will be useful, but
*  WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
*  General Public License for more details.
*
*  You should have received a copy of the GNU General Public License
*  along with this program; if not, write to the Free Software Foundation,
*  Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*  In addition, as a special exception, the author gives permission to
*  link the code of this program with the Half-Life Game Engine ("HL
*  Engine") and Modified Game Libraries ("MODs") developed by Valve,
*  L.L.C ("Valve"). You must obey the GNU General Public License in all
*  respects for all of the code used other than the HL Engine and MODs
*  from Valve. If you modify this file, you may extend this exception
*  to your version of the file, but you are not obligated to do so. If
*  you do not wish to do so, delete this exception statement from your
*  version.
*/

#include <amxmodx>

new g_TimeSet[32][2]
new g_LastTime
new g_CountDown
new g_Switch

public plugin_init()
{
	register_plugin("TimeLeft", AMXX_VERSION_STR, "AMXX Dev Team")
	register_dictionary("timeleft.txt")
	register_cvar("amx_time_voice", "1")
	register_srvcmd("amx_time_display", "setDisplaying")
	register_cvar("amx_timeleft", "00:00", FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_UNLOGGED|FCVAR_SPONLY)
	register_clcmd("say timeleft", "sayTimeLeft", 0, "- displays timeleft")
	register_clcmd("say thetime", "sayTheTime", 0, "- displays current time")
	
	set_task(0.8, "timeRemain", 8648458, "", 0, "b")
}

public sayTheTime(id)
{
	if (get_cvar_num("amx_time_voice"))
	{
		new mhours[6], mmins[6], whours[32], wmins[32], wpm[6]
		
		get_time("%H", mhours, 5)
		get_time("%M", mmins, 5)
		
		new mins = str_to_num(mmins)
		new hrs = str_to_num(mhours)
		
		if (mins)
			num_to_word(mins, wmins, 31)
		else
			wmins[0] = 0
		
		if (hrs < 12)
			wpm = "am "
		else
		{
			if (hrs > 12) hrs -= 12
			wpm = "pm "
		}

		if (hrs) 
			num_to_word(hrs, whours, 31)
		else
			whours = "twelve "
		
		client_cmd(id, "spk ^"fvox/time_is_now %s_period %s%s^"", whours, wmins, wpm)
	}
	
	new ctime[64]
	
	get_time("%m/%d/%Y - %H:%M:%S", ctime, 63)
	client_print(0, print_chat, "%L:   %s", LANG_PLAYER, "THE_TIME", ctime)
	
	return PLUGIN_CONTINUE
}

public sayTimeLeft(id)
{
	if (get_cvar_float("mp_timelimit"))
	{
		new a = get_timeleft()
		
		if (get_cvar_num("amx_time_voice"))
		{
			new svoice[128]
			setTimeVoice(svoice, 127, 0, a)
			client_cmd(id, "%s", svoice)
		}
		client_print(0, print_chat, "%L:  %d:%02d", LANG_PLAYER, "TIME_LEFT", (a / 60), (a % 60))
	}
	else
		client_print(0, print_chat, "%L", LANG_PLAYER, "NO_T_LIMIT")
	
	return PLUGIN_CONTINUE
}

setTimeText(text[], len, tmlf, id)
{
	new secs = tmlf % 60
	new mins = tmlf / 60
	
	if (secs == 0)
		format(text, len, "%d %L", mins, id, (mins > 1) ? "MINUTES" : "MINUTE")
	else if (mins == 0)
		format(text, len, "%d %L", secs, id, (secs > 1) ? "SECONDS" : "SECOND")
	else
		format(text, len, "%d %L %d %L", mins, id, (mins > 1) ? "MINUTES" : "MINUTE", secs, id, (secs > 1) ? "SECONDS" : "SECOND")
}

setTimeVoice(text[], len, flags, tmlf)
{
	new temp[7][32]
	new secs = tmlf % 60
	new mins = tmlf / 60
	
	for (new a = 0;a < 7;++a)
		temp[a][0] = 0

	if (secs > 0)
	{
		num_to_word(secs, temp[4], 31)
		
		if (!(flags & 8)) 
			temp[5] = "seconds "	/* there is no "second" in default hl */
	}
	
	if (mins > 59)
	{
		new hours = mins / 60
		
		num_to_word(hours, temp[0], 31)
		
		if (!(flags & 8))
			temp[1] = "hours "
		
		mins = mins % 60
	}
	
	if (mins > 0)
	{
		num_to_word(mins, temp[2], 31)
		
		if (!(flags & 8))
			temp[3] = "minutes "
	}
	
	if (!(flags & 4))
		temp[6] = "remaining "
	
	return format(text, len, "spk ^"vox/%s%s%s%s%s%s%s^"", temp[0], temp[1], temp[2], temp[3], temp[4], temp[5], temp[6])
}

findDispFormat(time)
{
	for (new i = 0; g_TimeSet[0]; ++i)
	{
		if (g_TimeSet[1] & 16)
		{
			if (g_TimeSet[0] > time)
			{
				if (!g_Switch)
				{
					g_CountDown = g_Switch = time
					remove_task(8648458)
					set_task(1.0, "timeRemain", 34543, "", 0, "b")
				}
				
				return i
			}
		}
		else if (g_TimeSet[0] == time)
		{
			return i
		}
	}
	
	return -1
}

public setDisplaying()
{
	new arg[32], flags[32], num[32]
	new argc = read_argc() - 1
	new i = 0

	while (i < argc && i < 32)
	{
		read_argv(i + 1, arg, 31)
		parse(arg, flags, 31, num, 31)
		
		g_TimeSet[0] = str_to_num(num)
		g_TimeSet[1] = read_flags(flags)
		
		i++
	}
	g_TimeSet[0] = 0
	
	return PLUGIN_HANDLED
}

public timeRemain(param[])
{
	new gmtm = get_timeleft()
	new tmlf = g_Switch ? --g_CountDown : gmtm
	new stimel[12]
	
	format(stimel, 11, "%02d:%02d", gmtm / 60, gmtm % 60)
	set_cvar_string("amx_timeleft", stimel)
	
	if (g_Switch && gmtm > g_Switch)
	{
		remove_task(34543)
		g_Switch = 0
		set_task(0.8, "timeRemain", 8648458, "", 0, "b")
		
		return
	}

	if (tmlf > 0 && g_LastTime != tmlf)
	{
		g_LastTime = tmlf
		new tm_set = findDispFormat(tmlf)
		
		if (tm_set != -1)
		{
			new flags = g_TimeSet[tm_set][1]
			new arg[128]
			
			if (flags & 1)
			{
				new players[32], pnum
				
				get_players(players, pnum, "c")
				
				for (new i = 0; i < pnum; i++)
				{
					setTimeText(arg, 127, tmlf, players)
					
					if (flags & 16)
						set_hudmessage(255, 255, 255, -1.0, 0.85, 0, 0.0, 1.1, 0.1, 0.5, -1)
					else
						set_hudmessage(255, 255, 255, -1.0, 0.85, 0, 0.0, 3.0, 0.0, 0.5, -1)
					
					show_hudmessage(players, "%s", arg)
				}
			}

			if (flags & 2)
			{
				setTimeVoice(arg, 127, flags, tmlf)
				client_cmd(0, "%s", arg)
			}
		}
	}
}

Re: cerere modificare thetime

Posted: 17 Nov 2018, 12:16
by Laurentiu P.
Doar asta am gasit pe net - https://forums.alliedmods.net/showthread.php?t=24508
Dacă am ceva chef pe seară te rezolv.

Re: cerere modificare thetime

Posted: 17 Nov 2018, 17:51
by server_cmd
Am modificat ceea ce spuneau ei in topic dar ora tot nu s-a schimbat

Re: cerere modificare thetime

Posted: 19 Nov 2018, 20:09
by levin
vrei să afișeze ora locală a româniței?
dacă da, precizează unde este hostat server-ul, și unde locuiești tu

Re: cerere modificare thetime

Posted: 19 Nov 2018, 23:52
by server_cmd
Eu sunt din Romania, Bucuresti
Serverul hostat krond pe extern. Franta

Re: cerere modificare thetime

Posted: 20 Nov 2018, 11:33
by levin
compilează local thetime.sma, vezi să ai timpul setat local, și versiunea de amxx corespunzătoare, după pui sv pe off, ștergi plg din ftp, îl urci pe cel recent compilat local, și dai drumu la sv

Re: cerere modificare thetime

Posted: 20 Nov 2018, 18:52
by WISHEXEC
ca sa schimbi vocea la sunet cauti linia in sursa:
new hrs = str_to_num(mhours)
si schimbi cu
new hrs = str_to_num(mhours) + 2

ca sa schimbi linia in chat cauti in fisierele tale din server, in folderul lang, fisierul txt care probabil are acelasi nume ca si pluginul
si cauti in fisierul ala, THE_TIME = bla bla, iar in structura lui pui +2 in dreptul la ore
(nu mai am nici un server in momentul asta in laptop sa iti dau linia exact)

e simplu :thumbsup:

Re: cerere modificare thetime

Posted: 20 Nov 2018, 20:36
by server_cmd
Exact asa am facut si niciun rezultat.
Nu am lang la pluginul de timeleft, e rescris fara lang, direct in plugin

Re: cerere modificare thetime

Posted: 06 Dec 2018, 06:28
by server_cmd
Vreo solutie?

Re: cerere modificare thetime

Posted: 11 Dec 2018, 20:01
by ImparctVirtual
trimite ticket la cei dela host si spunele casa-si seteze ora in caclulatoru lor care au host si v-a merge aceasta problema am avut-o si eu si am rezolvat-o trimindu-le lor ticket, o zii buna.