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

[ROZWIĄZANE] Wytłumaczenie działania tablic


Najlepsza odpowiedź Gość_21977_* , 19.12.2013 03:13

#include <amxmodx>

new HudSyncObj

new kills[33];	// tablica posiada 33 komórki o indeksach od 0 do 32 włącznie.
		// odwołujemy się do nich poprzez podanie indexu, np. kills[5] dla komórki o indexie 5
		// komórki o id od 1 do 32 odpowiadają wartościom zabójstw dla graczy o tym id
		// przy czym id 0 pozostaje niezmienione (nie chcemy za każdym razem odejmować jedynki, to kosztuje)

public plugin_init() {
	register_plugin("asd", "1.0", "Mister Silenzo")
	
	HudSyncObj = CreateHudSyncObj()
	
	register_clcmd("say /dodaj", "dodaj_h")
	
	set_task(0.1, "test", .flags="b")
}

public dodaj_h(id)
{
	if(is_user_connected(id))	// sprawdzamy, czy dany gracz jest jeszcze na serwerze, profilaktyka
	kills[id] += 50			// zwiekszamy pole tablicy dla tego jednego danego gracza
}

public test()				// id tutaj zbędne, patrz: definicja taska
{
	for(new i=1; i<=32; ++i){	// pętla po graczach
					// każdemu pokazujemy jego własny poziom
		if(is_user_connected(i)){
			set_hudmessage(255, 0, 0, 0.45, 0.55, 0, 0.0, 0.0, 0.1, 0.1, 69);
			ShowSyncHudMsg(i, HudSyncObj, "Wartosc zmiennej: %i", kills[i]);
		}
	}
}
Przejdź do postu


  • Zamknięty Temat jest zamknięty
2 odpowiedzi w tym temacie

#1 Mister Silenzo

    Zaawansowany

  • Użytkownik

Reputacja: 39
Życzliwy

  • Postów:83
  • Lokalizacja:BD
Offline

Napisano 18.12.2013 23:53

Witam.

Piszę plugin i natrafiłem na pewien problem, nie potrafię używać tablic dwu i więcej wymiarowych (jeżeli niepoprawnie językowo to przepraszam xD). Powiedzmy, że jest taki kod:

#include <amxmodx>

new HudSyncObj

new kills

public plugin_init() {
	register_plugin("asd", "1.0", "Mister Silenzo")
	
	HudSyncObj = CreateHudSyncObj()
	
	register_clcmd("say /dodaj", "dodaj_h")
	
	set_task(0.1, "test", .flags="b")
}

public dodaj_h(id)
{
	kills += 50
}

public test(id)
{
	set_hudmessage(255, 0, 0, 0.45, 0.55, 0, 0.0, 0.0, 0.1, 0.1, 69);
	ShowSyncHudMsg(id, HudSyncObj, "Wartosc zmiennej: %i", kills);
}
I teraz moje pytanie, aktualnie działa to tak, że bez względu na wszystko jak wpiszę /dodaj to każdemu wartość zmiennej podniesie się o 50, a chciałem zrobić tak, że każdy ma swoją własną wartość na ekranie, jak to zrobić?
  • +
  • -
  • 0
Moje pluginy:

Kick All (administracja) - Wyrzuca graczy nakładając hasło na serwer.

Zlecenie Zabójstwa (4FUN) - Przyjmij zlecenie, wykonaj je, zdobądź punkty, a następnie wydaj je na dodatki, które pozwolą ci skuteczniej i szybciej wykonywać zlecenia.

#2 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 19.12.2013 03:13   Najlepsza odpowiedź

#include <amxmodx>

new HudSyncObj

new kills[33];	// tablica posiada 33 komórki o indeksach od 0 do 32 włącznie.
		// odwołujemy się do nich poprzez podanie indexu, np. kills[5] dla komórki o indexie 5
		// komórki o id od 1 do 32 odpowiadają wartościom zabójstw dla graczy o tym id
		// przy czym id 0 pozostaje niezmienione (nie chcemy za każdym razem odejmować jedynki, to kosztuje)

public plugin_init() {
	register_plugin("asd", "1.0", "Mister Silenzo")
	
	HudSyncObj = CreateHudSyncObj()
	
	register_clcmd("say /dodaj", "dodaj_h")
	
	set_task(0.1, "test", .flags="b")
}

public dodaj_h(id)
{
	if(is_user_connected(id))	// sprawdzamy, czy dany gracz jest jeszcze na serwerze, profilaktyka
	kills[id] += 50			// zwiekszamy pole tablicy dla tego jednego danego gracza
}

public test()				// id tutaj zbędne, patrz: definicja taska
{
	for(new i=1; i<=32; ++i){	// pętla po graczach
					// każdemu pokazujemy jego własny poziom
		if(is_user_connected(i)){
			set_hudmessage(255, 0, 0, 0.45, 0.55, 0, 0.0, 0.0, 0.1, 0.1, 69);
			ShowSyncHudMsg(i, HudSyncObj, "Wartosc zmiennej: %i", kills[i]);
		}
	}
}

Użytkownik Benio101 edytował ten post 19.12.2013 16:33
popr.


#3 Droso

    Dawniej HubertTM

  • Support Team

Reputacja: 1 291
Godlike

  • Postów:2 371
  • Steam:steam
  • Imię:Hubert
  • Lokalizacja:Wrocław
Offline

Napisano 19.12.2013 15:18

// tablica posiada 34 komórki o indeksach od 0 do 33 włącznie.

Nie czasem? 33 komórki o indeksach od 0 do 32 włącznie?

Chyba, że ja czegoś nie wiem :D?


(19.12.2013 16:33):
9579 zawsze czujny.
Dzięki, poprawione.

  • +
  • -
  • 1

Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!

Na zlecenie i bez zlecenia zresztą też!





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

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