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

set_countdown


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

#1 GT Team

    Ten lepszy xD

  • Zbanowany

Reputacja: 321
Wszechpomocny

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

Napisano 14.10.2013 23:29

#if defined _countdown_included
  #endinput
#endif
#define _countdown_included

#include 

#define TASK 5515

new ciTime;
new ciColor[3]
new Float:cfPosition[2];
new ciEffect;
new ciMode;
new ciChannel;
new cszText[64];
new ciNum
new giSec = 1

stock set_countdown(id, szText[], iColor[3], Float:posX, Float:posY, iEffect = 0, tTime, iMode = 1, channel = 4, const szFunction[] = "", ifindex = 0, ifParam[] = "", ifLen = 0)
{
	/*
	iMode == 0 || Czas odlicza od 0 do tTime
	iMode == 1 || Czas odlicza od tTime do 0
	*/
	if(task_exists(id+TASK))
		return PLUGIN_CONTINUE
		
	ciNum = formatex(cszText, strlen(szText), szText);
	ciTime = tTime;
	ciColor = iColor;
	cfPosition[0] = posX
	cfPosition[1] = posY
	ciEffect = iEffect
	ciMode = iMode;
	ciChannel = channel;
	
	display_countdown(id+TASK)
	
	if(strlen(szFunction) > 0)
		set_task(float(tTime), szFunction, ifindex, ifParam, ifLen);
	return PLUGIN_CONTINUE
}

public display_countdown(id) 
{	
	static gszSec[6];
	id-=TASK

	if(giSec > ciTime) {
		remove_task(id+TASK);
		
		giSec = 1;
		ciTime = 0
		ciColor = {0, 0, 0}
		cfPosition[0] = 0.0
		cfPosition[1] = 0.0
		ciEffect = 0
		ciMode = 0
		ciChannel = 0
	
		return PLUGIN_CONTINUE
	}
	
	if(ciMode == 1){
		formatex(gszSec, 5, " %d", ciTime-giSec);
		add(cszText, 64,  gszSec);
	} else if(ciMode == 0) {
		formatex(gszSec, 5, " %d", giSec);
		add(cszText, 64,  gszSec);
	}
	
	set_hudmessage(ciColor[0], ciColor[1], ciColor[2], cfPosition[0], cfPosition[1], ciEffect, 6.0, 1.1, _, _, ciChannel)
	show_hudmessage(id, cszText)
	
	formatex(cszText[ciNum], ciNum, "")
	formatex(cszText[ciNum+1], ciNum, "")
	formatex(cszText[ciNum+2], ciNum, "")
	formatex(cszText[ciNum+3], ciNum, "")
	
	giSec++;
	set_task(1.0, "display_countdown", id+TASK);
	return PLUGIN_CONTINUE
}

Jest to stock stworzony przez GT Team, ma on na celu symulowanie odliczania. Sorka, za zmienne globalne, lecz musiałem je stworzyć. Do dyspozycji mamy 2 tryby, a dodatkowo możemy po odliczeniu czasu tTime wywołac dowolną funkcją i przesłać do niej parametry ( jak w set_task )

Gdy iMode == 0 | Czas odlicza od 0 do wyznaczonego przez nas czasu tTime
Gdy iMode == 1 | Odlicza od wyznaczonego przez nas czasu t Time do 0

A to krótkie wyjaśnienie parametrów

id - Index gracza do pokazania, jesli 0 pokazuje serwerowi 
szText[] - Wiadomosc ktora bedzie towarzyszyc odliczanej liczbie, np damy "Nastepna mapa za:" to w Hudzie pokaze : "Nastepna mapa za: X"
iColor[3] - Kolor wyświetlanej wiadomości w RGB,
Float:posX, Float:posY - Pozycja X i Y wieswietlanej wiadomosci
iEffect - Efekt wiadomosci ( Taki jak przy hudmessage) 
tTime - Czas do (od) którego będzie odliczany
iMode - Tryb odliczania ( Omówiony powyżej )
channel - Kanał wyświetlanej wiadomości
const szFunction[] - Funkcja która może ( choć nie musi ) się wykonać po zakończeniu odliczania
ifindex - ID wysyłane do funkcji (gdy podana szFunction)
ifParam[] - Parametry wysyłane do funkcji (gdy podana szFunction)
ifLen - Maksymalny bufor ifParam[] (gdy podana szFunction)

Tutaj przykład uzycia:

/* Plugin generated by AMXX-Studio */
#include 
#include 

#define PLUGIN "asd"
#define VERSION "2.0"
#define AUTHOR "GT Team"

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_clcmd("say /asd", "asd")
}
public asd(id)
{
	new data[4]
	data[0] = 5
	data[1] = 20
	data[2] = 30
	data[3] = 55
	set_countdown(id, "Odliczam do 20:", { 0, 0, 255} ,-1.0 ,-1.0 , 1 , 20 ,1 ,2, "asd2", id, data, 4)
        /*Wyświetl graczowi ID, Tekst: "Odliczam do 20:", Kolor niebieski, na środku ekranu, efekt migający, do 20, tryb 1, kanał 2, potem wykonaj funkcje "asd2", prześlij id = id i data*/
}
public asd2(data[], id)
{
	client_print(0, 3, "id: %d", id)
	client_print(0, 3, "1: %d", data[0])//wypisze 5
	client_print(0, 3, "2: %d", data[1]) // 20
	client_print(0, 3, "3: %d", data[2]) // 30
	client_print(0, 3, "4: %d", data[3]) // 55
}

Uwaga, na serwerze moze być wyświetlany tylko jeden set_countdown na raz!

http://www.mediafire.com/?g6hte5h7aambb7a        | Plik *.inc
http://www.mediafire.com/?zqgny722d22tyo7        | Plik *.sma

Przepraszam bardzo, że nie w załącznikach, lecz mam problemy z przesłaniem ich na amxx.pl

 

Załączam pliki z mediafire do posta. ~21977

Załączony plik  countdown.inc   2,06 KB  51 Ilość pobrań

Załączony plik  test.sma   885 bajtów  68 Ilość pobrań
  test.amxx


Użytkownik Benio101 edytował ten post 19.10.2013 08:12
+zał.

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

 


#2 GT Team

    Ten lepszy xD

  • Autor tematu
  • Zbanowany

Reputacja: 321
Wszechpomocny

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

Napisano 18.10.2013 16:46

@up Czekam na informacje, czy jest to dobrze napisane i czy mozna to poprawić

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

 


#3 d0naciak

    Godlike

  • Power User

Reputacja: 1 029
Hero

  • Postów:2 414
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Kotlarka
Offline

Napisano 18.10.2013 18:56

było: http://amxx.pl/topic...ryb-odliczania/


  • +
  • -
  • 0

#4 GT Team

    Ten lepszy xD

  • Autor tematu
  • Zbanowany

Reputacja: 321
Wszechpomocny

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

Napisano 18.10.2013 18:59

Nie wiedziałem, ale liczmy, ze to wersje by ME i wesja ALL INCLUSIVE.

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

 


#5 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 983
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 18.10.2013 19:11

Zmienne też mogą być stock


  • +
  • -
  • 0

#6 GT Team

    Ten lepszy xD

  • Autor tematu
  • Zbanowany

Reputacja: 321
Wszechpomocny

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

Napisano 18.10.2013 20:38

w sensie w display_countdown? czy jak? ;D

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

 


#7 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 983
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 26.10.2013 16:49

Nie,  zmienne globalne które utworzyłeś

Poza tym radziłbym dodać  jakieś bardziej skomplikowane prefixy do nich

 

Dodatkowo dodawanie liczby do id taska jest niepotrzebne


Użytkownik DarkGL edytował ten post 26.10.2013 16:51

  • +
  • -
  • 2




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

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