←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Problem nocny VIP


Najlepsza odpowiedź Boski Z Polski 09.01.2020 09:06

Pomyliłem znak.

 

Zrób tak:

if(get_user_flags(id) & FLAGA_VIP && !(get_user_flags(id) & ADMIN_LEVEL_G)
Przejdź do postu

  • +
  • -
Dabster - zdjęcie Dabster 09.01.2020

Problem:

SVIP zakupiony przez /sklepsms

[SVIP][VIP] <=== chciałbym pozbyć się tego prefiksu z chatu oraz żeby nie zmieniało statusu w hudzie na VIP'a z SVIP

 

SVIP dodany przez 1shota:

[SVIP] <== pomija VIPA i nic nie nadaje.

 

nocny_vipek.sma: 

Spoiler
Odpowiedz

  • +
  • -
Boski Z Polski - zdjęcie Boski Z Polski 09.01.2020

#include <amxmodx>
 
#define OD_GODZINY 22
#define DO_GODZINY 8
#define FLAGA_VIP ADMIN_LEVEL_H
 
#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"

new Forward_amxbans;
new iRet;
 
new bool:g_bDarmowyVip;
 
public plugin_init()
{
    new szGodzina[4], iGodzina;
    
    register_plugin(PLUGIN, VERSION, AUTHOR);    
    get_time("%H", szGodzina, 3);
    iGodzina = str_to_num(szGodzina);

Forward_amxbans = CreateMultiForward("amxbans_admin_connect",ET_IGNORE,FP_CELL)
    
    if(OD_GODZINY <= iGodzina || iGodzina <= DO_GODZINY)
        g_bDarmowyVip = true;
}
 
public client_authorized(id)
{
	set_task(5.0,"daj",id);
}
public daj(id) 
{ 
if(g_bDarmowyVip) 
{
if(!(get_user_flags(id) & ADMIN_LEVEL_G))
{
set_user_flags(id, get_user_flags(id) | FLAGA_VIP);
ExecuteForward(Forward_amxbans, iRet, id);
}
}

Sprawdź teraz.


Użytkownik Boski Z Polski edytował ten post 09.01.2020 00:59
Odpowiedz

  • +
  • -
Dabster - zdjęcie Dabster 09.01.2020

Nie działa. Jest tak samo jak było ale dalej mam co innego na myśli.

Mam na myśli to, aby usuwało tylko prefiks VIP, jeśli posiadamy SVIP'a i nie zmieniało nam statusu z SVIP'a na VIP'a.

Bo jeśli płacimy za SVIP'a to czemu mamy mieć VIP'a?

Odpowiedz

  • +
  • -
Boski Z Polski - zdjęcie Boski Z Polski 09.01.2020

W pluginie od vipa zamień funkcję od prefixu na:

public handleSayText(msgId,msgDest,msgEnt)
{
	new id = get_msg_arg_int(1);
	
	if(g_Vip[id] && !(get_user_flags(id,ADMIN_LEVEL_G))
	{
		new szTmp[192], szTmp2[192];
		get_msg_arg_string(2, szTmp, charsmax(szTmp));
		new szPrefix[64];
		
		formatex(szPrefix,charsmax(szPrefix),"^x04[VIP]^x03");
		
		if(!equal(szTmp,"#Cstrike_Chat_All"))
		{
			add(szTmp2, charsmax(szTmp2), "^x01");
			add(szTmp2, charsmax(szTmp2), szPrefix);
			add(szTmp2, charsmax(szTmp2), " ");
			add(szTmp2, charsmax(szTmp2), szTmp);
		}
		else
		{
			new szPlayerName[64];
			get_user_name(id, szPlayerName, charsmax(szPlayerName));
			
			get_msg_arg_string(4, szTmp, charsmax(szTmp)); //4. argument zawiera treść wysłanej wiadomości
			set_msg_arg_string(4, ""); //Musimy go wyzerować, gdyż gra wykorzysta wiadomość podwójnie co może skutkować crash'em 191+ znaków.
			
			add(szTmp2, charsmax(szTmp2), "^x01");
			add(szTmp2, charsmax(szTmp2), szPrefix);
			add(szTmp2, charsmax(szTmp2), "^x03 ");
			add(szTmp2, charsmax(szTmp2), szPlayerName);
			add(szTmp2, charsmax(szTmp2), "^x01 :  ");
			add(szTmp2, charsmax(szTmp2), szTmp)
		}
		
		set_msg_arg_string(2, szTmp2);
	}
	return PLUGIN_CONTINUE;
}
		if(get_user_flags(target) & ADMIN_LEVEL_H)
			format(sz_status, sizeof(sz_status), "VIP");
		else 	if(get_user_flags(id) & ADMIN_LEVEL_G)
			format(sz_status, sizeof(sz_status), "SVIP");
		else
			format(sz_status, sizeof(sz_status), "FREE");

A w pluginie od HUD'A (tego co wrzuciłeś) to zamień na:

	if(get_user_flags(id) & ADMIN_LEVEL_G)
	{
		format(sz_status, sizeof(sz_status), "SVIP");
	}
	else if(get_user_flags(id) & ADMIN_LEVEL_H)
	{
		format(sz_status, sizeof(sz_status), "VIP");
	}
	else
	{
		format(sz_status, sizeof(sz_status), "FREE");
	}

// to do target:
	if(get_user_flags(target) & ADMIN_LEVEL_G)
	{
		format(sz_status, sizeof(sz_status), "SVIP");
	}
	else if(get_user_flags(target) & ADMIN_LEVEL_H)
	{
		format(sz_status, sizeof(sz_status), "VIP");
	}
	else
	{
		format(sz_status, sizeof(sz_status), "FREE");
	}

Następnym razem pisz tutaj: https://amxx.pl/foru...scripting-amxx/


Użytkownik Boski Z Polski edytował ten post 09.01.2020 01:45
Odpowiedz

  • +
  • -
Dabster - zdjęcie Dabster 09.01.2020

Po próbie edycji tego:

if(g_Vip[id] && !(get_user_flags(id,ADMIN_LEVEL_G))

w to:

if(get_user_flags(id) & FLAGA_VIP) && !(get_user_flags(id),ADMIN_LEVEL_G)

Dostaję błędy kompilacji:

// C:\Users\dabst\Desktop\Wszystko\Kompilator 1.9\1.9\vip.sma(213) : error 029: invalid expression, assumed zero
// C:\Users\dabst\Desktop\Wszystko\Kompilator 1.9\1.9\vip.sma(213 -- 214) : error 028: invalid subscript (not an array or too many subscripts): "get_user_flags"
// C:\Users\dabst\Desktop\Wszystko\Kompilator 1.9\1.9\vip.sma(213 -- 215) : error 001: expected token: "}", but found "new"
// C:\Users\dabst\Desktop\Wszystko\Kompilator 1.9\1.9\vip.sma(213 -- 215) : fatal error 107: too many error messages on one line
//

Mogę zmniejszyć ilość błędów kompilacji robiąc to:

if(get_user_flags(id) & FLAGA_VIP) && !(get_user_flags(id),ADMIN_LEVEL_G)

Po czym dostaję takie błędy kompilacji:

// C:\Users\dabst\Desktop\Wszystko\Kompilator 1.9\1.9\vip.sma(213) : error 029: invalid expression, assumed zero
// C:\Users\dabst\Desktop\Wszystko\Kompilator 1.9\1.9\vip.sma(213 -- 214) : error 029: invalid expression, assumed zero

Mogę co jedynie dodać, że przy ostatniej edycji pluginu VIP pozbyłem się wszystkich wartości g_Vip[id]

 

Jeśli biorę id w nawias kwadratowy to dostaje to:

// C:\Users\dabst\Desktop\Wszystko\Kompilator 1.9\1.9\vip.sma(213) : error 028: invalid subscript (not an array or too many subscripts): "get_user_flags"
// C:\Users\dabst\Desktop\Wszystko\Kompilator 1.9\1.9\vip.sma(213) : warning 215: expression has no effect
// C:\Users\dabst\Desktop\Wszystko\Kompilator 1.9\1.9\vip.sma(213) : error 001: expected token: ";", but found "]"
// C:\Users\dabst\Desktop\Wszystko\Kompilator 1.9\1.9\vip.sma(213) : error 029: invalid expression, assumed zero
// C:\Users\dabst\Desktop\Wszystko\Kompilator 1.9\1.9\vip.sma(213) : fatal error 107: too many error messages on one line
Odpowiedz

  • +
  • -
Najlepsza odpowiedź Boski Z Polski - zdjęcie Boski Z Polski 09.01.2020

Pomyliłem znak.

 

Zrób tak:

if(get_user_flags(id) & FLAGA_VIP && !(get_user_flags(id) & ADMIN_LEVEL_G)
Odpowiedz