Jump to content

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


MiHaY111
 Share

Recommended Posts

(!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' 

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

#define pCratePointsx

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

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

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: 

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:

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:

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. Orice problema legata de acest sistem, imi puteti da mesaj.

Edited by MiHaY111 BahaosFAMILY
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • 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.