PAWN
język skryptowy
PAWN, poprzednio znany jako Small – prosty 32- oraz 64-bitowy język skryptowy. Rozwijany przez firmę CompuPhase, która pierwszą wersję PAWN wydała w 1998. Język PAWN powstał głównie dla systemów wbudowanych, ale może służyć także jako rozszerzenie aplikacji dodające możliwość jej programowania.
Logo języka | |
Pojawienie się | |
---|---|
Pochodne |
SourceMod |
Aktualna wersja stabilna |
4.0.4733 |
Twórca |
ITB CompuPhase |
Licencja | |
Platforma sprzętowa | |
Strona internetowa |
Właściwości
edytuj- Składnia jest prawie identyczna jak w języku C, podobnie nie posiada wbudowanych funkcji.
- Dzięki niewielkiemu rozmiarowi oraz specjalnej metodzie kompilacji można uruchamiać duże skrypty w urządzeniach mających mało pamięci (do uruchomienia prostego skryptu wystarczy 10 kB pamięci RAM) oraz niewielką moc obliczeniową.
- Plik wynikowy kompilatora to kod bajtowy. Wykonywany jest on przez maszynę abstrakcyjną AMX (Abstract Machine eXecutor) opartą na rejestrach. Taka maszyna posiada dziewięć rejestrów: PRI (główny, używany jako akumulator), ALT - rejestr pomocniczy, oraz 7 rejestrów związanych ze stosem i offsetami.
- Plik wynikowy jest plikiem o rozszerzeniu .amx powstały w wyniku kompilacji kodu źródłowego czyli .sma. Kod źródłowy możemy dowolnie edytować, gdyż jest on rozumiany przez człowieka, zaś plik .amx jest zaszyfrowany w sposób nie możliwy do odczytu przez człowieka a rozumiany przez komputer.
Używany przez
edytuj- AMXMODX (używany w silniku gry wieloosobowej Half-Life)
- Source Mod (modyfikacja silnika Source, która umożliwia tworzenie modyfikacji do gier takich jak Counter-Strike: Source, Counter-Strike: Global Offensive, Team Fortress 2, Left 4 Dead, Left 4 Dead 2 itp.)
- San Andreas Multiplayer (modyfikacja Grand Theft Auto: San Andreas umożliwiająca grę wieloosobową)
- "Vaul-Tec Multiplayer" (modyfikacja Fallout 3)
Przykładowy kod
edytujOto przykład kodu, który wyświetli 4 losowe liczby:
#include <core>
main(){
new digit[4];// tworzy czterokomórkową tablicę
for(new i=0;i<4;i++)// pętla, która wykona się 4 razy w celu zapełnienia tablicy digit
{
digit[i] = random(5000);// zapisuje losową wartość do itej komórki tablicy digit
printf("Wartość digit[%d] to %d", i, digit[i]);// wyświetla wartość itej komórki zmiennej digit
}
return 1;
}
Przykładowy Hello world:
#include <core>
main(){
print("Hello World!");
}
Tutaj przykład Hello World! używając funkcji SourcePawn, które mogą posłużyć do tworzenia modyfikacji dla silnika Source. W tym przykładzie tworzymy komendę dla konsoli; osoba, która wpisze tę komendę w konsoli, powinna zobaczyć wiadomość 'Hello World!'. Komenda ta będzie też działać, jeżeli na czacie napiszemy !helloworld lub /helloworld.
#include <sourcemod> //dołączamy funkcje sourcemoda
#pragma semicolon 1
main(){
RegConsoleCmd("sm_helloworld", Command_HelloWorld, "Wyświetla wiadomość powitalną"); //rejestrujemy komendę o nazwie 'sm_helloworld'
}
Command_HelloWorld(client, args){ //ten callback wywoła się, gdy gracz wpisze komendę sm_helloworld
PrintToChat(client, "Hello world!"); //wyświetlamy wiadomość osobie, która wpisała tę komendę
return Plugin_Handled;
}