←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Item czy mozna cos takego zrobic

Zablokowany

  • +
  • -
Divic - zdjęcie Divic 04.06.2011

Tak siedzę i myślę czy da się zrobić taki item który doda nam do zadawanych obrażeń +10 jeśli gracz w którego będziemy strzelać będzie miał o 40 lvl więcej.


Oraz item który będzie miał 1/x na zabicie danej klasy czyli ze np: ustawiamy taki item 1/1 aby zabijał paladyna
Czyli we wszystkich uderzamy normalnie a jeśli uderzymy paladyna od razu umiera
Odpowiedz

grs4 - zdjęcie grs4 04.06.2011

Mozna ale nie wiem jak, wiem jak sie dodaje normalne np tylko + 10 dmg do kazdej broni obojetnego lvl
w tym 2 da sie

if(klasa_gracza...)
jakos tak :D
Użytkownik grs4 edytował ten post 04.06.2011 18:06
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 04.06.2011

Do pierwszego wykorzystujesz "player_b_damage" oraz warunek "if(player_lvl[id] > 40)", a z drugim to praktycznie to samo robisz, jak przy 1/x na zabicie z broni, tylko robisz warunek dodatkowy, że ofiara musi mieć jakąś konkretną klasę, np. "if(player_class[id] == Paladyn)"
Użytkownik sebul edytował ten post 04.06.2011 18:53
Odpowiedz

  • +
  • -
Divic - zdjęcie Divic 04.06.2011

aha z drogim chyba orientuje jak to muszę zrobić ale pierwszego nie bardzo mógłbym cie Sebul prosić o napisanie 1 ? :kwiaty:
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 04.06.2011

A nie sory, co do pierwszego źle zrozumiałem, musisz wykorzystać "player_b_damage[id]" i przy zadawaniu obrażeń dodać warunek
if(player_lvl[id]-player_lvl[attacker] > 40)

attacker - id atakującego (posiadającego item)
id - id ofiary
Użytkownik sebul edytował ten post 04.06.2011 20:05
Odpowiedz

  • +
  • -
Divic - zdjęcie Divic 04.06.2011

mógłbyś mi to sebul napisać tak wiesz łopatologicznie :) :blaga:
Odpowiedz

  • +
  • -
Stachuu :D ?? - zdjęcie Stachuu :D ?? 04.06.2011

np
if (zmiena_damage[attacker_id] > 0)
{
	if(player_lvl[id]-player_lvl[attacker_id] > 40)
	{
		if (get_user_health(id) > zmiena_damage[attacker_id])
		{
			set_user_health(id,get_user_health(id) - zmiena_damage[attacker_id])
			
			if (random_num(1,2) == 1) Effect_Bleed(id,248)
		} 
	}
	
}
Odpowiedz

GoldeN - zdjęcie GoldeN 04.06.2011

#include <hamsandwich> // Nie wiem czy jest w standardzie DB


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


public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(is_user_connected(idattacker) && get_user_team(idattacker) != get_user_team(this))
{
if(zmienna_itemu[idattacker] > 0 && player_lvl[this] >= player_lvl[idattacker] + 40)
{
new Float:dmg = float(zmienna_itemu[idattacker]);
SetHamParamFloat(4, damage + dmg);
return HAM_HANDLED;
}
}
return HAM_IGNORED;
}


Spróbuj tak. Stwórz zmienna zmienna_itemu[33] i ona ustala ile dmg więcej ma mieć gdy będzie się posiadało item.
Użytkownik GoldeN edytował ten post 04.06.2011 23:26
Odpowiedz

  • +
  • -
Divic - zdjęcie Divic 04.06.2011

public add_bonus_antypaldamage(attacker_id,id,weapon)
{
if (player_b_antypal[attacker_id] > 0 && get_user_team(attacker_id) != get_user_team(id) && weapon == CSW_M4A1)
{

if (!is_user_alive(id))
return PLUGIN_HANDLED

if (random_num(1,player_b_antypal[attacker_id]) == 1)
UTIL_Kill(attacker_id,id,"m4a1")

}

return PLUGIN_HANDLED
}

/* ==================================================================================================== */

i co podłożyć w tej linijce za m4a1 aby działało na każdej broni ?

jak zrobię tak będzie działać z każdej broni bo skompilowało :P
public add_bonus_antypaldamage(attacker_id,id,weapon)
{
if (player_b_antypal[attacker_id] > 0 && get_user_team(attacker_id) != get_user_team(id))
{

if (!is_user_alive(id))
return PLUGIN_HANDLED

if (random_num(1,player_b_antypal[attacker_id]) == 1)
UTIL_Kill(attacker_id,id,"weapon")

}

return PLUGIN_HANDLED
}

Użytkownik Divic edytował ten post 04.06.2011 23:43
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 04.06.2011

Spróbuj tak. Stwórz zmienna zmienna_itemu[33] i ona ustala ile dmg więcej ma mieć gdy będzie się posiadało item.

Jak dla mnie, dla jednej rzeczy nie opłaca się tego dodawać, ale też może być.

i co podłożyć w tej linijce za m4a1 aby działało na każdej broni ?

if (player_b_antypal[attacker_id] > 0 && get_user_team(attacker_id) != get_user_team(id) && player_class[id] == Paladyn)
Odpowiedz

JLB. Leo - zdjęcie JLB. Leo 04.06.2011

#include <hamsandwich> // Nie wiem czy jest w standardzie DB


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


public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
        if(is_user_connected(idattacker) && get_user_team(idattacker) != get_user_team(this))
        {
                if(zmienna_itemu[idattacker] > 0 && player_lvl[this] >= player_lvl[idattacker] + 40)
                {
                        new Float:dmg = float(zmienna_itemu[idattacker]);
                        SetHamParamFloat(4, damage + dmg);
                        return HAM_HANDLED;
                }
        }
        return HAM_IGNORED;
}


Spróbuj tak. Stwórz zmienna zmienna_itemu[33] i ona ustala ile dmg więcej ma mieć gdy będzie się posiadało item.


bez sensu

public add_bonus_antypaldamage(attacker_id,id,weapon)
{
if (player_b_antypal[attacker_id] > 0 && get_user_team(attacker_id) != get_user_team(id) && weapon == CSW_M4A1)
{

if (!is_user_alive(id))
return PLUGIN_HANDLED

if (random_num(1,player_b_antypal[attacker_id]) == 1)
UTIL_Kill(attacker_id,id,"m4a1")

}

return PLUGIN_HANDLED
}

/* ==================================================================================================== */



i co podłożyć w tej linijce za m4a1 aby działało na każdej broni ?


o co ci chodzi? Chcesz żeby działało nie tylko na m4, to usuń "&& weapon == CSW_M4A1"
Odpowiedz

  • +
  • -
Divic - zdjęcie Divic 04.06.2011

o ta linijke mi chodzi
UTIL_Kill(attacker_id,id,"m4a1")

zamiast m4a1 dam "weapon" będzie dobrze?
Użytkownik Divic edytował ten post 04.06.2011 23:50
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 05.06.2011

o ta linijke mi chodzi

UTIL_Kill(attacker_id,id,"m4a1")

zamiast m4a1 dam "weapon" będzie dobrze?

Nie, daj "world", a jak chcesz, aby była broń, którą akurat ten paladyn obrywa, to musisz dodać takie coś
new weaponname[32];
get_weaponname(weapon, weaponname, 31);
replace(weaponname, 31, "weapon_", "");

i potem
UTIL_Kill(attacker, id, weaponname);
Odpowiedz

  • +
  • -
Divic - zdjęcie Divic 05.06.2011

czyli ma byc
/* ==================================================================================================== */
public add_bonus_antypaldamage(attacker_id,id,weapon)
{
if (player_b_antypal[attacker_id] > 0 && get_user_team(attacker_id) != get_user_team(id) && player_class[id] == Paladyn)
{

if (!is_user_alive(id))
return PLUGIN_HANDLED

if (random_num(1,player_b_antypal[attacker_id]) == 1)
new weaponname[32];
get_weaponname(weapon, weaponname, 31);
replace(weaponname, 31, "weapon_", "");
UTIL_Kill(attacker, id, weaponname);

}

return PLUGIN_HANDLED
}

tak ma to byc?
czy
/* ==================================================================================================== */
public add_bonus_antypaldamage(attacker_id,id,weapon)
{
if (player_b_antypal[attacker_id] > 0 && get_user_team(attacker_id) != get_user_team(id) && player_class[id] == Paladyn)
{

if (!is_user_alive(id))
return PLUGIN_HANDLED

if (random_num(1,player_b_antypal[attacker_id]) == 1)
{
new weaponname[32];
get_weaponname(weapon, weaponname, 31);
replace(weaponname, 31, "weapon_", "");
}
UTIL_Kill(attacker, id, weaponname);

}

return PLUGIN_HANDLED
}

Użytkownik Divic edytował ten post 05.06.2011 01:04
Odpowiedz

grs4 - zdjęcie grs4 05.06.2011

czyli ma byc

/* ==================================================================================================== */
public add_bonus_antypaldamage(attacker_id,id,weapon)
{
if (player_b_antypal[attacker_id] > 0 && get_user_team(attacker_id) != get_user_team(id) && player_class[id] == Paladyn)
{

if (!is_user_alive(id))
return PLUGIN_HANDLED

if (random_num(1,player_b_antypal[attacker_id]) == 1)
new weaponname[32];
get_weaponname(weapon, weaponname, 31);
replace(weaponname, 31, "weapon_", "");
UTIL_Kill(attacker, id, weaponname);

}

return PLUGIN_HANDLED
}

To ma byc
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 05.06.2011

Jeszcze nie tak ;] Po "if (random_num(1,player_b_antypal[attacker_id]) == 1)" musisz dodać klamrę "{".
Odpowiedz

  • +
  • -
Divic - zdjęcie Divic 05.06.2011

K skompilowało dzięki
Użytkownik Divic edytował ten post 05.06.2011 11:47
Odpowiedz
Zablokowany