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

mlekovita
20.06.2022
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;
Rivit
21.06.2022
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).
mlekovita
21.06.2022
Zaden warunek nie przechodzi jedynie jak wywale caly if
Best Answer
Rivit
21.06.2022
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]))