←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Item który widzi niewidzialnych

  • +
  • -
T.I.G.E.R - zdjęcie T.I.G.E.R 07.05.2011

Witam was. Słuchajcie czy wie ktoś z was jak zrobić item w Starym Cod Modzie, że widzi graczy, którzy mają niewidzialność na kuckach?
Chodzi mi o taki jakby anty item.
Item na niewidzialność zrobiłem z tego poradnika:
*************

Jak powinien wyglądać kod na taki anty item? Pomożecie?
Użytkownik Abes Mapper edytował ten post 07.05.2011 15:42
Link do innego forum
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 07.05.2011

To musisz zrobić w AddToFullPack

public plugin_init() {	
	register_forward(FM_AddToFullPack, "fwAddToFullPack", 1);
}

public fwAddToFullPack(es_state, e, ENT, HOST, hostflags, player, set){
	if(!player)
		return FMRES_IGNORED;

	//tu sprawdz perk

	if(pev(e, pev_rendermode) == kRenderTransAlpha){
		set_es(es_state, ES_RenderAmt, 255);
		return FMRES_HANDLED;
	}
	return FMRES_IGNORED;
}

uzupełnij tylko fragment ze sprawdzeniem perka. Pseudokod
if(gracz nie ma tego perka) 
	return FMRES_IGNORED;
Odpowiedz

  • +
  • -
Divic - zdjęcie Divic 07.05.2011

R3X a na diablo jak by wyglądał taki kod ?
Tez oczywiście item i żeby jego posiadacz widział niewidocznych/ze zredukowana widocznością..
Odpowiedz

GoldeN - zdjęcie GoldeN 07.05.2011

public plugin_init() register_forward(FM_AddToFullPack, "FwdAddToFullPack", 1)

public FwdAddToFullPack(es_handle, e, ent, host, hostflags, player, pSet)
{
if(!is_user_connected(host) || !is_user_connected(ent))
return;

if(item_widzi_niewidzialnych[host] == 1)
set_es(es_handle, ES_RenderAmt, 255.0);
}


Ja mam tak i mi działa.
Użytkownik GoldeN edytował ten post 07.05.2011 18:27
Odpowiedz

  • +
  • -
Divic - zdjęcie Divic 07.05.2011

do tego zmienna
new widzi_niewidzialnych[33] = 1
w roundstart chyba nic
funkcja

public plugin_init() register_forward(FM_AddToFullPack, "FwdAddToFullPack", 1)

public FwdAddToFullPack(es_handle, e, ent, host, hostflags, player, pSet)
{
        if(!is_user_connected(host) || !is_user_connected(ent))
                return;
                
        if(item_widzi_niewidzialnych[host] == 1)
                set_es(es_handle, ES_RenderAmt, 255.0);
}


	if (widzi_niewidzialnych[id] > 0) 
	{
		num_to_str(widzi_niewidzialnych[id],TempSkill,10)
		add(itemEffect,199,"Otrzymales dar")
		add(itemEffect,199,TempSkill)
		add(itemEffect,199,"widzenia niewidocznego<br>")
	}


case XX:
		{
			player_item_name[id] = "Moc Widzenia"
			player_item_id[id] = rannum
                        widzi_niewidzialnych[id] = 1

			show_hudmessage(id, "Znalazles przedmiot: %s :: Widzisz wszystko",player_item_name[id],widzi_niewidzialnych[id])          
		}



I to chyba wszystko czy dobrze to zrobilem :P i proszę o pomoc
Użytkownik Divic edytował ten post 07.05.2011 19:10
Odpowiedz

GoldeN - zdjęcie GoldeN 07.05.2011

Przecież ja Ci dałem gotowca. -.- Ze zmiennej item_widzi_niewidzialnych wystarczy zrobić item i opis i zadeklarować ją (stworzyć).
Odpowiedz

  • +
  • -
Divic - zdjęcie Divic 07.05.2011

NO to ja zrobilem tak sobie krok po kroku czyli ze to jest wszystko zle co zrobiłem ?
Odpowiedz

GoldeN - zdjęcie GoldeN 07.05.2011

Ja pi******. Dałem Ci gotowy kod, więc o co Ci jeszcze chodzi? DODAJ ITEM I ZRÓB OPIS. Tak ciężko pojąć?
Odpowiedz

  • +
  • -
T.I.G.E.R - zdjęcie T.I.G.E.R 07.05.2011

Golden zrobiłbyś mi to? Proszę:>
Masz sma mojego Coda a Item który daje niewidzialność to "KUCAK", a item który daje Widzenie Niewidzialnych chciałbym aby miał nazwę Noktowizor (40 item).
Jak powinien wyglądać cały kod? Przepraszam że zadaję takie pytania ale dopiero się uczę :(

Dodano 08 maj 2011 - 17:26:
Pomoże ktoś? :(
Użytkownik T.I.G.E.R edytował ten post 08.05.2011 18:52
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 08.05.2011

Gdybyś mi nie spamował na PW to bym odpisał coś sensownego, a tak masz nauczkę. Kod powinien być sumą tego Twojego z moim/Goldena
Odpowiedz

  • +
  • -
T.I.G.E.R - zdjęcie T.I.G.E.R 08.05.2011

Dużo zrozumiałem ....
Odpowiedz

  • +
  • -
Divic - zdjęcie Divic 08.05.2011

Golden no to
zmienna
new_item_widzi_niewidzialnych = 1

To
public plugin_init() register_forward(FM_AddToFullPack, "FwdAddToFullPack", 1)

public FwdAddToFullPack(es_handle, e, ent, host, hostflags, player, pSet)
{
        if(!is_user_connected(host) || !is_user_connected(ent))
                return;
                
        if(item_widzi_niewidzialnych[host] == 1)
                set_es(es_handle, ES_RenderAmt, 255.0);
}

wkleic pod? (czy gdzie)

public add_bonus_scoutdamage(attacker_id,id,weapon)
{
	if (player_b_sniper[attacker_id] > 0 && get_user_team(attacker_id) != get_user_team(id) && weapon == CSW_SCOUT && player_class[attacker_id]!=Ninja)
	{
		
		if (!is_user_alive(id))
			return PLUGIN_HANDLED
		
		if (random_num(1,player_b_sniper[attacker_id]) == 1)
			UTIL_Kill(attacker_id,id,"scout")
		
	}
	
	return PLUGIN_HANDLED
}


W itemach zwiekszyc liczbe o 1
i dodac
case XX:
		{
			player_item_name[id] = "Moc Widzenia"
			player_item_id[id] = rannum
                        widzi_niewidzialnych[id] = 1

			show_hudmessage(id, "Znalazles przedmiot: %s :: Widzisz wszystko",player_item_name[id],widzi_niewidzialnych[id])          
		}



I czy to jest opis itemu?

	if (item_widzi_niewidzialnych[id] > 0) 
	{
		num_to_str(item_widzi_niewidzialnych[id],TempSkill,10)
		add(itemEffect,199,"Otrzymales dar")
		add(itemEffect,199,TempSkill)
		add(itemEffect,199,"widzenia niewidocznego<br>")
	}

Golden czy jak to dodam do mojego diablo to bedzie dzialac?

Pytam bo nie wiem jak to powinno być prawidłowo przecież widzisz ze próbuje coś wykrzesać...:]
Użytkownik Divic edytował ten post 08.05.2011 20:35
Odpowiedz

  • +
  • -
T.I.G.E.R - zdjęcie T.I.G.E.R 08.05.2011

Czyli tak?
1.W public plugin_init() daję to:
register_forward(FM_AddToFullPack, "fwAddToFullPack", 1);
2.Tworzę item o nazwie (numer 40):
"Noktowizor"
3.Opis:
"Widzisz niewidzialnych"
4.Potem tworzę zmienną:
new widzi_niewidzialnych[33]
5.W case 40:
{
widzi_niewidzialnych[id] == 1;
}
6. I na końcu pluginu daję kod od R3X:
public fwAddToFullPack(es_state, e, ENT, HOST, hostflags, player, set){
	if(!player)
		return FMRES_IGNORED;

	if(widzi_niewidzialnych[id] == 0) 
	return FMRES_IGNORED;

	if(pev(e, pev_rendermode) == kRenderTransAlpha){
		set_es(es_state, ES_RenderAmt, 255);
		return FMRES_HANDLED;
	}
	return FMRES_IGNORED;
}
Dobrze myślę? Proszę odpiszcie, wynagrodzę;>
Użytkownik T.I.G.E.R edytował ten post 08.05.2011 20:39
Odpowiedz

GoldeN - zdjęcie GoldeN 09.05.2011

Zamiast item_widzi_niewidzialnych daj:

public fwAddToFullPack(es_state, e, ENT, HOST, hostflags, player, set){
if(!player)
return FMRES_IGNORED;

if(informacje_przedmiotu_gracza[player] != 40)
return FMRES_IGNORED;

if(pev(e, pev_rendermode) == kRenderTransAlpha){
set_es(es_state, ES_RenderAmt, 255);
return FMRES_HANDLED;
}
return FMRES_IGNORED;
}


Tylko nie wiem czy atrybut player czy HOST. A zmienną item_widzi_niewidzialnych skasuj,
Odpowiedz

  • +
  • -
Divic - zdjęcie Divic 09.05.2011

GoldeN a to moje wo wyżej dałem będzie tak działać...?
Odpowiedz

GoldeN - zdjęcie GoldeN 09.05.2011

Funkcję fwAddToFullPack wkleić na sam dół, do plugin_init dodać rejestr tej funkcji i opis zmienić na:

if (item_widzi_niewidzilnych[id]) 
add(itemEffect,199,"Widzisz wszystkich niewidzialnych<br>")


No i w reset_item_skills wyzerować.
Użytkownik GoldeN edytował ten post 09.05.2011 11:46
Odpowiedz

  • +
  • -
Divic - zdjęcie Divic 09.05.2011

No więc będzie tak?

Nowa zmienna
new_item_widzi_niewidzialnych = 1



Teraz to:
public plugin_init() register_forward(FM_AddToFullPack, "FwdAddToFullPack", 1)

public FwdAddToFullPack(es_handle, e, ent, host, hostflags, player, pSet)
{
        if(!is_user_connected(host) || !is_user_connected(ent))
                return;
                
        if(item_widzi_niewidzialnych[host] == 1)
                set_es(es_handle, ES_RenderAmt, 255.0);
}

wkleić na koniec


W itemach zwiekszyc liczbe o 1
i dodac
case XX:
		{
			player_item_name[id] = "Moc Widzenia"
			player_item_id[id] = rannum
                        widzi_niewidzialnych[id] = 1

			show_hudmessage(id, "Znalazles przedmiot: %s :: Widzisz wszystko",player_item_name[id],widzi_niewidzialnych[id])          
		}



opis itemu

if (item_widzi_niewidzilnych[id]) 
                add(itemEffect,199,"Widzisz wszystkich niewidzialnych<br>")

To:
item_widzi_niewidzilnych[id] = 0
wkejamy do...

i teraz ja tu widzę parę reset_item_skills (i nie wiem czym one się różnią)

Mam to wkleić tu:
public client_connect(id)
{
//	reset_item_skills(id)  - nie tutaj bo nie loaduje poziomow <img src='http://img.amxx.pl/public/style_emoticons/<#EMO_DIR#>/blink.gif' class='bbc_emoticon' alt='O.o' />
	asked_sql[id]=0
	flashbattery[id] = MAX_FLASH
	player_xp[id] = 0		
	player_lvl[id] = 1		
	player_point[id] = 0	
	player_item_id[id] = 0			
	player_agility[id] = 0

czy tu
public reset_item_skills(id){
	item_boosted[id] = 0
	item_durability[id] = 0
	g_item[id] = 0				// do zabierania kasy
	jumps[id] = 0
	gravitytimer[id] = 0
	player_b_vampire[id] = 0	//Vampyric damage
	player_b_damage[id] = 0		//Bonus damage
	player_b_money[id] = 0		//Money bonus
	player_b_gravity[id] = 0	//Gravity bonus : 1 = best
	player_b_inv[id] = 0		//Invisibility bonus


Będzie działać?
Użytkownik Divic edytował ten post 09.05.2011 12:09
Odpowiedz

GoldeN - zdjęcie GoldeN 09.05.2011

register_forward(FM_AddToFullPack, "FwdAddToFullPack", 1) do plugin init. :F


A co napisałem, client_connect czy reset_item_skills?
Użytkownik GoldeN edytował ten post 09.05.2011 12:20
Odpowiedz

  • +
  • -
Divic - zdjęcie Divic 09.05.2011

aaaaha no chyba kumam ok dzięki piekne masz 2 + xD


A nie powinno byc
if (item_widzi_niewidzilnych[id] > 0) 
                add(itemEffect,199,"Widzisz wszystkich niewidzialnych<br>")

Użytkownik Divic edytował ten post 09.05.2011 12:29
Odpowiedz

  • +
  • -
T.I.G.E.R - zdjęcie T.I.G.E.R 09.05.2011

GoldeN zrobiłem tak jak doradziłeś, tylko przy kompilowaniu wywala błąd.
W case przedmiotu dałem tak:
{
widzi_niewidzialnych[id] = 1;  // <- Tu wywala błąd.
}
Błąd to:
Error: Undefined symbol "widzi_niewidzialnych" on line 2326
A na końcu pluginu dałem twój kod:
public fwAddToFullPack(es_state, e, ENT, HOST, hostflags, player, set){
        if(!player)
                return FMRES_IGNORED;

        if(informacje_przedmiotu_gracza[player] != 40) 
                return FMRES_IGNORED;

        if(pev(e, pev_rendermode) == kRenderTransAlpha){
                set_es(es_state, ES_RenderAmt, 255);
                return FMRES_HANDLED;
        }
        return FMRES_IGNORED;
}


Na co mam to zmienić?
Odpowiedz