Pracujeme z pawnom každý deň (návody)
1) Prvé Jednoduché Príkazy
if (strcmp(cmd, "/balicek", true)==0) {
Podmínka která musí být na začátku každého příkazu
Toto uručuje jaký je to typ příkazu
Příkaz jenž použijete přímo v modu
OBSAH PŘÍKAZU
SendClientMessage(playerid,COLOR_YELLOW,"Vzal jste si balicek");
Příkaz (poslaní textu jen jednomu uživateli jenž tento příkaz napsal)
Barva jakou se tento text zobrazí
Text který se zobrazí
GivePlayerWeapon(playerid,31,400);
Příkaz (jenž dá hráči zbraň s určitým počtem nábojů)
ID číslo zbraně
Počet nábojů, které mu budou ke zbrani poskytnuty
KONEC PŘÍKAZU
return 1; }
Ukončuje příkaz
Jednička na konci značí, že ukončuje pouze tento jeden příkaz
Pokud by to byl konec všech příkazů tak se pod return 1; } dává return 0; }
----------------------------------------------------------------------------------------------------
-v případě barvy textu musíte sami "definovat" každou barvu zvlášť a to takto: #define COLOR_YELLOW 0xFFFF00AA Příkaz definice obvykle se umísťuje na začátek módu Název barvy (můžete jsi zde dát i vlastní ale pak to musíte změnit v příkazu) Je to definice určité barvy HEX číslo -pro lenivé jsem připravil pár základních definicí barev: #define COLOR_GREY 0xAFAFAFAA #define COLOR_GREEN 0x33AA33AA 2) Basic Anti-spam
#define COLOR_RED 0xAA3333AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_WHITE 0xFFFFFFAA
#define COLOR_BLUE 0x0000BBAA
#define COLOR_LIGHTBLUE 0x33CCFFAA
#define COLOR_ORANGE 0xFF9900AA
- 1.Zadefinujeme globálnu premennu z nejakým názvom, v mojom prípade message (vkladame na začiatok módu)
new message[MAX_PLAYERS];
- 2.Teraz ošetríme samotne telo funkcie OnPlayerText tak že ak hráč odošle správu nastaví sa premenna message[playerid] = 1; Potom nastavíme timer na čas za ktorý nemôže pridať dalšiu správu v mojom prípade 5000 = 5sekund -odoslanie dalšej správy zamedzíme tak že ak je už jedna správa odoslaná teda message[playerid] = 1;
OnPlayerText vráti hodnotu flase teda nevykoná sa. Môže to vyzerať takto:
if(message[playerid] == 1) return 0;
public OnPlayerText(playerid, text[])
{
if(message[playerid] == 1) {//uz odoslal jednu spravu
SendClientMessage(playerid,COLOR_RETARD,"-----> Jedna sprava za 5 SEKUND");// upozornenie
return 0;// zamedzenie odoslaniu spravy >> spominana hodnota false
} else {// opacny pripad ked sprava este nebola odoslana
message[playerid] = 1;//nastavime odoslanie spravy
SetTimerEx("spam",5000,0,"i",playerid);//timer ktory resetne hodnotu message za 5 sekund
}
return 1;
}
- 3.Spravíme si ešte funkciu pre timer ktorá resetne hodnotu message...Môže to vyzerať takto:
forward spam(playerid); //nezabudnite forward
public spam(playerid)
{
message[playerid] = 0;//reset hodnoty...
}
Nemalo by to byť nejaké extra náročné. Ale je to veľmi užitočné.
3) Move Object
if(strcmp(cmd, "/otevrit", true) == 0) { 4) Povolania
brana = CreateObject(IDobjektu, Xfl, Yfl, Zfl, Rotx, Roty, Rotz);
MoveObject(brana, PohybnaX, PohybnaY, PohybnaZ, Rychlost);
SendClientMessage(playerid, COLOR_JAKAKOLIV,"** Brana je otevrena.");
return 1;
}
if(strcmp(cmd, "/zavrit", true) == 0) {
MoveObject(brana, Xfl, Yfl, Zfl, Rychlost);
SendClientMessage(playerid, COLOR_JAKAKOLIV,"** Brana je zavrena.");
return 1;
}
if(IsPlayerInSphere(playerid,205.9575,-229.6653,1.7786,5) == 1) { -IsPlayerInSphere. Veľmi dôležite. Namiesto súradníc si dajte vaše. To 5 je radius čiže dosah.
new pname[MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
format(string, sizeof(string), " %s sa stal taxikárom!!", pname);
SendClientMessageToAll(COLOR_RED, string);
printf(string);
povolanie[playerid] = 1; -nastaví povolanie 1. Pri iných povolaniach to bude 2,3,4...
SetSpawnInfo(playerid,1,71,203.9847,-236.9536,1.6733,178.2899,0,0,0,0,0,0); -Tu sa bude hráč spawnovať
SetPlayerInterior(playerid,0); -Nastaví interiér 0 čo je vonku. Interiéri budov zistíte priamo v hre príkazom /interior
SpawnPlayer(playerid); -Spawne hráča
}
return 1;
}
{
if(GetPlayerDistanceToPointEx(playerid,x,y,z) < radius){
return 1;
}
return 0;
}
{
new Float:x1,Float:y1,Float:z1;
new Float:tmpdis;
GetPlayerPos(playerid,x1,y1,z1);
tmpdis = floatsqroot(floatpower(floatabs(floatsub(x,x1)),2)+floatpower(floatabs(floatsub(y,y1)),2)+floatpower
return floatround(tmpdis);
}
{
GameTextForPlayer(playerid,"~r~Ak sa chces stat taxikarom napis ~g~/taxikar",3000,5);
}