Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

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] set_task pętla co rundę


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

#1 aha.mp3

    Diablo Mody i te sprawy ;3

  • Użytkownik

Reputacja: 126
Zaawansowany

  • Postów:354
  • GG:
  • Imię:Michał
  • Lokalizacja:Legionowo
Offline

Napisano 18.10.2014 18:35

Witajcie. Mam mały problem z

 

set_task

 

A mianowicie, chciałbym sprawić, żeby 

 

set_task(1.0, "checklvl", id)

 

było wykonywane co rundę na jej początku. Pytanie: Jak mogę tego dokonać?? :)


  • +
  • -
  • 0

b_350_20_000000_000000_FFFFFF_DA0707.png
b_350_20_000000_000000_FFFFFF_DA0707.png


#2 Petpat

    Wszechwidzący

  • Użytkownik

Reputacja: 64
Pomocny

  • Postów:245
  • Imię:Łukasz
  • Lokalizacja:Rzeszów
Offline

Napisano 18.10.2014 18:44

Dodaj #include <hamsandwich>
 
 
w public_init dodaj
 
    RegisterHam(Ham_Spawn, "player", "wykonaj", 1);
Potem dodaj
 
public wykonaj(){
    set_task(1.0, "checklvl", id)
}
Po co pętla skoro można zrobic tak ? :)

Użytkownik Petpat edytował ten post 18.10.2014 18:46

  • +
  • -
  • 0

#3 Wielkie Jol

    REPREZENTUJE SIEBIE I CAŁĄ GALAKTYKĘ

  • Support Team

Reputacja: 678
Wszechmogący

  • Postów:1258
  • GG:
  • Lokalizacja:AMXX
Offline

Napisano 18.10.2014 19:09

refresh

 

 

Dodaj #include <hamsandwich>
 
 
w public_init dodaj
 

    RegisterHam(Ham_Spawn, "player", "wykonaj", 1);
Potem dodaj
 
public wykonaj(){
    set_task(1.0, "checklvl", id)
}
Po co pętla skoro można zrobic tak ? :)

 

 

Próbowałeś to chociaż skompilować? xD

 

0ne, dodajesz event nowej rundy i w pętli dla każdego gracza wykonujesz taska.


  • +
  • -
  • 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.


#4 MyShoT4YoU

    Pomocny

  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:41
  • Lokalizacja:tyłek
Offline

Napisano 18.10.2014 21:07

Przykład eventu hltv

 

Ten przykład działa, ale chyba ten event też tej funkcji służy

register_logevent("TaskCzasu", 2, "1=Round_Start");
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN ""
#define VERSION "1.0"
#define AUTHOR "MyShoT4You"

public plugin_init() 

{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("HLTV", "TaskCzasu", "a", "1=0", "2=0") 
}

public TaskCzasu(id){

set_task(55.0, "TaskCzasu")

}

public task()
{
////twój kod
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/


Użytkownik MyShoT4YoU edytował ten post 18.10.2014 21:10

  • +
  • -
  • 0

#5 Wielkie Jol

    REPREZENTUJE SIEBIE I CAŁĄ GALAKTYKĘ

  • Support Team

Reputacja: 678
Wszechmogący

  • Postów:1258
  • GG:
  • Lokalizacja:AMXX
Offline

Napisano 18.10.2014 21:46


Przykład eventu hltv

Ten przykład działa, ale chyba ten event też tej funkcji służy

register_logevent("TaskCzasu", 2, "1=Round_Start");
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN ""
#define VERSION "1.0"
#define AUTHOR "MyShoT4You"

public plugin_init() 

{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("HLTV", "TaskCzasu", "a", "1=0", "2=0") 
}

public TaskCzasu(id){

set_task(55.0, "TaskCzasu")

}

public task()
{
////twój kod
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/


Niby czemu ma ten kod służyć?
  • +
  • -
  • 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.


#6 aha.mp3

    Diablo Mody i te sprawy ;3

  • Autor tematu
  • Użytkownik

Reputacja: 126
Zaawansowany

  • Postów:354
  • GG:
  • Imię:Michał
  • Lokalizacja:Legionowo
Offline

Napisano 19.10.2014 08:57

Chodzi mi to, żeby sprawdzało co rundę lvl graczowi. 

 

Z dwoma warunkami w

public RoundStart()

wygląda to tak:

 

if(player_lvl[i] > 0 && zobaczylemlvl[i] == 0)
{
set_task(1.0, "checklvl", i)
}
a to moje checklvl
Spoiler
W ten sposób opisany task wykonuje się raz na mapę i nie wiem jak mogę to zmienić, żeby był co rundę ;P
 
Spróbuję jeszcze pokombinować z flagami.
 
 

@MyShoT4YoU

 

set_task wykonuje funkcję w określonym czasie. A w twoim wypadku to on ch**a zrobi, bo dałeś

set_task(55.0, "TaskCzasu")

a później jako funkcję wykonywalną dałeś

public task()

{

}

więc stale wykonujesz funkcję

public TaskCzasu()

gdzie masz umieszczony ten sam task... :facepalm:

 


Użytkownik !_0ne_! edytował ten post 19.10.2014 09:17

  • +
  • -
  • 0

b_350_20_000000_000000_FFFFFF_DA0707.png
b_350_20_000000_000000_FFFFFF_DA0707.png


#7 Wielkie Jol

    REPREZENTUJE SIEBIE I CAŁĄ GALAKTYKĘ

  • Support Team

Reputacja: 678
Wszechmogący

  • Postów:1258
  • GG:
  • Lokalizacja:AMXX
Offline

Napisano 19.10.2014 09:33   Najlepsza odpowiedź

1. Aaa, no to bierzesz ten event:

register_logevent("Poczatek_Rundy", 2, "1=Round_Start")

2. Robisz petle dla wszystkich graczy na serwerze.

3. W petli dajesz warunki i inne duperele.

4. I dla kazdego gracza w petli wykonujesz funkcje checklevel(id)

 

Ale po co to?

zobaczylemlvl[i]

 

Przeciez co runde graczowi przybywa expa i moze w pewnej rundzie osiagnac level 100, ale Ty juz tego nie sprawdzisz, bo zablokowales mozliwosc sprawdzenia.


  • +
  • -
  • 1

"Ż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.





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

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