←  Gotowe funkcje

AMXX.pl: Support AMX Mod X i SourceMod

»

Operacje na obrażeniach

  • +
  • -
MarWit's Photo MarWit 21.02.2013

ale tutaj nie da się ustawić inflictora

"inflictorem" jest broń aktualnie trzymana przez gracza, lub jeżeli byt nie jest graczem to "inflictorem" jest właśnie byt atakujący.

O tym to ja wiem, chodzi mi po prostu o ustawienie "inflictora" bez względu na to, kto jest atakującym, co zresztą pisałem, że chodzi mi o coś takiego jak można ustawić przy "Ham_TakeDamage", czyli jeszcze dokładniej, w "Ham_Killed" nie da się ustawić gracza jako atakującego, a jakiś byt jako to coś, co zadaje obrażenia.


Możesz spróbować przed użyciem forwarda Ham'a, ustawić playerowi inflictora:

set_pev( iThis, pev_dmg_inflictor, iInflictor );
ExecuteHamB( Ham_Killed, iThis, iAttacker, 0 );

sebul (21.02.2013 23:20):
Może kiedyś się przetestuje.
Quote

  • +
  • -
Marf's Photo Marf 29.11.2015

Sory chłopaki i dziewczyny że odkupuje, ale chciałbym spytać o modyfikacje tych operacji.

 

Da radę zrobić tak, żeby była możliwość zabicia fleszem kogoś? Jeśli gracz trafi w tekstury gracza z przeciwnej drużyny fleszem bądź smokiem (byle nie granatem odłamkowym HE), to ta osoba ginie. To pomysł na event swiateczny, tyle ze zamiast flesza bedzie to model sniezki.

 

 

 


Edited by Marf, 29.11.2015 16:00.
Quote

  • +
  • -
StoDwaJeden's Photo StoDwaJeden 29.11.2015

Da radę tak zrobić.

Quote

  • +
  • -
Marf's Photo Marf 29.11.2015

Z racji że nie za bardzo jeszcze siedzę w PAWN'ie to proszę i liczę na waszą pomoc.

Ogólnie cały zamysł pluginu:

 

Kod wygląda następująco:

http://amxx.pl/topic...łaja-w-ct-i-tt/

 

Będzie to wgrywane na hns ganiany mod, więc trzeba to troszkę przerobić - mianowicie:

plugin losuje tylko osobę z  terrorystów - czyli osobę która ucieka przed CT.

wylosowana osoba otrzymuje model mikołaja, jej tekstury świecą się na wybrany kolor, by łatwiej było wiedzieć kto został mikołajem (nie wiem jak to zrobić), zwiększone HP, zwiększony armor oraz możliwość zabicia 2 fleszami (śnieżkami)

 

Jeśli mikołaj przeżyje rundę, zostanie wylosowana mu nagroda spośród puli, która powinna wyglądać następująco:

- VIP 3 dni

- VIP 5 dni

- rózga (równoznaczne ze śmiercią w następnej rundzie) - wartałoby dodać jakiś komunikat dla gościa żeby wiedział dlaczego zginął.

- VIP jeden dzień

 

Po przeżytej rundzie powinien się wyświetlić komunikat na sayu dla wszystkich: "Mikołaj <gracz xxx> przeżył rundę i w nagrodę otrzymuje <los z puli> "

Jeśli mikołaj zginie z ręki CT - osoba która go zabiła również otrzymuje coś z puli nagród a na sayu komunikat powinien wyglądać następująco: "Gracz xxx pozbył się mikołaja i otrzymuje <los z puli> "

 

Co rundę losowany jest nowy mikołaj i na sayu powinien się wyświetlać komunikat kto nim został.

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <hamsandwich>
#include <ColorChat>

new bool:mikolaj[33]

public plugin_init(){
	register_plugin("Losowanie Mikolaja", "1.0", "Sniper Elite");
	
	RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1);
	register_logevent("PoczatekRundy", 2, "1=Round_Start");
	register_event("DeathMsg", "Death", "ade");
	
	register_cvar("santa_hp", "50");
	register_cvar("santa_armor", "200");
	register_cvar("santa_frags", "2");
	register_cvar("santa_money", "500");
}
public plugin_precache(){
	precache_model("models/player/santatt/santatt.mdl")
	precache_model("models/player/santact/santact.mdl")
}

public Odrodzenie(id){
	mikolaj[id] = false
	cs_reset_user_model(id) 
	return PLUGIN_CONTINUE;
}
public PoczatekRundy(){
	if(get_playersnum() >=4){
		los_mikolaj_ct()
		los_mikolaj_tt()
	}
}
public Death()
{
	new id = read_data(2);
	new attacker = read_data(1);
	if(!is_user_alive(attacker) || !is_user_connected(attacker))
		return PLUGIN_CONTINUE;
		
	if(get_playersnum() >= 4){
		if(mikolaj[id]){
			set_user_frags (attacker, get_user_frags(attacker) + get_cvar_num("santa_frags"))
			cs_set_user_money (attacker,cs_get_user_money(attacker) + get_cvar_num("santa_money")) 
		}
	}
	return PLUGIN_CONTINUE;
}
public los_mikolaj_ct(){
	new players[32], num
	get_players(players, num);
	new rand = random_num(1,num)
	if(cs_get_user_team(rand) == CS_TEAM_CT && is_user_alive(rand)){
		ColorChat(rand, BLUE, "Jestes Mikolajem CT");
		cs_set_user_model (rand, "santact");
		set_user_health (rand, get_user_health(rand) + get_cvar_num("santa_hp"))
		set_user_armor(rand, get_cvar_num("santa_armor"))
		mikolaj[rand] = true
	}
	else los_mikolaj_ct()
	
	return PLUGIN_CONTINUE;
}
public los_mikolaj_tt(){
	new players[32], num
	get_players(players, num);
	new rand = random_num(1,num)
	if(cs_get_user_team(rand) == CS_TEAM_T && is_user_alive(rand)){
		ColorChat(rand, RED, "Jestes Mikolajem TT");
		cs_set_user_model (rand, "santatt");
		set_user_health (rand, get_user_health(rand) + get_cvar_num("santa_hp"))
		set_user_armor(rand, get_cvar_num("santa_armor"))
		mikolaj[rand] = true
	}
	else los_mikolaj_tt()
	
	return PLUGIN_CONTINUE;
}

Plugin nie wiem czy jest do zrobienia w sposób jaki opisałem. Liczę na waszą pomoc. Będą lecieć plusiki, tylko tak mogę się wam odwdzięczyć.

Ogólnie dużo tutaj jest komunikatów, można się pogubić. Jeśli uważacie, że lepiej byłoby część dać na HUD message, to zróbcie jak uważacie. Chce żeby fajnie to wyglądało:P


Edited by Marf, 29.11.2015 22:30.
Quote

  • +
  • -
twojtyp's Photo twojtyp 16.12.2015

Pomysł pluginu www mi się podoba. Jednak z powodu braku doświadczenia, nie pomogę ci

Quote

  • +
  • -
DarkGL's Photo DarkGL 17.12.2015

Napisz nowy temat.
Quote