Jump to content

TUTORIAL - Job Fisherman


RABIGKY

Recommended Posts

Hai noroc!

Astazi m-am decis sa va arat cum am facut eu job-ul de fisherman.

Job-ul nu este deloc unul wow, dar pentru inceput merge, voi puteti sa-l dezvoltati

sa-l faceti cum doriti..

In primul rand facem o  variabila de genu'

new CaughtFish[MAX_PLAYERS]; // Daca a prins peste sa nu mai poata pescuii in continuare.
new Job[MAX_PLAYERS]; // Daca are deja un job sa nu poata lua altul.

Mergem la enum pInfo (in cazul meu)

si adaugam.

enum pInfo
{
	pJobFish
}
new PlayerInfo[MAX_PLAYERS][pInfo];

Mai facem un enum, unde vom pune dialogurile

enum 
{
	DIALOG_JOBS
}

Bun, acum vom face comanda '/jobs' pentru a vedea job-urile de pe server.

CMD:jobs(playerid, params[])
{
    new string[80]; // Creem un string, l-am facut de 80 dar voi il puteti facei mai mare/mic in functie de caractere
    format(string, sizeof(string), "Fish\t\t%0.2f m", GetPlayerDistanceFromPoint(playerid, 2380.9233, 548.5172, 7.7802)); // Job-ul se numeste 'Fish' iar '%0.2f m' reprezinta distanta de la jucator la job
    ShowPlayerDialog(playerid, DIALOG_JOBS, DIALOG_STYLE_LIST, "JOBS", string, "Gata", "Anuleaza"); Si aici aratam dialog-ul
    return 1;
}

Mergem la OnDialogResponse si adaugam

case DIALOG_JOBS:
        {
            switch(listitem) // in functie de ce alege
            {
                case 0: // am facut doar un caz, caz-ul 'Fish'
                {
                    SetPlayerCheckpoint(playerid, 2380.9233, 548.5172, 7.7802, 5.0); // Daca apasa pe el ii seteaza checkpoint la job.
                    new string[60];
                    format(string, sizeof(string), "Ti-am pus un checkpoint pe harta (%0.2f m).", GetPlayerDistanceFromPoint(playerid, 2380.9233, 548.5172, 7.7802)); Aici il anuntam ca i-am pus checkpoint, si la ce distanta se afla fata de el.
                }
            }
        }

Vom creea comanda '/getjob'

CMD:getjob(playerid, params[])
{
    if(Job[playerid] == 1) 
        return SCM(playerid, COLOR_RED, "[JOB]: {FFFFFF}Ai deja un job, foloseste '/quitjob' pentru a demisiona."); // Daca are deja un job sa nu poata lua job-ul
    if(IsPlayerInRangeOfPoint(playerid, 5.0, 2380.9233, 548.5172, 7.7802)) // Daca se afla in locul potrivit
    {
        Job[playerid] = 1; // Ii setam sa aibe un job
        PlayerInfo[playerid][pJobFish] = 1; // Si ii setam JobFish 1 pentru a putea pescuii
        SCM(playerid, COLOR_CYAN, "[JOB]: Te-ai angajat ca Fisherman."); // Aici il anuntam ca s-a angajat
    }
    return 1;
}

Acum facem comanda '/quitjob'

CMD:quitjob(playerid, params[])
{
    if(Job[playerid] == 0)
        return SCM(playerid, COLOR_RED, "[JOB]: {FFFFFF}Nu ai nici un job."); // Daca nu are nici un job, nu poate demisiona
    SCM(playerid, COLOR_YELLOW, "[JOB]: Ai demisionat de la locu' de munca."); // il anuntam ca a demisionat.
    Job[playerid] = 0; // ii scoatem job-ul 
    PlayerInfo[playerid][pJobFish] = 0; // ii scoate si job-ul de pescar.
    // Aici puteti adauga mai multe PlayerInfo[playerid][pGarbageMan] = 0; sau ce job aveti voi pentru a nu mai putea lucra
    return 1;
}

Facem un timer de genu'

new timer_fish[MAX_PLAYERS];

Si comanda '/fish' unde vom folosi timer-ul si pe care o v-a folosi pentru a pescuii

CMD:fish(playerid, params[])
{
    if(!IsPlayerInRangeOfPoint(playerid, 30.0, 2380.9233, 548.5172, 7.7802))
        return SCM(playerid, COLOR_RED, "[JOB]: {FFFFFF}Nu te afli in locul potrivit."); // Daca nu se afla in locul potrivit il anuntam
    if(PlayerInfo[playerid][pJobFish] == 0)
        return SCM(playerid, COLOR_RED, "[FISH]: {FFFFFF} Nu ai job-ul de Fisherman."); // Daca nu are job-ul de Fisherman sa nu poate pescuii
    if(CaughtFish[playerid] == 1)
        return SCM(playerid, COLOR_RED, "[FISH]: {FFFFFF} Ai deja un peste du-te si vinde-l."); // Daca a prins deja un peste sa nu mai poata pescuii
    if(IsPlayerInAnyVehicle(playerid))
        return SCM(playerid, COLOR_RED, "[FISH]: {FFFFFF} Mai intai trebuie sa te dai jos din vehicul."); // Daca e intr-un vehicul mai intai sa se dea jos
    CaughtFish[playerid] = 1; // Aici ii setam ca a prins peste
    timer_fish[playerid] = SetTimerEx("Fish", 5000, false, "i", playerid); // Un timer de 5 secunde pentru a nu spama
    TogglePlayerControllable(playerid, false); // Sa nu se poata misca timp de 5 secunde
    return 1;
}

Si acum cand se termina timer-ul vom adauga

forward Fish(playerid);
public Fish(playerid)
{
    KillTimer(timer_fish[playerid]); // "Omoram" timer-ul
    TogglePlayerControllable(playerid, true); // Acum se poate misca 
    new amount = 10000 + random(40000); // Cand prinde un peste sa primeasca o suma intre 10.000 - 50.000 (schimbati cum vreti)
    new string[100];
    format(string, sizeof(string), "[FISH]: Ai prins un peste de $ %d, du-te si vinde-l la un 24/7,", amount); // il anuntam ca a prins un peste si cat costa acesta
    SCM(playerid, COLOR_YELLOW, string);
    return 1;
}

ASTA A FOST TUTORIALUL, NU ESTE NIMIC WOW DELOC!!

ESTE CEVA PENTRU INCEPATORI ( NU CA AS FI EU VREUN MARE SCRIPTER)!!

SPER CA V-A FOST DE FOLOS..

IMI CER SCUZE DACA AM GRESIT UNDEVA, MA ANUNTATI SI REZOLVAM :D 

VA PUP 😘 

  • Like 1
  • Upvote 3

NU E DE COMPETENTA MEA SA FAC LUMEA MAI BUNA.

 

Link to comment
Share on other sites

  • 4 weeks later...
  • 5 months later...

Help:

C:\Users\h\Desktop\un nou inceput\gamemodes\TutorialGM.pwn(313) : error 014: invalid statement; not in switch

Citat

case DIALOG_JOBS:
        {
            switch(listitem) // in functie de ce alege
            {
                case 0: // am facut doar un caz, caz-ul 'Fish'
                {
                    SetPlayerCheckpoint(playerid, 2380.9233, 548.5172, 7.7802, 5.0); // Daca apasa pe el ii seteaza checkpoint la job.
                    new string[60];
                    format(string, sizeof(string), "Ti-am pus un checkpoint pe harta (%0.2f m).", GetPlayerDistanceFromPoint(playerid, 2380.9233, 548.5172, 7.7802)); 
                }
            }
        }
    return 1;
}

Linia 313 este prima 'case DIALOG_JOBS:'

Link to comment
Share on other sites

La 26.01.2021 la 21:28, IosifR a spus:

Help:

C:\Users\h\Desktop\un nou inceput\gamemodes\TutorialGM.pwn(313) : error 014: invalid statement; not in switch

Linia 313 este prima 'case DIALOG_JOBS:'

Scoate `new string[60];` si pune-l inaintea switch block-ului.

Link to comment
Share on other sites

  • 5 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.