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

get_time prośba o wytłumaczenieOpis zbędny.


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

#1 Drzanas

    Godlike

  • Power User

Reputacja: 329
Wszechpomocny

  • Postów:1 283
  • Steam:steam
  • Imię:Piotrek
  • Lokalizacja:Warszawa
Offline

Napisano 05.11.2011 14:31

Witam.
Chciałbym zrobić w pluginie aby o godzinie 12:00 działo się coś, o godzinie 13:00 działo się coś i tak dalej.
Za sprawdzenie godziny odpowiada (chyba) funkcja
get_time
.
Czy mógłby mi ktoś wytłumaczyć na jakimś przykładzie jak używać tego?
Załóżmy że jeżeli jest godzina 13:00 na serwerze pojawia się napisa w say
Mamy godzinę 13:00
. A jak jest godzina 14:00 pojawia się tekst
Wybiła godzina 14:00
Proszę mi nie podawać linku do tego pluginu http://forums.allied...read.php?t=1263 oraz tego http://amxx.pl/topic...-by-justinhomi/
Z góry dziękuję za odpowiedź.

Użytkownik Drzanas edytował ten post 05.11.2011 14:34

  • +
  • -
  • 0

graphic.png


#2 MarWit

    The Chosen One

  • Przyjaciel

Reputacja: 843
Czempion

  • Postów:1 485
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Bystrzyca
Offline

Napisano 05.11.2011 14:55

Możesz zrobić to np. tak:

#include <amxmodx>
#include <engine>

new szDate[64];

public plugin_init() {
register_plugin("Test", "0.1", "MarWit")
register_think("msgent", "MsgEnt_Think")

new g_iMsgEnt = create_entity("info_target")
entity_set_string(g_iMsgEnt, EV_SZ_classname, "msgent")
entity_set_float(g_iMsgEnt, EV_FL_nextthink, get_gametime() + 1.0)
}

public MsgEnt_Think(iEnt)
{
get_time("%X", szDate, 63)

if(equali(szDate, "15:00:00"))
{
// Tu dajesz kod co ma sie wykonac o godzinie 15:00:00
}

entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 1.0)
}


Działa to na takiej zasadzie:
Tworzysz byt i ustawiasz mu nextthinka co sekunde. Wtedy pobierany jest czas ( format: gg:mm:ss ) i sprawdzany
if(equali(szDate, "15:00:00"))

Jak chcesz aby coś się stało np. o 18:30, tworzysz następnego if'a ( analogicznie do pierwszego ) np.

if(equali(szDate, "18:30:00"))
{
// Tu dajesz kod co ma sie wykonac o godzinie 18:30:00
}

Użytkownik MarWit edytował ten post 05.11.2011 14:56

  • +
  • -
  • 1

marwit-0.png


#3 Drzanas

    Godlike

  • Autor tematu
  • Power User

Reputacja: 329
Wszechpomocny

  • Postów:1 283
  • Steam:steam
  • Imię:Piotrek
  • Lokalizacja:Warszawa
Offline

Napisano 05.11.2011 15:15

public MsgEnt_Think(iEnt)
{
get_time("%X", szDate, 63)

if(equali(szDate, "15:00:00"))
{
// Tu dajesz kod co ma sie wykonac o godzinie 15:00:00
}
if(equali(szDate, "16:00:00"))
{
//cod
}


entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 1.0)
}

I będzie dobrze?

Użytkownik Drzanas edytował ten post 05.11.2011 15:15

  • +
  • -
  • 0

graphic.png


#4 MarWit

    The Chosen One

  • Przyjaciel

Reputacja: 843
Czempion

  • Postów:1 485
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Bystrzyca
Offline

Napisano 05.11.2011 15:32

Tak

Użytkownik MarWit edytował ten post 05.11.2011 15:32

  • +
  • -
  • 1

marwit-0.png


#5 Drzanas

    Godlike

  • Autor tematu
  • Power User

Reputacja: 329
Wszechpomocny

  • Postów:1 283
  • Steam:steam
  • Imię:Piotrek
  • Lokalizacja:Warszawa
Offline

Napisano 07.11.2011 16:20

Dziękuje.
Można zamknąć.

A jednak jeszcze mam jedno pytanie.
Jak zrobić obliczanie ile zostało do danej godziny?
Jest 12:15 a chce aby wyświetlało (w minutach) ile pozostało czasu czasu do 13?

Albo ile zostało do godziny 14:05 jak mamy np 13:58.
Najlepiej żeby w hud to było, ale mogę sobie przerobić.

Użytkownik Drzanas edytował ten post 07.11.2011 16:20

  • +
  • -
  • 0

graphic.png


#6 MarWit

    The Chosen One

  • Przyjaciel

Reputacja: 843
Czempion

  • Postów:1 485
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Bystrzyca
Offline

Napisano 07.11.2011 17:14

Wyliczyć ile zostało do danej godziny nie jest trudno. Przykładowy kod:

#include <amxmodx>
#include <amxmisc>

public plugin_init()
register_clcmd("say /do16", "cmdDo16")

public cmdDo16(id)
{
new szDate[64], szTemp[2][5]
new iNum[3]

get_time("%H:%M", szDate, 63)
split(szDate, szTemp[0], charsmax(szTemp[]), szTemp[1], charsmax(szTemp[]), ":")

iNum[0] = (str_to_num(szTemp[0]) * 60 ) + str_to_num(szTemp[1])
iNum[1] = (16 * 60)

if(iNum[0] < iNum[1])
iNum[2] = iNum[1] - iNum[0]
else
iNum[2] = ( 24 * 60 ) + ( iNum[0] - iNum[1] )


client_print(id, print_chat, "Do godziny 16:00 zostalo: %d min. !", iNum[2])
}


Po wpisaniu w say'u komendy /do16 w chacie wyświetli sie ile zostało minut do 16:00
sebul (11.04.2012 20:42):
Trochę odkopię tą notką, ale chyba zdecydowanie lepiej użyć tutaj funkcji time ;]

Użytkownik MarWit edytował ten post 07.11.2011 17:15

  • +
  • -
  • 1

marwit-0.png





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

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