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

Otwieranie drzwi


Najlepsza odpowiedź Rivit, 21.06.2022 12:49

gButtons to tablica liczb całkowitych, wyświetlaj jej elementy poprzez "%d".

 

 


Zaden warunek nie przechodzi jedynie jak wywale caly if

 

No ale w ifie masz trzy warunki, zobacz, który z nich jest fałszem, możesz to zrobić też przez client_print, coś na wzór takiego:

client_print(...., "%d", !pev_valid(g_iButtons[i]))
Przejdź do postu


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

#1 mlekovita

    Zaawansowany

  • Użytkownik

Reputacja: 7
Nowy

  • Postów:149
  • Imię:Dawid
Offline

Napisano 20.06.2022 18:06

Siema, czy ktoś jest mi w stanie powiedzieć dlaczego kod się nie wykonuje?


public plugin_init() {
	RegisterHam(Ham_Use, "func_button", "ButtonUse", 1);
}

Zawartosc randomowej mapy

-1718.500000 -1102.500000 152.500000 func_button
public plugin_precache()
{
	new file[128];
	get_mapname(gMap, charsmax(gMap));

	formatex(file[get_localinfo("amxx_configsdir", file, charsmax(file))], charsmax(file), "/cele/%s.ini", gMap);

	if(file_exists(file)) {
		new value[4][32], data[256], iLen;
		for(new i = 0; i < file_size(file, 1); i++) {
			if(i > 1) break;

			read_file(file, i, data, 255, iLen);
			parse(data, value[0], charsmax(value[]), value[1], charsmax(value[]), value[2], charsmax(value[]), value[3], charsmax(value[]));

			new Float:vecOrigin[3];
			vecOrigin[0] = str_to_float(value[0]);
			vecOrigin[1] = str_to_float(value[1]);
			vecOrigin[2] = str_to_float(value[2]);

                        /******************* TESTOWE ZMIENNE ZEBY SPRAWDZIC CZY WSZYSTKO ZWRACA SIE POPRAWNIE - SPRAWDZONE I WSZYSTKO ZWRACA JAK Z PLIKU
			x = str_to_float(value[0]);
			y = str_to_float(value[1]);
			z = str_to_float(value[2]);
			xd = value[3];

                        *******************/ 

			new Float:fDistance = 9999.0, Float:fDistance2, iEnt;
			while((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", value[3]))) {
				new Float:fOrigin[3], Float:fMin[3], Float:fMax[3];
				pev(iEnt, pev_origin, fOrigin);
				pev(iEnt, pev_mins, fMin);
				pev(iEnt, pev_maxs, fMax);

				fOrigin[0] += (fMin[0] + fMax[0]) * 0.5;
				fOrigin[1] += (fMin[1] + fMax[1]) * 0.5;
				fOrigin[2] += (fMin[2] + fMax[2]) * 0.5;

				if((fDistance2 = vector_distance(fOrigin, vecOrigin)) < fDistance) {
					fDistance = fDistance2;
					g_iButtons[i] = iEnt;
				}
			}
		}
	}
	else
	{
		set_fail_state("nie zaladowano celi");
	}
}
public ButtonUse(iEnt, id, iActivator) {
	if(!pev_valid(iEnt) || !is_user_alive(id) || id != iActivator || cele) return;
	static i;
	for(i = 0; i < sizeof(g_iButtons); i++) {
		if(!pev_valid(g_iButtons[i]) || !g_iButtons[i] || iEnt != g_iButtons[i]) continue;
		ExecuteHam(Ham_Use, g_iButtons[i], 0, 0, 2, 1.0);
		client_print(0, print_center, "^n^nCele otwarte o: %s", Czas);

		cele = true;
	}
}

Jak wywale ten warunek to działa, ale na wszystkie guziki na mapie

if(!pev_valid(g_iButtons[i]) || !g_iButtons[i] || iEnt != g_iButtons[i]) continue;

  • +
  • -
  • 0

#2 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 21.06.2022 08:43

A który z tych warunków nie przechodzi konkretnie?

zrzuc do logów to co jest w `iEnt` oraz `g_iButtons[i]`, gdy pętla iteruje po tej tablicy (w ButtonUse).


  • +
  • -
  • 0

#3 mlekovita

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 7
Nowy

  • Postów:149
  • Imię:Dawid
Offline

Napisano 21.06.2022 12:26

Zaden warunek nie przechodzi jedynie jak wywale caly if

 


client_print(0, print_chat, gButtons[i]); // nic nie zwraca jakby tej linijki nie bylo w ogóle
client_print(0, print_chat, "Ent: %d", iEnt); // zwraca na przycisku od drzwi 118

 


  • +
  • -
  • 0

#4 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 21.06.2022 12:49   Najlepsza odpowiedź

gButtons to tablica liczb całkowitych, wyświetlaj jej elementy poprzez "%d".

 

 


Zaden warunek nie przechodzi jedynie jak wywale caly if

 

No ale w ifie masz trzy warunki, zobacz, który z nich jest fałszem, możesz to zrobić też przez client_print, coś na wzór takiego:

client_print(...., "%d", !pev_valid(g_iButtons[i]))

  • +
  • -
  • 1




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

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