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

Tablice


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

#1 conseil

    Życzliwy

  • Użytkownik

Reputacja: 2
Nowy

  • Postów:27
  • GG:
  • Lokalizacja:C: / Windows
Offline

Napisano 24.07.2009 10:08

z dokumentacji AmxModX'a
(http://wiki.alliedmo...Mod_X_Scripting)

public cmd_hp(id, level, cid)
{
     if (!cmd_access(id, level, cid, 3))
        return PLUGIN_HANDLED
 
     new Arg1[24]
     new Arg2[4]
 
     //Get the command arguments from the console
     read_argv(1, Arg1, 23)
     read_argv(2, Arg2, 3)
 
     //Convert the health from a string to a number
     new Health = str_to_num(Arg2)
 
     //Is the first character the @ symbol?
     if (Arg1[0] == '@')
     {
          new Team = 0
          //Check which team was specified.
          //Note that we start from [1], this is okay
          // it just means the @ isn't included
          if (equali(Arg1[1], "CT"))
          {
               Team = 2
          } else if (equali(Arg1[1], "T")) {
               Team = 1
          }
           //.
Zdziwiło mnie to:
if (equali(Arg1[1], "CT"))
Przecież każdy element tablicy zawiera jeden znak.
to znaczy jeżeli tablica
Arg1[] = "@CT"
to:
Arg1[0] = '@'
Arg1[1] = 'C'
Arg1[2] = 'T'

To jaki cudem 1 element tablicy zawiera znak(i) "CT"?
I dlaczego jest użyto " a nie '
  • +
  • -
  • 0

#2 mgr inż. Pavulon

    C35H60Br2N2O4

  • Przyjaciel

Reputacja: 1 742
Godlike

  • Postów:6 881
  • Steam:steam
  • Imię:Konrad
  • Lokalizacja:Koniecpol
Offline

Napisano 24.07.2009 10:45

if (equali(Arg1[1], "CT"))

to jest błąd, powinno być samo C
chyba że tablica była by wielo(dwu)wymiarowa.
poza tym chyba nie ma sensu używania equali dla jednego znaku.
if (Arg1[1]=='C')) powinno chyba działać.


A i cudzysłów(") używany jest do string'ów a apostrof (') do char'ów
  • +
  • -
  • 0

#3 conseil

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:27
  • GG:
  • Lokalizacja:C: / Windows
Offline

Napisano 24.07.2009 11:06

Właśnie też podejrzewałem błąd, ale nie chciałem uważać się za mądrzejszego od twórców AmxModX'a :]
ok, dzięki +pomógł.
  • +
  • -
  • 0

#4 mgr inż. Pavulon

    C35H60Br2N2O4

  • Przyjaciel

Reputacja: 1 742
Godlike

  • Postów:6 881
  • Steam:steam
  • Imię:Konrad
  • Lokalizacja:Koniecpol
Offline

Napisano 24.07.2009 11:15

nie chciałem uważać się za mądrzejszego od twórców AmxModX'a

pomyłki się zdarzają każdemu ;)
  • +
  • -
  • 0

#5 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

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

Napisano 24.07.2009 13:14

Poprawny jest zapis:
if (equali(Arg1[1], "CT"))
Oznacza, że string Arg1 zostanie porównany od drugiego znaku.

natomiast ten jest zły
if (equali(Arg1[1], "C"))
do porównania pojedynczego znaku służy jak napisał Pavulon zwykłe == ,skoro equali to trzeba jeszcze ujednolicić zapis przez &32
if (Arg1[1]&32 == 'c')

  • +
  • -
  • 0

#6 mgr inż. Pavulon

    C35H60Br2N2O4

  • Przyjaciel

Reputacja: 1 742
Godlike

  • Postów:6 881
  • Steam:steam
  • Imię:Konrad
  • Lokalizacja:Koniecpol
Offline

Napisano 24.07.2009 13:21

W takim razie przepraszam za wprowadzenie w błąd.
  • +
  • -
  • 0




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

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