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

Kilka pytań odnośnie switchy, tablic...


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

#1 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 20.02.2011 17:03

Witam. Mam parę pytań, na które nie jestem pewien odpowiedzi, a i wujek gogle nic nie powiedział, a przynajmniej nie tak dokładnie. To może po kolei
1. Na jakiej zasadzie działa switch? Może podam to na przykładzie
Czy
switch(cos) {
case 1: cos1
case 2: cos2
case 3: cos3
}

oznacza to samo co
if(cos == 1) cos1
else if(cos == 2) cos2
else if(cos == 3) cos3

czy
if(cos == 1) cos1
if(cos == 2) cos2
if(cos == 3) cos3

?? Różnica jest zasadnicza, więc dlatego pytam.

2. Jeśli do tablicy, np. "tab[3]" przypiszemy 1, czyli
tab[3] = 1

to będzie to oznaczać to samo co
tab[0] = 1
tab[1] = 1
tab[2] = 1

?? Czy tylko do pierwszej przypisze 1, a do reszty 0?

3. No i jeszcze jedno. Często w jakichś pluginach różnie zapisuje się jakieś funkcje, raz jest z "public", raz z "stock", a raz w ogóle nic nie ma, czyli od razu jest nazwa funkcji. Stock wiem na jakiej zasadzie działa (gdy nie jest użyty, to tak jakby w ogóle go nie było), ale skąd mogę wiedzieć jak najlepiej zapisać daną funkcję? Ogólnie kiedy używać "stock", kiedy "public", a kiedy nic? Chodzi mi, np. o takie coś
public funkcja() {
// kod
}

stock funkcja() {
// kod
}

funkcja() {
// kod
}

No i skąd wywnioskować jak najlepiej zapisać daną funkcję?
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#2 FreZZy

    Guru

  • Zbanowany

Reputacja: 210
Profesjonalista

  • Postów:716
  • GG:
  • Imię:Paweł
  • Lokalizacja:Wwa
Offline

Napisano 20.02.2011 17:25

1. switch jest jak else if, w PAWNie przynajmniej bo w Cpp sie to komplikuje - jest jeszcze instrukcja break;

2. Jak przypisujesz wartość tablicy, to oznacza to adres jej - czyli zerowy element

to to samo co
tab[0] = 1

reszta jest pusta

3. nie znam sie tak na PAWN'ie ,nie pomoge ci w tym :C

#3 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

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

Napisano 20.02.2011 17:49

Przypisanie wszystkim elementom wartości jest dostępne tylko przy inicjalizacji:
new Tablica[10] = {1, ...};
a potem to już tylko pętle :)


publiczne funkcje są dostępne z zewnątrz pluginu, a zwykłe (od razu nazwa) lub stocki są tylko jego; dostęp zewnętrzny jest potrzebny AMXXowi przy wywoływaniu forwardów, więc wszystkie funkcje typu register_* potrzebują funkcji publicznych, tzn "callbacki"; taski także są zrealizowane na forwardach, więc przypisujesz im funkcje publiczne;

Ogólnie:
jeśli sam wywołujesz funkcję: stock lub zwykła
jeśli pozwalasz AMXXowi na jej wywołanie: public
  • +
  • -
  • 1

#4 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 20.02.2011 21:17

Ogólnie:
jeśli sam wywołujesz funkcję: stock lub zwykła
jeśli pozwalasz AMXXowi na jej wywołanie: public

A jest jakaś różnica w przeciążeniu serwera? Takie mało ważne pytanie, ale warto wiedzieć na przyszłość ;]
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#5 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

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

Napisano 20.02.2011 23:01

nic, czym miałbyś się martwić :)
  • +
  • -
  • 0

#6 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 21.02.2011 00:02

No to wszystko wyjaśnione. Dzięki, a temat do zamknięcia.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#7 FreZZy

    Guru

  • Zbanowany

Reputacja: 210
Profesjonalista

  • Postów:716
  • GG:
  • Imię:Paweł
  • Lokalizacja:Wwa
Offline

Napisano 21.02.2011 10:08

a jeszcze jedno

jak jest taki zapis:

tablica1[5] = {0}

to wtedy wszystkie elementy mają wartość 0 ?

#8 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 21.02.2011 12:17

Z tego co wyczytałem wczoraj na necie, to tak.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#9 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

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

Napisano 21.02.2011 13:11

to co zaraz napiszę też będzie na necie:

tablica1[5] = {0}

to wtedy wszystkie elementy mają wartość 0 ?

nie, tylko pierwszy
  • +
  • -
  • 1

#10 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 21.02.2011 13:16

Sory, ale jak widać C/Tablice - Wikibooks, biblioteka wolnych podręczników tutaj jest właśnie napisane, że takie coś zeruje całą tablicę, zresztą chyba nie tylko tam, bo gdzieś jeszcze widziałem, ale teraz tego nie znajdę tak szybko. No ale skoro to wał, co wypisują na necie, to dobrze wiedzieć.

Użytkownik sebul edytował ten post 21.02.2011 13:17

  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#11 GoldeN

    Wszechmogący

  • Zbanowany

Reputacja: 69
Pomocny

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

Napisano 21.02.2011 16:30

Z tego co mi wiadomo, to zapis:

tablica1[5] = {1}

Zrobi coś takiego:

tablica[0] = 1
tablica[1] = 0
tablica[2] = 0
tablica[3] = 0
tablica[4] = 0

Czyli zapis:

tablica1[5] = {0}

Nada pierwszej tablicy ([0]) wartość 0 i reszte także ustawi na 0. Czyli ile wartości w { } tym tylko początkowym nada wartość, resztę nada zera.



A teraz cytat z Symfonii C++ Grębosza, by moje słowa nie były "puste"

int t[4] = { 17,5 };

Jak widać, liczb jest tu za mało.

Inicjalizacja taka spowoduje, że żądane wartości początkowe zostaną nadane tylko tym dwóm pierwszym elementom. Elementom t[0] i t[1]. Pozostałe dwa elementy będą inicjalizowane zerami.


Użytkownik GoldeN edytował ten post 21.02.2011 16:31


#12 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

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

Napisano 21.02.2011 16:32

w C takie coś wyzeruje tablice
tablica1[5] = {0,}
w Pawnie takie:
tablica1[5] = {0,...}

no dobra, to to i tak zerowanie,a kolego pytał o przypisanie wartości
  • +
  • -
  • 1

#13 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 21.02.2011 20:29

no dobra, to to i tak zerowanie,a kolego pytał o przypisanie wartości

Ja pytałem o przypisywanie, a o co pytał FreZZy to za niego nie odpowiem, ale chodziło mu chyba o zerowanie. Teraz chyba już całkowicie temat wyczerpany.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#14 FreZZy

    Guru

  • Zbanowany

Reputacja: 210
Profesjonalista

  • Postów:716
  • GG:
  • Imię:Paweł
  • Lokalizacja:Wwa
Offline

Napisano 21.02.2011 21:39

dla mnie też dzięki za info

plusy




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

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