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

[ROZWIĄZANE] Ograniczenie danej komendy czasowo.


  • Zamknięty Temat jest zamknięty
11 odpowiedzi w tym temacie

#1 Mister Silenzo

    Zaawansowany

  • Użytkownik

Reputacja: 39
Życzliwy

  • Postów:83
  • Lokalizacja:BD
Offline

Napisano 28.10.2013 22:59

Witam!
 
 
Na wstępie pragnę wspomnieć, iż jestem laikiem w dziedzinie scriptingu AMXX, do rzeczy. Otóż napisałem malutki plugin dla testu i chcę go rozwijać, w celach naukowych i tu pojawia się moje pytanie "Jak ograniczyć komendę czasowo?". Dotychczas napisałem w tym "pluginie" tyle:

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <Fun>

#define PLUGIN "Taki tam PLGN"
#define VERSION "0.1b"
#define AUTHOR "Mister Silenzo"

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_clcmd("say /dodaj", "kasa_hp", _, "Komenda daje 1200$ i 20HP")
}

public kasa_hp(id)
{
	new HP = get_user_health(id);
	new MONEY = cs_get_user_money(id);
	set_user_health(id, HP + 20);
	cs_set_user_money(id, MONEY + 1200);
}
Przykładowo, na serwerach JB można spotkać słynną ruletkę na komendę, która jest czasowo ograniczona między użyciami, np. o 300 sekund. Sprawdzałem dostępne funkcje, oraz używałem opcji szukaj i nic ciekawego się z tamtąd nie dowiedziałem. Proszę o możliwie najszybszą odpowiedź.
  • +
  • -
  • 0
Moje pluginy:

Kick All (administracja) - Wyrzuca graczy nakładając hasło na serwer.

Zlecenie Zabójstwa (4FUN) - Przyjmij zlecenie, wykonaj je, zdobądź punkty, a następnie wydaj je na dodatki, które pozwolą ci skuteczniej i szybciej wykonywać zlecenia.

#2 Ogen Dogen

    Czempion

  • Power User

Reputacja: 261
Wszechwidzący

  • Postów:837
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Dąbrowa Górnicza
Offline

Napisano 28.10.2013 23:30

Do funkcji czasowych służy set_task


  • +
  • -
  • 0

b_350_20_360204_C20008_FFFFFF_000000.png 193.33.176.115:27015

 

94e23d811c.png

 


#3 Mister Silenzo

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 39
Życzliwy

  • Postów:83
  • Lokalizacja:BD
Offline

Napisano 29.10.2013 06:56

Do tego doszedłem sam :P Mógłyś rzucić kod z wykorzystaniem set_task'a?
  • +
  • -
  • 0
Moje pluginy:

Kick All (administracja) - Wyrzuca graczy nakładając hasło na serwer.

Zlecenie Zabójstwa (4FUN) - Przyjmij zlecenie, wykonaj je, zdobądź punkty, a następnie wydaj je na dodatki, które pozwolą ci skuteczniej i szybciej wykonywać zlecenia.

#4 szelbi

    Hero

  • Power User

Reputacja: 373
Wszechpomocny

  • Postów:1 032
  • Steam:steam
  • Imię:Norbert
  • Lokalizacja:Częstochowa
Offline

Napisano 29.10.2013 08:16

Tworzysz zmienną
new bool:uzyl[33];
Przy użyciu ustawiasz na true, a później, za pomocą taska zmieniasz ponownie na false.

Wysłane z mojego HTC Desire S przy użyciu Tapatalk 4
  • +
  • -
  • 0

#5 MAGNET

    SourceLearned ;)

  • Moderator

Reputacja: 661
Wszechmogący

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

Napisano 29.10.2013 08:36

@norbi czytaj:
http://amxx.pl/?app=...q&do=faq&read=8
@,EDIT
Ponadto przed przydzielaniem bonusow musisz sprawdzic czy bit jest aktywny(CheckBit)
  • +
  • -
  • 0

#6 GT Team

    Ten lepszy xD

  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 29.10.2013 11:40

Bądź używasz get_gametime


Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#7 Mister Silenzo

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 39
Życzliwy

  • Postów:83
  • Lokalizacja:BD
Offline

Napisano 29.10.2013 18:30

Nadal nie wiem jak mam ograniczyć tę komendę czasowo >.< Będzie to coś w tym stylu(?):
 
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <Fun>

#define PLUGIN "Taki tam PLGN"
#define VERSION "0.1b"
#define AUTHOR "Mister Silenzo"

new reset_komendy = 300
new bool:uzyl[33]

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_clcmd("say /dodaj", "kasa_hp", _, "Komenda daje 1200$ i 20HP")
}

public kasa_hp(id)
{
	set_task(300.0, "hp_kasa");
}

public hp_kasa(id)
{
	if(uzyl[0] = false)
	{
		new HP = get_user_health(id);
		new MONEY = cs_get_user_money(id);
		set_user_health(id, HP + 20);
		cs_set_user_money(id, MONEY + 1200);
		uzyl[0] = true;
	}
	else
	{
		client_print(id, print_chat, "Komendy mozesz uzyc dopiero za %i sekund", reset_komendy);
	} 
}
Nie wydaje mi się, że to jest dobrze... Bo nie jest i już widzę dlaczego, ale nadal nie potrafię napisać tego poprawnie D:...

Użytkownik Mister Silenzo edytował ten post 29.10.2013 18:45

  • +
  • -
  • 0
Moje pluginy:

Kick All (administracja) - Wyrzuca graczy nakładając hasło na serwer.

Zlecenie Zabójstwa (4FUN) - Przyjmij zlecenie, wykonaj je, zdobądź punkty, a następnie wydaj je na dodatki, które pozwolą ci skuteczniej i szybciej wykonywać zlecenia.

#8 MAGNET

    SourceLearned ;)

  • Moderator

Reputacja: 661
Wszechmogący

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

Napisano 29.10.2013 19:14

Nie czytałeś o bitach :P

 

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <hamsandwich>
#include <fun>
 
#define PLUGIN "Taki tam PLGN"
#define VERSION "0.1b"
#define AUTHOR "Mister Silenzo"
 
#define SetBit(%1,%2) (%1|=(1<<(%2)))
#define ClearBit(%1,%2) (%1&=~(1<<(%2)))
#define CheckBit(%1,%2) (%1&(1<<(%2)))
 
new uzyl;
 
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
 
register_clcmd("say /dodaj", "kasa_hp")
RegisterHam(Ham_Spawn, "player", "Respawn", 1);
}
public Respawn(id)
{
SetBit(uzyl, id)
}
public kasa_hp(id)
{
if(CheckBit(uzyl, id) && is_user_alive(id))
{
new HP = get_user_health(id);
new MONEY = cs_get_user_money(id);
set_user_health(id, HP + 20);
cs_set_user_money(id, MONEY + 1200);
ClearBit(uzyl, id)
set_task(10.0, "Moze")
}
}
 
public Moze(id)
{
SetBit(uzyl, id)
}

sebul (29.10.2013 19:17):
A może byś tak przestał z tymi bitami i nie mieszał mu nimi w głowie? Jeśli masz hlds 64 bitowy to możesz sobie ich używać do woli, ale 32 bity to za mało, żeby móc z tego korzystać.

  • +
  • -
  • 0

#9 MAGNET

    SourceLearned ;)

  • Moderator

Reputacja: 661
Wszechmogący

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

Napisano 29.10.2013 19:25

@Sebul

Okej okej

 

#include <amxmodx>

#include <amxmisc>
#include <cstrike>
#include <hamsandwich>
#include <fun>
 
#define PLUGIN "Taki tam PLGN"
#define VERSION "0.1b"
#define AUTHOR "Mister Silenzo"
 
#define INTERWAL 300
 
new bool:moze[33];
 
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
 
register_clcmd("say /dodaj", "kasa_hp")
 
RegisterHam(Ham_Spawn, "player", "Respawn", 1);
}
public Respawn(id)
{
moze[id] = true;
}
public kasa_hp(id)
{
if(!moze[id])
{
client_print(id, print_chat, "Musisz poczekac %i sekund, zanim uzyjesz tej komendy ponownie!", INTERWAL)
return PLUGIN_HANDLED;
}
if(!is_user_alive(id))
{
client_print(id, print_chat, "Musisz byc zywy aby uzyc tej komendy!")
return PLUGIN_HANDLED;
}
new HP = get_user_health(id);
new MONEY = cs_get_user_money(id);
set_user_health(id, HP + 20);
cs_set_user_money(id, MONEY + 1200);
moze[id] = false;
set_task(float(INTERWAL), "Moze")
return PLUGIN_CONTINUE;
}
 
public Moze(id)
{
moze[id] = true;
}
 
#define INTERWAL 300
Tu sobie zmieniasz co ile moze uzyc komendy

  • +
  • -
  • 0

#10 Klakier

    Volenti non fit iniuria

  • Power User

Reputacja: 391
Wszechpomocny

  • Postów:878
  • GG:
  • Imię:Sebastian
  • Lokalizacja:Mogilno
Offline

Napisano 29.10.2013 20:13

ewentualnie

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>

#define PLUGIN "Taki tam PLGN"
#define VERSION "0.1b"
#define AUTHOR "Mister Silenzo"

new Float:przerwa = 300.0
new Float:g_fTime[33]
new ile;

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_clcmd("say /dodaj", "hp_kasa", _, "Komenda daje 1200$ i 20HP")
}

public hp_kasa(id)
{
    if(!is_user_alive(id))
        return PLUGIN_CONTINUE;
    ile++;
    
    if(ile >= 2)
    {
        if(g_fTime[id] + przerwa > get_gametime())
        {
            client_print(id, print_chat, "Komendy mozesz uzyc dopiero za %0.1f sekund", (g_fTime[id] + przerwa)-get_gametime());
            return PLUGIN_CONTINUE;
        }
    }
    
    g_fTime[id] = get_gametime();
    
    new HP = get_user_health(id);
    new MONEY = cs_get_user_money(id);
    set_user_health(id, HP + 20);
    cs_set_user_money(id, MONEY + 1200);
        
    return PLUGIN_CONTINUE;
}

  • +
  • -
  • 1

Sell - System Klanów (wojny, top15 etc)

 

Kontakt GG: 7285018


#11 Mister Silenzo

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 39
Życzliwy

  • Postów:83
  • Lokalizacja:BD
Offline

Napisano 29.10.2013 22:22

Dobra, dzięki. Jeszcze dużo czasu upłynie zanim będę potrafił sam zrobić takie ograniczenie :D No coż, idę się uczyć ^^ Proszę o zamknięcie.
  • +
  • -
  • 0
Moje pluginy:

Kick All (administracja) - Wyrzuca graczy nakładając hasło na serwer.

Zlecenie Zabójstwa (4FUN) - Przyjmij zlecenie, wykonaj je, zdobądź punkty, a następnie wydaj je na dodatki, które pozwolą ci skuteczniej i szybciej wykonywać zlecenia.

#12 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 29.10.2013 22:28

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0

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





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

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

Coinsy CSGOPolygon Za SMS, PSC , Przelew - CoinSell.pro
Skiny do CS:GO za SMS, PSC, Przelew - CSGOPaka.com
Automatyczny Bot Levelowania Steam - LVLUPSteam.com
CSGO Gambling Sites and Free Betting Codes - DreamCodes.gg