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
CoD Nowy

Zatrute NabojePerk zatrute naboje

CoD Nowy

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

#1 Grandi

    Zaawansowany

  • Użytkownik

Reputacja: 41
Pomocny

  • Postów:104
  • Imię:Patryk
  • Lokalizacja:Cs
Offline

Napisano 29.05.2011 16:14

Mam pytanie, czy wie ktoś jak zrobić perk: Zatrute Naboje, które miały by 1/x na zatrucie przeciwnika, graczowi który zostanie zatruty odejmuje sie co 5 sekund 25 hp przez 30 sekund. Czyli może stracić 125 hp. To taki przykład. Jeżeli ktoś dał by radę zrobić bym był wdzięczny :)
  • +
  • -
  • 0

I'm Back


#2 ^Grzyboo

    Wszechobecny

  • Użytkownik

Reputacja: 246
Wszechwidzący

  • Postów:461
  • Imię:Grzyboo
  • Lokalizacja:Tak
Offline

Napisano 29.05.2011 16:30


#define TASK_ZATRUCIE 555

public plugin_init()
{

RegisterHam(Ham_TakeDamage, "player", "TakeDamage");

}

public TakeDamage(victim, ifinflictor, attacker, Float:damage, damagebits)
{

if(!is_user_connected(attacker) || get_user_team(attacker) == get_user_team(victim))
return PLUGIN_CONTINUE;

new szansa = 25 //Zmieniasz 25 na swoja liczbe (w procentach), czyli teraz jest 25
if(random_num(1, 100) <= szansa)
{
Zatrucie(victim, 30.0);
client_print(victim, print_chat, "[%s] Zatrules %s (%d%% szansy).", PREFIX, nazwa_gracza(victim), szansa);
}

}

public Zatrucie(id, czas)
{
powtarzaj = czas/5
set_task(5.0, "OdejmijHp", id+TASK_ZATRUCIE, _, "b", powtarzaj)
}

public OdejmijHP(id)
{
id -= TASK_ZATRUCIE;
fakedamage(id, "Zatrucie", 25.0, DMG_ACID)
}



Pisane na szybko :>

Użytkownik ^Grzyboo edytował ten post 29.05.2011 16:31

  • +
  • -
  • 0

#3 Grandi

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 41
Pomocny

  • Postów:104
  • Imię:Patryk
  • Lokalizacja:Cs
Offline

Napisano 29.05.2011 16:54

Niestety występują błędy przy kompilacji. Jakie moduły dać?
  • +
  • -
  • 0

I'm Back


#4 Nomaf

    Wszechpomocny

  • Użytkownik

Reputacja: 157
Profesjonalista

  • Postów:344
  • GG:
  • Imię:Mateusz
  • Lokalizacja:Polska
Offline

Napisano 29.05.2011 19:11

To nie będzie dobrze działać.
Gdzie są użyte funkcje cod_perk_enabled i cod_perk_disabled ?
Bez tego to każdy będzie miał zatrute naboje...
I jeszcze potrzeba zarejestrować perk.


Moduły potrzebne to na pewno hamsandwich i chyba fakemeta.
  • +
  • -
  • 0

#5 Agent

    Profesjonalista

  • Użytkownik

Reputacja: 63
Pomocny

  • Postów:195
  • Lokalizacja:Polska
Offline

Napisano 29.05.2011 19:13

Nie wiem co w Codzie jest zarejestrowane, lecz patrząc na funkcje:
#include <hamsandwich>
potrzebne by było

P.S. Zarzuć log z kompilacji najlepiej ;]

Użytkownik Agent edytował ten post 29.05.2011 19:13

  • +
  • -
  • 0

Unikalna sieć serwerów CS 1.6 && TF2 FearLex.pl
Serwery CS 1.6: JailBreak, ZombieMod Ultimate (nowe ZP), DiabloMod 201 lvl, TeamPlay
ORAZ
Serwer TF2 FFA


#6 Grandi

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 41
Pomocny

  • Postów:104
  • Imię:Patryk
  • Lokalizacja:Cs
Offline

Napisano 29.05.2011 20:05

Zrobiłem coś takiego i przy kompilacji wyskakują takowe błędy
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <hamsandwich>
#include <codmod>
#include <fakemeta>

#define TASK_ZATRUCIE 555

new const perk_name[] = "Zatrute Naboje";
new const perk_desc[] = "1/4 szansy na zatrucie przeciwnika";

new bool:ma_perk[33];

public plugin_init()
{
register_plugin(perk_name, "1.0", "Noname");

cod_register_perk(perk_name, perk_desc);

RegisterHam(Ham_TakeDamage, "player", "TakeDamage");

}

public cod_perk_enabled(id)
ma_perk[id] = true;

public cod_perk_disabled(id)
ma_perk[id] = false;


public TakeDamage(victim, ifinflictor, attacker, Float:damage, damagebits)
{

if(!is_user_connected(attacker) || get_user_team(attacker) == get_user_team(victim))
return PLUGIN_CONTINUE;

new szansa = 25 //Zmieniasz 25 na swoja liczbe (w procentach), czyli teraz jest 25
if(random_num(1, 100) <= szansa)
{
Zatrucie(victim, 30.0);
}

}

public Zatrucie(id, czas)
{
powtarzaj = czas/5
set_task(5.0, "OdejmijHp", id+TASK_ZATRUCIE, _, "b", powtarzaj)
}

public OdejmijHP(id)
{
id -= TASK_ZATRUCIE;
fakedamage(id, "Zatrucie", 25.0, DMG_ACID)
}



Błędy:
codperk_zatrutenaboje.sma(41) : warning 213: tag mismatch
codperk_zatrutenaboje.sma(44) : warning 209: function "TakeDamage" should return a value
codperk_zatrutenaboje.sma(48) : error 017: undefined symbol "powtarzaj"
codperk_zatrutenaboje.sma(48 -- 49) : warning 215: expression has no effect
codperk_zatrutenaboje.sma(49) : error 035: argument type mismatch (argument 5)
codperk_zatrutenaboje.sma(55) : error 017: undefined symbol "fakedamage"
  • +
  • -
  • 0

I'm Back


#7 ^Grzyboo

    Wszechobecny

  • Użytkownik

Reputacja: 246
Wszechwidzący

  • Postów:461
  • Imię:Grzyboo
  • Lokalizacja:Tak
Offline

Napisano 29.05.2011 20:21

Fakedamage jest w engine, nie fakemecie.




/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <hamsandwich>
#include <codmod>
#include <engine>

#define TASK_ZATRUCIE 555

new const perk_name[] = "Zatrute Naboje";
new const perk_desc[] = "1/4 szansy na zatrucie przeciwnika";

new bool:ma_perk[33];

public plugin_init()
{
register_plugin(perk_name, "1.0", "Noname");

cod_register_perk(perk_name, perk_desc);

RegisterHam(Ham_TakeDamage, "player", "TakeDamage");

}

public cod_perk_enabled(id)
ma_perk[id] = true;

public cod_perk_disabled(id)
ma_perk[id] = false;


public TakeDamage(victim, ifinflictor, attacker, Float:damage, damagebits)
{

if(!is_user_connected(attacker) || get_user_team(attacker) == get_user_team(victim))
return HAM_IGNORED;

new szansa = 25 //Zmieniasz 25 na swoja liczbe (w procentach), czyli teraz jest 25
if(random_num(1, 100) <= szansa)
{
Zatrucie(victim, 30.0);
}

return HAM_IGNORED;
}

public Zatrucie(id, Float:czas)
{
new powtarzaj = floatround(czas / 5.0);
set_task(5.0, "OdejmijHp", id+TASK_ZATRUCIE, _, _, "b", powtarzaj);
}

public OdejmijHP(id)
{
id -= TASK_ZATRUCIE;
fakedamage(id, "Zatrucie", 25.0, DMG_ACID)
}


i Nomaf gada głupoty...
musisz dodać if(ma_klase[id]) i już tylko jedna osoba będzie miała.


zrób tak:

if(ma_klase[attacker])
{
new szansa = 25 //Zmieniasz 25 na swoja liczbe (w procentach), czyli teraz jest 25
if(random_num(1, 100) <= szansa)
{
Zatrucie(victim, 30.0);
}
}

Użytkownik ^Grzyboo edytował ten post 29.05.2011 20:24

  • +
  • -
  • 0

#8 Windowspl

    Profesjonalista

  • Użytkownik

Reputacja: 7
Nowy

  • Postów:190
  • GG:
  • Imię:Patryk
  • Lokalizacja:Warszawa
Offline

Napisano 29.05.2011 20:24

Ja zrobiłem tak nie wiem czy działa nie znam się tak na tym :P

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <codmod>
#include <hamsandwich>
#include <engine>

#define TASK_ZATRUCIE 555

new const perk_name[] = "Zatrute Naboje";
new const perk_desc[] = "1/4 szansy na zatrucie przeciwnika";

new bool:ma_perk[33];
new powtarzaj;
new zatrucie;

public plugin_init()
{
        register_plugin(perk_name, "1.0", "Noname");

        cod_register_perk(perk_name, perk_desc);

        RegisterHam(Ham_TakeDamage, "player", "TakeDamage");

}

public cod_perk_enabled(id)
{
        ma_perk[id] = true;
}
   
public cod_perk_disabled(id)
{
        ma_perk[id] = false;
}

public TakeDamage(victim, ifinflictor, attacker, Float:damage, damagebits)
{
                
        if(!is_user_connected(attacker) || get_user_team(attacker) == get_user_team(victim))
        return PLUGIN_CONTINUE;
        
                
        new szansa = 25 //Zmieniasz 25 na swoja liczbe (w procentach), czyli teraz jest 25
        if(random_num(1, 100) <= szansa)
        {
                Zatrucie(victim, 30.0);
        }
        
}

public Zatrucie(id, czas)
{
        powtarzaj = czas/5
        set_task(5.0, "OdejmijHp", id+TASK_ZATRUCIE, _, powtarzaj)
}

public OdejmijHP(id)
{
        id = TASK_ZATRUCIE;
        fakedamage(id, "Zatrucie", 25.0, DMG_ACID)
}

Dodano 29 maj 2011 - 20:26:
Jednak nie działa :P
  • +
  • -
  • 0

#9 ^Grzyboo

    Wszechobecny

  • Użytkownik

Reputacja: 246
Wszechwidzący

  • Postów:461
  • Imię:Grzyboo
  • Lokalizacja:Tak
Offline

Napisano 29.05.2011 20:30

Ja już zrobiłem i działa na pewno. Proponuje jeszcze dodać Odrodzenie i tam:


if(task_exist(id + TASK_ZATRUCIE))
remove_task(id + TASK_ZATRUCIE)


Wtedy w nowej rundzie już nie będzie odejmować hp

Użytkownik ^Grzyboo edytował ten post 29.05.2011 20:31

  • +
  • -
  • 0

#10 Grandi

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 41
Pomocny

  • Postów:104
  • Imię:Patryk
  • Lokalizacja:Cs
Offline

Napisano 29.05.2011 20:32

Jak możesz Grzyboo daj cały sma:)
  • +
  • -
  • 0

I'm Back


#11 ^Grzyboo

    Wszechobecny

  • Użytkownik

Reputacja: 246
Wszechwidzący

  • Postów:461
  • Imię:Grzyboo
  • Lokalizacja:Tak
Offline

Napisano 29.05.2011 20:36


/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <hamsandwich>
#include <codmod>
#include <engine>

#define TASK_ZATRUCIE 555

new const perk_name[] = "Zatrute Naboje";
new const perk_desc[] = "1/4 szansy na zatrucie przeciwnika";

new bool:ma_perk[33];

public plugin_init()
{
register_plugin(perk_name, "1.0", "Noname");

cod_register_perk(perk_name, perk_desc);

RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1);
}

public Odrodzenie(id)
{
if(task_exists(id + TASK_ZATRUCIE))
remove_task(id + TASK_ZATRUCIE)
}
public cod_perk_enabled(id)
ma_perk[id] = true;

public cod_perk_disabled(id)
ma_perk[id] = false;


public TakeDamage(victim, ifinflictor, attacker, Float:damage, damagebits)
{

if(!is_user_connected(attacker) || get_user_team(attacker) == get_user_team(victim))
return HAM_IGNORED;

if(ma_perk[attacker])
{
new szansa = 25 //Zmieniasz 25 na swoja liczbe (w procentach), czyli teraz jest 25
if(random_num(1, 100) <= szansa)
{
Zatrucie(victim, 30.0);
}
}

return HAM_IGNORED;
}

public Zatrucie(id, Float:czas)
{
new powtarzaj = floatround(czas / 5.0);
set_task(5.0, "OdejmijHp", id+TASK_ZATRUCIE, _, _, "b", powtarzaj);
}

public OdejmijHP(id)
{
id -= TASK_ZATRUCIE;
fakedamage(id, "Zatrucie", 25.0, DMG_ACID)
}

  • +
  • -
  • 1

#12 Windowspl

    Profesjonalista

  • Użytkownik

Reputacja: 7
Nowy

  • Postów:190
  • GG:
  • Imię:Patryk
  • Lokalizacja:Warszawa
Offline

Napisano 29.05.2011 20:39

A jeśli bym chciał zrobić taką klase to można tak ?
#include <amxmodx>
#include <hamsandwich>
#include <codmod>
#include <engine>

#define TASK_ZATRUCIE 555

new const nazwa[] = "	";
new const opis[] = "	";
new const bronie = 1<<CSW_M4A1 | 1<<CSW_DEAGLE;
new const zdrowie = -20;
new const kondycja = -10;
new const inteligencja = 5;
new const wytrzymalosc = 10;

new bool:ma_klase[33];


public plugin_init() 
{
	cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
	RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
	
}

public Odrodzenie(id)
{	
	if(task_exists(id + TASK_ZATRUCIE))
                remove_task(id + TASK_ZATRUCIE)
}

public TakeDamage(victim, ifinflictor, attacker, Float:damage, damagebits)
{
                
        if(!is_user_connected(attacker) || get_user_team(attacker) == get_user_team(victim))
                return HAM_IGNORED;
                
	if(ma_klase[attacker])
	{
		new szansa = 25 //Zmieniasz 25 na swoja liczbe (w procentach), czyli teraz jest 25
		if(random_num(1, 100) <= szansa)
	{
		Zatrucie(victim, 30.0);
	}
}
        
        return HAM_IGNORED;
}

public Zatrucie(id, Float:czas)
{
        new powtarzaj = floatround(czas / 5.0);
        set_task(5.0, "OdejmijHp", id+TASK_ZATRUCIE, _, _, "b", powtarzaj);
}

public OdejmijHP(id)
{
        id -= TASK_ZATRUCIE;
        fakedamage(id, "Zatrucie", 25.0, DMG_ACID)
}

  • +
  • -
  • 0

#13 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 29.05.2011 20:39

Ten task coś źle chyba piszecie... Dokumentacja AMXX.pl: Core >> amxmodx > set_task
Chodzi mi o flagę "b" i te powtarzanie.

Użytkownik sebul edytował ten post 29.05.2011 20:40

  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#14 Windowspl

    Profesjonalista

  • Użytkownik

Reputacja: 7
Nowy

  • Postów:190
  • GG:
  • Imię:Patryk
  • Lokalizacja:Warszawa
Offline

Napisano 29.05.2011 20:41

chyba powinno być "a" ?
  • +
  • -
  • 0

#15 ^Grzyboo

    Wszechobecny

  • Użytkownik

Reputacja: 246
Wszechwidzący

  • Postów:461
  • Imię:Grzyboo
  • Lokalizacja:Tak
Offline

Napisano 29.05.2011 20:42

A, rzeczywiście :D

Flaga "a" powinna być, pomyliło mi się



/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <hamsandwich>
#include <codmod>
#include <engine>

#define TASK_ZATRUCIE 555

new const perk_name[] = "Zatrute Naboje";
new const perk_desc[] = "1/4 szansy na zatrucie przeciwnika";

new bool:ma_perk[33];

public plugin_init()
{
register_plugin(perk_name, "1.0", "Noname");

cod_register_perk(perk_name, perk_desc);

RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1);
}

public Odrodzenie(id)
{
if(task_exists(id + TASK_ZATRUCIE))
remove_task(id + TASK_ZATRUCIE)
}
public cod_perk_enabled(id)
ma_perk[id] = true;

public cod_perk_disabled(id)
ma_perk[id] = false;


public TakeDamage(victim, ifinflictor, attacker, Float:damage, damagebits)
{

if(!is_user_connected(attacker) || get_user_team(attacker) == get_user_team(victim))
return HAM_IGNORED;

if(ma_perk[attacker])
{
new szansa = 25 //Zmieniasz 25 na swoja liczbe (w procentach), czyli teraz jest 25
if(random_num(1, 100) <= szansa)
{
Zatrucie(victim, 30.0);
}
}

return HAM_IGNORED;
}

public Zatrucie(id, Float:czas)
{
new powtarzaj = floatround(czas / 5.0);
set_task(5.0, "OdejmijHp", id+TASK_ZATRUCIE, _, _, "a", powtarzaj);
}

public OdejmijHP(id)
{
id -= TASK_ZATRUCIE;
fakedamage(id, "Zatrucie", 25.0, DMG_ACID)
}


Ten kod już dobry
  • +
  • -
  • 1

#16 Windowspl

    Profesjonalista

  • Użytkownik

Reputacja: 7
Nowy

  • Postów:190
  • GG:
  • Imię:Patryk
  • Lokalizacja:Warszawa
Offline

Napisano 29.05.2011 20:43

Czyli taki kod na klasę będzie dobry ?

#include <amxmodx>
#include <hamsandwich>
#include <codmod>
#include <engine>

#define TASK_ZATRUCIE 555

new const nazwa[] = "	";
new const opis[] = "	";
new const bronie = 1<<CSW_M4A1 | 1<<CSW_DEAGLE;
new const zdrowie = -20;
new const kondycja = -10;
new const inteligencja = 5;
new const wytrzymalosc = 10;

new bool:ma_klase[33];


public plugin_init() 
{
	cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
	RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
	RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1);
	
}

public Odrodzenie(id)
{	
	if(task_exists(id + TASK_ZATRUCIE))
                remove_task(id + TASK_ZATRUCIE)
}

public TakeDamage(victim, ifinflictor, attacker, Float:damage, damagebits)
{
                
        if(!is_user_connected(attacker) || get_user_team(attacker) == get_user_team(victim))
                return HAM_IGNORED;
                
	if(ma_klase[attacker])
	{
		new szansa = 25 //Zmieniasz 25 na swoja liczbe (w procentach), czyli teraz jest 25
		if(random_num(1, 100) <= szansa)
	{
		Zatrucie(victim, 30.0);
	}
}
        
        return HAM_IGNORED;
}

public Zatrucie(id, Float:czas)
{
        new powtarzaj = floatround(czas / 5.0);
        set_task(5.0, "OdejmijHp", id+TASK_ZATRUCIE, _, _, "a", powtarzaj);
}

public OdejmijHP(id)
{
        id -= TASK_ZATRUCIE;
        fakedamage(id, "Zatrucie", 25.0, DMG_ACID)
}

  • +
  • -
  • 0

#17 ^Grzyboo

    Wszechobecny

  • Użytkownik

Reputacja: 246
Wszechwidzący

  • Postów:461
  • Imię:Grzyboo
  • Lokalizacja:Tak
Offline

Napisano 29.05.2011 20:53

Brakuje tylko cod_class_enabled/disabled
  • +
  • -
  • 0

#18 Grandi

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 41
Pomocny

  • Postów:104
  • Imię:Patryk
  • Lokalizacja:Cs
Offline

Napisano 29.05.2011 21:01

Testowałem i niestety perk nie działa... Jednak za chęci dostaniesz plusa
  • +
  • -
  • 0

I'm Back


#19 Nomaf

    Wszechpomocny

  • Użytkownik

Reputacja: 157
Profesjonalista

  • Postów:344
  • GG:
  • Imię:Mateusz
  • Lokalizacja:Polska
Offline

Napisano 29.05.2011 21:17

Gdzie testowałeś? Na lanie z zBotami? To na pewno nie zadziała. zBoty nie mogą korzystać z hamsandwich. Musisz zainstalować PodBoty.
  • +
  • -
  • 0

#20 Windowspl

    Profesjonalista

  • Użytkownik

Reputacja: 7
Nowy

  • Postów:190
  • GG:
  • Imię:Patryk
  • Lokalizacja:Warszawa
Offline

Napisano 30.05.2011 07:08

Która linijka odpowiada za to jak jest 1/4 ? Bo bym chciał ustawić 1/3
  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: CoD Nowy

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

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