Preskočiť na obsah

Pawn

z Wikipédie, slobodnej encyklopédie
Pawn

DruhŠtruktúrovaný
Dátum vzniku1998
PoužitieMultiplatformové
Typová kontrolaÁno, ale neštandardná
TvorcaITB CompuPhase
ImplementácieWindows, Linux, 8-bit, Playstation 2, XBox, ...
DialektySA-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

  1. http://www.compuphase.com/pawn/Pawn_Implementer_Guide.pdf, 1. strana
  2. http://www.compuphase.com/pawn/Pawn_Language_Guide.pdf, 1. strana
  3. http://www.compuphase.com/pawn/Pawn_Implementer_Guide.pdf
  4. http://www.compuphase.com/pawn/Pawn_Language_Guide.pdf, 6. strana
  5. http://www.compuphase.com/pawn/Pawn_Implementer_Guide.pdf, 92. strana
  6. http://www.compuphase.com/pawn/Pawn_Implementer_Guide.pdf, 2. strana