#include <amxmodx>
#include <codmod>
#include <nvault>
#include <colorchat>
#define PLUGIN "[
COD] Questy"
#define VERSION "1.0"
#define AUTHOR "DarkGL edited by Muzzi"
new const prefix[] = "[Questy]";
new const przedzial[][] =
{
{1,50},
{51,100},
{101,200}
}
new const SpisQuest[][] =
{
{1,5,"Komandos","300"},
{1,10,"Snajper","400"},
{1,15,"Obronca","650"},
{1,20,"Snajper","900"},
{1,25,"Snajper","1250"},
{1,30,"Snajper","1600"},
{1,35,"Snajper","1900"},
{2,40,"Snajper","2100"},
{2,45,"Snajper","2400"},
{2,50,"Snajper","2700"},
{2,55,"Snajper","3000"},
{2,60,"Snajper","3500"},
{3,65,"Snajper","4000"},
{3,70,"Snajper","4500"},
{3,70,"Snajper","5000"}
}
new const QuestyInfo[][] =
{
"Zabij 5 Komandosow",
"Zabij 10 Snajperow",
"Zabij 15 Obroncow",
"Zabij 20 Zwiadowcow",
"Zabij 25 Telegrafistow",
"Zabij 30 Amadeuszow",
"Zabij 35 Czolgow",
"Zabij 40 Replicantow",
"Zabij 45 Zlodzieji",
"Zabij 50 Talibow",
"Zabij 55 Saperow",
"Zabij 60 Rusherow",
"Zabij 65 Medykow",
"Zabij 70 Wsparcogniowych",
"Zabij 75 Ninja"
}
new const QuestyInfoExp[][] =
{
"(Nagroda 300 doswiadczenia)",
"(Nagroda 400 doswiadczenia)",
"(Nagroda 650 doswiadczenia)",
"(Nagroda 900 doswiadczenia)",
"(Nagroda 1250 doswiadczenia)",
"(Nagroda 1600 doswiadczenia)",
"(Nagroda 1900 doswiadczenia)",
"(Nagroda 2100 doswiadczenia)",
"(Nagroda 2400 doswiadczenia)",
"(Nagroda 2700 doswiadczenia)",
"(Nagroda 3000 doswiadczenia)",
"(Nagroda 3500 doswiadczenia)",
"(Nagroda 4000 doswiadczenia)",
"(Nagroda 4500 doswiadczenia)",
"(Nagroda 5000 doswiadczenia)"
}
new prze_wybrany[33],
vault_questy,
vault_questy2,
quest_gracza[33],
ile_juz[33],
klasa[33][64];
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("DeathMsg", "DeathMsg", "a");
register_clcmd("say /quest","cmdMenuQuest");
vault_questy = nvault_open("Questy");
vault_questy2 = nvault_open("Questy2");
}
public cod_class_changed(id, klasa)
{
quest_gracza[id] = wczytaj_aktualny_quest(id)
}
public client_disconnect(id) zapisz_questa(id,quest_gracza[id],"1")
public plugin_end()
{
nvault_close(vault_questy);
nvault_close(vault_questy2);
}
public cmdMenuQuest(id){
if(quest_gracza[id] == -1 || quest_gracza[id] == -2)
{
new menu = menu_create("^n^n\y[
cs-manual.xaa.pl] \wMenu Questow^n\dby \rMuzzi\d^n^n\yAktualny Quest: \wBrak","handle_cmdMenuQuest");
menu_additem(menu,"Wybierz Quest","0");
menu_additem(menu,"Resuj Questy \y[\rWszystkie!\y]","3");
menu_display(id,menu);
}
else
{
new formats[256];
format(formats,charsmax(formats),"^n^n^n\y[
cs-manual.xaa.pl] \wMenu Questow^n\dby \rMuzzi^n^n\yAktualny Quest: \w%s^n\rStatus:\w %d/%d^n\y%s",QuestyInfo[quest_gracza[id]],ile_juz[id],SpisQuest[quest_gracza[id]][1],QuestyInfoExp[id]);
new menu = menu_create(formats,"handle_cmdMenuQuest");
menu_additem(menu,"\dWybierz Quest","2");
menu_additem(menu,"\wAnuluj Quest","1");
menu_display(id,menu);
}
}
public handle_cmdMenuQuest(id,menu,item){
if(item==MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new key = str_to_num(data);
switch(key)
{
case 0: cmdQuest(id)
case 1:{
zapisz_questa(id,quest_gracza[id],"0")
quest_gracza[id] = -1;
zapisz_aktualny_quest(id)
}
case 2:{
ColorChat(id,GREY,"%s Niestety, posiadasz aktualnie Questa",prefix);
return PLUGIN_HANDLED;
}
case 3: resetquesty(id)
}
return PLUGIN_HANDLED;
}
public cmdQuest(id){
if(quest_gracza[id] == -1 || quest_gracza[id] == -2)
{
new formats[512];
format(formats,charsmax(formats),"^n^n\y[
cs-manual.xaa.pl] \wWybierz Quest\d");
new menu = menu_create(formats,"handle_cmdQuest");
for(new i=0; i<sizeof przedzial; i++)
{
format(formats,charsmax(formats),"Questy od \r%d \wdo \r%d",przedzial[i][0],przedzial[i][1]);
menu_additem(menu, formats);
}
menu_display(id,menu);
}
else
{
ColorChat(id,GREY,"%s Wykonaj najpierw poprzednie zadanie",prefix)
}
return PLUGIN_CONTINUE;
}
public handle_cmdQuest(id,menu,item){
if(item == MENU_EXIT){
menu_destroy(menu);
return PLUGIN_CONTINUE;
}
if(cod_get_user_level(id) < przedzial[item][0])
{
ColorChat(id,GREY,"%s Masz za maly level!",prefix);
cmdQuest(id)
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new formats[512]
formatex(formats,charsmax(formats),"^n^n\y[
cs-manual.xaa.pl] \wWybierz Quest^n\dZadania od %d do %d poziomu",przedzial[item][0],przedzial[item][1]);
new menu = menu_create(formats,"handle_handle_cmdQuest")
for(new i=0; i<sizeof SpisQuest; i++)
{
if(SpisQuest[i][0] == item+1){
formatex(formats,charsmax(formats),"\w%s \r%s",QuestyInfo[i],QuestyInfoExp[i]);
menu_additem(menu,formats);
}
}
prze_wybrany[id] = item+1;
menu_display(id,menu);
return PLUGIN_CONTINUE;
}
public handle_handle_cmdQuest(id,menu,item){
if(item == MENU_EXIT){
menu_destroy(menu);
return PLUGIN_CONTINUE;
}
new ile2 = 0;
for(new i = 0;i<sizeof(SpisQuest);i++){
if(SpisQuest[i][0] != prze_wybrany[id]){
continue;
}
if(ile2 == item){
item = i;
break;
}
ile2++;
}
if(wczytaj_questa(id,item)){
ColorChat(id,GREY,"%s Wykonales juz to zadanie!",prefix);
cmdQuest(id)
menu_destroy(menu);
return PLUGIN_CONTINUE;
}
quest_gracza[id] = item;
ile_juz[id] = 0
zapisz_aktualny_quest(id)
ColorChat(id,GREY,"%s Wybrales quest: %s %s powodzenia !",prefix,QuestyInfo[item],QuestyInfoExp[item]);
quest_gracza[id] = wczytaj_aktualny_quest(id);
menu_destroy(menu);
return PLUGIN_CONTINUE;
}
public DeathMsg(){
new attacker = read_data(1);
new victim = read_data(2);
if(quest_gracza[attacker] != -1)
{
if(attacker == victim) return PLUGIN_HANDLED;
cod_get_class_name(cod_get_user_class(victim), klasa[victim], charsmax(klasa));
if(klasa[victim][0] == SpisQuest[quest_gracza[attacker]][2]){
ile_juz[attacker]++;
zapisz_aktualny_quest(attacker)
}
if(ile_juz[attacker] == SpisQuest[quest_gracza[attacker]][1]){
ColorChat(attacker,GREY,"%s Wykonales zadanie %s gratulacje otrzymujesz %s expa!",prefix,QuestyInfo[quest_gracza[attacker]],QuestyInfoExp[attacker])
zapisz_questa(attacker,quest_gracza[attacker],"1")
cod_set_user_xp(attacker,cod_get_user_xp(attacker) + SpisQuest[quest_gracza[attacker]][3]);
quest_gracza[attacker] = -1;
zapisz_aktualny_quest(attacker)
}
else
{
ColorChat(attacker,GREY,"%s Zabiles %i/%i %s",prefix,ile_juz[attacker],SpisQuest[quest_gracza[attacker]][1],SpisQuest[quest_gracza[attacker]][2])
}
}
return PLUGIN_CONTINUE;
}
public zapisz_questa(id,quest,value[])
{
new name[64];
get_user_name(id,name,63)
strtolower(name)
new key[64];
format(key,63,"questy-%i-%s-%i",klasa[id],name,quest);
nvault_set(vault_questy,key,value);
}
public zapisz_aktualny_quest(id){
new name[64];
get_user_name(id,name,63)
strtolower(name)
new key[256];
format(key,255,"questy-%d-%s",klasa[id],name);
new data[32]
formatex(data,charsmax(data),"#%d#%d",quest_gracza[id]+1,ile_juz[id]);
nvault_set(vault_questy2,key,data);
}
public wczytaj_aktualny_quest(id){
new name[64];
get_user_name(id,name,63)
strtolower(name)
new key[256];
format(key,255,"questy-%d-%s",klasa[id],name);
new data[32];
nvault_get(vault_questy2,key,data,31);
replace_all(data,31,"#"," ");
new questt[32],ile[32]
parse(data,questt,31,ile,31)
ile_juz[id] = str_to_num(ile)
return str_to_num(questt)-1
}
public wczytaj_questa(id,quest){
new name[64];
get_user_name(id,name,63)
strtolower(name)
new key[64];
format(key,63,"questy-%i-%s-%i",klasa[id],name,quest);
new data[64];
nvault_get(vault_questy,key,data,63);
return str_to_num(data);
}
public resetquesty(id)
{
new menu = menu_create("Czy na pewno chcesz usunac Wszystkie Zapisane Questy?","handle_resetquesty");
menu_additem(menu,"Tak, Chce wykasowac wszystkie Questy!","0");
menu_additem(menu,"Nie, Nie chce nic kasowac!","1");
menu_display(id,menu);
}
public handle_resetquesty(id,menu,item){
if(item==MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new key = str_to_num(data);
switch(key)
{
case 0:{
for(new i=0;i<sizeof SpisQuest;i++)
{
zapisz_questa(id,i,"0")
}
quest_gracza[id] = -1;
zapisz_aktualny_quest(id)
}
case 1: ColorChat(id,GREY,"%s Nie baw sie
",prefix);
}
return PLUGIN_CONTINUE;
}
/*
AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/