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

Jak wypisać, która zmienna jest używana?


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

#1 GoldeN

    Wszechmogący

  • Zbanowany

Reputacja: 69
Pomocny

  • Postów:676
  • Imię:Kamil
  • Lokalizacja:DG
Offline

Napisano 21.03.2011 19:07

Witam, mam coś takiego:

enum { zero = 0, jeden, dwa, trzy }
new const nazwa[][] = { "", "Jeden", "Dwa", "Trzy" }
new ktore[4][33];


Przypuśćmy, że gracz z menu wybierze Dwa to zmienna będzie wyglądać tak:

ktore[dwa][id] = 1


Jak mogę sprawdzić i wyświetlić nazwę którą liczbę wybrał? Czyli gracz wybrał trzy, to zamiast pisać trzy razy:

if(ktore[jeden][id] > 0) client_print(id, print_chat, "Jeden")
else if(ktore[dwa][id] > 0) client_print(id, print_chat, "Dwa")
else if(ktore[trzy][id] > 0) client_print(id, print_chat, "Trzy")


Zrobić raz z użyciem zmiennej nazwa[][] ?

Użytkownik GoldeN edytował ten post 21.03.2011 19:08


#2 Knopers

    Nie patrz tak na mnie !

  • Przyjaciel

Reputacja: 588
Wszechwiedzący

  • Postów:2 013
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Cz-wa
Offline

Napisano 21.03.2011 19:14

Za pomocą pętli ?
np:
for(new i = 0; i < sizeof(ktore); i++)
if(ktore[i] == 1) costam(ktore[i]);
  • +
  • -
  • 1

#3 GoldeN

    Wszechmogący

  • Autor tematu
  • Zbanowany

Reputacja: 69
Pomocny

  • Postów:676
  • Imię:Kamil
  • Lokalizacja:DG
Offline

Napisano 21.03.2011 19:27

Próbowałem:

public look(id)
{
for(new i = 1; i < sizeof(nazwa); i++)
{
if(ktore[i][id] > 0)
{
client_print(id, print_chat, "%s", nazwa[ktore[i][id]])
}
}
}


Wyświetla zawsze "Jeden" mimo, że wybrałem np. Trzy. Umyślnie zacząłem pętlę od 1, bo po co ma wyświetlać spacje jak będzie 0.

Użytkownik GoldeN edytował ten post 21.03.2011 19:27


#4 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 21.03.2011 19:32

public look(id)

{

        for(new i = 1; i < sizeof(nazwa); i++)

        {

                if(ktore[id][i] > 0)

                {

                        client_print(id, print_chat, "%s", nazwa[ktore[id][i]])

                }

        }

}

  • +
  • -
  • 1
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#5 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 980
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 21.03.2011 19:33

public look(id)
{
        for(new i = 0; i < sizeof(nazwa); i++)
        {
                if(ktore[i][id] > 0)
                {
                        client_print(id, print_chat, "%s", nazwa[ktore[i][id]])
                }
        }
}

zle ustawiasz graczowi ten kod na gorze jest poprawny
  • +
  • -
  • 1

#6 GoldeN

    Wszechmogący

  • Autor tematu
  • Zbanowany

Reputacja: 69
Pomocny

  • Postów:676
  • Imię:Kamil
  • Lokalizacja:DG
Offline

Napisano 21.03.2011 19:40

Identycznie mam i zawsze pokazuje "Jeden" nie ważne czy wezmę "Dwa", czy "Trzy".

#7 Cypis'

    Master

  • Przyjaciel

Reputacja: 1 162
Super Hero

  • Postów:965
  • GG:
  • Steam:steam
  • Lokalizacja:polska
Offline

Napisano 21.03.2011 19:49

a to czasem nie powinno być tak:
client_print(id, print_chat, "%s", nazwa[i])

Użytkownik Cypis' edytował ten post 21.03.2011 19:50

  • +
  • -
  • 2

#8 GoldeN

    Wszechmogący

  • Autor tematu
  • Zbanowany

Reputacja: 69
Pomocny

  • Postów:676
  • Imię:Kamil
  • Lokalizacja:DG
Offline

Napisano 21.03.2011 20:05

a to czasem nie powinno być tak:

client_print(id, print_chat, "%s", nazwa[i])



Nie, wtedy wypisze nazwę taką jaka jest w pętli.

#9 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 21.03.2011 20:23

Cypis ma rację
public look(id)
{
        for(new i = 0; i < sizeof(nazwa); i++)
        {
                if(ktore[i][id] > 0)
                {
                        client_print(id, print_chat, "%s", nazwa[i]);
                        break;
                }
        }
}

  • +
  • -
  • 1

#10 Knopers

    Nie patrz tak na mnie !

  • Przyjaciel

Reputacja: 588
Wszechwiedzący

  • Postów:2 013
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Cz-wa
Offline

Napisano 21.03.2011 20:29

yyy tylko czemu sizeof(nazwa) a nie sizeof(ktore) ?
chyba powinno być sizeof(ktore) chociaż i tak te tablice teoretycznie powinny być sobie równe jeśli nie chcemy jakiegoś seg fault'a
  • +
  • -
  • 0

#11 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 21.03.2011 20:39

jak idziemy w te stronę to po co w ogóle tyle komórek pamięci?
new ktore[33];
ktore[id] = 1; //, 2, 3 lub 4;

if(ktore[id] >= 0 && ktore[id] < sizeof(nazwa))
    client_print(id, print_chat, "%s", nazwa[ktore[id]])

  • +
  • -
  • 0

#12 GoldeN

    Wszechmogący

  • Autor tematu
  • Zbanowany

Reputacja: 69
Pomocny

  • Postów:676
  • Imię:Kamil
  • Lokalizacja:DG
Offline

Napisano 21.03.2011 20:48

Racja. Udało się. ; D Dziękuję. ; >

Tyle komórek, ponieważ te zmienne mają swoje "poziomy" i np może być ktore[jeden][id] = lvl

Użytkownik GoldeN edytował ten post 21.03.2011 20:49





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

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