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

[ROZWIĄZANE] Taski, plugin nie działa


Najlepsza odpowiedź Droso, 29.11.2013 17:52

#include <amxmodx>
#include <fun>
#include <cstrike>
#include <fakemeta_util>

#define PLUGIN "VIP PLUS"
#define VERSION "1.0"
#define AUTHOR "Filip / `NN"

new maxpl;

#define CO_ILE_GRANAT 10.0 // co ile granacika dostajemy? :)
#define REGENERACJA 0.5 // REGENERACJA CO ILE :P

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	maxpl = get_maxplayers()
	
	set_task(REGENERACJA, "goodies", 4936, _, _, "b");
}

public goodies(){
	static GranacikPrzyznany[33];
	
	for(new id=1; id<=maxpl; id++){
		if(is_user_alive(id) && get_user_flags(id) & ADMIN_LEVEL_H){
			
			new hp = get_user_health(id);
			
			if(hp < 80 && get_user_weapon(id) == CSW_KNIFE)
				set_user_health(id, hp +1);
			
			
			if(GranacikPrzyznany[id] && (GranacikPrzyznany[id] % floatround(CO_ILE_GRANAT/REGENERACJA)) == 0){
				
				new henum=(user_has_weapon(id,CSW_HEGRENADE)?cs_get_user_bpammo(id,CSW_HEGRENADE):0);
				if(!henum && henum<1){
					give_item(id, "weapon_hegrenade");
					++henum;
				}
				new fbnum=(user_has_weapon(id,CSW_FLASHBANG)?cs_get_user_bpammo(id,CSW_FLASHBANG):0);
				if(!fbnum && fbnum<1){
					give_item(id, "weapon_flashbang");
					++fbnum;
				}
                              GranacikPrzyznany[id] = 0;
			}
			else
			GranacikPrzyznany[id]++;
		}
	}
}


Boże literówkę zrobiłem przy warunku xD

 

+ zapomniałem twojej pętli usunąć.

 

 

Hubercik, wytłumaczysz mi co tu zrobiłeś i po co zaokrąglanie czasu 2 różnych bonusów? :P

if(GranacikPrzyznany[id] && (GranacikPrzyznany[id] % floatround(CO_ILE_GRANAT/REGENERACJA)) == 0){

I tak jak myślałem, kod nie działa. To mają być 2 osobne bonusy, 1 tylko na nożu ma dawać co 0.5 sekundy HP, a drugi ma się wykonywać przez całą mapę co 10 sekund dając po 1 HE/1FB i ustawiając limit 1HE/1FB/0SG. Wszystko tylko dla osób z określoną flagą ("t").

Dobrze Ciebie zrozumiałem tylko literówki walnąłem :P

 

Wszystko zrobiłem w JEDNYM tasku!

if(GranacikPrzyznany[id] && (GranacikPrzyznany[id] % floatround(CO_ILE_GRANAT/REGENERACJA)) == 0)

Ten kod odpowiada za to, aby granat dawał się co 'CO_ILE_GRANAT', a nie co 'REGENERACJA' (ustawione przez task).

 

Operator % - służy do reszty z dzielenia - czyli jak jest 0 - oznacza to wielokrotność :P

 

Ciężko to wytłumaczyć musisz pomyśleć xD

 

Przejdź do postu


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

#1 Filip1512

    Wszechmogący

  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 29.11.2013 00:56

Cześć,

chce zrobić plugin, który ma działać tylko dla osób z flagą 't' i ma on co 120sekund (czas w sma jest do testów) dawać 1 he i 1fb każdej osobie z tą flagą i co więcej - ma regenerować 1hp/0.5s na nożu.
Mam taki kod, ale on nie działa w ogóle (ani jedno ani drugie) i myślę, że to wina tasków.

 

#include <amxmodx>
#include <fun>
#include <cstrike>
#include <fakemeta_util>

#define PLUGIN "VIP PLUS"
#define VERSION "1.0"
#define AUTHOR "Filip / `NN"

new maxpl;

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    maxpl = get_maxplayers()
    
    for(new id=0; id<=maxpl; id++)
        set_task(10.0, "goodies", id, _, _, "b")
        
    register_event("CurWeapon", "hpbonus", "be", "1=1")
}

public goodies(id){
    if(get_user_flags(id) == ADMIN_LEVEL_H){
    
        new henum=(user_has_weapon(id,CSW_HEGRENADE)?cs_get_user_bpammo(id,CSW_HEGRENADE):0);
        if(!henum && henum<1){
            give_item(id, "weapon_hegrenade");
            ++henum;
        }
        new fbnum=(user_has_weapon(id,CSW_FLASHBANG)?cs_get_user_bpammo(id,CSW_FLASHBANG):0);
        if(!fbnum && fbnum<1){
            give_item(id, "weapon_flashbang");
            ++fbnum;
        }
    }
}

public hpbonus(id){
    if(get_user_flags(id) == ADMIN_LEVEL_H){

        new wid = read_data(2);
        if(wid == CSW_KNIFE)
            set_task(0.5, "hpreg", id, _, _, "b")
        else
            remove_task(id);
    
    }
}


public hpreg(id){
    if ( get_user_health(id) < 80 )
        fm_set_user_health(id, get_user_health(id) +1);
}

  

  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#2 MAGNET

    SourceLearned ;)

  • Moderator

Reputacja: 661
Wszechmogący

  • Postów:1 535
  • GG:
  • Imię:Olek
  • Lokalizacja:Dalekoo
Offline

Napisano 29.11.2013 06:22

Jakos "smiesznie" ustawiasz te granaty xD
Co do taska, to czy na pewno petla jest tutaj potrzebna? ;)
Najlepiej sprawdzaj flage przy client_connect

 

@EDIT

Może spróbuj tak i powiedz, czy zadziała:

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <engine>


public plugin_init() {
    register_plugin("x", "xx", "xxx")
    register_event("CurWeapon", "Bonus2", "be", "1=1");
    
    
}

public client_connect(id)
{
    if(get_user_frags(id) & ADMIN_LEVEL_H)
    set_task(10.0, "Bonusy", id, _, _, "a")
}

public Bonusy(id)
{
    if(is_user_alive(id))
    give_item(id, "weapon_hegrenade")
    give_item(id, "weapon_flashbang")
}

public Bonus2(id)
{
    if(get_user_flags(id) & ADMIN_LEVEL_H && is_user_alive(id) && read_data(2) == CSW_KNIFE )
    {
        set_task(0.5, "HP", id, _, _, "a")
    }
}

public HP(id)
{
if(get_user_health(id) < 80)
{
    set_user_health(id, get_user_health(id) + 1)
}
}

  • +
  • -
  • 1

#3 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
Offline

Napisano 29.11.2013 10:16

Magnet zobacz co się stanie jak w ciągu sekundy 5 razy zmienisz broń na nóż. Doda momentalnie 80 hp. Brakuje task_exist. :P

 

nie wykonuje się bo na moje oko (stare , dawno nic w tym nie robiłem) wykonujesz taska dla kogos kogo nie ma (tak naprawdę plugin_init wykona się na początku mapy gdy nikogo nie ma ^^, ) dobrym rozwiązaniem jest wykonanie w client_connect/client_putinserver tak jak to zrobił kolega wyżej bądź w plugin init trzasnąć globalnego taska który co 120 sekund będzie sprawdzał wszystkich graczy i im dawał broń bo z Twojego kodu wynika to że od chce dodawać broń komuś kogo może nie być.

 


  • +
  • -
  • 1

#4 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 29.11.2013 12:10

 

Jakos "smiesznie" ustawiasz te granaty xD
Co do taska, to czy na pewno petla jest tutaj potrzebna? ;)
Najlepiej sprawdzaj flage przy client_connect

 

@EDIT

Może spróbuj tak i powiedz, czy zadziała:

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <engine>


public plugin_init() {
    register_plugin("x", "xx", "xxx")
    register_event("CurWeapon", "Bonus2", "be", "1=1");
    
    
}

public client_connect(id)
{
    if(get_user_frags(id) & ADMIN_LEVEL_H)
    set_task(10.0, "Bonusy", id, _, _, "a")
}

public Bonusy(id)
{
    if(is_user_alive(id))
    give_item(id, "weapon_hegrenade")
    give_item(id, "weapon_flashbang")
}

public Bonus2(id)
{
    if(get_user_flags(id) & ADMIN_LEVEL_H && is_user_alive(id) && read_data(2) == CSW_KNIFE )
    {
        set_task(0.5, "HP", id, _, _, "a")
    }
}

public HP(id)
{
if(get_user_health(id) < 80)
{
    set_user_health(id, get_user_health(id) + 1)
}
}

 

 

Ustawianie granatów to akurat wycinek kodu z generatora vipa, żeby max 1 HE, 1 FB, 0 SG było w ekwipunku :P Mógłbyś zrobić to właśnie tak, jeśli masz inny pomysł/sposób? :P

 

 

Magnet zobacz co się stanie jak w ciągu sekundy 5 razy zmienisz broń na nóż. Doda momentalnie 80 hp. Brakuje task_exist. :P

 

nie wykonuje się bo na moje oko (stare , dawno nic w tym nie robiłem) wykonujesz taska dla kogos kogo nie ma (tak naprawdę plugin_init wykona się na początku mapy gdy nikogo nie ma ^^, ) dobrym rozwiązaniem jest wykonanie w client_connect/client_putinserver tak jak to zrobił kolega wyżej bądź w plugin init trzasnąć globalnego taska który co 120 sekund będzie sprawdzał wszystkich graczy i im dawał broń bo z Twojego kodu wynika to że od chce dodawać broń komuś kogo może nie być.

 

Zawsze miałem problem z taskami... ;>


  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#5 MAGNET

    SourceLearned ;)

  • Moderator

Reputacja: 661
Wszechmogący

  • Postów:1 535
  • GG:
  • Imię:Olek
  • Lokalizacja:Dalekoo
Offline

Napisano 29.11.2013 16:18

CheQ, fakt, zapomnialem o tym :D
W CurWeapon trzeba dodac warunek task_exist, oraz dodac do indexu "jakas liczbe" (nie wiem jak to sie zwie :}) , czyli #define TASK 32 i przy tasku w indexie id+TASK, a pozniej te stałą odjąć. Chyba wiesz co mam na mysli ^^
  • +
  • -
  • 0

#6 MAGNET

    SourceLearned ;)

  • Moderator

Reputacja: 661
Wszechmogący

  • Postów:1 535
  • GG:
  • Imię:Olek
  • Lokalizacja:Dalekoo
Offline

Napisano 29.11.2013 16:19

CheQ, fakt, zapomnialem o tym :D
W CurWeapon trzeba dodac warunek task_exist, oraz dodac do indexu "jakas liczbe" (nie wiem jak to sie zwie :}) , czyli #define TASK 32 i przy tasku w indexie id+TASK, a pozniej te stałą odjąć. Chyba wiesz co mam na mysli ^^
@ Kliknelo sie 2x. Prosze o usuniecie jednego postu
  • +
  • -
  • 0

#7 Droso

    Dawniej HubertTM

  • Support Team

Reputacja: 1 291
Godlike

  • Postów:2 371
  • Steam:steam
  • Imię:Hubert
  • Lokalizacja:Wrocław
Offline

Napisano 29.11.2013 16:57

#include <amxmodx>
#include <fun>
#include <cstrike>
#include <fakemeta_util>

#define PLUGIN "VIP PLUS"
#define VERSION "1.0"
#define AUTHOR "Filip / `NN"

new maxpl;

#define CO_ILE_GRANAT 10.0 // co ile granacika dostajemy? :)
#define REGENERACJA 0.5 // REGENERACJA CO ILE :P

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    maxpl = get_maxplayers()
    
    set_task(REGENERACJA, "goodies", 4936, _, _, "b");
}

public goodies(){
    static GranacikPrzyznany[33];
    
    for(new id=1; id<=maxpl; id++){
        if(is_user_alive(id) && get_user_flags(id) & ADMIN_LEVEL_H){
            
            new hp = get_user_health(id);
            
            if(hp < 80 && get_user_weapon(id) == CSW_KNIFE)
                set_user_health(id, hp +1);
            
            
            if(GranacikPrzyznany[id] && (GranacikPrzyznany[id] % floatround(CO_ILE_GRANAT/REGENERACJA)) == 0){
                
                new henum=(user_has_weapon(id,CSW_HEGRENADE)?cs_get_user_bpammo(id,CSW_HEGRENADE):0);
                if(!henum && henum<1){
                    give_item(id, "weapon_hegrenade");
                    ++henum;
                }
                new fbnum=(user_has_weapon(id,CSW_FLASHBANG)?cs_get_user_bpammo(id,CSW_FLASHBANG):0);
                if(!fbnum && fbnum<1){
                    give_item(id, "weapon_flashbang");
                    ++fbnum;
                }
GranacikPrzyznany[id] = 0;
            }
            else
            GranacikPrzyznany[id]++;
        }
    }
}

Użytkownik HubertTM edytował ten post 29.11.2013 17:53

  • +
  • -
  • 2

Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!

Na zlecenie i bez zlecenia zresztą też!


#8 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 29.11.2013 17:25

Hubercik, wytłumaczysz mi co tu zrobiłeś i po co zaokrąglanie czasu 2 różnych bonusów? :P

if(GranacikPrzyznany[id] && (GranacikPrzyznany[id] % floatround(CO_ILE_GRANAT/REGENERACJA)) == 0){

I tak jak myślałem, kod nie działa. To mają być 2 osobne bonusy, 1 tylko na nożu ma dawać co 0.5 sekundy HP, a drugi ma się wykonywać przez całą mapę co 10 sekund dając po 1 HE/1FB i ustawiając limit 1HE/1FB/0SG. Wszystko tylko dla osób z określoną flagą ("t").


  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#9 Droso

    Dawniej HubertTM

  • Support Team

Reputacja: 1 291
Godlike

  • Postów:2 371
  • Steam:steam
  • Imię:Hubert
  • Lokalizacja:Wrocław
Offline

Napisano 29.11.2013 17:52   Najlepsza odpowiedź

#include <amxmodx>
#include <fun>
#include <cstrike>
#include <fakemeta_util>

#define PLUGIN "VIP PLUS"
#define VERSION "1.0"
#define AUTHOR "Filip / `NN"

new maxpl;

#define CO_ILE_GRANAT 10.0 // co ile granacika dostajemy? :)
#define REGENERACJA 0.5 // REGENERACJA CO ILE :P

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	maxpl = get_maxplayers()
	
	set_task(REGENERACJA, "goodies", 4936, _, _, "b");
}

public goodies(){
	static GranacikPrzyznany[33];
	
	for(new id=1; id<=maxpl; id++){
		if(is_user_alive(id) && get_user_flags(id) & ADMIN_LEVEL_H){
			
			new hp = get_user_health(id);
			
			if(hp < 80 && get_user_weapon(id) == CSW_KNIFE)
				set_user_health(id, hp +1);
			
			
			if(GranacikPrzyznany[id] && (GranacikPrzyznany[id] % floatround(CO_ILE_GRANAT/REGENERACJA)) == 0){
				
				new henum=(user_has_weapon(id,CSW_HEGRENADE)?cs_get_user_bpammo(id,CSW_HEGRENADE):0);
				if(!henum && henum<1){
					give_item(id, "weapon_hegrenade");
					++henum;
				}
				new fbnum=(user_has_weapon(id,CSW_FLASHBANG)?cs_get_user_bpammo(id,CSW_FLASHBANG):0);
				if(!fbnum && fbnum<1){
					give_item(id, "weapon_flashbang");
					++fbnum;
				}
                              GranacikPrzyznany[id] = 0;
			}
			else
			GranacikPrzyznany[id]++;
		}
	}
}


Boże literówkę zrobiłem przy warunku xD

 

+ zapomniałem twojej pętli usunąć.

 

 

Hubercik, wytłumaczysz mi co tu zrobiłeś i po co zaokrąglanie czasu 2 różnych bonusów? :P

if(GranacikPrzyznany[id] && (GranacikPrzyznany[id] % floatround(CO_ILE_GRANAT/REGENERACJA)) == 0){

I tak jak myślałem, kod nie działa. To mają być 2 osobne bonusy, 1 tylko na nożu ma dawać co 0.5 sekundy HP, a drugi ma się wykonywać przez całą mapę co 10 sekund dając po 1 HE/1FB i ustawiając limit 1HE/1FB/0SG. Wszystko tylko dla osób z określoną flagą ("t").

Dobrze Ciebie zrozumiałem tylko literówki walnąłem :P

 

Wszystko zrobiłem w JEDNYM tasku!

if(GranacikPrzyznany[id] && (GranacikPrzyznany[id] % floatround(CO_ILE_GRANAT/REGENERACJA)) == 0)

Ten kod odpowiada za to, aby granat dawał się co 'CO_ILE_GRANAT', a nie co 'REGENERACJA' (ustawione przez task).

 

Operator % - służy do reszty z dzielenia - czyli jak jest 0 - oznacza to wielokrotność :P

 

Ciężko to wytłumaczyć musisz pomyśleć xD

 


Użytkownik HubertTM edytował ten post 29.11.2013 17:55

  • +
  • -
  • 3

Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!

Na zlecenie i bez zlecenia zresztą też!


#10 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 29.11.2013 18:05

No to już działa, dzięki :P

A operator % wiem jak działa, tylko chodzi mi o wykorzystanie go w tej funkcji.

 

//edit

Aa ok, już rozumiem, dzięki :lol:


  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!




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

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