[TuT] : Izrada honorarnog posla

Započeo ...Neno..., Januar 19, 2012, 12:26:35 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

...Neno...

Pozdrav,
U ovom tutorialu cu vam pokazati kako napraviti honorarni posao.


Ako zelite praviti komandu sa ZCMD (a ja cu upravo tako radit) skiniti ZCMD.inc (click)
Kada ste skinuli ZCMD.inc trebate ga staviti u "include" folder koji se nalazi u folderu "pawno".Tek kada ste to uradili mozemo krenuti sa radom.


Na pocetak skripte dodajte:
#include <a_samp>
#include <zcmd>

Ako ovo nemate,necete moci dalje raditi tj. nista vam nece raditi.Idemo dalje...


Da nebi imali slucajno problem sa bojama ja cu vam dati popis svih boja:
0.3c boje
#define BIJELA             "{FFFFFF}"
#define CRNA               "{0E0101}"
#define SIVA               "{C3C3C3}"
#define ZELENA             "{6EF83C}"
#define CRVENA             "{F81414}"
#define ZUTA               "{F3FF02}"
#define NARANDZASTA        "{FFAF00}"
#define LIME               "{B7FF00}"
#define CYAN               "{00FFEE}"
#define SVJETLO_PLAVA      "{00C0FF}"
#define PLAVA              "{0049FF}"
#define COL_MAGENTA        "{F300FF}"
#define COL_VIOLET         "{B700FF}"
#define ROZA               "{FF00EA}"
#define COL_MARONE         "{A90202}"
#define COL_PARAM          "{3FCD02}"
#define COL_VALUE          "{A3E4FF}"
#define COL_RULE           "{F9E8B7}"
#define COL_RULE2          "{FBDF89}"
#define COL_RWHITE         "{FFFFFF}"
#define SVJETLO_ZELENA     "{C9FFAB}"
#define SVJETLO_CRVENA     "{FFA1A1}"
#define SVJETLO_CRVENA2    "{C77D87}"

Obicne boje
#define COLOR_GRAD1 0xB4B5B7FF
#define COLOR_GRAD2 0xBFC0C2FF
#define COLOR_GRAD3 0xCBCCCEFF
#define COLOR_GRAD4 0xD8D8D8FF
#define COLOR_GRAD5 0xE3E3E3FF
#define COLOR_GRAD6 0xF0F0F0FF
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_GREEN 0x9EC73DAA
#define COLOR_GROVE 0x00FF00FF
#define COLOR_RED 0xAA3333AA
#define COLOR_LIGHTRED 0xFF6347AA
#define COLOR_LIGHTBLUE 0x33CCFFAA
#define COLOR_LIGHTGREEN 0x9ACD32AA
#define COLOR_YELLOW 0xDABB3EAA
#define COLOR_YELLOW2 0xF5DEB3AA
#define COLOR_WHITE 0xFFFFFFAA
#define COLOR_FADE1 0xE6E6E6E6
#define COLOR_FADE2 0xC8C8C8C8
#define COLOR_FADE3 0xAAAAAAAA
#define COLOR_FADE4 0x8C8C8C8C
#define COLOR_FADE5 0x6E6E6E6E
#define COLOR_PURPLE 0xC2A2DAAA



Pronadjite sad "public OnPlayerEnterCheckpoint(playerid)" te ispod toga dodajte sljedece:
if(GetPVarInt(playerid,"PoceoWork") == 1)
{
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 453)
{
if(GetPVarInt(playerid,"CP") == 1)//Ispitivanje da li CP na 1
{
if(IsPlayerInRangeOfPoint(playerid,5.0,2617.9966,-2482.6226,-0.3542))//Tu kordinate za CP1 kao u komandi
{
SetPlayerCheckpoint(playerid,133.2870,-1937.5846,-0.4944,5.0);
SetPVarInt(playerid,"CP",2);//Stavimo "CP" na 2
SendClientMessage(playerid, COLOR_WHITE, ">>Odvezi opremu sad do svjetleonika.");
}
}
if(GetPVarInt(playerid,"CP") == 2)//Ispitivanje da li CP na 2
{
if(IsPlayerInRangeOfPoint(playerid,5.0,133.2870,-1937.5846,-0.4944))//Tu kordinate za CP2 kao iznad
{
SetPlayerCheckpoint(playerid,1142.1008,-2467.3606,-0.5795,5.0);
SetPVarInt(playerid,"CP",3);//Stavimo "CP" na 3
SendClientMessage(playerid, COLOR_WHITE, ">>Sad se vrati do baze po platu.");
}
}
if(GetPVarInt(playerid,"CP") == 3)//Ispitivanje da li CP na 3
{
if(IsPlayerInRangeOfPoint(playerid,5.0,1142.1008,-2467.3606,-0.5795))//Tu kordinate za CP2 kao iznad
{
DisablePlayerCheckpoint(playerid);
SetPVarInt(playerid,"CP",0);//Stavimo "CP" na 0, jer prakticki zavrsavaju CP-evi
SendClientMessage(playerid, COLOR_WHITE, ">>Dobio si 1000$.");
GivePlayerMoney(playerid, 1000);
}
}
}
}
return 1;
}

if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 453) - Da li je igrac u vozilu ID 453
SetPlayerCheckpoint(playerid,133.2870,-1937.5846,-0.4944,5.0); - postavljanje cp-a
if(IsPlayerInRangeOfPoint(playerid,5.0,133.2870,-1937.5846,-0.4944)) - Da li je igrac na toj poziciji
if(GetPVarInt(playerid,"CP") == 1) - Ispitivanje da li CP na 1
SetPVarInt(playerid,"CP",3); - Stavimo "CP" na 3
SetPVarInt(playerid,"CP",0); - Stavimo "CP" na 0, jer prakticki zavrsavaju CP-evi
GivePlayerMoney(playerid, 1000) - davanje igracu 1000$

Eto,malo objasnjenje,sve imate objasnjeno gore u CODU ali evo,opet sam objasnio ono osnovno.


Sada trebamo napraviti komandu,a mozete i obrnuto,mozete prvo komandu pa tek onda CP-ove,ali evo,ja sam isao redom kako je u scripti.
Skroz na kraju scripte dodajte:
CMD:work(playerid, params[])
{
new pmodelid = GetVehicleModel(GetPlayerVehicleID(playerid));
if(pmodelid != 453 && pmodelid != 453) return SendClientMessage(playerid,COLOR_WHITE,"{FFAF00}| {FFFFFF}Greska{FFAF00} | Morate biti u brodu od vozaca brodova.");
    SetPVarInt(playerid,"PoceoWork", 1);//Da proveri da li je poceo sa tim poslom mogao sam i bez ovog ali neka znam sto
    SetPVarInt(playerid,"CP",1);//Koristicemo nama za CP
    SetPlayerCheckpoint(playerid,2617.9966,-2482.6226,-0.3542,5.0);//Stavi kordinate
    SendClientMessage(playerid, COLOR_WHITE, ">> Zapoceo si raditi,otidji po opremu za policiju (crveni marker na mapi).");
    return 1;
}

if(pmodelid != 453 && pmodelid != 453) - provjerava da li je igrac u vozilu ID 453
SetPVarInt(playerid,"PoceoWork", 1); - provjerava da li je poceo sa tim poslom
Eto,sve imate objasnjeno u CODU,ali evo,i ovde sam malo objasio,no vise sam isao kad budete ubacivali da sve vidite u scripti.


Credits:

  • Neno - radjenje tutoriala
  • Gagi - pomoc oko CPova + neka objasnjenja
  • LuKsA - takodje pomoc oko CPova + neka objasnjenja


Pozdrav,
            - Neno
Poslednja Izmena: Januar 19, 2012, 12:28:16 POSLE PODNE od ...Neno...


Sta ce ti toliko definiranih boja a koristis ih samo par...

Onako, nije lose, mada i nije nesto korisno. Ali pohvala za trud :)

...Neno...

Citat: [CЯP] joXy_ poslato Januar 19, 2012, 14:37:02 POSLE PODNE
Sta ce ti toliko definiranih boja a koristis ih samo par...

Onako, nije lose, mada i nije nesto korisno. Ali pohvala za trud :)
samo sam ih c/p..
@ hvala

Ne bih vam preporučio korištenje Per-player variable sistema (PVar) zato što je dosta sporiji od običnih varijabli , napravio sam test kao i još par frendova i izbacilo nam je da se normalne varijable izvrše 30 do 40 ms brže nego PVarovi.
"I'm a loser and a user so I don't need no accuser" - Billie Joe Armstrong

Mr.Gagi

Citat: Get busy living or Get busy dying poslato Januar 19, 2012, 16:25:19 POSLE PODNE
Ne bih vam preporučio korištenje Per-player variable sistema (PVar) zato što je dosta sporiji od običnih varijabli , napravio sam test kao i još par frendova i izbacilo nam je da se normalne varijable izvrše 30 do 40 ms brže nego PVarovi.
To sam mu i ja rekao da koristi obicne varijable jer sam mu samo dao primer sa PVar-ovima ali nije me poslusao :)

Ovo sada neće predstavljati problem što se koriste PV-arovi jer za male stvari kao ove su praktične, ja ih ne preporučam da se koriste za ono što im NIJE namjena, a to je RW (Read & Write) ali u file! Znači ako radiš 'bazu' sa PV-arovima i još ako imaš puno varijabli za čuvati tu nastaje problem i to veliki, još ako su index varova duži od 16 char (cell-ova) PV-ar je još sporiji! PVar sada ne stvara problem (u ovom primjeru) konkretna uporaba od mene se ne bi preporučila jer sam i sam na njima okusio lagg još prije otprilike godinu dana. Praktične su što se može slati statement u drugu skriptu (fs, inc...) BEZ uporabe dodatnog kreiranja .inc file-a s kojim će se spajati skripte, nego po imenu varijable se prenosi informacija.

Pogledajte što je i sam Yless rekao već o PV-arovima, koriste skroz drugačiji sustav memorije i to nije kalcor napravio bez razloga nego je napravio baš za ove stvari koje sam naveo u primjeru.
Kristijan Stipić

O tome govorim , sa malo per-player varijabli neće doći do lagova kao što si sam naveo (fs,inc...) ali ako se od toga GM pravi doće do velikih lagova i pogotovo ako imaš puno fajlova za isčitavat još ako ih r/w sa PVar-ovima doće do katastrofalnih lagova.
"I'm a loser and a user so I don't need no accuser" - Billie Joe Armstrong