Cześć.
Można zmienić model ciała, które już leży na ziemi np. po wpisaniu /test?
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.
|
Guest Message by DevFuse
Zmiana modelu trupa
Temat rozp. A może sma?, 18.08.2011 16:39
5 odpowiedzi w tym temacie
#1
Napisano 18.08.2011 16:39
#2
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
#3
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
message_begin
parametry
message_end
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
#4
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
Ale dziękuje za podpowiedzi
#5
Napisano 20.08.2011 12:09
Mam problem z uzupełnieniem tej wiadomości.
Robię to tak:
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
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?
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
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?
#6
Napisano 21.08.2011 13:02
Weź half-life model viewer i sprawdź ile klatek ma animacja śmierci, ustaw bytowi
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
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