PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#pragma semicolon 1
new const pKaciKaydet[] = 20; // Puanı Kaçken STEAM_ID:İSİM:Puan Kaydı Yapılsın
new stock pGorevler[][][] = {
/* Online Olma Görevi = 1, Jb Harca Görevi = 2, Gardiyan Öldür Görevi = 3, ... İle Gardiyan Öldür Görevi = 4*/
{"",0,0,-1},
{"3 Saat Online Ol",180,1,-1},{"10 Gardiyan Oldur",10,3,-1},{"50 JB Harca",50,2,-1},
{"4 Saat Online Ol",240,1,-1},{"20 Gardiyan Oldur",20,3,-1},{"30 Gardiyan Oldur",30,3,-1},
{"El Bombasiyla 1 Gardiyan Oldur",1,4,CSW_HEGRENADE},{"5 Saat Online Ol",300,1,-1},{"1 Gardiyan Oldur",1,3,-1},
{"400 JB Harca",400,2,-1},{"M4A1 Ile 1 Gardiyan Oldur",1,4,CSW_M4A1},{"50 Gardiyan Oldur",50,3,-1},
{"100 Gardiyan Oldur",100,3,-1},{"6 Saat Online Ol",360,1,-1},{"Keles Ile 5 Gardiyan Oldur",5,4,CSW_AK47},
{"M4A1 Ile 10 Gardiyan Oldur",10,4,CSW_M4A1},{"7 Saat Online Ol",420,1,-1},{"1000 JB Harca",1000,2,-1},
{"200 Gardiyan Oldur",200,3,-1},{"8 Saat Online Ol",480,1,-1},{"Keles Ile 30 Gardiyan Oldur",30,4,CSW_AK47},
{"500 JB Harca",500,2,-1},{"9 Saat Online Ol",540,1,-1},{"El Bombasiyla 5 Gardiyan Oldur",5,4,CSW_HEGRENADE},
{"10 Saat Online Ol",600,1,-1},{"10 JB Harca",10,2,-1},{"11 Saat Online Ol",660,1,-1},{"12 Saat Online Ol",720,1,-1},
{"13 Saat Online Ol",780,1,-1},{"Keles Ile 10 Gardiyan Oldur",10,4,CSW_AK47},{"300 JB Harca",300,2,-1},
{"14 Saat Online Ol",840,1,-1},{"15 Saat Online Ol",900,1,-1}
};
new pWhGorev[33][3],pGorevIlerleme[33][3],pKacGorev[33],pGorevCekildi[33],pUserPoint[33],INIDosyam[256],pTamamladi[33][3],pNvault;
public plugin_init() {
register_plugin("Gorev Sistemi", "1.0","PawNod'");
register_clcmd("say /gorev","pCheck");
register_clcmd("savedd","pSaveThis");
pNvault = nvault_open("GorevSistem");
formatex(INIDosyam,charsmax(INIDosyam),"addons/amxmodx/configs/gorev_puanlar.ini");
}
public pSaveInfoINI(id) {
static What[128],Name[33],AuID[33];
get_user_name(id,Name,charsmax(Name));
get_user_authid(id,AuID,charsmax(AuID));
formatex(What, sizeof(What)-1, "%s ~> %s ~> %d",AuID,Name,pUserPoint[id]);
write_file(INIDosyam, What);
}
public pCheck(id) {
pOpenThis(id);
switch(pGorevCekildi[id]) {
case 0: {
pKacGorev[id] = random_num(1,3);
for(new i=0;i<pKacGorev[id];i++){
pWhGorev[id][i] = random_num(1,sizeof(pGorevler)-1);
for(new j = 0;j<pKacGorev[id];j++){
if(i == j)
continue;
if(pWhGorev[id][i] == pWhGorev[id][j] ){
pWhGorev[id][i] = random_num(1,sizeof(pGorevler)-1);
i = 0;}
}
for(new l = 0;l<pKacGorev[id];l++){
if(i == l)
continue;
if(pGorevler[pWhGorev[id][i]][2][0] == pGorevler[pWhGorev[id][l]][2][0] ){
pWhGorev[id][i] = random_num(1,sizeof(pGorevler)-1);
i = 0;}
}
}
pGorevCekildi[id] = true; pGorevMenu(id);
}
case 1: pGorevMenu(id);
}
}
public pGorevMenu(id) {
static Item[256],NTS[6];
formatex(Item, charsmax(Item),"\y[\wGörev Sistemi \dBETA\y] \r~\y> \rGörev \wMenü");new Menu = menu_create(Item, "pGorevMenu_");
for(new i; i<pKacGorev[id];i++) {
num_to_str(i,NTS,5);
if(pGorevIlerleme[id][i] < pGorevler[pWhGorev[id][i]][1][0]){
formatex(Item, charsmax(Item), "\d[ \r~ \w%s \r~ \d] \r~\y> \d[\w%d\d/\y%d\d]^n"
,pGorevler[pWhGorev[id][i]][0][0],pGorevIlerleme[id][i],pGorevler[pWhGorev[id][i]][1][0]);
menu_additem(Menu, Item, NTS);
}
if(pGorevIlerleme[id][i] >= pGorevler[pWhGorev[id][i]][1][0]){
formatex(Item, charsmax(Item), "\d[ \r~ \w%s \r~ \d] \r~\y> \d[\yTamamlandi\d]^n"
,pGorevler[pWhGorev[id][i]][0][0]);
menu_additem(Menu, Item, NTS);
}
}
formatex(Item, charsmax(Item), "\d[ \r~ \wGörevleri Bitirdikçe \yYeni \rGörevler \wGelir \r~ \d]");
menu_additem(Menu, Item, "999");
formatex(Item, charsmax(Item), "\d[ \r~ \wHer Görevde \d+\y1 Puan \wKazanirsiniz \r~ \d]");
menu_additem(Menu, Item, "999");
formatex(Item, charsmax(Item), "\wCikis");
menu_setprop(Menu ,MPROP_EXITNAME,Item);menu_display(id, Menu);
}
public pGorevMenu_(id, menu, item) {
if( item == MENU_EXIT ) { menu_destroy(menu);return PLUGIN_HANDLED;}
new data[6], iName[64], access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new key = str_to_num(data);
if(key == 999) {pGorevMenu(id);return PLUGIN_HANDLED;}
for(new i; i < pKacGorev[id]; i++) {
if(pGorevIlerleme[id][i] >= pGorevler[pWhGorev[id][i]][1][0] && pTamamladi[id][i] <=0){pTamamladi[id][i] = key;}
if(pTamamladi[id][0] > 1 && pTamamladi[id][1] > 1 && pTamamladi[id][2] > 1) {
pUserPoint[id]++;pGorevCekildi[id] = true;
pCheck(id);pGorevMenu(id);pSaveThis(id);
if(pUserPoint[id] == pKaciKaydet[0]) pSaveInfoINI(id);
}
pGorevMenu(id);
}
menu_destroy(menu);return PLUGIN_HANDLED;
}
public pSaveThis(id) {
new key[64], data[512],AuID[33];
get_user_authid(id,AuID,charsmax(AuID));
formatex(key, 63,"%s-GorevSystem", AuID);
formatex(data, charsmax(data) , "%i#%i#%i#",pKacGorev[id],pGorevCekildi[id],pUserPoint[id]);
nvault_set(pNvault, key, data);
new anahtar[4][64], bilgi[4][256], len[3];
formatex(anahtar[0], 63, "%s-GorevItemID",AuID);
for(new i = 0; i < 3; i++){
len[0] += formatex(bilgi[0][len[0]], 255 - len[0] , "%i ",pWhGorev[id][i]);
}
nvault_set(pNvault, anahtar[0], bilgi[0]);
formatex(anahtar[1], 63, "%s-GorevItemIlerleme",AuID);
for(new i = 0; i < 3; i++){
len[0] += formatex(bilgi[1][len[0]], 255 - len[0], "%i ",pGorevIlerleme[id][i]);
}
nvault_set(pNvault, anahtar[1], bilgi[1]);
formatex(anahtar[2], 63, "%s-GorevItemTamamlama",AuID);
for(new i = 0; i < 3; i++){
len[0]+= formatex(bilgi[2][len[0]], 255 - len[0], "%i ",pTamamladi[id][i]);
}
nvault_set(pNvault, anahtar[2], bilgi[2]);
}
public pOpenThis(id) {
new key[64], data[512],AuID[33], pDeger[33][3];
formatex(key, charsmax(key), "%s-GorevSystem",AuID);
formatex(data, charsmax(data) , "%i %i %i ",pKacGorev[id],pGorevCekildi[id],pUserPoint[id]);
nvault_get(pNvault, key, data, charsmax(data));
replace_all(data, charsmax(data), "#", " ");
parse(data, pDeger[0], 32, pDeger[1], 32, pDeger[2] , 32);
pKacGorev[id]= str_to_num(pDeger[0]);
pGorevCekildi[id] = str_to_num(pDeger[1]);
pUserPoint[id]= str_to_num(pDeger[2]);
new anahtar[4][64], bilgi[4][256], szVal[4][6];
formatex(anahtar[0], 63, "%s-GorevItemID", AuID);
nvault_get(pNvault, anahtar[0], bilgi[0], 255);
for(new i = 0; i < 3; i++){
#if AMXX_VERSION_NUM < 183
strbreak(data[0], szVal[1], 5, data[0], 255);
#else
argbreak(data[0], szVal[1], 5, data[0], 255);
#endif
pWhGorev[id][i] = str_to_num(szVal[1]);
}
formatex(anahtar[1], 63, "%s-GorevItemIlerleme", AuID);
nvault_get(pNvault, anahtar[1], bilgi[1], 255);
for(new i = 0; i < 3; i++){
#if AMXX_VERSION_NUM < 183
strbreak(data[1], szVal[2], 5, data[1], 255);
#else
argbreak(data[1], szVal[2], 5, data[1], 255);
#endif
pGorevIlerleme[id][i] = str_to_num(szVal[2]);
}
formatex(anahtar[2], 63, "%s-GorevItemTamamlama", AuID);
nvault_get(pNvault, anahtar[2], bilgi[2], 255);
for(new i = 0; i < 3; i++){
#if AMXX_VERSION_NUM < 183
strbreak(data[2], szVal[3], 5, data[2], 255);
#else
argbreak(data[2], szVal[3], 5, data[2], 255);
#endif
pTamamladi[id][i] = str_to_num(szVal[3]);
}
}