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

Zmiana modelu trupa


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

#1 A może sma?

    Godlike

  • Power User

Reputacja: 547
Wszechwiedzący

  • Postów:1 464
  • Steam:steam
  • Imię:Tomasz
  • Lokalizacja:Polska
Offline

Napisano 18.08.2011 16:39

Cześć.
Można zmienić model ciała, które już leży na ziemi np. po wpisaniu /test?
  • +
  • -
  • 0

#2 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 981
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 18.08.2011 17:26

łap funkcje z mojego dawnego moda
public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)

	register_message(get_user_msgid("ClCorpse"), "message_clcorpse")
	
	register_think("fake_corpse","fake_corpse_think")
}

public message_clcorpse() {
	new szModel[64],iId = get_msg_arg_int(12);
	get_msg_arg_string(1,szModel,charsmax(szModel))
	if(pev_valid(gPlayersArray[iId][gFakeCorp])){
		remove_entity(gPlayersArray[iId][gFakeCorp]);
		remove_task(iId+TASK_CORPS);
	}
	gPlayersArray[iId][gFakeCorp] = create_fake_corpse(iId,szModel);
	set_task(float(get_pcvar_num(pCvars[pCorpsTime])),"deleteCorp",TASK_CORPS+iId)
}

public deleteCorp(id){
	id -= TASK_CORPS;
	if(pev_valid(gPlayersArray[id][gFakeCorp])){
		remove_entity(gPlayersArray[id][gFakeCorp]);
	}
	gPlayersArray[id][gFakeCorp] = 0;
}

public create_fake_corpse(id,szModel[])
{
	static player_model[64]
	format(player_model, 63, "models/player/%s/%s.mdl", szModel, szModel)
	
	static Float: player_origin[3]
	pev(id, pev_origin, player_origin)
	
	static Float:mins[3]
	mins[0] = -16.0
	mins[1] = -16.0
	mins[2] = -34.0
	
	static Float:maxs[3]
	maxs[0] = 16.0
	maxs[1] = 16.0
	maxs[2] = 34.0
	
	static Float:player_angles[3]
	pev(id, pev_angles, player_angles)
	player_angles[2] = 0.0
	
	new sequence = pev(id, pev_sequence)
	
	new ent = fm_create_entity("info_target")
	if(ent)
	{
		set_pev(ent, pev_classname, "fake_corpse")
		engfunc(EngFunc_SetModel, ent, player_model)
		engfunc(EngFunc_SetOrigin, ent, player_origin)
		engfunc(EngFunc_SetSize, ent, mins, maxs)
		set_pev(ent, pev_solid, SOLID_TRIGGER)
		set_pev(ent, pev_movetype, MOVETYPE_TOSS)
		set_pev(ent, pev_owner, id)
		set_pev(ent, pev_angles, player_angles)
		set_pev(ent, pev_sequence, sequence)
		set_pev(ent, pev_frame, 9999.9)
		set_pev(ent,pev_nextthink, halflife_time() + 0.1)
		set_pev(ent,pev_fuser3,halflife_time())
	}
	return ent;
}

public fake_corpse_think(ent){
	if (!is_valid_ent(ent)){
		return PLUGIN_CONTINUE
	}
	new Float:IsTime = halflife_time() - pev(ent,pev_fuser3);
	new g = floatround(floatabs(255.0 - (floatmul(255.0,floatdiv(IsTime,float(get_pcvar_num(pCvars[pCorpsTime])))))))
	set_rendering( ent, kRenderFxGlowShell, 0, g, 0, kRenderTransAdd, g );
	//set_rendering( ent, kRenderFxGlowShell, 0, g, 0, kRenderTransColor, g );
	set_pev(ent,pev_nextthink, halflife_time() + 0.1)
	return PLUGIN_CONTINUE
}
musisz usunać stary corp i stworzyć nowy
  • +
  • -
  • 1

#3 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 981
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 18.08.2011 17:38

chociaż nie to głupia metoda ;D
Half-Life 1 Game Events - AlliedModders Wiki
wystarczy zmienić pierwszy parametr message
register_message(get_user_msgid("ClCorpse"), "message_clcorpse")

public message_clcorpse() {
set_msg_arg_string(1,"model")
}
;) a jak chcesz już w po wywołaniu message to wyslij po prostu message
message_begin
parametry
message_end
  • +
  • -
  • 1

#4 A może sma?

    Godlike

  • Autor tematu
  • Power User

Reputacja: 547
Wszechwiedzący

  • Postów:1 464
  • Steam:steam
  • Imię:Tomasz
  • Lokalizacja:Polska
Offline

Napisano 18.08.2011 17:51

Znaczy ogólnie to chce wywołać zmianę modelu po spełnieniu określonego warunku w pewnej funkcji :]
Ale dziękuje za podpowiedzi :]
  • +
  • -
  • 0

#5 A może sma?

    Godlike

  • Autor tematu
  • Power User

Reputacja: 547
Wszechwiedzący

  • Postów:1 464
  • Steam:steam
  • Imię:Tomasz
  • Lokalizacja:Polska
Offline

Napisano 20.08.2011 12:09

Mam problem z uzupełnieniem tej wiadomości.
Robię to tak:

set_msg_arg_string(1,"naked_censored");
set_msg_arg_int(9, ARG_BYTE, 73);

No i niby działa - model podmienia i ustawia ciało w pozycji leżącej... Lecz dopiero po chwili
więc spróbowałem ustawić parametr nr 8 na 0, a później na 0.0 - set_msg_arg_int(8, ARG_LONG, 0); i set_msg_arg_float(8, ARG_LONG, 0.0); - nie przyniosło to pożądanego skutku. W zasadzie, żadnego xD

No i ciało lewituje nad ziemią zamiast na niej leżeć
próbowałem więc zmienić 4 argument o tak:
set_msg_arg_float(4, ARG_LONG, 0.0); by ciało było na podłodze
Jednak po chwili po prostu znikało

Jeszcze mam pytanie takie: parametr 12. to ID trupa, który leży na ziemi?
  • +
  • -
  • 0

#6 Dwdov

    Profesjonalista

  • Zbanowany

Reputacja: 59
Pomocny

  • Postów:172
  • Imię:Dawid
  • Lokalizacja:Jawor
Offline

Napisano 21.08.2011 13:02

Weź half-life model viewer i sprawdź ile klatek ma animacja śmierci, ustaw bytowi

set_pev( ent, pev_frame, ostatnia_klatka )

i trup powinien od razu leżeć.
#edit
Jeżeli nie o to chodzi to spróbuj
Dokumentacja AMXX.pl: Engine >> engine > drop_to_floor

Użytkownik Dawedov edytował ten post 21.08.2011 13:04

Nie pomagam na PW, tylko na forum.





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

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