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
 

[ROZWIĄZANE] Wiele set_tasków dla tej samej funkcji w tym samym czasie

set_task multiple time

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

#1 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 07.12.2012 16:16

Czy działanie kilku set_tasków dla tej samej funkcji w tym samym czasie
jest możliwe i czy nie będą zadania czasowe ze sobą kolidować?

Przykładowy kod z Wiki (http://wiki.amxmodx....MX_Mod_X)#Tasks) dla rozjaśnienia pytania:
//the timed function receives the parameter array and its task id
public slapTask(params[], id)
{
new player = params[0]
user_slap(player, 5)
}

public start_slapping(id)
{
new params[1]
params[0] = id
//we don't need a specific id
set_task(1.0, "slapTask", 0, params, 1, "a", 5)
}
Czy możliwe jest slapowanie wielu osób naraz przy użyciu funkcji start_slapping?
Na przykład poprzez rozpoczęcie slapowania wszystkich z drużyny, która przegrała poprzednią rundę
w momencie rozpoczęcia nowej rundy? Zaznaczę, że konieczne jest, by każda osoba była slapowana w osobnym tasku.

Użytkownik benio101 edytował ten post 07.12.2012 16:19
dod.


#2 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 553
Godlike

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

Napisano 07.12.2012 16:28

Jeżeli dobrze zrozumiałem co chcesz zrobić to tak jest to możliwe
użyłem tego np. tutaj http://darkgl.amxx.p...zycia-cheaterom

wszystko wyjaśnia ten kod
void CTaskMngr::registerTask(CPluginMngr::CPlugin *pPlugin, int iFunc, int iFlags, cell iId, float fBase, int iParamsLen, const cell *pParams, int iRepeat)
{
	// first, search for free tasks
	TaskListIter iter = m_Tasks.find(CTaskDescriptor(0, NULL, true));
	
	if (iter)
	{
		// found: reuse it
		iter->set(pPlugin, iFunc, iFlags, iId, fBase, iParamsLen, pParams, iRepeat, *m_pTmr_CurrentTime);
	} else {
		// not found: make a new one
		CTask *pTmp = new CTask;
		
		if (!pTmp)
			return;
		
		pTmp->set(pPlugin, iFunc, iFlags, iId, fBase, iParamsLen, pParams, iRepeat, *m_pTmr_CurrentTime);
		m_Tasks.put(pTmp);
	}
}

  • +
  • -
  • 0

#3 Gość_21977_*

  • Autor tematu
  • Gość

Reputacja: 0

Offline

Napisano 07.12.2012 16:37

Dokładnie o to mi chodziło, dzięki.

#4 Gość_21977_*

  • Autor tematu
  • Gość

Reputacja: 0

Offline

Napisano 07.12.2012 16:37

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL





Również z jednym lub większą ilością słów kluczowych: set_task, multiple, time

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

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