←  Pytania dotyczące pluginów

AMXX.pl: Support AMX Mod X i SourceMod

»

Timer ruletki, możliwość jednorazowego uży...

  • +
  • -
Robiin's Photo Robiin 01.05.2016

Cześć,

tak na początku, żeby nie było że nie umiem, albo coś, to jest chwila po północy, i zazwyczaj kiedy chociaż troche jestem zmęczony i siedzę w domu, to wyłącza mi się myślenie, dlatego może być w kodzie parę błedów.

 

 

Problem wygląda tak;

 

napisałem sobie ruletkę, (jeszcze nie skończyłem) i nie za bardzo wiem jak ustawić na nią delay, ale tym razem, z cooldownem. Dokładniej mi chodzi o to, że jeżeli gracz który nie ma 10.000$ (cena losowania w ruletce), spróbuje zalosować, otrzyma w ColorChat'cie info o tym, że nie ma 10.000$, i jeżeli (nawet po sekundzie) będzie miał już 10.000, będzie mógł użyć ponownie ruletki;

 

Jeżeli nie mam 10.000, i spróbuję zalosować, to nie nakłada się na mnie delay ruletki.

 

Tak w dużym uproszczeniu; jak zrobić cooldown ruletki, i nie nakładać delay'a osobie która próbowała zalosować, nie spełniając wymagań do losowania.

 

Kodzik;

(tak próbowałem już coś wykombinować z OstatnieUzycie, ale mi raczej nie wyszło, albo jestem głupi i tego nie widzę ._.)

 

Spoiler

 

Będę dokańczał sobie ruletkę, a jakby ktoś chciał (chociaż nie wiem po co :v) już dokończoną wersję, to chętnie się podzielę ^^

Quote

  • +
  • -
Ogen Dogen's Photo Ogen Dogen 01.05.2016

Z tego co zrozumiałem, to chcesz zrobić coś takiego, że jeżeli gracz nie spełnia wymagań to za minutę ma ponownie sprawdzić czy nie zarobił tej kasy ?

Stwórz wtedy dla niego taska o ID = jakaś duża stała liczba + id gracza, w funkcji odejmij tą dużą liczbę i wykonaj w niej co potrzebujesz :P

btw.

if(!is_user_bot(id) || !is_user_hltv(id))

Boty czy HLTV raczej nie otworzą menu :giggle:

Quote

  • +
  • -
Robiin's Photo Robiin 02.05.2016

Z tego co zrozumiałem, to chcesz zrobić coś takiego, że jeżeli gracz nie spełnia wymagań to za minutę ma ponownie sprawdzić czy nie zarobił tej kasy ?

Stwórz wtedy dla niego taska o ID = jakaś duża stała liczba + id gracza, w funkcji odejmij tą dużą liczbę i wykonaj w niej co potrzebujesz :P

btw.

if(!is_user_bot(id) || !is_user_hltv(id))

Boty czy HLTV raczej nie otworzą menu :giggle:

 

O tym właśnie mówię xD nie myślę w wieczornych godzinach :V

 

 

Ale nie, nie o to mi chodzi. Chodzi mi  o to, że jeżeli mam załóżmy 16.000$, to mogę sobie zalosować na ruletce. Ruletka wtedy zabiera mi jej koszt, czyli 10.000$, zostaje mi 6.000$, czyli mi nie starczy na kolejne losowanie. Jeżeli spróbuję zalosować mając 6.000$, to wywali mi na ColorChat'cie, że nie mam wymaganej sumy. A jeżeli już będę miał to 10k, to dopiero wtedy będę mógł zalosować normalnie.

 

 

We wcześniejszej ruletce, kiedy ktoś;

ma 1 los, czyli ma załóżmy te 10.000$, i zalosuje, to przy kolejnym losowaniu, czyli kiedy ma 6.000$, jakby nie zresetuje mu cooldowna ruletki.

 

Nie wiem jak to wytłumaczyć, jeżeli nie zrozumiałeś, to rano postaram się wyjaśnić "na trzeźwo"  :mur:  :mur:  :wstyd:

Quote

  • +
  • -
Ogen Dogen's Photo Ogen Dogen 02.05.2016

Chodzi o prostego if'a ?

new kasa = cs_get_user_money(id);
if (kasa - 10000  < 0)
{
	ColorChat(id,RED,"Nie masz wystarczajaco pieniedzy !");
	return;
}
else
{
	cs_set_user_money(id, kasa - 10000);
	// losowanie
}
Quote

  • +
  • -
Master Yoga's Photo Master Yoga 02.05.2016

Z twojej wypowiedzi wywnioskowałem, że możliwość ruletki może być dostępna tylko dla osób z dana suma pieniędzy i co jakiś czas.
Więc:

New czas[32];

Public funkcja(id)
{
New money = cs_get_user_money(id)
If(money >= 10000 && czas[id] == 0)
{
Gracz ma wymagana kwotę oraz odczekał wymagny czas do ponownego użyciaruletki. Tutaj możesz wywołać ruletkę. Oraz ustawiasz task w którym np. Za 2 minuty wyzerujesz mu czas oczekiwania.
Jeśli chcesz wyświetlać ilość pozostałych sekund to:
czas[id] = 120
I task dajesz na 1 sec i z flaga b.
Sprawdzasz w funkcji wywoływanej przez task czy czas nie jest równy juz 0 jeśli tak to usuwasz task.
Jeśli nie chcesz by gracz widział ile mu zostalo możesz do zmiennej czas przypisać cokolwiek i ustawić task i ustawić go na te 120 sekund i tam od razu zerować.
}
Else ColorChat(id, kolor, " Ruletkę możesz użyć tylko raz na 2 minuty oraz musisz mieć 10000$ ")

}
Quote

  • +
  • -
Robiin's Photo Robiin 02.05.2016

Z twojej wypowiedzi wywnioskowałem, że możliwość ruletki może być dostępna tylko dla osób z dana suma pieniędzy i co jakiś czas.
Więc:

New czas[32];

Public funkcja(id)
{
New money = cs_get_user_money(id)
If(money >= 10000 && czas[id] == 0)
{
Gracz ma wymagana kwotę oraz odczekał wymagny czas do ponownego użyciaruletki. Tutaj możesz wywołać ruletkę. Oraz ustawiasz task w którym np. Za 2 minuty wyzerujesz mu czas oczekiwania.
Jeśli chcesz wyświetlać ilość pozostałych sekund to:
czas[id] = 120
I task dajesz na 1 sec i z flaga b.
Sprawdzasz w funkcji wywoływanej przez task czy czas nie jest równy juz 0 jeśli tak to usuwasz task.
Jeśli nie chcesz by gracz widział ile mu zostalo możesz do zmiennej czas przypisać cokolwiek i ustawić task i ustawić go na te 120 sekund i tam od razu zerować.
}
Else ColorChat(id, kolor, " Ruletkę możesz użyć tylko raz na 2 minuty oraz musisz mieć 10000$ ")

}

 

 

Jestem głupi, albo głupi xD

 

Przykładzik może?  

Quote