←  Szukam pluginu

AMXX.pl: Support AMX Mod X i SourceMod

»

Dodawanie monet dla gracza offline

  • +
  • -
mordoryjacz's Photo mordoryjacz 23.12.2022

Szukam pluginu ktory dodaje monety dla gracza ktorego nie ma na serwerze

zapis monet jest na nvault 


Edited by mordoryjacz, 23.12.2022 12:48.
Quote

  • +
  • -
Boski Z Polski's Photo Boski Z Polski 23.12.2022

#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#include <nvault>
#include <nvault_util>

#define PLUGIN "Monety, gdy nie ma na serwerze"
#define VERSION "1.0.0"
#define AUTHOR "Boski Z Polski"

native pobierz_monety(id);
native ustaw_monety(id, wartosc);

new nazwa_pliku[] = "aaa"
new vault;

public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR);
	register_concmd("dodaj_monety","dodaj_monety", ADMIN_IMMUNITY, "<nazwa gracza> <ilosc monet>");
	vault = nvault_open(nazwa_pliku);
}

public plugin_end()
{
	nvault_close(vault);
}

public dodaj_monety(id, level, cid)
{
	if(!cmd_access(id, level, cid, 3))
	{
		return PLUGIN_HANDLED;
	}
	
	new nazwa_wyszukiwanego[64]
	read_argv(1, nazwa_wyszukiwanego,charsmax(nazwa_wyszukiwanego))
	
	new ilosc_dodanych_monet[64]
	read_argv(2, ilosc_dodanych_monet,charsmax(ilosc_dodanych_monet))
	
	if(str_to_num(ilosc_dodanych_monet) <= 0 || !is_str_num(ilosc_dodanych_monet))
	{
		return PLUGIN_HANDLED;
	}
	
	new znalezione;
	
	for(new i = 0;i < 32; i++)
	{
		if(!is_user_connected(i) || is_user_hltv(i))
		{
			continue;
		}
		
		new name[33];
		get_user_name(i, name, charsmax(name)); //jesli chcesz zeby bylo na sid to zmieniasz na get_user_authid w zaleznosci od formy zapisu
		
		if(equal(nazwa_wyszukiwanego, name))
		{
			znalezione = true;
			ColorChat(id, TEAM_COLOR, "^x04[Monety]^x03 Dodales^x04 %s^x03 az^x04 %s monet!", nazwa_wyszukiwanego, ilosc_dodanych_monet);
			ustaw_monety(i, pobierz_monety(i) + str_to_num(ilosc_dodanych_monet))
			return PLUGIN_CONTINUE;
		}
	}
	
	new u_vault = nvault_util_open(nazwa_pliku); //plik nvault;
	new iPos;
	new iTimeStamp;
	new iCount = nvault_util_count(u_vault);
	new szKey[64];
	new szVal[64];
	
	for(new iCurrent = 1, n = 1; iCurrent <= iCount ;iCurrent++ )
	{
		iPos = nvault_util_read( u_vault , iPos , szKey , charsmax( szKey ) , szVal , charsmax( szVal ) , iTimeStamp );
		n += iCurrent;
		
		// teraz wszystko zalezy w jaki sposob masz zapisane dane w oryginalnym pluginie od monet
		// ja mam zapisane w ^"%s^" na nick
		
		new g_nick[33];
		new g_monety[33];
		
		parse(szKey, g_nick, charsmax(g_nick));
		replace_all(g_nick, charsmax(g_nick), "^"", " ");
		
		parse(szVal, g_monety, charsmax(g_monety));
		replace_all(g_monety, charsmax(g_monety), "^"", " ");
		
		if(equal(nazwa_wyszukiwanego, g_nick))
		{
			new nick[64];
			formatex(nick, charsmax(nick), "^"%s^"", nazwa_wyszukiwanego);
			new monety[64];
			formatex(monety, charsmax(monety), "%i", str_to_num(g_monety) + str_to_num(ilosc_dodanych_monet));
			
			nvault_set(vault, nick, monety);
			znalezione = true;
			break;
		}
	}
	
	if(znalezione)
	{
		ColorChat(id, TEAM_COLOR, "^x04[Monety]^x03 Dodales^x04 %s^x03 az^x04 %s monet!", nazwa_wyszukiwanego, ilosc_dodanych_monet);
	}
	else
	{
		ColorChat(id, TEAM_COLOR, "^x04[Monety]^x03 Nie znaleziono gracza^x04 %s^x03 Poczekaj na zmiane mapy!", nazwa_wyszukiwanego);
	}
	
	return PLUGIN_HANDLED;
}

Odczyt danych musi być taki sam jak odczyt z silnika od monet. Zapis jest na nick oraz dodatkowo, tu masz linka do inc nvault_util: Dokumentacja AMXX.pl: nvault_util.inc


Edited by Boski Z Polski, 23.12.2022 18:23.
Quote