Добавяне на amx_set_time

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
southdivision
Извън линия
Потребител
Потребител
Мнения: 279
Регистриран на: 14 Окт 2016, 23:17
Местоположение: София
Се отблагодари: 8 пъти
Получена благодарност: 5 пъти
Обратна връзка:

Добавяне на amx_set_time

Мнение от southdivision » 02 Окт 2018, 22:09

Здравейте, в следващия код желая да се добави командата:
amx_set_time - <nick, #userid, authid, or @team/@all> достъпна за админ с флаг за БАН.
Функцията която да изпълнява е да дава на играч/отбор/играчите (всичките) минути

Код за потвърждение: Избери целия код

public plugin_end()
{
    nvault_close(g_NvID);
}

public client_disconnected(id)
{
    new szPlayTime[8];
    new szAuthID[35];
    new iPlayTime;
    new ts;
    
    get_user_authid(id, szAuthID, 34);
    
    if( !nvault_lookup( g_NvID, szAuthID , szPlayTime , 7 , ts ) )
    {
        format(szPlayTime, 7, "%d" , get_user_time(id, 1) );
        nvault_set( g_NvID , szAuthID , szPlayTime);  
    }
    else
    {
        iPlayTime = str_to_num(szPlayTime) + get_user_time(id, 1);
        format(szPlayTime, 7, "%d" , iPlayTime );
        nvault_set( g_NvID , szAuthID , szPlayTime);
    }
}

public cmd_DisplayTime(id)
{
    new szTime[8];
    new szAuthID[35];
    new ts;
    
    new iCurTime = get_user_time( id , 1 );
    new iTotalTime = 0;
    
    get_user_authid(id, szAuthID, 34);
    
    if( nvault_lookup(g_NvID, szAuthID , szTime, 7, ts) )
        iTotalTime = str_to_num(szTime);
    
    client_print(id,print_chat,"* You have been on this server for %d minutes.", (iCurTime / 60));
    client_print(id,print_chat,"* Your total recorded play time on the server is %d minutes.", ((iCurTime + iTotalTime) / 60) );

}
Последно промяна от OciXCrom на 03 Окт 2018, 13:42, променено общо 1 път.
Причина: Какво правиш в раздела за скриптиране ако искаш да се добави?

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Добавяне на amx_set_time

Мнение от OciXCrom » 03 Окт 2018, 13:43

Не си предоставил достатъчно код за да се направи подобно нещо. Не виждам да има променлива, която да държи минутите. Ако няма такава, трябва да се направи променлива която да държи добавените минути и при запазване/показване в чата да брои и тях.

Аватар
southdivision
Извън линия
Потребител
Потребител
Мнения: 279
Регистриран на: 14 Окт 2016, 23:17
Местоположение: София
Се отблагодари: 8 пъти
Получена благодарност: 5 пъти
Обратна връзка:

Добавяне на amx_set_time

Мнение от southdivision » 03 Окт 2018, 17:45

OciXCrom™ написа: 03 Окт 2018, 13:43 Не си предоставил достатъчно код за да се направи подобно нещо. Не виждам да има променлива, която да държи минутите. Ако няма такава, трябва да се направи променлива която да държи добавените минути и при запазване/показване в чата да брои и тях.

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <nvault>

new g_NvID;

public plugin_init()
{
    register_plugin("Play time", "1.0", "bugsy");
    register_clcmd("say /ptime","cmd_DisplayTime", ADMIN_ALL , "- Display your play time on server.");
    register_clcmd("say_team /ptime","cmd_DisplayTime", ADMIN_ALL, "- Display your play time on server.");
    
    g_NvID = nvault_open("playtimevault");
}

public plugin_end()
{
    nvault_close(g_NvID);
}

public client_disconnect(id)
{
    new szPlayTime[8];
    new szAuthID[35];
    new iPlayTime;
    new ts;
    
    get_user_authid(id, szAuthID, 34);
    
    if( !nvault_lookup( g_NvID, szAuthID , szPlayTime , 7 , ts ) )
    {
        //Users first disconnect
        format(szPlayTime, 7, "%d" , get_user_time(id, 1) );
        nvault_set( g_NvID , szAuthID , szPlayTime);  
    }
    else
    {
        //All other disconnects
        iPlayTime = str_to_num(szPlayTime) + get_user_time(id, 1);
        format(szPlayTime, 7, "%d" , iPlayTime );
        nvault_set( g_NvID , szAuthID , szPlayTime);
    }
}

public cmd_DisplayTime(id)
{
    new szTime[8];
    new szAuthID[35];
    new ts;
    
    new iCurTime = get_user_time( id , 1 );
    new iTotalTime = 0;
    
    get_user_authid(id, szAuthID, 34);
    
    if( nvault_lookup(g_NvID, szAuthID , szTime, 7, ts) )
        iTotalTime = str_to_num(szTime);
    
    client_print(id,print_chat,"* You have been on this server for %d minutes.", (iCurTime / 60));
    client_print(id,print_chat,"* Your total recorded play time on the server is %d minutes.", ((iCurTime + iTotalTime) / 60) );

}

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Добавяне на amx_set_time

Мнение от OciXCrom » 03 Окт 2018, 20:23

Имаш предвид да дава минути към текущите или изцяло да променя количеството на това което напишеш в командата?

Аватар
southdivision
Извън линия
Потребител
Потребител
Мнения: 279
Регистриран на: 14 Окт 2016, 23:17
Местоположение: София
Се отблагодари: 8 пъти
Получена благодарност: 5 пъти
Обратна връзка:

Добавяне на amx_set_time

Мнение от southdivision » 03 Окт 2018, 20:35

OciXCrom™ написа: 03 Окт 2018, 20:23 Имаш предвид да дава минути към текущите или изцяло да променя количеството на това което напишеш в командата?
Да променя количеството на това което напиша в командата

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Добавяне на amx_set_time

Мнение от OciXCrom » 03 Окт 2018, 20:47

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc>
#include <nvault>

new g_NvID;
new g_iCustomTime[33];

public plugin_init()
{
    register_plugin("Play time", "1.0", "bugsy");
    register_clcmd("say /ptime","cmd_DisplayTime", ADMIN_ALL , "- Display your play time on server.");
    register_clcmd("say_team /ptime","cmd_DisplayTime", ADMIN_ALL, "- Display your play time on server.");
    register_concmd("amx_set_time", "cmd_SetTime", ADMIN_BAN, "<player> <time>")
    
    g_NvID = nvault_open("playtimevault");
}

public plugin_end()
{
    nvault_close(g_NvID);
}

public client_putinserver(id)
	g_iCustomTime[id] = -1

public client_disconnect(id)
{
    new szPlayTime[8];
    new szAuthID[35];
    new iPlayTime;
    new ts;
    
    get_user_authid(id, szAuthID, 34);
    
    if( !nvault_lookup( g_NvID, szAuthID , szPlayTime , charsmax(szPlayTime) , ts ) )
    {
        //Users first disconnect
        num_to_str(get_user_custom_time(id), szPlayTime, charsmax(szPlayTime));
        nvault_set(g_NvID , szAuthID , szPlayTime);  
    }
    else
    {
        //All other disconnects
        iPlayTime = str_to_num(szPlayTime) + get_user_custom_time(id);
        num_to_str(iPlayTime, szPlayTime, charsmax(szPlayTime))
        nvault_set( g_NvID , szAuthID , szPlayTime);
    }
}

public cmd_SetTime(id, iLevel, iCid)
{
	if(!cmd_access(id, iLevel, iCid, 3))
		return PLUGIN_HANDLED

	new szPlayer[32]
	read_argv(1, szPlayer, charsmax(szPlayer))

	new iPlayer = cmd_target(id, szPlayer, CMDTARGET_OBEY_IMMUNITY)

	if(!iPlayer)
		return PLUGIN_HANDLED

	new szMinutes[8]
	read_argv(2, szMinutes, charsmax(szMinutes))
	g_iCustomTime[iPlayer] = str_to_num(szMinutes)

	new szName[2][32]
	get_user_name(id, szName[0], charsmax(szName[]))
	get_user_name(iPlayer, szName[1], charsmax(szName[]))

	client_print(id, print_chat, "ADMIN %s set %i minutes on %s", szName[0], g_iCustomTime[iPlayer], szName[1])
	return PLUGIN_HANDLED
}

public cmd_DisplayTime(id)
{
    new szTime[8];
    new szAuthID[35];
    new ts;
    
    new iCurTime = get_user_custom_time(id);
    new iTotalTime = 0;
    
    get_user_authid(id, szAuthID, 34);
    
    if( nvault_lookup(g_NvID, szAuthID , szTime, 7, ts) )
        iTotalTime = str_to_num(szTime);
    
    client_print(id,print_chat,"* You have been on this server for %d minutes.", (iCurTime / 60));
    client_print(id,print_chat,"* Your total recorded play time on the server is %d minutes.", ((iCurTime + iTotalTime) / 60) );

}

get_user_custom_time(id)
	return g_iCustomTime[id] == -1 ? get_user_time(id, 1) : g_iCustomTime[id]

Аватар
southdivision
Извън линия
Потребител
Потребител
Мнения: 279
Регистриран на: 14 Окт 2016, 23:17
Местоположение: София
Се отблагодари: 8 пъти
Получена благодарност: 5 пъти
Обратна връзка:

Добавяне на amx_set_time

Мнение от southdivision » 05 Окт 2018, 00:35

OciXCrom™ написа: 03 Окт 2018, 20:47

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc>
#include <nvault>

new g_NvID;
new g_iCustomTime[33];

public plugin_init()
{
    register_plugin("Play time", "1.0", "bugsy");
    register_clcmd("say /ptime","cmd_DisplayTime", ADMIN_ALL , "- Display your play time on server.");
    register_clcmd("say_team /ptime","cmd_DisplayTime", ADMIN_ALL, "- Display your play time on server.");
    register_concmd("amx_set_time", "cmd_SetTime", ADMIN_BAN, "<player> <time>")
    
    g_NvID = nvault_open("playtimevault");
}

public plugin_end()
{
    nvault_close(g_NvID);
}

public client_putinserver(id)
	g_iCustomTime[id] = -1

public client_disconnect(id)
{
    new szPlayTime[8];
    new szAuthID[35];
    new iPlayTime;
    new ts;
    
    get_user_authid(id, szAuthID, 34);
    
    if( !nvault_lookup( g_NvID, szAuthID , szPlayTime , charsmax(szPlayTime) , ts ) )
    {
        //Users first disconnect
        num_to_str(get_user_custom_time(id), szPlayTime, charsmax(szPlayTime));
        nvault_set(g_NvID , szAuthID , szPlayTime);  
    }
    else
    {
        //All other disconnects
        iPlayTime = str_to_num(szPlayTime) + get_user_custom_time(id);
        num_to_str(iPlayTime, szPlayTime, charsmax(szPlayTime))
        nvault_set( g_NvID , szAuthID , szPlayTime);
    }
}

public cmd_SetTime(id, iLevel, iCid)
{
	if(!cmd_access(id, iLevel, iCid, 3))
		return PLUGIN_HANDLED

	new szPlayer[32]
	read_argv(1, szPlayer, charsmax(szPlayer))

	new iPlayer = cmd_target(id, szPlayer, CMDTARGET_OBEY_IMMUNITY)

	if(!iPlayer)
		return PLUGIN_HANDLED

	new szMinutes[8]
	read_argv(2, szMinutes, charsmax(szMinutes))
	g_iCustomTime[iPlayer] = str_to_num(szMinutes)

	new szName[2][32]
	get_user_name(id, szName[0], charsmax(szName[]))
	get_user_name(iPlayer, szName[1], charsmax(szName[]))

	client_print(id, print_chat, "ADMIN %s set %i minutes on %s", szName[0], g_iCustomTime[iPlayer], szName[1])
	return PLUGIN_HANDLED
}

public cmd_DisplayTime(id)
{
    new szTime[8];
    new szAuthID[35];
    new ts;
    
    new iCurTime = get_user_custom_time(id);
    new iTotalTime = 0;
    
    get_user_authid(id, szAuthID, 34);
    
    if( nvault_lookup(g_NvID, szAuthID , szTime, 7, ts) )
        iTotalTime = str_to_num(szTime);
    
    client_print(id,print_chat,"* You have been on this server for %d minutes.", (iCurTime / 60));
    client_print(id,print_chat,"* Your total recorded play time on the server is %d minutes.", ((iCurTime + iTotalTime) / 60) );

}

get_user_custom_time(id)
	return g_iCustomTime[id] == -1 ? get_user_time(id, 1) : g_iCustomTime[id]
Не се получава. Пиша amx_set_time Ник 9 - излиза съобщението,но като напиша /ptime няма разлика, а когато напиша amx_set_time Ник 999999 изписва в /ptime,че имам около 2к минути ..

Едит1: Забелязах,че ги конвентира. Пиша amx_set_time Ivan 7000 = във /ptime ги изписва във 117 минути

Едит2: Оправих се със конвентирането и изписването в чата на добавените минути в конвентиран вариант,но не се справих със едно единствено нещо: Когато напиша amx_set_time ivan 1 в конзолата и след това /ptime Total recorded play time изписва много повече вместо да ги сет-не на 1. Трябва да играе като ролята на set_user_health(id, 100). Ето ти кода:

Код за потвърждение: Избери целия код

public cmd_SetTime(id, iLevel, iCid)
{
	if(!cmd_access(id, iLevel, iCid, 3))
		return PLUGIN_HANDLED

	new szPlayer[32]
	read_argv(1, szPlayer, charsmax(szPlayer))

	new iPlayer = cmd_target(id, szPlayer, CMDTARGET_OBEY_IMMUNITY)

	if(!iPlayer)
		return PLUGIN_HANDLED

	new szMinutes[8]
	read_argv(2, szMinutes, charsmax(szMinutes))
	g_iCustomTime[iPlayer] = (str_to_num(szMinutes) * 60)

	new szName[2][32]
	get_user_name(id, szName[0], charsmax(szName[]))
	get_user_name(iPlayer, szName[1], charsmax(szName[]))

	client_print(id, print_chat, "ADMIN %s set %i minutes on %s", szName[0], (g_iCustomTime[iPlayer] / 60), szName[1] );
	return PLUGIN_HANDLED
}

public cmd_DisplayTime(id)
{
    new szTime[8];
    new szAuthID[35];
    new ts;
    
    new iCurTime = get_user_custom_time(id);
    new iTotalTime = 0;
    
    get_user_authid(id, szAuthID, 34);
    
    if( nvault_lookup(g_NvID, szAuthID , szTime, 7, ts) )
        iTotalTime = str_to_num(szTime);
	
    client_print(id,print_chat,"* You have been on this server for %d minutes.", (iCurTime / 60));
    client_print(id,print_chat,"* Your total recorded play time on the server is %d minutes.", ((iCurTime + iTotalTime) / 60) );

}

get_user_custom_time(id)
	return g_iCustomTime[id] == -1 ? get_user_time(id, 1) : g_iCustomTime[id]
	
	
Едит3: Оправих се със всички проблеми,но сега като напиша amx_set_time ivan 120 и след 5 минути напиша /ptime ми показва 120 минути че съм бил в сървъра (не отчита)

Код за потвърждение: Избери целия код


public cmd_SetTime(id, iLevel, iCid)
{
	if(!cmd_access(id, iLevel, iCid, 3))
		return PLUGIN_HANDLED

	new szPlayer[32]
	read_argv(1, szPlayer, charsmax(szPlayer))

	new iPlayer = cmd_target(id, szPlayer, CMDTARGET_OBEY_IMMUNITY)

	if(!iPlayer)
		return PLUGIN_HANDLED

	new szMinutes[8], szTime[8], szAuthID[35], ts;
	read_argv(2, szMinutes, charsmax(szMinutes))
	
    get_user_authid(iPlayer, szAuthID, 34);
	
	if( nvault_lookup(g_NvID, szAuthID , szTime, 7, ts) )
        szTime[iPlayer] = (str_to_num(szMinutes) * 60)
		
	g_iCustomTime[iPlayer] = (str_to_num(szMinutes) * 60)

	new szName[2][32]
	get_user_name(id, szName[0], charsmax(szName[]))
	get_user_name(iPlayer, szName[1], charsmax(szName[]))

	client_print(id, print_chat, "ADMIN %s set %i minutes on %s", szName[0], (g_iCustomTime[iPlayer] / 60), szName[1] );
	return PLUGIN_HANDLED
}

public cmd_DisplayTime(id)
{
    new szTime[8];
    new szAuthID[35];
    new ts;
    
    new iCurTime = get_user_custom_time(id);
    new iTotalTime = 0;
    
    get_user_authid(id, szAuthID, 34);
    
    if( nvault_lookup(g_NvID, szAuthID , szTime, 7, ts) )
        iTotalTime = str_to_num(szTime);
	
client_print(id,print_chat,"* You have been on this server for %d minutes.", (iCurTime / 60));
    client_print(id,print_chat,"* Your total recorded play time on the server is %d minutes.", ((iCurTime + iTotalTime) / 60) );
	
	

}

Едит 4: Моя грешка,но пък отчита минутите който са били добавени чрез командата чак след като влезнеш наново във сървъра.
Пример: Добавям си минути (имаи на предвид,че нямам никакви тотални минути) - amx_set_time ivan 120
Пиша /ptime и ми излиза: Your total recorded play time on the server is 0 minutes
Пиша retry в кознолата
Пиша /ptime след като съм влезнал в сървъра: Your total recorded play time on the server is 120 minutes

Искам след добавянето веднага като напиша /ptime да ги изписва при тоталните

Код за потвърждение: Избери целия код

public cmd_SetTime(id, iLevel, iCid)
{
	if(!cmd_access(id, iLevel, iCid, 3))
		return PLUGIN_HANDLED

	new szPlayer[32]
	read_argv(1, szPlayer, charsmax(szPlayer))

	new iPlayer = cmd_target(id, szPlayer, CMDTARGET_OBEY_IMMUNITY)

	if(!iPlayer)
		return PLUGIN_HANDLED

	new szMinutes[8], szTime[8], szAuthID[35], ts;
	
	read_argv(2, szMinutes, charsmax(szMinutes))
	
    get_user_authid(iPlayer, szAuthID, 34);
	
	if( nvault_lookup(g_NvID, szAuthID , szTime, 7, ts) )
        szTime[iPlayer] = (str_to_num(szMinutes) * 60)
		
	g_iCustomTime[iPlayer] = (str_to_num(szMinutes) * 60)

	new szName[2][32]
	get_user_name(id, szName[0], charsmax(szName[]))
	get_user_name(iPlayer, szName[1], charsmax(szName[]))

	client_print(id, print_chat, "ADMIN %s set %i minutes on %s", szName[0], (g_iCustomTime[iPlayer] / 60), szName[1] );
	return PLUGIN_HANDLED
}


public cmd_DisplayTime(id)
{
    new szTime[8];
    new szAuthID[35];
    new ts;
    
    new iCurTime = get_user_time( id , 1 );
    new iTotalTime = 0;
    
    get_user_authid(id, szAuthID, 34);
    
    if( nvault_lookup(g_NvID, szAuthID , szTime, 7, ts) )
        iTotalTime = str_to_num(szTime) + get_user_custom_time(id);
	
	client_print(id,print_chat,"* You have been on this server for %d minutes.", (iCurTime / 60));
    client_print(id,print_chat,"* Your total recorded play time on the server is %d minutes.", ((iCurTime + iTotalTime) / 60) );

}

get_user_custom_time(id)
	return g_iCustomTime[id] == -1 ? get_user_time(id, 1) : g_iCustomTime[id]
	

Аватар
southdivision
Извън линия
Потребител
Потребител
Мнения: 279
Регистриран на: 14 Окт 2016, 23:17
Местоположение: София
Се отблагодари: 8 пъти
Получена благодарност: 5 пъти
Обратна връзка:

Добавяне на amx_set_time

Мнение от southdivision » 07 Окт 2018, 21:36

Лок ..

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: Google [Bot] и 16 госта