WTFCS Community | Gaming community @ since 2011
[TUTORIAL] Sistem Crate-uri [MySQL] by mihay111 - Printable Version

+- WTFCS Community | Gaming community @ since 2011 (https://wtfcs.com/forum)
+-- Forum: WTFCS - GAMING (https://wtfcs.com/forum/forumdisplay.php?fid=1035)
+--- Forum: Lumea jocurilor (https://wtfcs.com/forum/forumdisplay.php?fid=3072)
+---- Forum: SA:MP (https://wtfcs.com/forum/forumdisplay.php?fid=3077)
+----- Forum: Ajutor scripting (https://wtfcs.com/forum/forumdisplay.php?fid=3594)
+------ Forum: Tutoriale (https://wtfcs.com/forum/forumdisplay.php?fid=3595)
+------ Thread: [TUTORIAL] Sistem Crate-uri [MySQL] by mihay111 (/showthread.php?tid=68732)



[TUTORIAL] Sistem Crate-uri [MySQL] by mihay111 - mihay111 - 04-04-2020

Acest tutorial cat si sistemul imi apartin 100%!

Cum sa creezi un sistem de crate-uri pe MySQL.

Inainte, eu am folosit ZCMD si am definit 'COLOR_CRATES', cat si 'SCM'

Code:
#include <zcmd> // pentru a scrie comenzile mai usor
#define COLOR_CRATES 0xCodCuloare // culoare
#define SCM SendClientMessage // pentru a-mi fi mai usor, sa nu mai stau sa scriu tot

1. Definiti 'pCratePointsx', pentru salvarea in baza de date.

Code:
#define pCratePointsx

2. Mergeti la 'enum pInfo' si definiti 'pCratePoints', pentru joc.

Code:
enum pInfo {

    pCratePoints,

}

3. Intram in baza de date, ne ducem la users (sau accounts, cum aveti dvs.), la "Structura", apoi va duceti jos de tot si o sa va apara o optiune "Adauga coloane". Veti adauga una, apoi apasati pe "Executa". La "Nume", veti pune "CratePoints", iar apoi salvati.

4. Apoi, definim si in baza de date pentru a se realiza conexiunea si sa se faca update-urile necesare la CratePoints-uri: Mergem in GM, la public Update si scriem linia (depinde cum aveti voi in gm, eu am astfel):

Code:
case pCratePointsx: format(var, sizeof(var), "UPDATE `users` SET `CratePoints`='%d' WHERE `ID`='%d'",PlayerInfo[playerid][pCratePoints], PlayerInfo[playerid][pSQLID]);

5. Mergem la Payday si, adaugam liniile:
Code:
if(PlayerInfo[i][pCratePoints] < 3) PlayerInfo[i][pCratePoints] += 1, Update(i, pCratePointsx); // verfica daca jucatorul are 3 CP, daca nu, ii da una
            format(string, sizeof(string), "Crate Points: %d (+1 CratePoint)", PlayerInfo[i][pCratePoints]); //  mesajul ca a primit 1 CP
            SCM(i, COLOR_YELLOW, string);  // trimite mesajul

6. Vom creea acum comanda prin care se deschide o cutie:
Code:
CMD:opencrate(playerid, params[]) { // comanda ce se executa in joc, /opencrate
    if(PlayerInfo[playerid][pCratePoints] < 3) return SendClientMessage(playerid, -1, "Nu ai suficiente Crate Points!"); // daca nu ai 3 puncte, nu poti deschide


    PlayerInfo[playerid][pCratePoints] -= 3; // ii ia jucatorului 3 puncte
    Update(playerid, pCratePointsx); // actualizeaza punctele jucatorului in baza de date
        
    new rand = random(50), string[64]; // pentru ca un premiu sa pice aleatoriu

    switch(rand) { // sa pice intre aceste cazuri
        case 0..15:
        {
            new amount = 10000 + random(5000); // banii, 10k + $ aleatorii pana in 5000
            format(string, sizeof(string), "Ai primit $%d!", amount, FormatNumber(amount)); // mesajul cu cat a primit
            SCM(playerid, COLOR_CRATES, string); // trimite mesajul
            GivePlayerCash(playerid, amount); // da banii
        }
        case 16..20:
        {
            PlayerInfo[playerid][pLevel] ++; // un level up
            Update(playerid, pLevelx); // actualizeaza nivelul in baza de date
            format(string, sizeof(string), "Ai primit un Level Up!", PlayerInfo[playerid][pLevel]); //  mesaj
            SendClientMessage(playerid, COLOR_CRATES, string); // trimite mesajul
        }
        case 21..30:
        {
            PlayerInfo[playerid][pLevel] +=2; // 2x level up
            Update(playerid, pLevelx); // actualizeaza nivelul
            format(string, sizeof(string), "Ai primit un 2x Level Up!", PlayerInfo[playerid][pLevel]); // mesajul
            SendClientMessage(playerid, COLOR_CRATES, string); // trimite mesajul
        }
        case 31..40:
        {
            new amount = 10 + random(5); // 10 puncte + puncte premium random pana in 5
            PlayerInfo[playerid][pPremiumPoints] ++; // ofera pp-urile
            Update(playerid, pPremiumPointsx); // actualizeaza pp-urile in baza de date
            format(string, sizeof(string), "Ai primit %d Puncte Premium", amount, FormatNumber(amount)); // mesajul
            SCM(playerid, COLOR_CRATES, string); // trimite mesajul
        }
        case 41..50:
        {
            new amount = 20000 + random(5000); // la fel ca cel cu banii de mai sus
            format(string, sizeof(string), "Ai primit $%d!", amount, FormatNumber(amount));
            SCM(playerid, COLOR_CRATES, string);
            GivePlayerCash(playerid, amount);
        }
    }

    return 1;
}

7. Optional, dar recomandat, crearea comenzii '/givecratepoints', prin care puteti da Crate Points:

Code:
CMD:givecratepoints(playerid, params[]) 
{
   if(IsPlayerConnected(playerid))
   {
        if (PlayerInfo[playerid][pAdmin] < 5) return SendClientMessage(playerid, COLOR_LGREEN, "Nu ai acces la aceasta comanda!");
        {
            new money,id,string[256],sendername[25],giveplayer[25];
            if(sscanf(params, "ui",id,money)) return SCM(playerid,COLOR_GREY, "Sintaxa: {FFFFFF}/givecratepoints <playerid/name> <CratePoints Points>");
            new year, month,day;
            getdate(year, month, day);
            if(IsPlayerConnected(id))
            {
                PlayerInfo[id][pCratePoints] += money;
                GetPlayerName(id, giveplayer, sizeof(giveplayer));
                GetPlayerName(playerid, sendername, sizeof(sendername));
                format(string, 256, "AdmCmd: Admin %s i-a trimis %d Crate Points-uri lui %s.", sendername,money,giveplayer);
                SendAdminMessage(COLOR_LOGS,string,5);
                Update(id, pCratePointsx);
            }
            else return SendClientMessage(playerid, COLOR_GREY, "Acel player nu este conectat.");
        }
    }
    return 1;
}

Sper ca v-am ajutat. Nu sunt mare scripter deci nu va asteptati la ceva maret de la mine. Nu mai ofer suport pentru ca nu ma mai ocup de scripting si am uitat cam tot sistemul :)


RE: [TUTORIAL] Sistem Crate-uri [MySQL] by mihay111 - Iustin - 04-04-2020

Tutorial de crate-uri pentru SAMP?


RE: [TUTORIAL] Sistem Crate-uri [MySQL] by mihay111 - mihay111 - 04-10-2020

(04-04-2020, 05:27 PM)Iustin Wrote: You are not allowed to view links. Register or Login to view.Tutorial de crate-uri pentru SAMP?

da, sa deschida cutii prin /opencrate