Jump to content
Autentificarea cu Google și Facebook nu mai este disponibilă. ×

Recommended Posts

Posted

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.

 

Posted
2 hours ago, NighTeN said:

Nice

Mersi :) 

NU E DE COMPETENTA MEA SA FAC LUMEA MAI BUNA.

 

  • 4 weeks later...
Posted

up , este bine ca oamenii inca se mai gandesc la cei care sunt noi si ii ajuta gratis :)

Posted

Ai uitat sa faci sa poata vanda pestele, eventual daca este un gamemode de la 0 poti face prin actionarea unei taste. ex: tasta f

Oricum e bine de inceput pentru altii. +1

  • 5 months later...
Posted

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:'

Posted
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.

  • 5 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • 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.