←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Jak napisać, by pokazało obok siebie?

Zablokowany

Kukol - zdjęcie Kukol 04.09.2011

Witam! Mam task który wykonuje się bez przerwy co 0.1 sekundę, a w nim mam pewną funkcję, a wniej chciałbym coś takiego:

Mam zmienne:



enum _:effects_skill { Brak = 0,
EFEKT1
EFEKT2
};

new effects[33][effects_skill];

new name_effects[][] = {
"Nazwa Efektu 1",
"Nazwa Efektu 2"
};


Teraz jak wykonać coś takiego:

Gdy gracz ma effects[index][1] oraz effects[index][2] > 0 to ma pokazać:

"Nazwa Efektu 1, Nazwa Efektu 2", a gdy ma tylko jedną zmienną ustawioną na jeden to ma pokazać jedną nazwę? Efektów mam około 15..
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 04.09.2011

for(new i = 0;i<15;i++){

if(effects[id][i] == 1) client_print(id,3,name_effects[i]);

}
Odpowiedz

  • +
  • -
Muzzi - zdjęcie Muzzi 04.09.2011

Jeżeli chodzi o to co dał dark to można prościej.


for(new i = 0;i<sizeof(effects);i++){
if(effects[id][i] == 1) client_print(id,3,name_effects[i]);
}
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 04.09.2011

lub jeszcze prościej
for(new i = 0;i<sizeof(effects);i++) if(effects[id][i])  client_print(id,3,name_effects[i]);
Odpowiedz

Kukol - zdjęcie Kukol 04.09.2011

Sam sobie poradziłem, chodziło mi o takie coś:

public Pokaz_Effekt(id)
{
new nazwa_efektu[effects_skill][250], licz, message[512];

new len = formatex(message, 249, "");

for(new i = 1; i < effects_skill; i++)
{
if(effects[id][i] > 0)
{
formatex(nazwa_efektu[licz++], 511, "%s", name_effects[i])
}
}

if(licz > 0)
{
for(new x = 0; x <= licz; x++)
{
len += formatex(message[len], 511 - len, "%s%s", nazwa_efektu[x], x < (licz-1) ? ", ":"")
}
}
set_hudmessage(255, 0, 0, 0.12, 0.0, 0, 6.0, 3.0)
show_hudmessage(id, "%s", message);
}
Odpowiedz
Zablokowany