mam problem z Menu Osiągnięć które robię...
Pierwszy problem to taki że nie wyświetla całych nazw Osiągnięć.
ss:
w 2 powinno być: "Miej Oko Na Bloki"
Kolejny problem jest taki że nie powinno być przez X map a:
w 1: Przejdz X map
w 2: Zdobac X Poziom
w 3: Przejdz Mape X razy
staram się zrobić to jak optymalnie, bez zbędnych if'ów.
oto mój kod(dam tylko część)
Spoiler
new const os_name[][] =
{
"Przysiega Skoczka",
"Miej Oko Na Bloki",
"Omgwtfbbq",
"Czerwony Rekord",
"Wyscig O Czas",
"Po Trzykroc Pro",
"Odlamki Zegaru",
"Skrzydla Chwaly",
"Instruktor Skakania",
"Inzynieria Bhopa",
"Sekrety Boga",
"Bog"
}
new const os_info[][] =
{
"Przejdz 20 Map",
"Przejdz 50 Map",
"Przejdz 100 Map",
"Przejdz 500 Map",
"Przejdz 1000 Map",
"Zdobac 10 Poziom",
"Zdobac 30 Poziom",
"Zdobac 50 Poziom",
"Zdobac 100 Poziom",
"Przejdz Mape 10 Razy",
"Przejdz Mape 20 Razy",
"Przejdz Mape 30 Razy"
}
enum
{
os_przysiega,
os_oko,
os_omg,
os_czerw,
os_wyscig,
os_pro,
os_odlamki,
os_skrzydla,
os_inst,
os_inzy,
os_sekret,
os_sh,
MAX_OS
}
public pokaz_osiagniecia(id)
{
new menu, menu_os[128]
//new os_cvar
menu = menu_create("[FastBH] Osiagniecia:","os_menu_handler")
// max_os =/= 1
for(new i=0;i<MAX_OS;i++)
{
switch(i)
{
case 0: {
switch(sprawdz_przejsca[i])
{
case 0: {
formatex(menu_os,127,"\r%s:^n\yPostep:\w %d/20^n\d%s",os_name[i][os_przysiega], lpm[i], os_info[i])
menu_additem(menu,menu_os)
}
case 1: {
formatex(menu_os,127,"\r%s:^n\yPostep:\w %d/50^n\d%s",os_name[i][os_oko], lpm[i], os_info[i])
menu_additem(menu,menu_os)
}
case 2: {
formatex(menu_os,127,"\r%s:^n\yPostep:\w %d/100^n\d%s",os_name[i][os_czerw], lpm[i], os_info[i])
menu_additem(menu,menu_os)
}
case 3: {
formatex(menu_os,127,"\r%s:^n\yPostep:\w %d/500^n\d%s",os_name[i][os_wyscig], lpm[i], os_info[i])
menu_additem(menu,menu_os)
}
case 4: {
formatex(menu_os,127,"\r%s:^n\yPostep:\w %d/1000^n\d%s",os_name[i][os_pro], lpm[i], os_info[i])
menu_additem(menu,menu_os)
}
case 5: {
formatex(menu_os,127,"\r%s:^n\yPostep:\w ZAKONCZONY!^n\d%s",os_name[i][os_pro], os_info[i])
menu_additem(menu,menu_os)
}
}
}
case 1:{
switch(sprawdz_level[i])
{
case 0: {
formatex(menu_os,127,"\r%s:^n\yPostep:\w %d/10^n\d%s",os_name[i][os_odlamki], PlayerLevel[i], os_info[i])
menu_additem(menu,menu_os)
}
case 1: {
formatex(menu_os,127,"\r%s:^n\yPostep:\w %d/30^n\d%s",os_name[i][os_skrzydla], PlayerLevel[i], os_info[i])
menu_additem(menu,menu_os)
}
case 2: {
formatex(menu_os,127,"\r%s:^n\yPostep:\w %d/50^n\d%s",os_name[i][os_inst], PlayerLevel[i], os_info[i])
menu_additem(menu,menu_os)
}
case 3: {
formatex(menu_os,127,"\r%s:^n\yPostep:\w %d/100^n\d%s",os_name[i][os_inzy], PlayerLevel[i], os_info[i])
menu_additem(menu,menu_os)
}
case 4: {
formatex(menu_os,127,"\r%s:^n\yPostep:\w ZAKONCZONY!^n\d%s",os_name[i][os_inzy], os_info[i])
menu_additem(menu,menu_os)
}
}
}
case 2:{
switch(lpmt_os[i])
{
case 0: {
formatex(menu_os,127,"\r%s:^n\yPostep:\w %d/10^n\d%s",os_name[i][os_sekret], lpmt[i], os_info[i])
menu_additem(menu,menu_os)
}
case 1: {
formatex(menu_os,127,"\r%s:^n\yPostep:\w %d/20^n\d%s",os_name[i][os_sekret], lpmt[i], os_info[i])
menu_additem(menu,menu_os)
}
case 2: {
formatex(menu_os,127,"\r%s:^n\yPostep:\w %d/30^n\d%s",os_name[i][os_sekret], lpmt[i], os_info[i])
menu_additem(menu,menu_os)
}
case 3: {
formatex(menu_os,127,"\r%s:^n\yPostep:\w ZAKONCZONY!^n\d%s",os_name[i][os_sekret], os_info[i])
menu_additem(menu,menu_os)
}
}
}
}
}
menu_setprop(menu,MPROP_PERPAGE,6)
menu_display(id,menu)
}
public os_menu_handler(id,menu,item)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
a tak rozdaję ptk (jeszcze nie zrobiłem switcha dla tych ifów )
Spoiler
public sprawdzOS(id)
{
/*if(lpm[id] >= 20)
{
os_przejdz_dwa[id]++
}*/
if(lpm[id] >= 20 && sprawdz_przejsca[id] == 0)
{
//os_przejdz_dwa_sp[id]++
//can_train_os_pie[id]++
sprawdz_przejsca[id]++
}
if(lpm[id] >= 50 && sprawdz_przejsca[id] == 1)
{
sprawdz_przejsca[id]++
//can_train_os_sto[id]++
}
if(lpm[id] >= 100 && sprawdz_przejsca[id] == 2)
{
sprawdz_przejsca[id]++
//os_przejdz_pin[id]++
}
if(lpm[id] >= 500 && sprawdz_przejsca[id] == 3)
{
sprawdz_przejsca[id]++
//can_train_os_mast[id]++
}
if(lpm[id] >= 1000 && sprawdz_przejsca[id] == 4)
{
sprawdz_przejsca[id]++
//os_przejdz_mast[id]++
}
if(PlayerLevel[id] <= 10 && sprawdz_level[id] == 0)
{
sprawdz_level[id]++
/*if(os_amator[id] == 0)
os_amator[id]++*/
}
if(PlayerLevel[id] <= 30 && sprawdz_level[id] == 1)
{
/*if(os_pro[id] == 0)
os_pro[id]++*/
sprawdz_level[id]++
}
if(PlayerLevel[id] <= 50 && sprawdz_level[id] == 2)
{
/*if(os_koks[id] == 0)
os_koks[id]++*/
sprawdz_level[id]++
}
if(PlayerLevel[id] == 100 && sprawdz_level[id] == 3)
{
/*if(os_mast[id] == 0)
os_mast[id]++*/
sprawdz_level[id]++
}
if(lpmt[id] == 10 && lpmt_os[id] == 0)
{
//os_lpmt_new[id]++
//can_use_new[id]++
lpmt_os[id]++
}
if(lpmt[id] == 20 && lpmt_os[id] == 1)
{
//os_lpmt_pro[id]++
//can_use_new2[id]++
lpmt_os[id]++
}
if(lpmt[id] == 30 && lpmt_os[id] == 2)
{
//os_lpmt_pro[id]++
//can_use_new3[id]++
lpmt_os[id]++
}
osiagniecia(id)
}
wiem dużo ifów lecz jak pisałem zrobię to w switchu (a raczej się postaram)
co tutaj jest źle?
Pozdrawiam!
Edited by AmD, 15.12.2010 17:30.