Jump to content
  • 0

GETGIFT PROBLEM


OscarJoaca

Question

Problema intalnita (descriere): Am un bug la getgift, poti da de cate ori vrei... Si vreau sa fac sa poti da o data la 2 ore...
Ero(area / rile) / warning-(ul / urile): -
Liniile de cod / sursa / script-ul(obligatoriu): 

CMD:getgift(playerid, params[])
{
   if(gPlayerLogged[playerid] == 0) return SendClientMessage(playerid, COLOR_LIGHTRED, "Trebuie sa te loghezi  mai intai.");
   if(IsPlayerInAnyVehicle(playerid)) return SCM(playerid,COLOR_WHITE,"{37B9C8}Please get out of the car.");
   if(!IsPlayerInRangeOfPoint(playerid, 7.0, 1516.1532,-1655.5228,13.5392))  return SCM(playerid,COLOR_WHITE, "Nu esti la locul unde poti folosi [/getgift] (LSPD).");

   {
       {
            new Random = random(6);
            switch(Random)
            {
                case 0:
                {
                    GivePlayerCash(playerid,25000);
                    Update(playerid,pCashx);
                    SendClientMessage(playerid, COLOR_WHITE, "Felicitari!Ai castigat 25.000$");
                }
                case 1:
                {
                      SendClientMessage(playerid, COLOR_WHITE, "Felicitari!Ai castigat 5 ppoints");
                   }
                case 2:
                {
                    PlayerInfo[playerid][pMats] += 50000;
                    Update(playerid,pMatsx);
                    SendClientMessage(playerid, COLOR_WHITE, "Felicitari!Ai castigat 50000 materiale");
                }
                case 3:
                {
                    PlayerInfo[playerid][pDrugs] += 10;
                    new wakaname[25],str2[128];
                    GetPlayerName(playerid,wakaname,sizeof(wakaname));
                    format(str2,sizeof(str2),"UPDATE users SET `Drugs`='%d' WHERE `name`='%s'",PlayerInfo[playerid][pDrugs],wakaname);
                    mysql_query(SQL,str2);
                    SendClientMessage(playerid, COLOR_WHITE, "Felicitari!Ai castigat 10 grame de droguri");
                }
                case 4:
                {
                    PlayerInfo[playerid][pExp] += 2;
                    SendClientMessage(playerid, COLOR_WHITE, "Felicitari!Ai castigat 2 respect points");
                }
                case 5:
                {
                    SendClientMessage(playerid, COLOR_WHITE, "Felicitari!Ai castigat inca 2 cadouri!");
                }
            }
        }
   }
   return 1;
}


Imagini / Video (optional): -
Ati incercat sa rezolvati singur?: Da, dar nu am reusit sa fac un timer... Tin sa mentionez ca am GM-ul Saints.

Edited by OscarJoaca
Link to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 0

Defineste o variabila la inceputul gamemode-ului , de exemplu :

new TimerGetGift[MAX_PLAYERS];

La "public OnPlayerConnect" vei adauga :

TimerGetGift[playerid] = 0;

La comanda /getgift , la inceput , vei adauga asa :

if(TimerGetGift[playerid] >= 1)
{ 
    SendClientMessage(playerid, -1, "Ai luat deja un cadou, trebuie sa astepti doua ore !");
    return 1;
}

Apoi urmeaza ca la fiecare case primit sa adaugi urmatoarea linie :

TimerGetGift[playerid] = 1;
SetTimerEx("NewGetGift", 7200000, false, "i", playerid);

Asa vei adauga la fiecare case la care vrei sa se adauge timer-ul .

Acum, undeva mai jos, vei face un public de genul :

forward NewGetGift();
public NewGetGift()
{
    TimerGetGift[playerid] = 0;
}

Cam asta e ceea ce ai de facut .

 

Sa-ti explic acum niste lucruri :

1.TimerGetGift poate fi inlocuit cu orice variabila vrei tu, eu ti-am dat un exemplu , tu poti pune orice in loc de TimerGetGift .

2.TimerGetGift[playerid] = 0; inseamna ca player-ul nu a luat cadou si il va lasa sa foloseasca comanda /getgift .

3.TimerGetGift[playerid] = 1; inseamna ca player-ul a luat cadou si nu il va lasa sa foloseasca comanda /getgift daca adaugi linia pe care ti-am dat-o mai sus .

4.SetTimerEx("NewGetGift", 7200000, false, "i", playerid); este timer-ul de 2 ore setat pentru player-ul care a dat /getgift , acel false inseamna ca timer-ul nu se repeta dupa doua ore, ceea ce-i ofera player-ului posibilitatea sa dea /getgift din nou .

5.public NewGetGift(); este functia care dupa doua ore ii va seta player-ului variabila "TimerGetGift[playerid]" la 0, adica player-ul va putea da /getgift iar dupa ce trece timer-ul explicat mai sus . In loc de NewGetGift tu vei putea pune orice doresti , eu am pus un exemplu . Dar ai grija, daca schimbi numele de la public, sa-l schimbi si de la forward .

 

Iti urez mult succes !

Edited by NoNamed
Link to comment
Share on other sites

  • 0

Defineste o variabila la inceputul gamemode-ului , de exemplu :

new TimerGetGift[MAX_PLAYERS];

La "public OnPlayerConnect" vei adauga :

TimerGetGift[playerid] = 0;

La comanda /getgift , la inceput , vei adauga asa :

if(TimerGetGift[playerid] >= 1)
{ 
    SendClientMessage(playerid, -1, "Ai luat deja un cadou, trebuie sa astepti doua ore !");
    return 1;
}

Apoi urmeaza ca la fiecare case primit sa adaugi urmatoarea linie :

TimerGetGift[playerid] = 1;
SetTimerEx("NewGetGift", 7200000, false, "i", playerid);

Asa vei adauga la fiecare case la care vrei sa se adauge timer-ul .

Acum, undeva mai jos, vei face un public de genul :

forward NewGetGift();
public NewGetGift()
{
    TimerGetGift[playerid] = 0;
}

Cam asta e ceea ce ai de facut .

 

Sa-ti explic acum niste lucruri :

1.TimerGetGift poate fi inlocuit cu orice variabila vrei tu, eu ti-am dat un exemplu , tu poti pune orice in loc de TimerGetGift .

2.TimerGetGift[playerid] = 0; inseamna ca player-ul nu a luat cadou si il va lasa sa foloseasca comanda /getgift .

3.TimerGetGift[playerid] = 1; inseamna ca player-ul a luat cadou si nu il va lasa sa foloseasca comanda /getgift daca adaugi linia pe care ti-am dat-o mai sus .

4.SetTimerEx("NewGetGift", 7200000, false, "i", playerid); este timer-ul de 2 ore setat pentru player-ul care a dat /getgift , acel false inseamna ca timer-ul nu se repeta dupa doua ore, ceea ce-i ofera player-ului posibilitatea sa dea /getgift din nou .

5.public NewGetGift(); este functia care dupa doua ore ii va seta player-ului variabila "TimerGetGift[playerid]" la 0, adica player-ul va putea da /getgift iar dupa ce trece timer-ul explicat mai sus . In loc de NewGetGift tu vei putea pune orice doresti , eu am pus un exemplu . Dar ai grija, daca schimbi numele de la public, sa-l schimbi si de la forward .

 

Iti urez mult succes !

Multumesc!

Am intalnit niste errori:

\\psf\Home\Desktop\Serioux RPG V0.5I\Serioux RPG V0.5I\gamemodes\serioux.pwn(17064) : warning 217: loose indentation
\\psf\Home\Desktop\Serioux RPG V0.5I\Serioux RPG V0.5I\gamemodes\serioux.pwn(17070) : warning 217: loose indentation
\\psf\Home\Desktop\Serioux RPG V0.5I\Serioux RPG V0.5I\gamemodes\serioux.pwn(17078) : warning 217: loose indentation
\\psf\Home\Desktop\Serioux RPG V0.5I\Serioux RPG V0.5I\gamemodes\serioux.pwn(17089) : warning 217: loose indentation
\\psf\Home\Desktop\Serioux RPG V0.5I\Serioux RPG V0.5I\gamemodes\serioux.pwn(17096) : warning 217: loose indentation
\\psf\Home\Desktop\Serioux RPG V0.5I\Serioux RPG V0.5I\gamemodes\serioux.pwn(42264) : error 017: undefined symbol "playerid"
Pawn compiler 3.2.3664              Copyright (c) 1997-2006, ITB CompuPhase


1 Error.

 

Eu am definit playerid, nush dece nu vrea sa-l citeasca in situatia asta "    TimerGetGift[playerid] = 0;"

Link to comment
Share on other sites

  • 0

@NoNamed, nu ma pricep eu foarte bine, dar acel timer nu este facut pe playerid? Adica un player(playerid = 1) isi ia /getgift, iese de pe server si intra altul, care primeste playerid=1. Acest nou jucator poate folosi comanda?

Nu mai deschideti in pu*a mea servere de SA:MP !

Jucati-va pe cele care sunt !   Sunt suficiente !

Reguli de bun simt:

1. Nu faceti reclama unde nu trebuie !

2. Nu injurati ca la usa cortului !

3. Daca esti analfabeti, taci din gura !

4. Nu abuza de 'scuze', 'din greseala' !

 

My work ::: http://pastebin.com/VRNRcaAs

Link to comment
Share on other sites

  • 0

Nu ai asezat bine codul , primele warning-uri iar la cel cu playerid, arata-mi linia .

Revolvat faza cu warning-urile

 

\\psf\Home\Desktop\Serioux RPG V0.5I\Serioux RPG V0.5I\gamemodes\serioux.pwn(42264) : error 017: undefined symbol "playerid"
Pawn compiler 3.2.3664              Copyright (c) 1997-2006, ITB CompuPhase


1 Error.

Linia: 

    TimerGetGift[playerid] = 0;

Link to comment
Share on other sites

  • 0

Revolvat faza cu warning-urile

 

\\psf\Home\Desktop\Serioux RPG V0.5I\Serioux RPG V0.5I\gamemodes\serioux.pwn(42264) : error 017: undefined symbol "playerid"
Pawn compiler 3.2.3664              Copyright (c) 1997-2006, ITB CompuPhase


1 Error.

Linia: 

    TimerGetGift[playerid] = 0;

forward NewGetGift(playerid);
public NewGetGift(playerid)
{
    TimerGetGift[playerid] = 0;
}

Nu mai deschideti in pu*a mea servere de SA:MP !

Jucati-va pe cele care sunt !   Sunt suficiente !

Reguli de bun simt:

1. Nu faceti reclama unde nu trebuie !

2. Nu injurati ca la usa cortului !

3. Daca esti analfabeti, taci din gura !

4. Nu abuza de 'scuze', 'din greseala' !

 

My work ::: http://pastebin.com/VRNRcaAs

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • 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.