Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Funkcja czasowa


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
12 odpowiedzi w tym temacie

#1 Manua-L

    Pomocny

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:71
  • GG:
  • Imię:Mateusz
  • Lokalizacja:Częstochowa
Offline

Napisano 03.09.2014 17:43

Nie wiem czy to set_task, próbowałem z nim i nic, może nie umiem. Pytanie jest takie: chiciałbym wiedzieć jak zrobić by gracz, który napisał komendę np. /test musiał czekać 5 sek., dodatkowo zaliczając do tego każdego gracza, czyli jesli 1 gracz to napisze, to wszyscy wraz z nim musza czekac te 5 sek. + Pozostały czas do ponownego użycia komendy

Wie ktoś?


Użytkownik Manua-L edytował ten post 03.09.2014 17:43

  • +
  • -
  • 0

#2 MAGNET

    SourceLearned ;)

  • Moderator

Reputacja: 661
Wszechmogący

  • Postów:1 535
  • GG:
  • Imię:Olek
  • Lokalizacja:Dalekoo
Offline

Napisano 03.09.2014 17:50

najprościej tak:

#include <amxmodx>
 
new mozna;
 
public plugin_init()
{
register_plugin("x", "xx", "xxx");
register_clcmd("say /test", "TEST");
}
 
public TEST(id)
{
if(!mozna)
{
client_print(id, print_center, "Musisz poczekac jeszcze %i sekund!", mozna);
return PLUGIN_CONTINUE;
}
mozna = 5;
set_task(1.0, "Odliczanie", 125, _, _, "b");
}
 
public Odliczanie()
{
if(mozna)
mozna--;
else
if(task_exists(125) remove_task(125);
}

radim (03.09.2014 20:21):
Jeszcze prościej będzie użyć zmiennej logicznej :P

  • +
  • -
  • 1

#3 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 03.09.2014 17:57

najprościej tak:
 

#include <amxmodx>
 
new mozna;
 
public plugin_init()
{
register_plugin("x", "xx", "xxx");
register_clcmd("say /test", "TEST");
}
 
public TEST(id)
{
if(!mozna)
{
client_print(id, print_center, "Musisz poczekac jeszcze %i sekund!", mozna);
return PLUGIN_CONTINUE;
}
mozna = 5;
set_task(1.0, "Odliczanie", 125, _, _, "b");
}
 
public Odliczanie()
{
if(mozna)
mozna--;
else
if(task_exists(125) remove_task(125);
}

Błędy ^ ^
 
#include <amxmodx>

#define TASK_M 4354

new mozna;

public plugin_init()
{
	register_plugin("x", "xx", "xxx");
	register_clcmd("say /test", "TEST");
}

public TEST(id)
{
	if(mozna > 0)
	{
		client_print(id, print_center, "Musisz poczekac jeszcze %i sekund!", mozna);
		return;
	}
	mozna = 5;
	set_task(1.0, "Odliczanie", TASK_M, _, _, "b");
}

public Odliczanie()
{
	--mozna;
	if(mozna < 1) remove_task(TASK_M);
}

  • +
  • -
  • 1

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#4 MAGNET

    SourceLearned ;)

  • Moderator

Reputacja: 661
Wszechmogący

  • Postów:1 535
  • GG:
  • Imię:Olek
  • Lokalizacja:Dalekoo
Offline

Napisano 03.09.2014 18:04

Poza tym, że nie domknąłem nawiasu powiedz gdzie jeszcze jest błąd.

Poza tym dlaczego robisz np. if(mozna < 1), skoro logicznym jest, że chodzi o 0. Możemy więc spokojnie dać if(!mozna). Tak samo wygląda to tutaj: if(mozna > 0), skoro wystarczyłoby samo if(mozna)

@EDIT

if(!mozna)
{
client_print(id, print_center, "Musisz poczekac jeszcze %i sekund!", mozna);
return PLUGIN_CONTINUE;
}

tutaj jeszcze negacja zła


Użytkownik MAGNET edytował ten post 03.09.2014 18:05

  • +
  • -
  • 0

#5 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 03.09.2014 18:06

Poza tym, że nie domknąłem nawiasu powiedz gdzie jeszcze jest błąd.
Poza tym dlaczego robisz np. if(mozna < 1), skoro logicznym jest, że chodzi o 0. Możemy więc spokojnie dać if(!mozna). Tak samo wygląda to tutaj: if(mozna > 0), skoro wystarczyłoby samo if(mozna)

Nie dałeś "if(mozna)" tylko "if(!mozna)" oraz w funkcji taska tak zrobiłeś te warunki, że gracz musiałby czekać 6 sekund, a nie 5. A czemu napisałem tak, a nie inaczej? Ładniej wygląda i jest bardziej czytelne, nie ma to żadnego znaczenia.
  • +
  • -
  • 1

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#6 MAGNET

    SourceLearned ;)

  • Moderator

Reputacja: 661
Wszechmogący

  • Postów:1 535
  • GG:
  • Imię:Olek
  • Lokalizacja:Dalekoo
Offline

Napisano 03.09.2014 18:09


funkcji taska tak zrobiłeś te warunki, że gracz musiałby czekać 6 sekund, a nie 5

faktycznie, trochę nameniałem :P. Negacje nadmieniłem wyżej. Ale i taka uważam, że używanie w tym przypadku < > nie wygląda ładnie. Dużo schludniej i przejrzyściej widać, gdy widzisz, czy coś "jest", lub "nie ma"


sebul (03.09.2014 18:11):
A ja uważam, że tutaj dużo ładniej jest gdy widzisz, czy coś jest mniejsze lub większe, tym bardziej jeśli kod jest pisany dla "laika" ^ ^
MAGNET (03.09.2014 18:14):
z tym ostatnim nie można się nie zgodzić
sebul (03.09.2014 18:18):
Zresztą jak dobrze pamiętam, to chociażby w c# przy takich warunkach, czy coś "jest" lub "nie jest" i zmiennej int, wywala ostrzeżenia, albo nawet błędy i być może jest więcej takich języków, gdzie coś takiego występuje.

  • +
  • -
  • 0

#7 Wielkie Jol

    REPREZENTUJE SIEBIE I CAŁĄ GALAKTYKĘ

  • Support Team

Reputacja: 683
Wszechmogący

  • Postów:1 258
  • GG:
  • Lokalizacja:AMXX
Offline

Napisano 03.09.2014 19:36

Nie łatwiej to zrobić za pomocą pobrania wartości funkcją get_gametime()?


  • +
  • -
  • 0

"Żaden etyczny inżynier oprogramowania nie zgodzi się napisać procedury zniszczBagdad. Jego poczucie etyki domaga się, aby napisał procedurę zniszczMiasto, a Bagdad przekazał jako parametr" - Nathaniel Borenstein.


#8 MAGNET

    SourceLearned ;)

  • Moderator

Reputacja: 661
Wszechmogący

  • Postów:1 535
  • GG:
  • Imię:Olek
  • Lokalizacja:Dalekoo
Offline

Napisano 03.09.2014 20:26

W sumie i racja :P
  • +
  • -
  • 0

#9 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 03.09.2014 22:50

Nie łatwiej to zrobić za pomocą pobrania wartości funkcją get_gametime()?

Nie wydaję mi się, żeby to było łatwiejsze, jest to po prostu inny także dobry sposób.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#10 xenos

    Wszechobecny

  • Użytkownik

Reputacja: 216
Profesjonalista

  • Postów:467
  • GG:
  • Imię:Konrad
  • Lokalizacja:Rzeszów
Offline

Napisano 03.09.2014 22:56

Nie łatwiej to zrobić za pomocą pobrania wartości funkcją get_gametime()?


To i tak byś musiał gdzieś zapamiętywać czas kiedy została wykonana by mógł powstać warunek
  • +
  • -
  • 0
"Jeśli potrafię to pomogę, jeśli nie potrafię to wskaże drogę którą trzeba dążyć by znaleźć odpowiedz" 

Pluginy:
Szukanie Aktywnych Banów w AmxBansie
Drop After Death
Kto postawił mine

#11 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 03.09.2014 23:35


Nie wydaję mi się,

 

Może nie latwiejsze ale krótsze bo sprowadza sie do

#define #CZAS 5.0
new float:zmienna=0.0;
public komenda(id){
   if(get_gametime()<zmienna)
     return;
   zmienna=get_gametime()+CZAS;
}

  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#12 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 04.09.2014 01:03

Nie wydaję mi się,

 
Może nie latwiejsze ale krótsze bo sprowadza sie do
 
#define #CZAS 5.0
new float:zmienna=0.0;
public komenda(id){
   if(get_gametime()<zmienna)
     return;
   zmienna=get_gametime()+CZAS;
}

Jak dodasz info i podstawowe linijki kody, jakie ma kod wyżej, to długość kodu skróci się praktycznie tylko o funckję taska. I w define mały błąd masz ^ ^
#include <amxmodx>

#define CZAS 5

new mozna;

public plugin_init()
{
	register_plugin("x", "xx", "xxx");
	register_clcmd("say /test", "TEST");
}

public TEST(id)
{
	new iTime = floatround(get_gametime());
	if(mozna > iTime)
	{
		client_print(id, print_center, "Musisz poczekac jeszcze %i sekund!", mozna-iTime);
		return;
	}
	mozna = iTime+CZAS;
}

sebul (04.09.2014 01:05):
I zrób coś z tym sowim nickiem, bo nawet normalnie zacytować się Ciebie nie da ;/

  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#13 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 04.09.2014 22:26

ot literówka sie mi wkradła

 

// kiedyś się dało jeszcze Pavulon latke pisał xD


  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych