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

give_item w pętli dla wszystkich graczy - jak?


Najlepsza odpowiedź grankee, 09.01.2015 11:58

Po co pobierasz players do tablicy jak z niego dalej nie korzystasz?

public giveKnifeSpeed()//po co Ci tu bylo id w tasku skoro go nie przekazujesz
{
    new num=get_maxplayers();
    
    for(new a = 1;a<=num;a++)
        {
         if(is_user_alive(a))
                give_item(a, "weapon_knife");
        }            
}

tylko , że to jest bez sensu, bo po każdym spawnie gracza wykonujesz to na wszytkich graczach, czyli na kazdym wykonasz to tyle razy ilu jest graczy na serwie. Lepiej przekazać id w tasku i robic to osobno dla kazdego czyli:

public fwHamPlayerSpawnPost(id){
    if (is_user_alive(id) && get_pcvar_num(KnifeRaceStrip) || knifeArena == true){
    StripWeapons(id, Primary);
    StripWeapons(id, Secondary);
    StripWeapons(id, Grenades);
    StripWeapons(id, Knife);
    
    if (is_user_alive(id) && !is_user_bot(id)){
    set_task(3.0, "giveKnifeSpeed",id);
    }
    }
}
public giveKnifeSpeed(id){
    if(is_user_alive(id))
        give_item(id, "weapon_knife");
                
}
Przejdź do postu


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

#1 psilocybe

    Toasty!

  • Power User

Reputacja: 252
Wszechwidzący

  • Postów:524
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:PL
Offline

Napisano 09.01.2015 11:28

Witam, mam problem z <fun> give_item.

 

Mianowicie przy spawnie gracza zabieram wszystkie bronie

public fwHamPlayerSpawnPost(id){
    if (is_user_alive(id) && get_pcvar_num(KnifeRaceStrip) || knifeArena == true){
    StripWeapons(id, Primary);
    StripWeapons(id, Secondary);
    StripWeapons(id, Grenades);
    StripWeapons(id, Knife);
    
    if (is_user_alive(id) && !is_user_bot(id)){
    set_task(3.0, "giveKnifeSpeed");
    }
    }
}

Task giveKnifeSpeed jest ustawiony na 3 sekundy ponieważ mp_freezetime wynosi 2.5s, więc task wykona się 0.5 sekundy po zakończeniu freezetime.

 

No i tutaj mam problem.

public giveKnifeSpeed(id){
    new Players[32],num;
    get_players(Players,num)
    for(new id = 1;id<num;id++)
        {
        give_item(id, "weapon_knife");
        }            
}

Nie działa, w error_log jest po prostu 'Invalid Player X' gdzie X to liczba np. 1 lub 2

 

Chcę po prostu 0.5 sekundy po freezetime dać każdemu żywemu graczowi nóż.


  • +
  • -
  • 0

Dołączona grafika

Dołączona grafika


#2 dasiek

    Nie wiem, nie znam się, nie orientuję się, zarobiony jestem.

  • Junior Admin

Reputacja: 2 077
Godlike

  • Postów:5 706
  • Imię:Adaś
  • Lokalizacja:No teraz trochę dalej od WWy
Online

Napisano 09.01.2015 11:43

spróbuj ze sprawdzeniem czy gracz żyje przed daniem mu itemu. 


  • +
  • -
  • 0

#3 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 09.01.2015 11:58   Najlepsza odpowiedź

Po co pobierasz players do tablicy jak z niego dalej nie korzystasz?

public giveKnifeSpeed()//po co Ci tu bylo id w tasku skoro go nie przekazujesz
{
    new num=get_maxplayers();
    
    for(new a = 1;a<=num;a++)
        {
         if(is_user_alive(a))
                give_item(a, "weapon_knife");
        }            
}

tylko , że to jest bez sensu, bo po każdym spawnie gracza wykonujesz to na wszytkich graczach, czyli na kazdym wykonasz to tyle razy ilu jest graczy na serwie. Lepiej przekazać id w tasku i robic to osobno dla kazdego czyli:

public fwHamPlayerSpawnPost(id){
    if (is_user_alive(id) && get_pcvar_num(KnifeRaceStrip) || knifeArena == true){
    StripWeapons(id, Primary);
    StripWeapons(id, Secondary);
    StripWeapons(id, Grenades);
    StripWeapons(id, Knife);
    
    if (is_user_alive(id) && !is_user_bot(id)){
    set_task(3.0, "giveKnifeSpeed",id);
    }
    }
}
public giveKnifeSpeed(id){
    if(is_user_alive(id))
        give_item(id, "weapon_knife");
                
}

Użytkownik grankee edytował ten post 09.01.2015 12:04

  • +
  • -
  • 1

#4 psilocybe

    Toasty!

  • Autor tematu
  • Power User

Reputacja: 252
Wszechwidzący

  • Postów:524
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:PL
Offline

Napisano 09.01.2015 12:26

is_psilocybe_bot return true :D

 

całą noc siedzę nad pluginem i trochę spaliłem, za dużo najwidoczniej :D

 

jak dawałem give_item(id, "weapon_knife"); to error kompilatora Undefined symbol (id), myślę sobie pewnie nie można tego tak zrobić trzeba w pętli, tylko najpierw to trzeba wiedzieć co to jest pętla :D

 

Dzięki grankee, leci add.png


  • +
  • -
  • 1

Dołączona grafika

Dołączona grafika





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

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