←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Item Poison

  • +
  • -
alien123 - zdjęcie alien123 07.05.2011

Witam
Jak zrobić item, który będzie miał 1/3 szansy na zatrucie wroga?
Dmg zatrucia będzie zależały od inteligencji.
Odpowiedz

  • +
  • -
alien123 - zdjęcie alien123 07.05.2011

A zamiast tego
public DoDamage(id, iDamage, attacker, weapon[]) {
        if(is_user_connected(id) && is_user_alive(id) && is_user_connected(attacker) && freeze_ended) {
                change_health(id, -iDamage, attacker, weapon);
                if(get_user_health(id) < 1) {
                        add_respawn_bonus(id);
                        add_bonus_explode(id);
                        add_barbarian_bonus(attacker);
                        if(player_class[attacker] == Barbarzynca)
                                refill_ammo(attacker);
                        set_renderchange(attacker);
                }
        }
}
Dać to?
public DoDamage(id, iDamage, attacker, weapon[]) {
        if(is_user_connected(id) && is_user_alive(id) && is_user_connected(attacker) && poison_ended) {
                change_health(id, -iDamage, attacker, weapon);
                if(get_user_health(id) < 1) {
                        add_respawn_bonus(id);
                        add_bonus_explode(id);
                        add_barbarian_bonus(attacker);
                        if(player_class[attacker] == Barbarzynca)
                                refill_ammo(attacker);
                        set_renderchange(attacker);
                }
        }
}
Odpowiedz

  • +
  • -
Divic - zdjęcie Divic 07.05.2011

niee po 1 nowa zmienna (zobacz sobie jak się robi nowe itemy ) potem funkcja do nowej zmiennej sam myślałem o czymś takim ale mam za małe doświadczenie i za mało wiedzy o PAWNIE


chcesz zrobić item czy naprawić moc pistoletowa u maga xD
Użytkownik Divic edytował ten post 07.05.2011 18:39
Odpowiedz

  • +
  • -
alien123 - zdjęcie alien123 07.05.2011

Może ktoś pomoc zrobić ten item bo ja mam tez za małe doświadczenie

Dodano 08 maj 2011 - 16:27:
To mogę prosić kogoś o pomoc przy tym itemie?
A mam jeszcze jedno pytanko jak zrobić 1/3 szansy na zamrożenie z noża?

Dodano 09 maj 2011 - 17:51:
Odświeżam
Odpowiedz

FreZZy - zdjęcie FreZZy 10.05.2011

!UWAGA! Obowiązkowo Nalezy Skorzystać z Poradnika sebula !UWAGA!
[Fix 5.9l] Naprawa mocy pistoletowej maga - AMXX.pl: Support AMX Mod X



new zatrucie[33]


w public reset_item_skills:
zatrucie[id]=0


w case itemka:
zatrucie[id]=1


dodaj pod add_bonus_illusion(attacker_id,id,weapon) (w public Damage)
add_bonus_poison(id)


dodaj na koniec sma
public add_bonus_poison(id)
{
if (is_user_connected(id))
{
new weapon
new bodypart
new attacker_id = get_user_attacker(id,weapon,bodypart)
if(attacker_id!=0 && attacker_id != id && zatrucie[attacker_id] > 0 && get_user_team(id) != get_user_team(attacker_id))
{
if(DemageTake[id] == 0)
{
DemageTake[id] = 1;
new Float:obrazenia
obrazenia = 5; // tutaj zmieniasz wartość obrażeń zadawanych co 2 sek.
new data[3];
data[0] = attacker_id;
data[1] = weapon;
data[2] = obrazenia;
set_task(11.0, "funcReleaseVic", id);
set_task(11.0, "funcReleaseVic2", id);
set_task(2.0, "funcDemageVic", id+GLUTON, data, 3);
}
}
}
}


znajdź
public funcDemageVic(id,attacker) 
{
id-=GLUTON
if(get_user_health(id)>10)
set_task(2.0, "funcDemageVic", id+GLUTON)
DoDamage(id, attacker1, 5);
}


zamień na
public funcDemageVic(data[], id) {
id -= GLUTON;
new attacker = data[0];
new weapon = data[1];
new damage = data[2];

if(get_user_health(id)>10)
set_task(2.0, "funcDemageVic", id+GLUTON, data, 3);

new weaponname[32];
get_weaponname(weapon, weaponname, 31);
replace(weaponname, 31, "weapon_", "");
DoDamage(id, damage, attacker, weaponname);
}


znajdź
DoDamage(iTargetID, iShooterID, iDamage/*, iDamageCause, bIsWeaponID = false, iHeadShot = 0*/)
{
if(is_user_connected(iTargetID)&&is_user_connected(iShooterID))
if ( is_user_alive(iTargetID))
{
new bool:bPlayerDied = false;
new iHP = get_user_health(iTargetID);

if ( ( iHP - iDamage ) <= 0 )
bPlayerDied = true;

if (bPlayerDied)
{
// engine.inc set_msg_block function
//set_msg_block(g_iGameMsgDeath, BLOCK_ONCE);
user_kill(iTargetID, 1);
}
else
change_health(iTargetID,-iDamage,0,"")

new sShooterName[32];
get_user_name(iShooterID, sShooterName, 31);

if (bPlayerDied)
{
if ( iShooterID != iTargetID )
{
if ( get_user_team(iShooterID) != get_user_team(iTargetID) )
set_user_frags(iShooterID, get_user_frags(iShooterID) + 1);
else
set_user_frags(iShooterID, get_user_frags(iShooterID) - 1);

//LogKill(iShooterID, iTargetID, sWeaponOrMagicName);
}

//AddXP(iShooterID, BM_XP_KILL, iTargetID); // bmxphandler.inc
award_item(iShooterID,0)
award_kill(iShooterID,iTargetID)
add_respawn_bonus(iTargetID)
add_bonus_explode(iTargetID)
add_barbarian_bonus(iShooterID)
if (player_class[iShooterID] == Barbarzynca)
refill_ammo(iShooterID)
}
}
}


zamień na
public DoDamage(id, iDamage, attacker, weapon[]) {
if(is_user_connected(id) && is_user_alive(id) && is_user_connected(attacker) && freeze_ended) {
change_health(id, -iDamage, attacker, weapon);
if(get_user_health(id) < 1) {
add_respawn_bonus(id);
add_bonus_explode(id);
add_barbarian_bonus(attacker);
if(player_class[attacker] == Barbarzynca)
refill_ammo(attacker);
set_renderchange(attacker);
}
}
}





##############################################################################################################



jak jeszcze chcesz render zielony to tak:

znajdź
enum {
Flag_Ignite = 0,
Flag_Hooking,
Flag_Rot,
Flag_Dazed,
Flag_Illusion,
Flag_Moneyshield,
Flag_Teamshield,
Flag_Teamshield_Target,
num_of_flags
}


zamień na
enum {
Flag_Ignite = 0,
Flag_Hooking,
Flag_Rot,
Flag_Dazed,
Flag_Illusion,
Flag_Moneyshield,
Flag_Teamshield,
Flag_Teamshield_Target,
Flag_Trucizna,
num_of_flags
}


znajdź
if(HasFlag(id,Flag_Rot)) set_rendering(id, kRenderFxGlowShell, 255,255,0, kRenderFxNone, 10)


dodaj pod
if(HasFlag(id,Flag_Trucizna)) set_rendering(id, kRenderFxGlowShell, 0,255,0, kRenderFxNone, 10)


a zamiast
public add_bonus_poison(id)
{
if (is_user_connected(id))
{
new weapon
new bodypart
new attacker_id = get_user_attacker(id,weapon,bodypart)
if(attacker_id!=0 && attacker_id != id && zatrucie[attacker_id] > 0 && get_user_team(id) != get_user_team(attacker_id))
{
if(DemageTake[id] == 0)
{
DemageTake[id] = 1;
new Float:obrazenia[33]
obrazenia[id]=5+player_intelligence[id]/25; // tutaj zmieniasz wartość obrażeń zadawanych co 2 sek.
new data[3];
data[0] = attacker_id;
data[1] = weapon;
data[2] = obrazenia[id];
set_task(11.0, "funcReleaseVic", id);
set_task(11.0, "funcReleaseVic2", id);
set_task(2.0, "funcDemageVic", id+GLUTON, data, 3);
}
}
}
}


daj
public add_bonus_poison(id)
{
if (is_user_connected(id))
{
new weapon
new bodypart
new attacker_id = get_user_attacker(id,weapon,bodypart)
if(attacker_id!=0 && attacker_id != id && zatrucie[attacker_id] > 0 && get_user_team(id) != get_user_team(attacker_id))
{
if(DemageTake[id] == 0)
{
DemageTake[id] = 1;
new Float:obrazenia
obrazenia=5; // tutaj zmieniasz wartość obrażeń zadawanych co 2 sek.
new data[3];
AddFlag(id, Flag_Trucizna);
data[0] = attacker_id;
data[1] = weapon;
data[2] = obrazenia;
set_task(11.0, "funcReleaseVic", id);
set_task(11.0, "funcReleaseVic2", id);
set_task(2.0, "funcDemageVic", id+GLUTON, data, 3);
}
}
set_speedchange(id);
set_renderchange(id)
}
}




potem jeszcze znajdź i zamień
public funcReleaseVic(id) {
DemageTake[id] = 0;
remove_task(id+GLUTON);
}

na
public funcReleaseVic(id) {
DemageTake[id] = 0;
remove_task(id+GLUTON);
RemoveFlag(id, Flag_Trucizna);
set_renderchange(id);
}


potem się zabezbpieczamy jak to sebul opisał, czyli szukamy
public ResetHUD(id)
{
if(is_user_connected(id))
{

i dodajemy pod tym
RemoveFlag(id, Flag_Trucizna);


i jeszcze znajdź
else if(HasFlag(id,Flag_Moneyshield) || HasFlag(id,Flag_Rot) || HasFlag(id,Flag_Teamshield_Target) || HasFlag(id,Flag_Illusion))


i zamień na
else if(HasFlag(id,Flag_Moneyshield) || HasFlag(id,Flag_Rot) || HasFlag(id,Flag_Teamshield_Target) || HasFlag(id,Flag_Illusion) || HasFlag(id,Flag_Trucizna))






nie sprawdzałem czy działa! pewnie jak zwykle o czymś zapomniałem ^D^
Użytkownik FreZZy edytował ten post 12.05.2011 19:48
Odpowiedz

  • +
  • -
alien123 - zdjęcie alien123 10.05.2011

Dzięki Wielkie
Odpowiedz

  • +
  • -
Divic - zdjęcie Divic 10.05.2011

ooo frezzy mistrzostwo :D dzięki jak znajdę czas zobaczę czy działa
Odpowiedz

FreZZy - zdjęcie FreZZy 11.05.2011

UWAGA! DODAŁEM POPRAWKĘ!
Odpowiedz

  • +
  • -
KariiO - zdjęcie KariiO 11.05.2011

UP
To już link do tematu od sebula był by lepszym rozwiązaniem.
Odpowiedz

FreZZy - zdjęcie FreZZy 11.05.2011

tak ale inni nie umieją z tego tak ładnie wyjąć funkcji ^D^

a tu mają gotowca
Odpowiedz

  • +
  • -
KariiO - zdjęcie KariiO 11.05.2011

Może nie tak ładnie a nie kiedy w ogóle...
Ogólnie dobre dla początkujących.
Odpowiedz

  • +
  • -
Aard - zdjęcie Aard 12.05.2011

a jak zrobic zeby nie bylo tego rendera tylko ze ekran przeciwnika ma kolor tzn. jak go zatruje to jego ekran (przeciwnika) ma np. kolor czerwony
Odpowiedz

FreZZy - zdjęcie FreZZy 12.05.2011

Ale czerwony przez np. 2 sekundy czy cały cza troszkę czerwienszy?
Odpowiedz

  • +
  • -
Aard - zdjęcie Aard 12.05.2011

ekran czerwony dopóki go truje
Odpowiedz

  • +
  • -
Divic - zdjęcie Divic 15.05.2011

a gdzie ustala sie czas tego zabierania hp? chciałbym ustawić na 20 sek


I mam Warningi 3 wiem ze z nimi będzie działać ale może da się je naprawić lubię mieć czyste sma
Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team

Warning: Tag mismatch on line 10082
Warning: Tag mismatch on line 10087
Warning: Loose indentation on line 10093
Header size:          10036 bytes
Code size:           341940 bytes
Data size:           226876 bytes
Stack/heap size:      16384 bytes; max. usage is unknown, due to recursion
Total requirements:  595236 bytes

3 Warnings.
Done.
public add_bonus_poison(id)
{
	if (is_user_connected(id))
		{
			new weapon
			new bodypart
			new attacker_id = get_user_attacker(id,weapon,bodypart)
			if(attacker_id!=0 && attacker_id != id && zatrucie[attacker_id] > 0 && get_user_team(id) != get_user_team(attacker_id))
			{
				if(DemageTake[id] == 0) 
				{
					DemageTake[id] = 1
					new Float:obrazenia
			Blad tu		obrazenia=2 		// tutaj zmieniasz wartosc obrazen zadawanych co 2 sek
					new data[3]
					AddFlag(id, Flag_Trucizna)
					data[0] = attacker_id
					data[1] = weapon
			Blad tu		data[2] = obrazenia
					set_task(11.0, "funcReleaseVic", id)
					set_task(11.0, "funcReleaseVic2", id)
					set_task(2.0, "funcDemageVic", id+GLUTON, data, 3)
				}
			}
		Blad tu		set_speedchange(id)
				set_renderchange(id)
		}
}

Użytkownik Divic edytował ten post 15.05.2011 15:49
Odpowiedz

  • +
  • -
KariiO - zdjęcie KariiO 15.05.2011

public add_bonus_poison(id)
{
	if (is_user_connected(id))
	{
		new weapon
		new bodypart
		new attacker_id = get_user_attacker(id,weapon,bodypart)
		if(attacker_id!=0 && attacker_id != id && zatrucie[attacker_id] > 0 && get_user_team(id) != get_user_team(attacker_id))
		{
			if(DemageTake[id] == 0) 
			{
				DemageTake[id] = 1
				new Float:obrazenia
				obrazenia = 2 		// tutaj zmieniasz wartosc obrazen zadawanych co 2 sek
				new data[3]
				AddFlag(id, Flag_Trucizna)
				data[0] = attacker_id
				data[1] = weapon	
				data[2] = obrazenia
				set_task(11.0, "funcReleaseVic", id)
				set_task(11.0, "funcReleaseVic2", id)
				set_task(2.0, "funcDemageVic", id+GLUTON, data, 3)
			}
		}
		set_speedchange(id)
		set_renderchange(id)
	}
}
Dalej ?
Odpowiedz

FreZZy - zdjęcie FreZZy 15.05.2011

new Float:obrazenia

zamień na
new obrazenia
Odpowiedz

  • +
  • -
Divic - zdjęcie Divic 15.05.2011

ooo Mistrzostwo dzięki +
Odpowiedz

  • +
  • -
KariiO - zdjęcie KariiO 15.05.2011

new weapon
			new bodypart
			new attacker_id = get_user_attacker(id,weapon,bodypart)

Nie wystarczy?:
new attacker_id = get_user_attacker(id)
Odpowiedz