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

Rozróżnianie tekstu z odstępami


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
9 odpowiedzi w tym temacie

#1 diablix

    emeryt

  • Przyjaciel

Reputacja: 507
Wszechwiedzący

  • Postów:663
  • GG:
  • Steam:steam
  • Imię:Daniel
  • Lokalizacja:Warszawa
Offline

Napisano 26.01.2012 02:52

Krótki kodzik, wiele osób tego szukało więc zamieszczam :&

stock przygotujTekst(sTekst[], iLen){
for(new i = iLen-0x1 ; i ; i--){
if(sTekst[i] == ' ') sTekst[i] = EOS;

if(sTekst[i-0x1] != ' ') break;
}
}


Jak on dokładnie działa? Otóż przydaje się on gdy chcemy porównać dwa teksty które mogą się różnic ilością "spacji" na końcu tekstu.
Przydatne dla osób które tworzą własne lub modyfikują czyjeś pluginy.

Najprościej to będzie opisać w przykładowym zastosowaniu:


public sprawdzDwaTeksty(id){
new sTekst[0x2][0x10];

ArrayGetString(g_sNazwa, 0x1, sTekst[0x0], sizeof sTekst[]-0x1); // "Tekst"
ArrayGetString(g_sNazwa, 0x2, sTekst[0x1], sizeof sTekst[]-0x1); // "Tekst "

przygotujTekst(sTekst[0x0], sizeof sTekst[] - 0x1);
przygotujTekst(sTekst[0x1], sizeof sTekst[] - 0x1);

if(equal(sTekst[0x0], sTekst[0x1]))
log_amx("Dwa teksty zostaly DOKLADNIE porownane, ich tresc jest identyczna.");
}


U mnie się to naprzykład przydało w pluginie w którym gracz tworzył drużyny, aby nie mógł za nic ustawić takiej samej nazwy drużyny jak inna :)
  • +
  • -
  • 2

#2 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

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

Napisano 26.01.2012 20:31

po kij używać szesnastkowego tutaj :lol: ? ( chyba że lubisz utrudniać życie tym którzy nie znają go biegle )

w amxx jest już funkcja od tego
http://www.amxmodx.o...?go=func&id=570
  • +
  • -
  • 1

#3 Fili:P

    Godlike

  • Power User

Reputacja: 754
Guru

  • Postów:1 679
  • Imię:Darek
  • Lokalizacja:Warszawa
Offline

Napisano 26.01.2012 20:43

Hmm, a czy czasem 0x1 to nie 1 i 0x2 to nie 2 ?
  • +
  • -
  • 0

#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 26.01.2012 21:16

tak diablix chciał pokazać ze zna inne systemy xD

Diablix a co się stanie jak w tablicy bd mieć np "jakis tam sobie tekst" ?? funkcja usunie spacje czy efektem będzie zapamiętanie tylko "jakis" ??
  • +
  • -
  • 2
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 diablix

    emeryt

  • Autor tematu
  • Przyjaciel

Reputacja: 507
Wszechwiedzący

  • Postów:663
  • GG:
  • Steam:steam
  • Imię:Daniel
  • Lokalizacja:Warszawa
Offline

Napisano 27.01.2012 01:23

@G[o]Q

Zawsze używam szesnastkowego, kwestia przyzwyczajenia :P

No to zostanie tylko pierwsze zdanie :) Ewentualnie mogę zrobić wersje która sprawdza tylko na końcu spacje jeżeli ktoś tego chce:)


@Fili:P

Właśnie tak.

EDIT

Jednak dobrze że GoQ mnie upomniał, nie taki miał być cel tej funkcji :D Poprawione ;)
  • +
  • -
  • 0

#6 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

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

Napisano 15.02.2012 22:39

Darku ma rację, trim i po sprawie. Czy poniższy kod nie jest dużo bardziej czytelny?

new szTextOne[] = "   text   ";
new szTextTwo[] = "text";

trim(szTextOne);
trim(szTextTwo);

if(equal(szTextOne, szTextTwo)){

}

  • +
  • -
  • 0

#7 diablix

    emeryt

  • Autor tematu
  • Przyjaciel

Reputacja: 507
Wszechwiedzący

  • Postów:663
  • GG:
  • Steam:steam
  • Imię:Daniel
  • Lokalizacja:Warszawa
Offline

Napisano 16.02.2012 18:59

R3X ale trim usunie wszystkie spacje a moim problemem było to że chciałem tylko te na końcu... Ludzie wybierali nazwę "grupy" i chciałem żeby wykryło taki tekst:

"Grupa numer jeden"
"Grupa numer jeden "

I wtedy equal już tak dobrze się nie sprawdzał :P

Ale wiem że mogłem to zrobić na zasadzie:

if(equal(sTekst1, sTekst2, strlen(sTekst1)-0x1))


No cóż, alę może komuś się przyda..
  • +
  • -
  • 0

#8 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

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

Napisano 16.02.2012 19:53

trim usuwa spacje z końca i z początku, nie wszystkie :)
  • +
  • -
  • 0

#9 diablix

    emeryt

  • Autor tematu
  • Przyjaciel

Reputacja: 507
Wszechwiedzący

  • Postów:663
  • GG:
  • Steam:steam
  • Imię:Daniel
  • Lokalizacja:Warszawa
Offline

Napisano 16.02.2012 20:13

:facepalm:

To może komuś się chociaż przyda jego stockowa wersja :P
sebul (16.02.2012 22:55):
Ale wtopa xD

  • +
  • -
  • 0

#10 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

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

Napisano 17.02.2012 00:47

To może komuś się chociaż przyda jego stockowa wersja

tylko że twój stock nie usunie spacji z początku :D
  • +
  • -
  • 0




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

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