LOGO
Username Icons
100$
Username Effects
150$
Username Change
300$
Profile Cover
250$
Userbar Hue
100$
Change Username Color
1000$
Spotify listening status
150$
Arcade access
400$
Reputation power
500$
Warn Remover ( -1 )
5000$
Customize your MyBB profile with our shop’s options! Choose from username changes, colors, and profile covers and more others to enhance your forum identity.
Go to shop
CSGO.WTFCS.COM
Connect
CS.WTFCS.COM
Connect
XMAS.WTFCS.COM
Connect
PB.WTFCS.COM
Connect
DR.WTFCS.COM
Connect
WAR.WTFCS.COM
Connect
WAR1.WTFCS.COM
Connect
www.Game-State.com
SAMP
Connect
www.Game-State.com
MINECRAFT
Connect
Hello There, Guest!
If you encounter issues with quick login, use the link below for direct access.
Open Log In ( Directly page )
×
Register
Show Serverlist
ChatBox
345
[TUTORIAL] Sistem Crate-uri [MySQL] by mihay111
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
#1
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 :)
Reply


Messages In This Thread
[TUTORIAL] Sistem Crate-uri [MySQL] by mihay111 - by mihay111 - 04-04-2020, 05:01 PM

Forum Jump:


Users browsing this thread: 1 Guest(s)