Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

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


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
5 odpowiedzi w tym temacie

#1 Dabster

    Pomocny

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:69
Offline

Napisano 09.01.2020 00:37

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

  • +
  • -
  • 0

#2 Boski Z Polski

    Profesjonalista

  • Użytkownik

Reputacja: 60
Pomocny

  • Postów:178
  • Steam:steam
  • Imię:Olgierd
  • Lokalizacja:Leszno
Offline

Napisano 09.01.2020 00:51

#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

  • +
  • -
  • 0

#3 Dabster

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:69
Offline

Napisano 09.01.2020 01:13

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?


  • +
  • -
  • 0

#4 Boski Z Polski

    Profesjonalista

  • Użytkownik

Reputacja: 60
Pomocny

  • Postów:178
  • Steam:steam
  • Imię:Olgierd
  • Lokalizacja:Leszno
Offline

Napisano 09.01.2020 01:34

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

  • +
  • -
  • 0

#5 Dabster

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:69
Offline

Napisano 09.01.2020 02:22

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

  • +
  • -
  • 0

#6 Boski Z Polski

    Profesjonalista

  • Użytkownik

Reputacja: 60
Pomocny

  • Postów:178
  • Steam:steam
  • Imię:Olgierd
  • Lokalizacja:Leszno
Offline

Napisano 09.01.2020 09:06   Najlepsza odpowiedź

Pomyliłem znak.

 

Zrób tak:

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

  • +
  • -
  • 1




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych