Pawn
Pawn | |
| |
Druh | Štruktúrovaný |
---|---|
Dátum vzniku | 1998 |
Použitie | Multiplatformové |
Typová kontrola | Áno, ale neštandardná |
Tvorca | ITB CompuPhase |
Implementácie | Windows, Linux, 8-bit, Playstation 2, XBox, ... |
Dialekty | SA-MP, AMXMODX |
Používané prípony | .amx, .pwn, .p |
Pawn (pôvodne vyvýjaný pod názvom Small) (chybne nazývaný Pawno) je skriptovací jazyk, ktorý nachádza využitie najmä v programovaní (skriptovaní) serverov do hry Grand Theft Auto: San Andreas či do hry Counter strike.
Pawn je dynamický jazyk, so syntaxou vychádzajúcou z jazyka C, no voľnejšou. Pôvodne bol vyvýjaný s cieľom vytvoriť jednoduchý, rýchly, moderný a prenosný jazyk. Na jeho použitie je potrebné "prostredie" - AMX, v ktorom je daný program spustený. Prostredie AMX je dostupné na viaceré operačné systémy, aj na 8-bitové prístroje.[1]
História
Pôvodný názov Small-C bol čoskoro zmenený na Small, pretože autori považovali jazyk za niečo viac než len kópiu jazyka C. Došlo k fundamentálnym zmenám oproti jazyku C, napríklad odstránenie typov premenných, či nahradenie a prerobenie systému ukazovateľov (pointerov). Neskôr, keď jazyk nadobudol vyššiu komplexnosť, bol premenovaný ešte raz, na Pawn. Tento názov nesie už niekoľko rokov.[2]
Technológia a AMX
Ako skriptovací jazyk potrebuje virtuálne prostredie - virtuálny stroj, na fungovanie. Toto prostredie autori nazvali AMX, zo skratky Abstract Machine eXecutor. AMX vo veľkej miere udáva vlastnosti jazyka.[3]
Jazyk je beztypový, všetky údaje sa ukladajú do rovnako veľkých premenných, zväčša o veľkosti 4 Bajtov. Počas programovania je možné používať tzv. Tagy, ktoré umožňujú typovú kontrolu. Táto kontrola však neexistuje v reálnom čase, iba počas kompilácie je možné vytvárať vlastné typy, bežne dostupné sú Boolean či Float. U znakov a textových reťazcov sa tagy nepoužívajú.[4]
AMX používa technológiu "stack-based", čiže vo virtuálnom stroji sú všetky údaje uložené v zásobníku (Stack).[5] Toto vo veľkej miere negatívne ovplyvňuje rýchlosť jazyka Pawn. Kompilácia má tak ako v podobných jazykoch dva kroky - prvotná kompilácia, ktorá pozostáva z prekladu zdrojového kódu do byte-kódu. Byte-kód ešte nie je spustiteľný na danom stroji. Musí teda prejsť cez AMX, kde je v reálnom čase prekladaný na binárny kód spustiteľný na danom stroji.[6]
Ukážka kódu
#include <a_samp>//-- Základna definícia kódovania pre hru GTA SA:MP
//-- Dialogy --//
#define Tets 1 //Definícia dialogu : Tets - Názov 1 - ID dialogu
//-- Farby --//
#define fialova <farebný kod> //Farebné kody môžete používať priamo v písaní textu na to slúžia tzv. HEX COLORS
//-- Začíname --//
public OnPlayerConnect(playeri)
{
ShowPlayerDialog(playerid,Tets,DIALOG_STYLE_MSBOX,"{9900CC}Vitaj na serveri !"); //playerid - ID hráča ktorému sa dialog zobrazí | Tets - ID dialogu ktorý sa zobrazí (definíciu vidíme vyššie) | DIALOG_STYLE - štýl dialogu je ich viac | "Bla bla bla" - Text ktorý sa zobrazí v dialogu | {9900CC} - tzv HEX COLORS táto farba je fialová.
return 1; //return je ukončenie funkcie aby sa mohlo prejsť na ďalšiu.Existuje viac druhov returnov return 1; ukončuje funkciu ak chcete pokračovať bez ukončenia funkcii v danom publicu return vynechajte
} // { - začína podmienku | } - ukončuje podmienku
Príklad č.2
Chceme si spraviť príkaz ktorý po napísaní nastaví naše zdravie na 100%
#include <a_samp>
#include <zcmd> //Potrebný include do zložky "zcmd.inc" stiahnete na webe....je to vlastne include na príkazy pokiaľ nechcete používať klasické zo a_samp....zcmd sú lepšie na orientáciu
CMD:heal(playerid,params[])
{
SetPlayerHealth(playerid,100);
return 1;
}
Tutoriál spísal [L]u[O]lo
Referencie
- ↑ http://www.compuphase.com/pawn/Pawn_Implementer_Guide.pdf, 1. strana
- ↑ http://www.compuphase.com/pawn/Pawn_Language_Guide.pdf, 1. strana
- ↑ http://www.compuphase.com/pawn/Pawn_Implementer_Guide.pdf
- ↑ http://www.compuphase.com/pawn/Pawn_Language_Guide.pdf, 6. strana
- ↑ http://www.compuphase.com/pawn/Pawn_Implementer_Guide.pdf, 92. strana
- ↑ http://www.compuphase.com/pawn/Pawn_Implementer_Guide.pdf, 2. strana