←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Tekst wyświetlany po wybraniu/zakończeniu...

  • +
  • -
Tomek179 - zdjęcie Tomek179 08.11.2012

Witam.
Chciałbym prosić o pomoc, ponieważ mam problem.
Korzystam z ExpModa, wersja v1.6. Można pobrać z tego tematu: http://amxx.pl/topic...-striker-mcpr0/

Problem polega na tym, że:
- po wybraniu misji i wykonaniu jej, misja jest odblokowana a powinna być zablokowana i powinien widnieć napis, że jest ukończona
- po wybraniu misji jest napisane, ze misja jest zablokowana a powinno być napisane, że jest właśnie wykonywana..

Nie wiem w czym problem i proszę o pomoc, o jakieś wskazówki.

public WyborMisji(id)
{
if(!is_user_connected(id))
return PLUGIN_CONTINUE
new tytul[256], opis[256]
formatex(tytul, 255, "\yWybierz zadanie: \RStrona")

client_cmd(id, "spk %s", menu_on)
new menu = menu_create(tytul, "WyborMisji_Handler")
new menu_cb = menu_makecallback("WyborMisji_cb")

for(new i = 1 ; i < sizeof NazwaMisji ; i++)
{
if(wykonane_misje[id][i] == 0)
formatex(opis, 249, "%s \d[Wymagany %d poziom]", NazwaMisji[i], WymaganyPoziom[i]);
else if (wykonane_misje[id][i] == 1)
formatex(opis, 249, "%s \r[Zablokowane]", NazwaMisji[i]);
else if (wykonane_misje[id][i] == 2)
formatex(opis, 249, "%s \r[Ukonczone]", NazwaMisji[i]);

menu_additem(menu, opis, _, _, menu_cb);
}

menu_display(id, menu)
return PLUGIN_CONTINUE
}

public WyborMisji_cb(id, menu, item)
{

for(new i = 0 ; i < sizeof NazwaMisji ; i++)
{
if((item == i && poziom_gracza[id] < WymaganyPoziom[i+1]) || ma_misje[id])
return ITEM_DISABLED
}

for(new a = 0 ; a < sizeof NazwaMisji ; a++)
{
if(item == a && wykonane_misje[id][a+1] == 2)
return ITEM_DISABLED
}

return ITEM_ENABLED
}

public WyborMisji_Handler(id, menu, item)
{
if(item == MENU_EXIT || !is_user_connected(id))
{
menu_destroy(menu)
return PLUGIN_CONTINUE
}
new opis[256]

switch(random_num(1,2))
{
case 1:client_cmd(id, "spk %s", klik)
case 2:client_cmd(id, "spk %s", klik2)
}


for(new i = 0 ; i < sizeof NazwaMisji ; i++)
{
if(item == i)
{
wybierana_misja[id] = i+1
formatex(opis, 255, "\yMisja: \w%s^n\yZadanie: \w%s^n\yNagroda: \w%d expa^n\rPrzyjmujesz Misje?", NazwaMisji[i+1], OpisMisji[i+1], NagrodaMisji[i+1])
}
}
new menu_potwierdz = menu_create(opis, "PotwierdzMisje")
menu_additem(menu_potwierdz, "Tak")
menu_additem(menu_potwierdz, "Nie")
menu_display(id, menu_potwierdz)

return PLUGIN_CONTINUE
}


Użytkownik Tomek179 edytował ten post 08.11.2012 22:36
Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie GwynBleidD 09.11.2012

Ten kod to jakiś koszmar, naprawdę... Po kie licho przy każdym sprawdzaniu jest pętla po tablicy z misjami? Zamiast po prostu id misji wziąć z item... No cóż...

Co masz źle? Hmm... nie wiem co oznacza przypisanie wartości 2 w polu tablicy wykonane_misje. W oryginalnym pluginie ta wartość nie występuje. Skoro ją dorobiłeś to zastanów się, czy w prawidłowych miejscach prawidłowo ją przypisujesz, bo tu może leżeć błąd.

Druga kwestia, dotycząca już oryginału pluginu... W niektórych miejscach jest brana wartość o 1 większa, niż powinna, przy odczytywaniu czegokolwiek z tablic informacji o misjach. To też może powodować pewne błędy. Ogólnie rzecz biorąc kod jest pełen dziwnych rzeczy i dziwnych błędów...

Sprawdź na razie to, co napisałem...
Odpowiedz

  • +
  • -
Tomek179 - zdjęcie Tomek179 09.11.2012

Na pisaniu pluginów się nie znam ale przerobić coś tam potrafię. To jest trochę bardziej skomplikowane i nie potrafię tego przerobić dlatego proszę o pomoc.
Wartość 2 skopiowałem z innego pluginu myśląc, że zadziała :D, no i zadziałało lecz nie wyświetla tego prawidłowo.
Kopia była z pluginu expmod_achievements, co oznacza, że:

0 = Zablokowany
1 = Odblokowany
2 = Ukonczony

skoro tam jest taki efekt wyświetlania 3 różnych tekstów w zależności od wykonania zadania to pomyślałem, żeby przerobić tak jak tam jest.
Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie GwynBleidD 10.11.2012

Niestety, ale żeby to działało musisz większość pluginu przerobić. W bieżącej wersji możesz używać tylko:
0 = odblokowany
1 = zablokowany/ukończony

Nie rozróżnia ta metoda zablokowanego od ukończonego...
Odpowiedz