Skocz do zawartości
Minokon

Słowniczek programisty Pawn

Rekomendowane odpowiedzi

Witam

Na wstępie proszę o przyklejenie tego tematu (na stronie głównej działu Poradniki), ponieważ uważam go za absolutne podstawy, ale jakoś brak tego na forum.

Jest to taki jakby poradnik, a konkretniej wytłumaczenie co to jest Pawn i inne rzeczy.

  • Pawn - to prosty 32-bitowy język skryptowy, używany przez SA-MP. Więcej informacji na wikipedii.
  • Pawno - program do edycji skryptów Pawn, dodatkowo wyposażony w specjalny kompilator PWN->AMX. Został zakodowany przez Spookie'go specjalnie dla SA-MP, na podstawie SynEdit.
  • .PWN - format pliku kodu źródłowego skryptu. Nie odczytywany przez serwer SA-MP. Można uznać, że jest to plik o formacie tekstowym.
  • .AMX - format pliku kodu zakodowanego skryptu. Jest to kod źródłowy, przekompilowany przez kompilator Pawn. Odczytywany przez serwer SA-MP.
  • Zmienna - obszar pamięci, w którym można zapisać jakieś dane liczbowe, a także jedną literę. Ciągi zapisuje się do tablic.
  • Tablica - rozbudowana zmienna, podzielona na indeksy. Tworzona aby przechować np. ciągi znaków, czy odpowiednio pogrupowane dane. Można także ją nazwać ciągiem zmiennych, albo zbiorem zmiennych.
  • Ciąg znaków/string - jest to parę znaków, np. litery, cyfry, symbole. Ciągi zapisuje się do tablic.
  • Integer/Liczba/Int - liczby zapisuje się do zmiennych. Mogą być liczby ujemne, dodatnie, ale muszą być całkowite. Liczby niecałkowite zapisuje się troszkę inaczej.
  • Float/liczba zmiennoprzecinkowa - liczby, zawierające inne liczby po przecinku (w Pawn używa się kropki, jako przecinka). Zapisuje się je do specjalnych tablic.
  • Boolean/bool - Zmienna podobna do liczby, tyle że może przyjąć tylko dwie wartości - true albo false (1 albo 0). Zapisuje się go do specjalnej zmiennej, coś jak Float.
  • komenda - jest to tekst wpisany przez gracza na czacie, zawierający "/" na początku.
  • funkcja - jest to zbiór poleceń dla serwera.
  • public/callback/funkcja publiczna - funkcja zaczynająca się wyrazem "public". Trzeba ją najpierw zdefiniować. Można jej używać w timerach, czy funkcjach "Call", w przeciwieństwie do normalnych funkcji i stock'ów.
  • Dyrektywy preprocesora - dyrektywy kierujące kompilatorem. Więcej informacji tutaj
  • Stała - stała to dyrektywa preprocesora, wartość definiowana od razu, nie zmieniająca się tak jak zmienna (chociaż zmiennej także nie trzeba zmieniać). Podstawowa różnica to taka, że stała "podmienia" się ze swoją nazwą przy kompilacji, a zmienna podczas wykonywania skryptu.
  • Operator - konstrukcja jedno bądź wieloargumentowa zwracająca wartość. Więcej na wikipedii
  • System decymalny - podstawowy system zapisu liczb. Można się go nauczyć w szkole. Więcej informacji na wikipedii.
  • System binarny - system, w którym do zapisania liczby, używa się dwóch liczb - 0 i 1. Więcej na wikipedii.
  • System heksadecymalny - system, w którym do zapisu liczb używa się 16 cyfr (0-9 i A-F). W SA-MP zapisuje się w tym systemie kolory. Więcej informacji na wikipedii.
  • Administrator/Admin - osoba ze specjalnymi uprawnieniami. Zazwyczaj pilnuje porządku na serwerze. "Zazwyczaj", ponieważ ostatnimi czasy, stanowisko admina, na niektórych serwerach, można kupić, a także dla admina są komendy dające mu jakieś wyjątkowe właściwości, jak np. nieśmiertelność czy najlepsze bronie.
  • RCON - jest to taki jakby admin system wbudowany w SA-MP. Administrator loguje się używając odpowiedniego hasła, i ma dostęp do wszystkich funkcji RCON, czyli np. banowanie na IP, czy zmiana tekstu z nazwą serwera.
  • GameMode/GM - główny mod gry. Jest to podstawa serwera.
  • FilterScript/FS - dodatkowy skrypt serwera. Może być ich max. 16.
  • Mapa - błędne określenie GameModu. Mapy są w MTA, nie w SA-MP.
  • DeathMatch/DM - rodzaj GM'a, w którym chodzi o zabijanie. Często mylony z typem FreeRoam/FR
  • Team-DeathMatch/TDM - rodzaj GM'a, w którym chodzi o zabijanie w drużynach (Team vs Team).
  • Stunt - rodzaj GM'a, w którym chodzi o wykonywanie różnych trików.
  • FreeRoam/FR - rodzaj GM'a, w którym robisz co chcesz, jesteś nieograniczony (nie licząc regulaminu).
  • RolePlay/RP - rodzaj GM'a, w którym chodzi o kreowanie własnej postaci, czy o odgrywanie jakiejś roli. Ostatnio bardzo popularne, są tworzone masowo przez niedoświadczonych programistów.
  • Truck - rodzaj GM'a, w którym chodzi o przewożenie ładunków, ulepszaniu pojazdu itp. Ostatnio bardzo jest to łączone z RP, dzięki czemu gra jest ciekawsza.

Jak już wspomniałem na początku, uważam to za absolutne podstawy, i każdy programista Pawn powinien je znać.

Nie jestem pewien czy wszystko napisałem poprawnie, proszę o poprawianie mnie. Nigdy się nie jest pewnym wszystkiego w 100%.

Dziękuję wszystkim za pomoc.

Pozdrawiam, Minokon

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Pawn - to prosty 32-bitowy język programowania, używany przez SA-MP. Więcej informacji na wikipedii.

Pawn to nie język programowania. To język skryptowy. Co prawda ktoś kto za bardzo nie ma pojęcia o tym co to w ogóle programowanie, nie zobaczy żadnej różnicy, ale jest ona dość spora i należy o niej pamiętać, a przynajmniej według mnie należy pamiętać.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Osobiście nie mam pojęcia, czy mam rację, czy nie, ale większość źródeł podaje podobnie jak wikipedia: "Język skryptowy – język programowania służący do kontrolowania danej aplikacji.".

Wynika z tego, że język skryptowy to też język programowania. Ale to tylko błahostka, której swoim rozumem nie potwierdzę :P

Do pojęć można dopisać: stała, dyrektywy preprocesora (naturalnie bez wymieniania ich - gdzieś chyba były, można ewentualnie dać odnośnik), operator, może coś typu: 0b, 0x, czyli systemy binarny, decymalny, heksadecymalny. Więcej mi na razie nie przychodzi do głowy.

edit: Ogółem - ciekawy pomysł :)

@:

Tablica - rozbudowana zmienna

Napisałbym 'ciąg zmiennych', 'zbiór zmiennych', wydaje mi się, że bardziej obrazuje jej przeznaczenie.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zmienna - obszar pamięci, w którym można zapisać jakieś dane. - dopisz "liczbowe" :)


RolePlay/RP - rodzaj GM'a, w którym chodzi o kreowanie własnej postaci, czy o odgrywanie jakiejś roli. Ostatnio bardzo popularne, są tworzone masowo przez niedoświadczonych programistów. - Subiektywizm, to ostatnie zdanie jest zbędne w opisie ;P

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Bantu, poprawione

Xela, poprawione/dopisane

bocian941, poprawione, a zbędne nie jest :) to też podstawa że trzeba na spamerów na GG uważać (mapa za admina)

Dzięki wszystkim za pomoc

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ja bym nie dopisywał, że liczbowe, bo tak na prawdę zmienna może być dowolnego typu. Istnieją przecież zmienne typu bool, o których Minokon wcześniej wspomniał, a one przecież nie mają za dużo wspólnego z liczbami. No i jeszcze istnieje coś takiego jak klasy, a raczej pluginy, w których możemy tworzyć własne typy zmiennych i je używać w pawn. Zobaczcie sobie np. MySQL plugin gdzie autor stworzył zmienną typu MySQL, a ona też z liczbami nie ma nic wspólnego, a raczej ma bardzo mało :P

Ale to co piszę nie ma na prawdę większego znaczenia dla nowicjuszy, a sam to piszę tylko dla własnej satysfakcji i jako ciekawostkę :P

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ja bym nie dopisywał, że liczbowe, bo tak na prawdę zmienna może być dowolnego typu. Istnieją przecież zmienne typu bool, o których Minokon wcześniej wspomniał, a one przecież nie mają za dużo wspólnego z liczbami. No i jeszcze istnieje coś takiego jak klasy, a raczej pluginy, w których możemy tworzyć własne typy zmiennych i je używać w pawn. Zobaczcie sobie np. MySQL plugin gdzie autor stworzył zmienną typu MySQL, a ona też z liczbami nie ma nic wspólnego, a raczej ma bardzo mało :P

Ale to co piszę nie ma na prawdę większego znaczenia dla nowicjuszy, a sam to piszę tylko dla własnej satysfakcji i jako ciekawostkę :P

Wszysto to, Float:, Bool: i MySQL: przechowują liczby, możesz sprawdzić przez print("%d", _:zmienna); gdzie zmienna to np. Float :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

No tak z punktu widzenia procesora to są to liczby, ale z punktu widzenia programisty niekoniecznie. Chociaż powiem szczerze, że nie wiem jak to jest w pawn, ale np. taki typ bool w C++ wygląda tak, że dla true jest wartość 1 jako liczba, a dla false są już to przeważnie jakieś ślaczki, bo false może być 0 i -1 i jeszcze inne liczby. Albo klasa jako typ definiowany przez usera też może nie zwracać wartości jako liczby np. string. Gdyby użyć flagi liczbowej w printf to przy takim typie będą wyświetlane jakieś śmieci. Widocznie typ MySQL jednak też zwraca liczbę, więc nie trafiłem z przykładem, ale można tworzyć takie zmienne, które z liczbami mają mało wspólnego :P

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Bardzo ciekawymi odmianami zmiennych są takie jak DB, DBResult, również należy je wziąć pod uwagę, na przykład taki DBResult nie ma wiele wspólnego z liczbami...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie chcę tutaj spamu robić, ale jedynym sposobem, aby przypisać do zmiennej string jest plugin, dokładniej sscanf (dziwne rozwiązanie to jest):

new string; // bez [], to nie błąd
sscanf("jakis tekst do zmiennej", "s[32]", string);
printf("%s", string); // print daje arg. type mismach

Ogólnie to prawie zawsze są jakiegoś typu liczby :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@bocian941 jednak weź pod uwagę że każdy znak odpowiada liczbie, przykładowo spacja to 32, a więc jeśli chcemy zapisać tekst "a z" to znajdziemy tam spację która sama w sobie stanowi liczbę 32, do tego weźmy przykładowo że a to 10, zaś b to 20, w takim przypadku zmienna która miała by przechować ten tekst musiałaby nosić w tym samym momencie 3 wartości: 10, 20, 32... Całość musiałaby wyglądać mniej więcej tak:

{{10},{20},{32}}

A to już jest specyficzne dla tablic...

Pozdrawiam, Yesterday!

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ja mówię o typie string, a nie tablicy jakiejś, która się nazywa string xD

No tak ale to też tylko występuje w C++ i w językach podobnych jak C#, a nie w pawn, ale w sumie można by napisać plugin, który będzie miał stringi z prawdziwego zdarzenia.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

W zmiennej możemy nie tylko zapisać liczby ale też i jeden znak

new literaf = 'f';

Więc warto i to dodać :P

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

W zmiennej możemy nie tylko zapisać liczby ale też i jeden znak

new literaf = 'f';
Więc warto i to dodać :P
wiesz w pawn to prawie to samo co zrobienie:
new literaf = 102;
wiem że w programowaniu typu c++ jest podobnie ale tu przy braku typów zmiennych etc. ta zależność jest dość widoczna
Boolean/bool - Zmienna podobna do liczby, tyle że może przyjąć tylko dwie wartości - true albo false (1 albo 0). Zapisuje się go do specjalnej zmiennej, coś jak Float.
nie wiem czy porównanie do Float jest dobre, bool jest w pawn i może byc nieco inne niż stworzone w pliku .inc Float (ktoś tu pisał że tworzone to jest w pluginie ale to nieprawda) co do tego że niektóre zminne typu DB: nie maja nic do liczb, owszem mają, gdyż funkcje sa:mp zwracają zawszę liczbę, nie jestem pewien ale jeśli liczby mają dziwne wartości może są one zakodowane czy coś
komenda - jest to tekst wpisany przez gracza na czacie, zawierający "/" na początku.

gmx wpisane w konsoli też można nazwać komendą a nie ma /

DeathMatch/DM - rodzaj GM'a, w którym chodzi o zabijanie.

często mylony z typem FreeRoam/FR

.PWN - format pliku kodu źródłowego skryptu. Nie odczytywany przez serwer SA-MP.

można też napisać że to teoretycznie tylko plik o formacie tekstowym

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

wpiszesz na czacie "gmx" i to jest komenda? pierwsze słyszę

co do reszty, te szczegóły są nieważne, ten poradnik jest dla początkujących a nie dla zaawansowanych programistów

co do Float i bool, chodziło mi o to, że dodaje się Float: albo bool: przy definiowaniu, dlatego jest podobne, nieważne jest co się w tym zapisuje

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Tak mnie rozbawiliście, że aż wam odpowiem. Najpierw zaczne od komentarzy.

Po 1 każdy obiekt/zmienna przechowuje tylko i wyłącznie dane liczbowe (w programowaniu wszystko jest liczba nawet durna nazwa waszej zmiennej >>jest to adres do komórki pamięci, tak jest KOMÓRKI a nie OBSZARU<<).

Dlaczego tak jest? Wszystko można zapisać w postaci binarnej.

Po 2 W PAWN nie ma typów są tylko tagi. innymi słowy

new bool:aha = 3.14;

printf("%f", aha);

aha = 43;

printf("%d", aha);

Po 3 nie widzę potrzeby tworzyć jakiś pseudo pluginow dla "stringa ala c++", może od razu zaimplementować klasy?

Teraz czas na słowniczek

Po 1 Jest on pełen błędów. np

Stała - stała to dyrektywa preprocesora

funkcja - jest to zbiór poleceń dla serwera.

Float/liczba zmiennoprzecinkowa - liczby, zawierające inne liczby po przecinku

Integer/Liczba/Int - liczby zapisuje się do zmiennych.

Zmienna - obszar pamięci

To tylko kilka przykładów Bardzo bym prosił o usunięcie tego tematu.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

ja tam błędów nie widzę, a ty ich nie opisałeś...

a to jest poradnik dla początkujących, z czasem sami się dowiedzą o takich rzeczach, jak większość z nas

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Skoro nie rozumiesz moich przykładów to nie pisz poradników.

PS

new const aha = 2 + 2;

#define SPAM 2+2

printf("aha*2 = %d, SPAM*2 = %d", aha * 2, SPAM * 2);

Wynik

aha*2 = 8, SPAM*2 = 6

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Destrojer skończ te swoje filozofie i popisywanie się przed innymi, że potrafisz sporo w pawn. Z własnego doświadczenia wiem, że mało kogo interesuje jak inaczej można powiedzieć na zmienną czy tam stałą. Nowym często wystarcza wiedza o tym jak je tworzyć, jak ich używać i do czego można je wykorzystać.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×