Jump to content

[REZOLVAT] Cum pot face un payday individual


Xenon
 Share

Recommended Posts

  • Username : Xenon
  • Problema întâlnită: Salut, a-si vrea sa fac un payday individual dar nustiu cum
  • Detalii despre problemă: Salut, a-si vrea sa fac un payday individual dar nustiu cum
  • Ce ai încercat să faci înainte să postezi?: -
  • Cod sursa (recomandat pastebin.com) :  -
  • Alte detalii : Salut, a-si vrea sa fac un payday individual dar nustiu cum
Link to comment
Share on other sites

Ai nevoie de o variabila care stocheaza secundele pana la payday, aceasta scade din sec in sec cat timp jucatorul este conectat, cand ajunge la 0 i se da payday si se reseteaza la 3600.

Respecta si vei fi respectat.

 

BigInt Pawn:

Pacman C++: 

Snake C++:

Minesweeper C++:

 

mattbb.cash

leaks.ro

Link to comment
Share on other sites

1 hour ago, iMatt said:

Ai nevoie de o variabila care stocheaza secundele pana la payday, aceasta scade din sec in sec cat timp jucatorul este conectat, cand ajunge la 0 i se da payday si se reseteaza la 3600.

A inteles tot :)))

 

Link to comment
Share on other sites

Faci un timer care sa actioneze la fiecare secunda, cand variabila player-ului pentru secunde ajunge la 3600 ii dai payday-ul. Sper ca ai inteles.

SetTimer("GlobalTimer", 1000, true);

forward GlobalTimer();
public GlobalTimer() {
	foreach(new i : Player) {
		if(variabila1[playerid] == 3600) PayDay(playerid);
	}
	return 1;
}

forward PayDay(playerid);
public PayDay(playerid) {
	variabila1[playerid] = 0;
	...
	return 1;
}


variabila1[playerid] = Variabila care stocheaza secundele jucatorului, difera la gm-uri.

Variabila va trebuii sa o pui 0 pentru a incepe de la inceput sa numere pana la 3600.

Sau ai mai putea sa faci un timer pentru jucator in loc de global, insa mai usor este asa daca ai salvare mysql, gen sa pluseze direct la cat a ramas.

Edited by TheSnitzelAdv

 

 

Link to comment
Share on other sites

  • Retired
3 hours ago, TheSnitzelAdv said:

Faci un timer care sa actioneze la fiecare secunda, cand variabila player-ului pentru secunde ajunge la 3600 ii dai payday-ul. Sper ca ai inteles.


SetTimer("GlobalTimer", 1000, true);

forward GlobalTimer();
public GlobalTimer() {
	foreach(new i : Player) {
		if(variabila1[playerid] == 3600) PayDay(playerid);
	}
	return 1;
}

forward PayDay(playerid);
public PayDay(playerid) {
	variabila1[playerid] = 0;
	...
	return 1;
}


variabila1[playerid] = Variabila care stocheaza secundele jucatorului, difera la gm-uri.

Variabila va trebuii sa o pui 0 pentru a incepe de la inceput sa numere pana la 3600.

Sau ai mai putea sa faci un timer pentru jucator in loc de global, insa mai usor este asa daca ai salvare mysql, gen sa pluseze direct la cat a ramas.

si variabila 1 unde i-ai dat ++? sau += 1?

Link to comment
Share on other sites

Facem variabila pLogin, pentru a verifica daca este conectat si logat.

new pLogin[MAX_PLAYERS]; // aceasta variabila i se poate atribui tuturor playerilor de pe server

Mergem la OnPlayerConnect si punem:

public OnPlayerConnect(playerid) { pLogin[playerid] = 0; // cand se va conecta pLogin va avea valoarea 0 // liniile voastre return 1; }


Mergem tot la enum-ul pInfo si punem:

enum pInfo { // variabilele voastre pPayday, pTimePayday };


Mergem la callback-ul OnLogin si adaugam:

public OnLogin(playerid)// facem publicul
{
    new rows, fields,temporar[200];
    cache_get_data(rows, fields);
    if(rows)
    {
        // extragerile voastre
        P_Data[playerid][pPayday] = cache_get_field_content_int(0, "PayDay");
        P_Data[playerid][pTimePayday] = cache_get_field_content_int(0, "TimePayDay");
        
        pLogin[playerid] = 1;// cand se va loga, pLogin va avea valoarea 1
    }
    ...
}


Acum vom face un callback separat in care vom face un algoritm(o operatie matematica) in care vom seta timpul de payday.

forward PaydayIndividual();
public PaydayIndividual()
{
    new query[80]; // Cream query-ul cu care vom trimite mesajul in baza de date
    foreach(Player, i)
    {
        if(pLogin[i] == 1)
        {
            if(P_Data[i][pTimePayday] > 0)
            {
                P_Data[i][pTimePayday] --;
                
                mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `TimePayDay`='%d' WHERE `Nume`='%e'", P_Data[i][pTimePayday], GetName(i));// facem update tuturor jucatorilor
                mysql_query(handle, query);//trimitem update-ul in baza de date.
            }
            if(P_Data[i][pTimePayday] <= 0)
            {
                P_Data[i][pPayday] += 1;
                
                mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `PayDay`='%d' WHERE `Nume`='%e'", P_Data[i][pPayday], GetName(i));// facem update tuturor jucatorilor
                mysql_query(handle, query);//trimitem update-ul in baza de date.
                
                P_Data[i][pTimePayday] = 60 * 60;
                
                mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `TimePayDay`='%d' WHERE `Nume`='%e'", P_Data[i][pTimePayday], GetName(i));// facem update tuturor jucatorilor
                mysql_query(handle, query);//trimitem update-ul in baza de date.
            }
        }
    }
    return 1;
}

 

Adaugam un timer la OnGameModeInit pentru a fi activ:

public OnGameModeInit() { SetTimer("PaydayIndividual", 1000, 1);// se verifica odata pe secunda daca jucatorul a stat pe server o ora. // liniile voastre return 1; }


Si ca atunci cand jucatorul se inregistreaza pentru prima data, sa nu primeasca payday adaugam la dialogul de register:

case DIALOG_REGISTER:
        {
            if(!response)
                    return Kick(playerid);
            if(response)
            {
                if(!strlen(inputtext)
                        return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Parola incorecta!", "Introdu-ti o parola pentru a te inregistra pe server! \n", "Inregistreaza", "Exit");

                GetPlayerIp(playerid, ip, sizeof(ip));
                mysql_format(handle, query, sizeof(query), "INSERT INTO conturi (Nume, Parola, IP) VALUES ('%s', '%e', '%s')", GetName(playerid), inputtext, ip);
                mysql_tquery(handle, query);
                
                P_Data[playerid][pTimePayday] = 60 * 60;
                
                mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `TimePayDay`='%d' WHERE `Nume`='%e'", P_Data[playerid][pTimePayday], GetName(playerid));// facem update tuturor jucatorilor
                mysql_query(handle, query);//trimitem update-ul in baza de date.
                // liniile voastre..
                
            }
            return 1;
        }

Credite : WiDuAlK

 

vldgIri.png

YouTube : Click Redirect Channel

Discord : Arabu#9330

Canal Discord : Click To Join

Facebook : Click Facebook

Instagram : Click Instagram

Skype : Mita.Official

Așteptăm jucatorii de PUBG Mobile și pe serverul de Discord PUBG Mobile România!

Join PUBGM România

Respectă și vei fi respectat !

 

 

 

 

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...