←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Tworzenie nowego sklepu z bonusami

  • +
  • -
fexus's Photo fexus 02.07.2012

A więc tak, chcę zrobić na swoim Diablo sklep z bonusami. Menu sklepu oraz bonusy są zrobione bez problemu. Tylko teraz mam problem z jedną kwestią. Chodzi o to, że nie chciałbym aby ludzie kupowali kilka bonusów (tzn 1 bonus atak i kupuje też 2 bonus obronę). Wiem, że muszę zrobić if(bonus y > 0 || bonus z > 0) itd ale właśnie mam problem potem z tym sprawdzaniem.
Tutaj kawałek kodu kupowania tych bonusów jak to wygląda.
public bonusy_menu_handle(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
switch(item)
{
case 0:
{
if (!UTIL_Buyformoney(id,2000))
return PLUGIN_HANDLED
bonus_y[id] = 1
return PLUGIN_HANDLED
}
case 1:

{
if (!UTIL_Buyformoney(id,2000))
return PLUGIN_HANDLED
bonus_z[id] = 1
return PLUGIN_HANDLED
}
}
}


Jeżeli coś nie jasne jest to napiszcie a postaram się jakoś bardziej wytłumaczyć o co chodzi.
Quote

  • +
  • -
Stachuu :D ??'s Photo Stachuu :D ?? 02.07.2012

zrob bolla

np
new bool:kupiono_bonus[33]

i potem ustawiaj true przy kupieniu i zablokuj sklep jesli wartosc = true

tylko potem ustawiaj wartosc na fasle kiedy bonus sie konczy
Quote

  • +
  • -
fexus's Photo fexus 02.07.2012

Niezbyt rozumiem o co chodzi z tym boolem :|
Quote

  • +
  • -
Onyke's Photo Onyke 02.07.2012

No to jak nie rozumiesz boola to zrób normalną zmienną np ma_bonus[33] i przy kupnie każdego bonusu ustawiaj na wartość 1. Przy kupowaniu mocy sprawdzaj czy ma_bonus[id]==1 i jeśli ma to mu nie dawaj mocy :D
Quote

  • +
  • -
fexus's Photo fexus 02.07.2012

Właśnie przez ma_bonus[id]==1 raczej będzie problem bo te bonus_y[id] = 2 to jest, że bonus działa 2 rundy. A sprawdzania przy kupowaniu mocy to raczej(?) to samo jakbym zrobił to z if(bonus_y[id] > 0 || bonus_z[id] > 0), więc trochę bezsensu jak dla mnie. Albo po prostu nie rozumiem dalej :|
Od razu zapytam się o rundy dla tych bonusów czy dobrze zrobiłem. Czy jak w roundstart zrobiłem tak:
if(bonus_y[i] > 1) bonus_y[i] -= 1 else bonus_y[i] = 0
To czy ma prawo to działać i będzie przykładowo schodziło z 3 rund (nowa runda jest 2 potem kolejna 1 i na samym końcu wartość przyjmuje 0)
Quote

  • +
  • -
Stachuu :D ??'s Photo Stachuu :D ?? 03.07.2012

to daj na start nowej rundy poprostu


bonus_y[i] --


a blokuj sklep wtedy gdy
bonus_y[i] >0
Quote

  • +
  • -
fexus's Photo fexus 03.07.2012

Jak mam niby zablokować ten sklep?-,- Właśnie o to chodzi, że ja nie wiem jak mam to zablokować bo mi błędy wywala...
Quote

  • +
  • -
Onyke's Photo Onyke 03.07.2012

Trochę trudno do Ciebie dotrzeć :/
http://amxx.pl/topic/2682-warunek-if/
http://amxx.pl/topic/5396-warunki/

Możesz zrobić, że jak wpisze komende /bonusy (czy jak to tam masz u siebie) to włącza mu jakiś public w którym dajesz ifa z tym co podał Stachu. Jeśli bonus==0 to mu wyświetl menu, a jeśli >0 to nie wyświetlaj.
Quote

  • +
  • -
fexus's Photo fexus 03.07.2012

Coś popróbowałem robić i doszedłem do takiej opcji...

public bool:UTIL_Buybonus(id,amount)
{
if (bonus_y[id] == 0 && bonus_z[id] == 0)
{
ma_bonus[id] == amount
return true }
else
{
hudmsg(id,2.0,"Uzywasz juz bonusu!")
return false
} return false
}

a w sklepie jest teraz
case 0:
{
if (!UTIL_Buybonus(id,1))
return PLUGIN_HANDLED

else if (!UTIL_Buyformoney(id,2000))
return PLUGIN_HANDLED

bonus_y[id] = 1
return PLUGIN_HANDLED
}

Zrobiłem zniżanie tego ma_bonus[i] w roundstart tak samo jak bonus_y[i]. Kompiluje normalnie tylko teraz pytanie, czy to ma prawo działać jak trzeba?
Edited by fexus, 03.07.2012 12:20.
Quote

  • +
  • -
fexus's Photo fexus 04.07.2012

Mógłby ktoś sprawdzić, a raczej zerknąć na te urywki kodu czy to będzie działać tak jakbym chciał ?
Quote

radek_b11's Photo radek_b11 11.07.2012

daj całość to zobaczymy czy będzie działać, a nie dajesz urywki kodu
Quote

  • +
  • -
fexus's Photo fexus 11.07.2012

To się właśnie opiera na tych urywkach kodu. Nic więcej w skład tego nie wchodzi (prócz roundstart do zerowania bonusu)
Quote