Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

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

#define zdefiniowanego obiektu.


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

#1 grankee

    Godlike

  • Support Team

Reputacja: 507
Wszechwiedzący

  • Postów:1500
  • Lokalizacja:Radom
Offline

Napisano 03.01.2015 20:07

Nie mam pojęcia jak inaczej to nazwać.

Mam taką linijkę:

#define test:%1 funkcja("%1")

i teraz jak ktoś pisząc kod napisze linijkę:

test:pupa

to preprocesor zamieni ją na:

funkcja("pupa")

wszystko fajnie, ale teraz zaczynają się schodki, bo poprzebuję każdorazowe wystąpienie ciągu 

pupa="costam"

w kodzie zamienić na

inna_funkcja("pupa","costam")

problem w tym, że nie jestem w stanie z góry określić, że pisząc plugin będzie to akurat słowo pupa, może być dowolne i może ich być dowolna ilość

#define %1="%2" inna_funkcja(costam)

nie przejdzie, bo definicja nie może się zaczynać od %, a gdyby się tak dało to załatwia mój problem, bo w PAWN nigdy nie przypisuje się np. wartości do zmiennej z użyciem cudzysłowów (co mogłoby kolidować)

 

Jak zatem można zdefiniować treść, która nie jest z góry znana(może wystąpić w kodzie nieograniczoną ilość razy z różną zawartością)?


Użytkownik grankee edytował ten post 03.01.2015 20:09

  • +
  • -
  • 0

#2 NoLiFeR

    Wszechobecny

  • Użytkownik

Reputacja: 103
Zaawansowany

  • Postów:483
  • GG:
  • Imię:Adrian
  • Lokalizacja:Sosnowiec
Offline

Napisano 04.01.2015 04:20

#define $%1="%2" inna_funkcja(TwojKod)

Jestem ciekaw, czy skoro definicja nie może zaczynać się od % takie coś mogło by czysto teoretycznie działać...

 

Po za tym, pisząc tak plugin, kod

pupa="costam" nie przeszło by... Ale $ na początku blokowało by ustawianie "pupie" wartosci "costam", co i tak nie mogło by mieć miejsca... 


Użytkownik NoLiFeR edytował ten post 04.01.2015 04:40

  • +
  • -
  • 0

#3 grankee

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 507
Wszechwiedzący

  • Postów:1500
  • Lokalizacja:Radom
Offline

Napisano 04.01.2015 04:59

Error: #define pattern must start with an alphabetic character on line 43


  • +
  • -
  • 0

#4 NoLiFeR

    Wszechobecny

  • Użytkownik

Reputacja: 103
Zaawansowany

  • Postów:483
  • GG:
  • Imię:Adrian
  • Lokalizacja:Sosnowiec
Offline

Napisano 04.01.2015 05:01

#define S$%1="%2" inna_funkcja(%1,"%2") // musi się zaczynać literą, czego nie wiedziałem, bo nie stosuje "define'ów" w pluginach ;)


  • +
  • -
  • 0

#5 grankee

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 507
Wszechwiedzący

  • Postów:1500
  • Lokalizacja:Radom
Offline

Napisano 04.01.2015 05:28

No to jak już jest S to po co mi po tym S jeszcze $ ?:D

Mi chodzi, żeby zdefiniować 

pupa="costam"

i zeby nie pisac przed tym żadnego S ani nic w tym stylu.


  • +
  • -
  • 0

#6 NoLiFeR

    Wszechobecny

  • Użytkownik

Reputacja: 103
Zaawansowany

  • Postów:483
  • GG:
  • Imię:Adrian
  • Lokalizacja:Sosnowiec
Offline

Napisano 04.01.2015 05:34

Pisząc to w kodzie, kompilator zrobi tak...

new kasa=cs_get_user_money(id)

będzie zamienane na 
 

new inna_funkcja(kasa,cs_get_user_money)

Nie uwzględniłem w kodzie powyżej cudzysłowiu.


 


Użytkownik NoLiFeR edytował ten post 04.01.2015 05:38

  • +
  • -
  • 0

#7 grankee

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 507
Wszechwiedzący

  • Postów:1500
  • Lokalizacja:Radom
Offline

Napisano 04.01.2015 05:53

Nie chodzi o cudzysłów, to tylko drobne niedopatrzenie.

chodzi o to, żeby wyłapać preprocesorem coś, czego nie jestem w stanie zdefiniować

 

nie mogę bowiem zdefiniować słowa, jeżeli nie wiem jakie sobie wymyśle pisząc kod, albo mogę, ale nie wiem jak.

Przeczytaj uważnie pierwszy post, bo zrobił się trochę mętlik i schodzimy z tematu, tj zaczynamy szukać odpowiedzi na niezadane pytania.

Jeśli mam definicję:

#define test:%1 funkcja("%1") 

i jeśli napiszę:

test:pupa

i preprocesor zamieni to na

funkcja("pupa")

to wszystko jest na razie gites, ale teraz każdorazowe wystąpienie słowa pupa, a dokładnie ciągu 

pupa="%1"

gdzie %1 to dowolny ciąg znaków (co wynika z zasad używania definicji dla preprocesora), potrzebuję zamienić na 

inna_funkcja("pupa","%1")

gdzie %1 to tenże ciąg znaków.

 

 

Jednak nie mogę zrobić tak:

#define pupa="%1" inna_funkcja("pupa","%1")

bo ja nie wiem, że to będzie pupa, mogę tego użyć 100 razy w kodzie np.

test:pupa
test:kupa
test:kaszanka
//itd itd

i teraz musiałbym wszystkie definiowac, a to mija się z celem, chcę to robić dynamicznie, aby każda wartość podana po

test:

została automatycznie zdefiniowana, albo żeby ogólnie zdefiniować ciąg znaków w ten deseń

#define %1="%2" inna_funkcja("%1","%2")

wtedy przekaze wszystkie znalezienia, a ja juz w funkcji sobie sprawdze, czy to co zostało przekazane zostalo wczesniej uzyte z 

test:

ale kompilator nie przepuszcza tego, ponieważ musi się zaczynać od znaku alfanumerycznego, a nie może od %


  • +
  • -
  • 0




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

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