Peršokti į turinį

[Pamoka] [GRP] Darbas su direktoriumi.


siusius5

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 4154 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Kuriau ne as bet ikeliau kad nereiktu ieskoti po visus tinklapius.

a kagi dakaset su savo temom nusprendziau padaryt pamoka 12.gif Gal bent kiek maziau floodins 1.gif

Taigi pradekim.

1 punktas.

Pirmiausia nueinam i DEBUG, ar paprasciausiai i bet koki serveri ir issisaugojam marskiniu vieta.

Tai padaryti galite paspaude [t] ir parase /save darbas

2 punktas.

Nu va turim koordinates dabar einam i data/pickups.txt po enum pdata{ irasome darbas, , tada einam i apacia ir prie visu pickupu irasome

Kodas: Pasirinkti visus

pickups[0][darbas]=CreatePickupA(1275,2,X,Y,Z); // darbas

Kad gautumet X,Y,Z nueikite i GTA direktorija ten rasite savepositions.txt ir ten bus eilute panasi i sita:

Kodas: Pasirinkti visus

AddPlayerClass(123,222.1660,1190.4722,1080.2578,88.9968,0,0,0,0,0,0); // darbas

Ta vieta kur pabraukiau kopijuojate is savo savepositions.txt i pickups.txt ten kur minejau anksciau.

3 punktas.

Sukurem pickupa, dabar reikia padaryti kad tas pickupas ka nors darytu kaj ant jo uzlipame (siuo atveju idarbintu zaideja.

Kodas: Pasirinkti visus

if(pickupid == pickups[0][darbas]) // jusu pickupas

{

if(playerDB[playerid][specialybe]==SPECID) // cia irasome ID toki kurio dar nera

{

if(playerDB[playerid][uniformd]) // si funkcija tikrina ar darbuotojas norintis iseit is darbo su uniforma ar be

{

SendClientMessage(playerid,COLOR,"* Jus esate su uniforma. Pries palikdami musu stoti ja nusivilkite.");

return 1;

}

// isejimas is darbo

SendClientMessage(playerid,COLOR,"*darbas: Atsisakete darbo!"); // pranesa zaidejui kad isejo is darbo

playerDB[playerid][specialybe]=0; // nustato zaidejo specialybe i 0

playerDB[playerid][uniforma]=-1; // atima uniforma

}else if(playerDB[playerid][specialybe]==0){

if(GetPlayerScore(playerid)<100) // tikrina ar zaidejas turi ne maziau (siuo atveju 100 xp)

{

SendClientMessage(playerid,COLOR_MEDIUMMAGENTA,"* darbas: Atsiprasome, jus dar nepakankamai patyres! (xp > 100)");

SendClientMessage(playerid,COLOR_MEDIUMMAGENTA,"* darbas: Sugrizkite veliau.");

return 1;

}

if(!playerDB[playerid][teises]) // tikrina ar zaidejas turi teises

{

SendClientMessage(playerid,COLOR_MEDIUMMAGENTA,"* darbas: Atsiprasome, bet turite tureti vairavimo teises.");

return 1;

}

SendClientMessage(playerid,COLOR,"* darbas: Sveikinu, prisidejus prie musu!"); // jei viskas atitinka tuomet idarbinam zmogu.

playerDB[playerid][drabuziai]=GetPlayerSkin(playerid); // priskiriame uniforma

if(playerDB[playerid][lytis]==1) // jei vyras

{

SetPlayerSkin(playerid,skin id);

playerDB[playerid][uniforma]=skin id; // vyro uniforma

ApplyAnimation(playerid,"PLAYIDLES","stretch",4.1,0,0,0,0,0); // cia animation :)

}else{

SetPlayerSkin(playerid,skin id); // jei moteris

playerDB[playerid][uniforma]=skin id;

ApplyAnimation(playerid,"PLAYIDLES","stretch",4.1,0,0,0,0,0);

}

playerDB[playerid][uniformd]=true; // patwirtina kad zmogus turi uniforma

playerDB[playerid][specialybe]=SPEC ID; // irasykite ta pati kaip pradzioje

}else{

SendClientMessage(playerid,COLOR,"*darbas: Negalite dirbti dvieju darbu!");

}

return 1;

}

4 punktas.

Na va iprastas darbas sukurtas, pareikime prie direktoriaus.

Einame i data/playerDB.txt ir virsuje rasome:

Kodas: Pasirinkti visus

#define LEAD_DARBAS ID // ID pasirinkite patys

Dabar einame i data/functions.txt ir virsui prie kitu stock irasome:

Kodas: Pasirinkti visus

stock SendMessageToDarbas(color,text[])

{

for(new i=0; i<MAX_PLAYERS; i++)

{

if(IsPlayerConnected(i))

{

if(playerDB[specialybe]==SPECID)

{

SendClientMessage(i,color,text);

}

}

}

}

tada tame paciame functions.txt susirandame

Kodas: Pasirinkti visus

stock GetJobFromFaction(faction)

{

ir ten tarp visu kitu iterpiame

Kodas: Pasirinkti visus

else if(faction == LEAD_DARBAS) return SPECID;

5 punktas.

Viskas su data failais berods susitwarkem dabar gryztam i GM.

Ten kur raseme kas vyksta uzlipus ant pickupo po situo:

Kodas: Pasirinkti visus

if(!playerDB[playerid][teises]) // tikrina ar zaidejas turi teises

{

SendClientMessage(playerid,COLOR_MEDIUMMAGENTA,"* darbas: Atsiprasome, bet turite tureti vairavimo teises.");

return 1;

}

irasykime:

Kodas: Pasirinkti visus

if(!playerDB[playerid][leanvited][***])

{

SendClientMessage(playerid,COLOR_MEDIUMMAGENTA,"* dabras: Musu direktorius neinformuotas apie jus, pries istojant, turite pasikalbeti su juo.");

return 1;

}

*** paaiskinimas: irasome skaiciu vienu mazesni nei LEAD IDAS tarkim playerDB buvom irase #define LEAD_DARBAS 10 taj sklaiusteliuose rasysim 9.

6 punktas.

na dabar darysim racija, /priimt /ismest komandas.

susirandame /r komanda

ten bus kazkas panasaus i:

Kodas: Pasirinkti visus

if(!strcmp(cmdtext, "/r", true,2))

{

if(!(playerDB[playerid][specialybe] == 1 || playerDB[playerid][specialybe] == 2 || playerDB[playerid][specialybe] == 3)

{

SendClientMessage(playerid,COLOR,"* Jus neturite racijos.");

return 1;

}

Pabrauktoje eiluteje irasom savo darba taj turetu atoryti taip:

Kodas: Pasirinkti visus

if(!(playerDB[playerid][specialybe] == 1 || playerDB[playerid][specialybe] == 2 || playerDB[playerid][specialybe] == 3 || playerDB[playerid][specialybe] == SPECID)

Dabar siek tiek zemiau turetume rasti eilute panasia i sita:

Kodas: Pasirinkti visus

if(playerDB[playerid][specialybe] == 1) SendMessageToCops(TEXTCOL_WHITE,msg);

po ja rasome:

Kodas: Pasirinkti visus

else if(playerDB[playerid][specialybe] == SPECID) SendMessageToDarbas(TEXTCOL_WHITE,msg);

Viskas! racija padaryta.

Einame prie /priimt /ismest.

Susiraskite /priimt komanda ir kur nors vidury iterpkite sita eilute:(pamatysite ten 5-6 gal ir daugiau gal ir maziau panasiu eiluciu i sia:)

Kodas: Pasirinkti visus

else if(playerDB[playerid][plead] == LEAD_DARBAS) SendClientMessage(id,TEXTCOL_RED,"* Jus kvieciamas i darba!");

ta pati darom su /ismest tik ten irasom stai tokia eilute:

Kodas: Pasirinkti visus

else if(playerDB[playerid][plead] == LEAD_DARBAS) SendClientMessage(id,TEXTCOL_RED,"* Jus ismestas is darbo!");

7 punktas.

Na ka galiausiai priskirkime darbui masina ir padarykime kad eitu pinigai i pelna ;)

taigi kurnors po

Kodas: Pasirinkti visus

public OnPlayerStateChange(playerid, newstate, oldstate)

rasome

Kodas: Pasirinkti visus

if(model == Masinosid)

{

if(spec == specid)

{

SendClientMessage(playerid,0x00FF00AA,"* uz vazinejima firmai uzdirbsite 40LT/min"); // sia suma nustatysite siek tiek veliau :)

return 1;

}

SendClientMessage(playerid,0x00FF00AA,"* Jus ne darbuotojas!");

Stop(playerid);

return 1;

}

Na va o dabar padarykime kad pinigai eitu i pelna 1.gif

na va nelabai moku paaiskinti kur ja reiks irasyt, na meginkim turetu rasti.

Spaudziate CTRL+f ir irasote

Kodas: Pasirinkti visus

((model

jums turejo ismesti panasia eilute i sia:

Kodas: Pasirinkti visus

if((model == 598 || model== 523 || model == 599) && playerDB[playerid][specialybe] == 1) pelnas[0]+=40;

po ja rasome sawo darbo atlyginima, tai turetu atrodyti taip:

Kodas: Pasirinkti visus

else if(model == MasinosID && playerDB[playerid][specialybe] == SPECID) pelnas[***]+=40;

*** paaiskinimas: i situos sklaistelius irasome skaiciu vienu mazesni uz specialybes ID, taj yra pvz specialybes id pasirinkot 11 taj [pelnas][10] manau supratot 1.gif

8 punktas.

Jei kompiliuojant meta stai tokius errorus:

Kodas: Pasirinkti visus

array index out of bounds (variable "playerDB")

Jei toks erroras kaip paminetas virsui taj jums reikia eiti i data/playerDB

ten rasite eilute leaninvited[*skaicius]

*skaicius - taj gali buti bet koks irasytas skaicius, paimkite ir padidinkite ji. didinkite tol kol nebemes error. (tai yra limitas)

Kodas: Pasirinkti visus

array index out of bounds (variable "pelnas")

Jei erroras toks kaip antrasis jums reikia eiti i data/pelnas.txt ir padidinti pelno limita, su pelnu irgi tas pats didinkite tol kol nebemes sitokio error.

Pabaiga

Negailekit +rep.

  • Teigiamai 4
  • Neigiamai 1
Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 4154 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Svečias
Ši tema yra užrakinta.
  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...