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

Wyświetlanie nicków kilku ofiar


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

#1 psilocybe

    Toasty!

  • Power User

Reputacja: 252
Wszechwidzący

  • Postów:524
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:PL
Offline

Napisano 08.11.2014 11:33

Może to jest banalne a może nie ale sam do tego nie mogę dojść.

 

Będę pisał w skrócie bo każdy chyba rozumie o co chodzi:

 

W DeathMsg przy zabiciu granatem mam warunek np.:

if(Killer != Victim && Fragi == 2)
{
set_task(0.05,"doubleNade",id)
}

public doubleNade(id)
{
new Killer = read_data(1);
new Victim = read_data(2);

new Kname[32], Vname[32];
get_user_name(Killer,Kname,charsmax(Kname));
get_user_name(Victim,Vname,charsmax(Vname));

show_hudmessage(0, "Gracz %s zabil graczy %s i %s granatem!", Kname, Vname, Vname2)
}

Fragi mi liczy i resetuje set_task i działa prawidłowo więc pomijam oczywiste rzeczy, chodzi mi tylko o to jak pobrać i wyświetlić więcej niż jeden nick, w tym przypadku nicki dwóch ofiar.

 

Jak pobrać "Vname2" ?


Użytkownik psilocybe edytował ten post 08.11.2014 11:38

  • +
  • -
  • 0

Dołączona grafika

Dołączona grafika


#2 psilocybe

    Toasty!

  • Autor tematu
  • Power User

Reputacja: 252
Wszechwidzący

  • Postów:524
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:PL
Offline

Napisano 08.11.2014 22:23

Może to jest banalne a może nie ale sam do tego nie mogę dojść.

 

Będę pisał w skrócie bo każdy chyba rozumie o co chodzi:

 

W DeathMsg przy zabiciu granatem mam warunek np.:

if(Killer != Victim && Fragi == 2)
{
set_task(0.05,"doubleNade",id)
}

public doubleNade(id)
{
new Killer = read_data(1);
new Victim = read_data(2);

new Kname[32], Vname[32];
get_user_name(Killer,Kname,charsmax(Kname));
get_user_name(Victim,Vname,charsmax(Vname));

show_hudmessage(0, "Gracz %s zabil graczy %s i %s granatem!", Kname, Vname, Vname2)
}

Fragi mi liczy i resetuje set_task i działa prawidłowo więc pomijam oczywiste rzeczy, chodzi mi tylko o to jak pobrać i wyświetlić więcej niż jeden nick, w tym przypadku nicki dwóch ofiar.

 

Jak pobrać "Vname2" ?

 

 

Podbijam i piszę jeszcze prościej, przy zabiciu więcej niż jednego gracza granatem wyświetlam na czacie info (foto niżej)

 

cstrike.jpg
 

To jest w DeathMsg więc dla każdego zabicia wyświetla nowe info - ja chcę przykładowo te 4 ofiary wyświetlić w jednej linijce tekstu czyli np. "Gracz X zabił graczy A, B, C i D jednym granatem!"

 

Proszę o pomoc.


  • +
  • -
  • 0

Dołączona grafika

Dołączona grafika


#3 Engi

    [EKSiD] playaz44

  • Power User

Reputacja: 315
Wszechpomocny

  • Postów:1 071
  • GG:
  • Imię:Seba
  • Lokalizacja:Praga
Offline

Napisano 09.11.2014 10:42

Coś ucina z tel połowę kodu więc muszę dać w wklejce

Wklejka 1zk3ena6l0u88(Takie) dodana przez Engi, 09.11.2014 10:47
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
W globalnej tablicy dopisuję sobie nicki zabitych, definiuję sobie stałe id taska.
 
================
If(zabici > 1){
If(task już ustawiony) {
Zmieniam jego czas po którym się wykona z powrotem na 0.1 (http://amxx.pl/dokumentacja/f122/change-task) 
} 
Else {
Ustawiam taska na np 0.1 na public "dajjednoinfo" ;
}} 
 
Public dajjednoinfo() {
Tutaj wyświetlę sobie w jednej linijce kilka nicków z globalnej tablicy i usunę taska, id komu wyświetlić możesz przekazać w parametrach publica przez set_taska, w sumie tak samo można zrobić z nickami z tablicy 
} 
=================
 
Jak nie dasz rady to po południu napiszę normalny kod, potestuje i zarzucę. Jak napiszesz wcześniej działający daj znać. 

  • +
  • -
  • 0
Użytkowniku! Zanim napiszesz wiadomość wiedz, że:

W odpowiedzi na ten status, przejrzałem kilka ostatnich Twoich postów i dodałem Ci kolejne 3 punkty ostrzeżeń. Mam nadzieję, że pomogłem.

1:0 dla Benia :D
Nie pomagam za darmo na pw.

#4 psilocybe

    Toasty!

  • Autor tematu
  • Power User

Reputacja: 252
Wszechwidzący

  • Postów:524
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:PL
Offline

Napisano 09.11.2014 18:53

Zamysł miałem taki sam, lecz nie potrafię zapisać nicków kilku ofiar w tablicy globalnej a później w tasku nie potrafię ich pobrać.

 

Gdybyś mógł napisać nieco jaśniej, był bym wdzięczny. Nie musisz testować, byle bym zrozumiał jak zapisać i pobrać nicki kilku ofiar.


  • +
  • -
  • 0

Dołączona grafika

Dołączona grafika


#5 Engi

    [EKSiD] playaz44

  • Power User

Reputacja: 315
Wszechpomocny

  • Postów:1 071
  • GG:
  • Imię:Seba
  • Lokalizacja:Praga
Offline

Napisano 09.11.2014 23:20

http://amxx.pl/topic...miczne-tablice/

Ewentualnie zobacz czy coś takiego działa albo zrób sobie na wzór tego

Spoiler


Nie testowane
  • +
  • -
  • 1
Użytkowniku! Zanim napiszesz wiadomość wiedz, że:

W odpowiedzi na ten status, przejrzałem kilka ostatnich Twoich postów i dodałem Ci kolejne 3 punkty ostrzeżeń. Mam nadzieję, że pomogłem.

1:0 dla Benia :D
Nie pomagam za darmo na pw.

#6 psilocybe

    Toasty!

  • Autor tematu
  • Power User

Reputacja: 252
Wszechwidzący

  • Postów:524
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:PL
Offline

Napisano 10.11.2014 02:19

Przeczytałem temat R3X'a o tablicach dynamicznych, później z powyższego kodu wyciągnąłem wszystko co potrzebne i plugin się kompiluje bez problemów ale nie działa.

 

Wyświetla prawidłowo jedną linijkę na czacie lecz wiadomość wygląda tak:

Gracz [ zabił graczy M granatem!

Nie mam pojęcia jak to ogarnąć, co lepsze nawet nicka zabójcy nie wyświetla poprawnie i skąd to "[" i "M"?

 

Uciąża mi strasznie ta kwestia bo chciałem koniecznie to mieć a nie znając podstaw to ja sobie mogę dynamicznie zapomnieć o tym :)

 

Patrzyłem nawet w kod pliku statsx.sma bo tam jest przecież wyświetlanie wielu nicków jednocześnie ale nic rozsądnego tam nie znalazłem, czarna magia.

 

 

Edit: w tym przypadku trzeba będzie jeszcze wyczyścić tą tablicę po wyświetleniu nicków o ile do tego dojdę ale odkryłem że to "M" to pierwsza litera nicku pierwszej ofiary i do póki nie wyczyściłem tablicy (reset serwera) to było "M", później inna literka a jako zabójca jest zawsze "[" lub "]", liczę na waszą pomoc.


Użytkownik psilocybe edytował ten post 10.11.2014 02:35

  • +
  • -
  • 0

Dołączona grafika

Dołączona grafika


#7 Engi

    [EKSiD] playaz44

  • Power User

Reputacja: 315
Wszechpomocny

  • Postów:1 071
  • GG:
  • Imię:Seba
  • Lokalizacja:Praga
Offline

Napisano 10.11.2014 10:37

Przeczytałem temat R3X'a o tablicach dynamicznych

Edit: w tym przypadku trzeba będzie jeszcze wyczyścić tą tablicę po wyświetleniu nicków o ile do tego dojdę ale odkryłem że to "M" to pierwsza litera nicku pierwszej ofiary i do póki nie wyczyściłem tablicy (reset serwera) to było "M"


Zaprzeczasz sam sobie, tam jest napisane jak wyczyścić tą tablicę (a mi zapomniało się dopisać tego czyszczenia wink.png )

Dopisz pod wyświetleniem info w doubleNade
ArrayClear(nicki);
W doubleNade trzeba "przepisać" tablicę "wnick" na zwykłego stringa albo inaczej odwołać się do "wnick" w show_hudmessage, a nie mam pojęcia jak zrobić (bo jak dalej "wnick" będzie tablicą to będzie jedną literkę wyświetlało, bynajmniej tak mi się wydaje), prostsze byłoby użycie foreach od DarkGL'a ale nie mam pojęcia jak to w amxx napisać haha.gif
Brakuje mi w tych tablicach prostej funkcji która wywali wszystkie z niej dane do jakiegoś stringa, w PHP to jest proste bo wystarczy foreach($a as $ B) $s .= $b; dziękuję dobranoc, a tutaj trzeba podać index takiej tablicy ;_;
  • +
  • -
  • 0
Użytkowniku! Zanim napiszesz wiadomość wiedz, że:

W odpowiedzi na ten status, przejrzałem kilka ostatnich Twoich postów i dodałem Ci kolejne 3 punkty ostrzeżeń. Mam nadzieję, że pomogłem.

1:0 dla Benia :D
Nie pomagam za darmo na pw.

#8 psilocybe

    Toasty!

  • Autor tematu
  • Power User

Reputacja: 252
Wszechwidzący

  • Postów:524
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:PL
Offline

Napisano 10.11.2014 15:42

Nie ogarnę tego sam, patrzyłem też w kod pluginu admin_check.sma, tam wyświetlane są na say'u nicki wszystkich adminów ale nic nie potrafię wyciągnąć z tego kodu.

 

Zobacz w *.sma tego pluginu może coś wymyślisz?

Załączone pliki


  • +
  • -
  • 0

Dołączona grafika

Dołączona grafika


#9 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 10.11.2014 20:20

A czy zamiast przechowywać wszystkie dane o graczu jak nick, kolor skóry, nuber buta, filuta długość i średnice nie prościej samo id? A później pobierać to sobie w wygodnym momencie.

I skąd na miłość boską mania używania tasków. 

Dodatkowo nikt nigdzie nie sprawdził czy śmierć następuje w wyniku zabójstwa granatem. Przecież równie szybko jedna po drugiej może nastąpić śmierć w wyniku przestrzelenia dwóch graczy w jednej linii z awp.

 

 

Nie testowałem, bo nie mam jak. Wiadomość powinna się pokazać w ciągu kilku sekund od śmierci.

#include <amxmodx>
new Float:last_kill[33],ofiary[33][10]//zakładam, że więcej niż 10 nie zabije:D 
public plugin_init() 
{
	register_plugin("grenade multikill","0.1","grankee");
	register_event("DeathMsg", "DeathMsg", "a");
	register_event("ClCorpse", "hook_corpse", "a", "12>0")
}

public DeathMsg()
{
	new Killer = read_data(1);
	new Victim = read_data(2);
	
	if(!Killer || Killer==Victim)
		return PLUGIN_CONTINUE
	new weapon[64]		
	read_data(4,weapon,63)
	if(!equali(weapon,"HEGRENADE"))	
		return PLUGIN_CONTINUE
		
	
	
	if(last_kill[Killer]+0.2>get_gametime())
	{
		for(new i=1;i<10;i++)
		{
			if(ofiary[Killer][i]==0)
			{
				ofiary[Killer][i]=Victim
			}
		}
	}
	else
	{
		for(new i=1;i<10;i++)
		{
			ofiary[Killer][i]=0			
		}//Czyszczenie tablicy ofiar, tak dla pewności
		ofiary[Killer][0]=Victim
	}
	last_kill[Killer]=get_gametime()
	
}

public hook_corpse()
{
	new id = read_data(12)
	for(new i=0;i<33;i++)
	{
		if(ofiary[i][0]==id)
		{
			new text[256],name[32]
			get_user_name(i,name,31)
			format(text,255,"%s zabil graczy",name)
			get_user_name(ofiary[Killer][0],name,31)
			format(text,255,"%s: %s",text,name)
			for(new a=1;ofiary[Killer][a]>0;a++)
			{
				get_user_name(ofiary[Killer][a])
				ofiary[Killer][a]=0
				format(text,255,"%s, %s",text,name)
			}
			format(text,255," %s granatem.",text,name)
			break
		}
	}
}

  • +
  • -
  • 1

#10 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 10.11.2014 21:00

Drobna podpowiedź: przy DeathMsg przy zabiciu z granata otrzymujemy ID bytu granata, co może się przydać do wykrycia czy gracze zostali zabici z tego samego granata na pewno :)


  • +
  • -
  • 0

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#11 psilocybe

    Toasty!

  • Autor tematu
  • Power User

Reputacja: 252
Wszechwidzący

  • Postów:524
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:PL
Offline

Napisano 10.11.2014 21:35

Powyższy kod się nawet nie kompiluje :(

 

1. Ja już mam zrobiony warunek przy zabiciu z granata i nie "HEGRENADE" tylko "grenade" chyba powinno być bo tak się nazywa rzucony granat :)

 

2. Nawet nie wiedziałem o tym evencie "ClCorpse" a tym bardziej że 12 argument to ID trupa :D

 

Nie bardzo rozumiem to wszystko, pętle, tablice to mnie przerasta a nie chcę w swoim pluginie czegoś czego nie rozumiem więc sobię odpuszczę chyba. Zostanę chyba przy tej opcji co mam bo są już policzone fragi więc wyświetlam "Gracz Killer zabił X graczy jednym he" gdzie X to fragi.


  • +
  • -
  • 0

Dołączona grafika

Dołączona grafika


#12 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 11.11.2014 10:48

Skoro nie rozumiesz pętli i tablic to może postaraj się zrozumieć to... Twoje rozwiązanie nie działa prawidłowo i będzie dużo trudniej je naprawić, niż zrozumieć jak działa (lub powinno działać) to co zaproponował 1045


  • +
  • -
  • 0

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark





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

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