Jump to content

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

Posted Image Posted Image

Guest Message by DevFuse
 

Photo

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


Best Answer 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]);
		}
	}
}
Go to the full post


  • This topic is locked This topic is locked
2 replies to this topic

#1 Mister Silenzo

    Zaawansowany

  • Użytkownik

Reputacja: 39
Życzliwy

  • Postów:83
  • Lokalizacja:BD
Offline

Posted 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

Posted 19.12.2013 03:13   Best Answer

#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]);
		}
	}
}

Edited by Benio101, 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

Posted 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ż!





1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users