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

Kto kogo oślepił - nicki po przecinku


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

#1 MrStrajker

    Zaawansowany

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:109
  • GG:
  • Imię:Patryk
  • Lokalizacja:Sosnowiec
Offline

Napisano 08.11.2022 17:54

Witam,

 

Czy byłby ktoś tak miły i przerobiłby mi plugin team flash snitch  :)

Sprawa wygląda tak, że chciałbym aby na chacie lista nicków o oślepionych graczach pojawiała się po przecinku w jednej wiadomości.

W przypadku gdy oślepię 3 graczy: Oślepiłeś graczy: nick1, nick2, nick 3

W przypadku gdy oślepię tylko jednego gracza: Oślepiłeś gracza: nick

 

Aktualnie wygląda to tak, że każda informacja o kolejnym graczu jest osobna:

Oślepiłeś gracza: nick

Oślepiłeś gracza: nick2

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>

#define PLUGIN "Flash Snitch"
#define VERSION "1.0"
#define AUTHOR "Sn!ff3r"
#define ID 3322

new msg_saytext
new g_flasher

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)

	msg_saytext = get_user_msgid("SayText")

	register_event("ScreenFade", "ScreenFade", "be", "4=255", "5=255", "6=255", "7>199") 
	register_event("23", "TEMPENTITY", "a", "1=5", "6=25", "7=6") 

	register_forward(FM_SetModel, "SetModel") 
}

public SetModel(ent, model[]) 
{	
	if(equal(model, "models/w_flashbang.mdl")) 
	{	
    	static owner
    	owner = pev(ent, pev_owner)
    	if(owner) 		
    	{
        	set_task(1.52,"get_flasher", ID + owner)
    	}
	}
} 

public TEMPENTITY()
{	
	set_task(0.05, "reset_flasher") 
	return PLUGIN_CONTINUE
} 

public reset_flasher()
{ 
	g_flasher = 0
}

public get_flasher(id)
{
	g_flasher = (id - ID)
}

public ScreenFade(id) 
{	
	if(is_user_alive(id))
	{
    	if(id != g_flasher && get_user_team(id) == get_user_team(g_flasher))
    	{
        	static name[33], message[128]
                    	
        	get_user_name(g_flasher, name, 32)        	
        	formatex(message, 127, "^x04~^x01 Zostales oslepiony przez:^x03 %s", name)
        	print_that(id, message)        	

        	get_user_name(id, name, 32)        	
        	formatex(message, 127, "^x04~^x01 Oslepiles gracza:^x03 %s", name)
        	print_that(g_flasher, message)
    	}
	}	
} 

stock print_that(id, text[])
{
	message_begin(MSG_ONE_UNRELIABLE, msg_saytext, {0,0,0}, id)
	write_byte(id)
	write_string(text)
	message_end()
} 

Z góry dziękuje  ;)


  • +
  • -
  • 0

#2 Boski Z Polski

    Profesjonalista

  • Użytkownik

Reputacja: 61
Pomocny

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

Napisano 08.11.2022 19:29

Nie testowane, zrobiłem coś takiego na szybko:

#include <amxmodx>
#include <amxmisc>
#include <reapi>

#define PLUGIN "Kto kogo oslepil"
#define VERSION "1.0.0"
#define AUTHOR "Boski Z Polski"
#define TASK_WIADOMOSC 1000

new kogo_oslepil[33][33][33];
new ilosc_oslepionych[33];

public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR);
	
	RegisterHookChain(RG_PlayerBlind, "oslepienie_hook", 0);
}

public client_disconnected(id)
{
	if(task_exists(id + TASK_WIADOMOSC))
	{
		remove_task(id + TASK_WIADOMOSC);
	}
	
	if(ilosc_oslepionych[id])
	{
		for(new i = 1; i <= ilosc_oslepionych[id]; i++)
		{
			copy(kogo_oslepil[id][i], charsmax(kogo_oslepil), "");
		}
		
		ilosc_oslepionych[id] = 0;
	}
}

public oslepienie_hook (const index, const inflictor, const attacker, const Float:fadeTime, const Float:fadeHold, const alpha, Float:color[3])
{
	if(is_user_alive(index) && index != attacker)
	{
		if(get_user_team(index) == get_user_team(attacker))
		{
			new name_oslepiony[33];
			get_user_name(index, name_oslepiony, charsmax(name_oslepiony));
			
			++ ilosc_oslepionych[attacker];
			copy(kogo_oslepil[attacker][ilosc_oslepionych[attacker]], charsmax(kogo_oslepil), name_oslepiony);
			
			new name_oslepiajacy[33];
			get_user_name(attacker, name_oslepiajacy, charsmax(name_oslepiajacy));
			
			new wiadomosc[100];
			formatex(wiadomosc, charsmax(wiadomosc), "zostales oslepiony przez: %s", name_oslepiajacy);
			client_print(index, print_chat, wiadomosc);
			
			if(!task_exists(attacker + TASK_WIADOMOSC))
			{
				set_task(0.1, "wiadmosc_oslepiajacy", attacker + TASK_WIADOMOSC);
			}
		}
	}
}

public wiadmosc_oslepiajacy(id)
{
	id -= TASK_WIADOMOSC;
	
	if(!is_user_connected(id))
	{
		return PLUGIN_CONTINUE;
	}
	
	new kogo[200]
	
	for(new i = 1; i <= ilosc_oslepionych[id]; i++)
	{
		new formate[100];
		formatex(formate, charsmax(formate), " %s", kogo_oslepil[id][ilosc_oslepionych[i]]);
		add(kogo, charsmax(kogo), formate);
	}
	
	new wiadomosc[100];
	
	if(ilosc_oslepionych[id] == 1)
	{
		formatex(wiadomosc, charsmax(wiadomosc), "oslepiles:%s", kogo);
	}
	else
	{
		formatex(wiadomosc, charsmax(wiadomosc), "oslepiles graczy:%s", kogo);
	}
	
	client_print(id, print_chat, wiadomosc);
	
	for(new i = 1; i <= ilosc_oslepionych[id]; i++)
	{
		copy(kogo_oslepil[id][i], charsmax(kogo_oslepil), "");
	}
	
	ilosc_oslepionych[id] = 0;
	return PLUGIN_CONTINUE;
}

Użytkownik Boski Z Polski edytował ten post 08.11.2022 19:31

  • +
  • -
  • 1

#3 MrStrajker

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:109
  • GG:
  • Imię:Patryk
  • Lokalizacja:Sosnowiec
Offline

Napisano 09.11.2022 16:55

Działa, lecz mam zagwozdkę jak zastosować przecinek po każdym nicku?

Na początku myślałem by użyć ", %s"  ale wyglądałoby to tak:

oślepiłes graczy:, nick1, nick2, nick3

 

Dodatkowo moglibyśmy zastosować colorchat w tych wiadomościach?


  • +
  • -
  • 0

#4 mordoryjacz

    Profesjonalista

  • Użytkownik

Reputacja: 24
Życzliwy

  • Postów:171
Offline

Napisano 09.11.2022 17:51

Działa, lecz mam zagwozdkę jak zastosować przecinek po każdym nicku?

Na początku myślałem by użyć ", %s"  ale wyglądałoby to tak:

oślepiłes graczy:, nick1, nick2, nick3

 

Dodatkowo moglibyśmy zastosować colorchat w tych wiadomościach?

to zrob tak jak napisales, a jesli chcesz uzyc colorchat to dodaj 

#include <colorchat>

i zamien to 

client_print(id, print_chat, wiadomosc);

na to

ColorChat(id, GREEN, wiadomosc);

  • +
  • -
  • 0

#5 Boski Z Polski

    Profesjonalista

  • Użytkownik

Reputacja: 61
Pomocny

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

Napisano 09.11.2022 19:32



 



Działa, lecz mam zagwozdkę jak zastosować przecinek po każdym nicku?

Na początku myślałem by użyć ", %s"  ale wyglądałoby to tak:

oślepiłes graczy:, nick1, nick2, nick3

 

Dodatkowo moglibyśmy zastosować colorchat w tych wiadomościach?

to zrob tak jak napisales, a jesli chcesz uzyc colorchat to dodaj 


#include <colorchat>

i zamien to 

client_print(id, print_chat, wiadomosc);

na to

ColorChat(id, GREEN, wiadomosc);

 

Zgadza się, ale zapomniałeś dodać, że trzeba zmodyfikować include ColorChat

#include <amxmodx>
#include <amxmisc>
#include <reapi>
#include <colorchat>

#define PLUGIN "Kto kogo oslepil"
#define VERSION "1.0.0"
#define AUTHOR "Boski Z Polski"
#define TASK_WIADOMOSC 1000

new kogo_oslepil[33][33][33];
new ilosc_oslepionych[33];

public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR);
	
	RegisterHookChain(RG_PlayerBlind, "oslepienie_hook", 0);
}

public client_disconnected(id)
{
	if(task_exists(id + TASK_WIADOMOSC))
	{
		remove_task(id + TASK_WIADOMOSC);
	}
	
	if(ilosc_oslepionych[id])
	{
		for(new i = 1; i <= ilosc_oslepionych[id]; i++)
		{
			copy(kogo_oslepil[id][i], charsmax(kogo_oslepil), "");
		}
		
		ilosc_oslepionych[id] = 0;
	}
}

public oslepienie_hook (const index, const inflictor, const attacker, const Float:fadeTime, const Float:fadeHold, const alpha, Float:color[3])
{
	if(is_user_alive(index) && index != attacker)
	{
		if(get_user_team(index) == get_user_team(attacker))
		{
			new name_oslepiony[33];
			get_user_name(index, name_oslepiony, charsmax(name_oslepiony));
			
			++ ilosc_oslepionych[attacker];
			copy(kogo_oslepil[attacker][ilosc_oslepionych[attacker]], charsmax(kogo_oslepil), name_oslepiony);
			
			new name_oslepiajacy[33];
			get_user_name(attacker, name_oslepiajacy, charsmax(name_oslepiajacy));
			
			new wiadomosc[100];
			formatex(wiadomosc, charsmax(wiadomosc), "^x04zostales oslepiony przez:^x03 %s", name_oslepiajacy);
			ColorChat(index, TEAM_COLOR, wiadomosc);
			
			if(!task_exists(attacker + TASK_WIADOMOSC))
			{
				set_task(0.1, "wiadmosc_oslepiajacy", attacker + TASK_WIADOMOSC);
			}
		}
	}
}

public wiadmosc_oslepiajacy(id)
{
	id -= TASK_WIADOMOSC;
	
	if(!is_user_connected(id))
	{
		return PLUGIN_CONTINUE;
	}
	
	new kogo[100]
	
	for(new i = 1; i <= ilosc_oslepionych[id]; i++)
	{
		new formate[100];
		
		if(i == 1)
		{
			formatex(formate, charsmax(formate), " %s", kogo_oslepil[id][ilosc_oslepionych[i]]);
		}
		else
		{
			formatex(formate, charsmax(formate), " ,%s", kogo_oslepil[id][ilosc_oslepionych[i]]);
		}
		
		add(kogo, charsmax(kogo), formate);
	}
	
	new wiadomosc[100];
	
	if(ilosc_oslepionych[id] == 1)
	{
		formatex(wiadomosc, charsmax(wiadomosc), "^x03oslepiles:^x04%s", kogo);
	}
	else
	{
		formatex(wiadomosc, charsmax(wiadomosc), "^x03oslepiles graczy:^x04%s", kogo);
	}
	
	ColorChat(id, TEAM_COLOR, wiadomosc);
	
	for(new i = 1; i <= ilosc_oslepionych[id]; i++)
	{
		copy(kogo_oslepil[id][i], charsmax(kogo_oslepil), "");
	}
	
	ilosc_oslepionych[id] = 0;
	return PLUGIN_CONTINUE;
}

Podmień dodatkowo załącznik.

Załączone pliki


  • +
  • -
  • 1

#6 MrStrajker

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:109
  • GG:
  • Imię:Patryk
  • Lokalizacja:Sosnowiec
Offline

Napisano 10.11.2022 17:41

Super, dziękuje.

 

Tylko mam pytanie jesteśmy w stanie ogarnąć aby przed pierwszym nickiem nie było przecinka?

Aktualnie wygląda to tak:

oslepiles graczy:, nick1, nick 2

 

Chodzi mi o to żeby przecinek pojawiał się tylko i wyłącznie miedzy nickami a nie przed ani po

 


  • +
  • -
  • 0

#7 mordoryjacz

    Profesjonalista

  • Użytkownik

Reputacja: 24
Życzliwy

  • Postów:171
Offline

Napisano 10.11.2022 19:39

to 

,%s

zamien na to xD

%s,

  • +
  • -
  • 0

#8 PANDA_2zl

    Guru

  • Power User

Reputacja: 178
Profesjonalista

  • Postów:726
  • Imię:Michał
  • Lokalizacja:Kraków
Offline

Napisano 10.11.2022 21:03

to

,%s
zamien na to xD
%s,


Nope, wtedy będzie miał zbędny przecinek na końcu, już lepiej zostawić z przecinkiem na początku i podmianę przez funkcje replace pierwszego przecinka na "nic"

jak masz to pod koniec kodu

ColorChat(id, TEAM_COLOR, wiadomosc);

to dodajesz nad tym to:

replace(wiadomosc, 20, ",", "");

powinno zalatwic sprawe


Użytkownik SezonowyGracz edytował ten post 10.11.2022 21:20

  • +
  • -
  • 1

#9 MrStrajker

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:109
  • GG:
  • Imię:Patryk
  • Lokalizacja:Sosnowiec
Offline

Napisano 11.11.2022 07:09

 

to

,%s
zamien na to xD
%s,


Nope, wtedy będzie miał zbędny przecinek na końcu, już lepiej zostawić z przecinkiem na początku i podmianę przez funkcje replace pierwszego przecinka na "nic"

jak masz to pod koniec kodu

ColorChat(id, TEAM_COLOR, wiadomosc);

to dodajesz nad tym to:

replace(wiadomosc, 20, ",", "");

powinno zalatwic sprawe

 

 

 

Dziękuje, spróbuje aczkolwiek wysypuje takimi błędami podczas próby kompilacji:

flash.sma(18) : error 017: undefined symbol "RegisterHookChain"
flash.sma(18) : warning 215: expression has no effect
flash.sma(18) : warning 215: expression has no effect
flash.sma(18) : error 001: expected token: ";", but found ")"
flash.sma(18) : error 029: invalid expression, assumed zero
flash.sma(18) : fatal error 107: too many error messages on one line

W załączniku przesyłam cały kod.

Załączone pliki


  • +
  • -
  • 0

#10 PANDA_2zl

    Guru

  • Power User

Reputacja: 178
Profesjonalista

  • Postów:726
  • Imię:Michał
  • Lokalizacja:Kraków
Offline

Napisano 11.11.2022 10:51

kompiluje normalnie, wrzuc te includy na dysk 

https://www40.zippyshare.com/v/7Q2E67Uy/file.html

  • +
  • -
  • 0

#11 MrStrajker

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:109
  • GG:
  • Imię:Patryk
  • Lokalizacja:Sosnowiec
Offline

Napisano 12.11.2022 12:23

 

kompiluje normalnie, wrzuc te includy na dysk 

https://www40.zippyshare.com/v/7Q2E67Uy/file.html

 

Wrzuciłem całą tą paczke i wyrzuca mi taki błąd:

include\reapi.inc(92) : fatal error 100: cannot read from file: "cssdk_const"

  • +
  • -
  • 0

#12 PANDA_2zl

    Guru

  • Power User

Reputacja: 178
Profesjonalista

  • Postów:726
  • Imię:Michał
  • Lokalizacja:Kraków
Offline

Napisano 12.11.2022 14:56

wrzuć to jeszcze do include 

Załączone pliki


  • +
  • -
  • 0

#13 MrStrajker

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:109
  • GG:
  • Imię:Patryk
  • Lokalizacja:Sosnowiec
Offline

Napisano 13.11.2022 18:08

Plugin udało się wreszcie skompilowac natomiast kompletnie nie działa.

Nie wyświetla żadnych informacji, że kogoś oślepiłem ani to przez kogo zostałem oślepiony.

 


  • +
  • -
  • 0

#14 PANDA_2zl

    Guru

  • Power User

Reputacja: 178
Profesjonalista

  • Postów:726
  • Imię:Michał
  • Lokalizacja:Kraków
Offline

Napisano 13.11.2022 18:16

Moduł reapi wgrałeś na serwer? I uruchomiłes?

Użytkownik SezonowyGracz edytował ten post 13.11.2022 18:17

  • +
  • -
  • 0

#15 MrStrajker

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:109
  • GG:
  • Imię:Patryk
  • Lokalizacja:Sosnowiec
Offline

Napisano 13.11.2022 18:30

Moduł reapi wgrałeś na serwer? I uruchomiłes?

 

Tak wrzuciłem do folderu modules i w modules.ini dodałem "reapi"

Pojawiają się takie error logi:

L 11/13/2022 - 18:27:59: Start of error session.
L 11/13/2022 - 18:27:59: Info (map "de_dust2") (file "addons/amxmodx/logs/error_20221113.log")
L 11/13/2022 - 18:27:59: [AMXX] Plugin ("flash.amxx") is setting itself as failed.
L 11/13/2022 - 18:27:59: [AMXX] Plugin says: [ReAPI]: Api minor version mismatch; expected at least 22, real 21
L 11/13/2022 - 18:27:59: [AMXX] Run time error 1 (plugin "flash.amxx") - forced exit

  • +
  • -
  • 0

#16 PANDA_2zl

    Guru

  • Power User

Reputacja: 178
Profesjonalista

  • Postów:726
  • Imię:Michał
  • Lokalizacja:Kraków
Offline

Napisano 13.11.2022 18:35

wgraj to najnowsze reapi https://www111.zippy...3o5WV/file.html


  • +
  • -
  • 0

#17 MrStrajker

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:109
  • GG:
  • Imię:Patryk
  • Lokalizacja:Sosnowiec
Offline

Napisano 13.11.2022 18:41

wgraj to najnowsze reapi https://www111.zippy...3o5WV/file.html

 

Wgrałem tą wersje i pojawiły się takie error logi:

L 11/13/2022 - 18:37:49: Info (map "de_dust2") (file "addons/amxmodx/logs/error_20221113.log")
L 11/13/2022 - 18:37:49: [ReAPI] RegisterHookChain: function (PlayerBlind) is not available, ReGameDLL required.
L 11/13/2022 - 18:37:49: [AMXX] Run time error 10 (plugin "flash.amxx") (native "RegisterHookChain") - debug not enabled!
L 11/13/2022 - 18:37:49: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).

Po zdebugowaniu:

L 11/13/2022 - 18:38:34: Info (map "de_dust2") (file "addons/amxmodx/logs/error_20221113.log")
L 11/13/2022 - 18:38:34: [ReAPI] RegisterHookChain: function (PlayerBlind) is not available, ReGameDLL required.
L 11/13/2022 - 18:38:34: [AMXX] Displaying debug trace (plugin "flash.amxx", version "1.0.0")
L 11/13/2022 - 18:38:34: [AMXX] Run time error 10: native error (native "RegisterHookChain")
L 11/13/2022 - 18:38:34: [AMXX]    [0] flash.sma::plugin_init (line 18)

  • +
  • -
  • 0

#18 PANDA_2zl

    Guru

  • Power User

Reputacja: 178
Profesjonalista

  • Postów:726
  • Imię:Michał
  • Lokalizacja:Kraków
Offline

Napisano 13.11.2022 20:50

https://github.com/s...tq/ReGameDLL_CS
  • +
  • -
  • 0

#19 MrStrajker

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:109
  • GG:
  • Imię:Patryk
  • Lokalizacja:Sosnowiec
Offline

Napisano 14.11.2022 14:18

L 11/14/2022 - 14:01:02: replace() buffer not big enough (28>=20)
L 11/14/2022 - 14:01:02: [AMXX] Displaying debug trace (plugin "flash.amxx", version "1.0.0")
L 11/14/2022 - 14:01:02: [AMXX] Run time error 10: native error (native "replace")
L 11/14/2022 - 14:01:02: [AMXX]    [0] flash.sma::wiadmosc_oslepiajacy (line 103)

  • +
  • -
  • 0

#20 PANDA_2zl

    Guru

  • Power User

Reputacja: 178
Profesjonalista

  • Postów:726
  • Imię:Michał
  • Lokalizacja:Kraków
Offline

Napisano 14.11.2022 15:15

W funkcji replace zmień długość z 20 na 99 albo charamax(wiadomosc)

Użytkownik SezonowyGracz edytował ten post 14.11.2022 15:15

  • +
  • -
  • 1




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

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