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

[ROZWIĄZANE] Jak wrócić do poprzedniej opcji kamery po przydzieleniu widoku gracza z danego obiektu?


Najlepsza odpowiedź BlackPerfum, 08.07.2014 20:16

Chyba najlepiej użyć funkcji wbudowanej tzn. spectator mode. Trochę pokombinowałem i tak mozna się do niej dostać:

public WejdzWCialo(id)
{
	CreateSpec(id,1)
	set_task(20.0, "KoniecPodgladu",id)
}

CreateSpec(id,vid)
{
	engfunc(EngFunc_SetView, id, 1)
	new x = pev(id,pev_effects)
	if(~x & 128)	set_pev(id,pev_effects,x + 128)
	set_pev(id,pev_sequence,107)
	set_pev(id,pev_gaitsequence,6)
	set_pev(id,pev_iuser1,2)
	set_pev(id,pev_iuser2,vid)
	set_pev(id,pev_frame,255.0)
	set_pev(id,pev_framerate,1.0)
}

DeleteSpec(id)
{
	engfunc(EngFunc_SetView, id, id)
	new x = pev(id,pev_effects)
	if(x & 128)	set_pev(id,pev_effects,x - 128)
	set_pev(id,pev_sequence,75)
	set_pev(id,pev_gaitsequence,1)
	set_pev(id,pev_iuser1,0)
	set_pev(id,pev_iuser2,0)
	set_pev(id,pev_frame,float(random(35)+110))
	set_pev(id,pev_framerate,1.0)
}

public KoniecPodgladu(id)
{
	DeleteSpec(id)
}
Nie zmieniaj renderingu graczu gdyż to nie potrzebne i nic nie da gdyż gracz nie jest pokazany na mapie. Jak ci nie odpowiada to pokombinuj z tym a na pewno coś z tego wyjdzie Przejdź do postu


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

#1 Drago36

    Profesjonalista - if you know what i mean

  • Power User

Reputacja: 561
Wszechwiedzący

  • Postów:707
  • GG:
  • Imię:Mów mi D.ave
  • Lokalizacja:Polska
Offline

Napisano 28.06.2014 20:52

Witam.

 

Zrobiłem sobie pewny kod. Polega na tym, że tworzy model na wybranym graczu, a potem "ja" przechodzę na ten model i widzę, gdzie ten wybrany gracz jest, czy też idzie.

public WejdzWCialo(id)
{	
	new iEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
	set_pev(iEnt, pev_classname, "player_hat")
	engfunc(EngFunc_SetModel, iEnt, "models/QTM_CodMod/mine.mdl")
	
	set_pev(iEnt, pev_movetype, MOVETYPE_FLY)
	set_pev(iEnt, pev_aiment, gracz_id[id])
	set_pev(iEnt, pev_owner, gracz_id[id])
	fm_set_rendering(iEnt,kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 20)
	
	engfunc(EngFunc_SetView, id, iEnt)
	set_task(5.0, "KoniecPodgladu")
}

public KoniecPodgladu(id)
{
	ColorChat(id, RED, "Ofiara jest oznaczona przez minute na radarze!")
}

I moje pytanie jak zrobić, aby po 5 sekundach wrócić do swojego modelu?


  • +
  • -
  • 0

#2 Niedostateczny

    Banned

  • Zbanowany

Reputacja: 1
Nowy

  • Postów:14
  • Lokalizacja:A co was to?
Offline

Napisano 28.06.2014 21:09

engfunc(EngFunc_SetView, id, id)

sprawdzałeś?



#3 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 28.06.2014 21:09

I moje pytanie jak zrobić, aby po 5 sekundach wrócić do swojego modelu?

engfunc(EngFunc_SetView, id, id)

  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#4 Niedostateczny

    Banned

  • Zbanowany

Reputacja: 1
Nowy

  • Postów:14
  • Lokalizacja:A co was to?
Offline

Napisano 28.06.2014 21:13

 

I moje pytanie jak zrobić, aby po 5 sekundach wrócić do swojego modelu?

engfunc(EngFunc_SetView, id, id)

 

Już udzieliłem wystarczającej odpowiedzi, kolego ^^

 

///

 

 

nie zapomij usunąć potem tego enta, którego stworzysz :)


Użytkownik Niedostateczny edytował ten post 28.06.2014 21:13


#5 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 28.06.2014 21:14


Już udzieliłem wystarczającej odpowiedzi, kolego
Patrz na czas dodania naszych wiadomości :D Jak zacząłem pisac to twojej jeszcze nie było i nwm czemu się nie pokazało okienko z info o nowym poście ;D
  • +
  • -
  • 0
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#6 Niedostateczny

    Banned

  • Zbanowany

Reputacja: 1
Nowy

  • Postów:14
  • Lokalizacja:A co was to?
Offline

Napisano 28.06.2014 21:19


Patrz na czas dodania naszych wiadomości :D Jak zacząłem pisac to twojej jeszcze nie było i nwm czemu się nie pokazało okienko z info o nowym poście ;D

Oczywiście istnieje Forum-> Propozycje, jednak ten dział to chyba lotto z warnami po tym co widzę :P



#7 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 28.06.2014 21:31

Oczywiście istnieje Forum-> Propozycje, jednak ten dział to chyba lotto z warnami po tym co widzę

Cii...
 
Działa ci to:
set_pev(iEnt, pev_aiment, gracz_id[id])
z tym:
set_pev(iEnt, pev_movetype, MOVETYPE_FLY)
?? Nie powinno być
MOVETYPE_FOLLOW
aby to działało??
  • +
  • -
  • 2
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#8 Niedostateczny

    Banned

  • Zbanowany

Reputacja: 1
Nowy

  • Postów:14
  • Lokalizacja:A co was to?
Offline

Napisano 28.06.2014 21:41

@@T_Author

A tak z domysłu po co używasz engine do tworzenia entity, a potem fakemety ? Mniejszy dialog między modułami to mniejsze obciążenie serwera.

 

@BlackPerfum

A  Domyślnie solid jest ustawiany na SOLID_NOT ?
Przydało by się ustawić gdy jest domyślnie na SOLID_BBOX, jednak nie znamy do końca intencji autora.

 

//edit

 

Szkoda, że nie działa @@T_Author ;/


Użytkownik Niedostateczny edytował ten post 28.06.2014 21:42


#9 Drago36

    Profesjonalista - if you know what i mean

  • Autor tematu
  • Power User

Reputacja: 561
Wszechwiedzący

  • Postów:707
  • GG:
  • Imię:Mów mi D.ave
  • Lokalizacja:Polska
Offline

Napisano 29.06.2014 10:32

engfunc(EngFunc_SetView, id, id)

Akurat tak zrobiłem i to nie działa.

Chyba, że źle stosuje:

public WejdzWCialo(id)
{
	fm_set_rendering(id,kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 20)
	
	new iEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
	set_pev(iEnt, pev_classname, "player_hat")
	engfunc(EngFunc_SetModel, iEnt, "models/QTM_CodMod/mine.mdl")
	
	set_pev(iEnt, pev_movetype, MOVETYPE_FOLLOW) // poprawilem
	set_pev(iEnt, pev_aiment, gracz_id[id])
	set_pev(iEnt, pev_owner, gracz_id[id])
	fm_set_rendering(iEnt,kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 20)
	
	engfunc(EngFunc_SetView, id, iEnt)
	set_task(5.0, "KoniecPodgladu")
}

public KoniecPodgladu(id)
{
	engfunc(EngFunc_SetView, id, id)
	new iEnt = fm_find_ent_by_owner(-1, "player_hat", gracz_id[id])
	engfunc(EngFunc_RemoveEntity, iEnt)
	ColorChat(id, RED, "Ofiara jest oznaczona przez minute na radarze!")
}

Niestety dodatkowo wyskakuje taki błąd, nie wiem czym jest spowodowany, dorzucam że testuje na botach.

Host_Error: PF_setview_I: not a client
Compressing & saving Experience Data...this may take a while!
Experience Data saved

@@

 

@@T_Author

A tak z domysłu po co używasz engine do tworzenia entity, a potem fakemety ? Mniejszy dialog między modułami to mniejsze obciążenie serwera.

 

@BlackPerfum

A  Domyślnie solid jest ustawiany na SOLID_NOT ?

Przydało by się ustawić gdy jest domyślnie na SOLID_BBOX, jednak nie znamy do końca intencji autora.

Nigdzie nie jest użyty engine wraz z fakemat'ą..

 

Trzeba ustawiać tryb bryły obowiązkowo?

Ustawiałem wcześniej, ale nie wiem czy to potrzebne.

Napisałem, chcę stworzyć model  na  wybranym graczu i "ja" mogę przeskoczyć na ten model aby oglądać gdzie chodzi itp. A po 5 sekundach wrócić do swojego modelu


  • +
  • -
  • 0

#10 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 29.06.2014 11:25

pierwsza linijka bledu. Chodzi Ci o takie jakby obserwowanie z tego punktu?
Nastepne to logi z podbotow. Nie masz sie czym martwic
  • +
  • -
  • 1

#11 Drago36

    Profesjonalista - if you know what i mean

  • Autor tematu
  • Power User

Reputacja: 561
Wszechwiedzący

  • Postów:707
  • GG:
  • Imię:Mów mi D.ave
  • Lokalizacja:Polska
Offline

Napisano 29.06.2014 11:54


Chodzi Ci o takie jakby obserwowanie z tego punktu?

Dokładnie. Tworzy się model na wybranym graczu i ja obserwuje ten widok z punktu modelu, który został utworzony na nim.

Po 5 sekundach chcę  wrócić do swojego modelu gracza, żeby nie być już tym obiektem utworzonym na wybranym graczu.


  • +
  • -
  • 0

#12 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 29.06.2014 12:36

Hmmm.

Ale co sie dzieje z twoim modelem (tobą) gdy obserwujesz?
  • +
  • -
  • 0

#13 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 29.06.2014 14:02

Ale co sie dzieje z twoim modelem (tobą) gdy obserwujesz?

fm_set_rendering(id,kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 20)
Prawie że znika

Tak nie można?
 
public WejdzWCialo(id)
{
	fm_set_rendering(id,kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 20)
	engfunc(EngFunc_SetView, id, gracz_id[id])
	set_task(5.0, "KoniecPodgladu",id+32894749)//Zapomniales id przesłać i dawałeś by id==0 patrzyło z punkyu o id == 0 xD
}

public KoniecPodgladu(id)
{
	id-=32894749
	engfunc(EngFunc_SetView, id, id)
	fm_set_rendering(id,kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 20)
	ColorChat(id, RED, "Ofiara jest oznaczona przez minute na radarze!")
}

  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#14 Drago36

    Profesjonalista - if you know what i mean

  • Autor tematu
  • Power User

Reputacja: 561
Wszechwiedzący

  • Postów:707
  • GG:
  • Imię:Mów mi D.ave
  • Lokalizacja:Polska
Offline

Napisano 29.06.2014 19:01

Nie sądziłem że przesłanie danych tu coś da ( :wstyd: ;> ).

Dobra, dzięki wielkie. Działa pięknie.

 

Hmmm.

Ale co sie dzieje z twoim modelem (tobą) gdy obserwujesz?

Obserwowało się normalnie, tylko po 5 sekundach wyrzucało mnie do menu Cs i drukował ten error co podałem wcześniej w konsoli.

To dlatego, że kazałem id==0 (czyli serwerowi?) przechodzić z modelu na model.

Teraz już tego nie ma. ;)

 

P.S

Mam jeszcze dwa pytania, które mnie gnębią.

1. Jest sobie task:

set_task(60.0, "AktywacjaMocy",id+KAC_TASK)

Jest koniec rundy i chcę ten task usunąć. Robię to dobrze w ten sposób?:

remove_task(KAC_TASK, 0)

2. Działa jak powinno, a chciałbym (jak tylko to możliwe) zmienić, aby ten model może nad nim był tworzony.

Spoiler

Nie wygląda to jakoś ciekawie, wolałbym wyżej, za nim, z boku, cokolwiek aby nie było w modelu gracza.


  • +
  • -
  • 0

#15 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 29.06.2014 20:07

remove_task(KAC_TASK+id)

chyba tak :)
  • +
  • -
  • 0

#16 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 29.06.2014 20:44

Jest koniec rundy i chcę ten task usunąć. Robię to dobrze w ten sposób?:

Nie, musisz zrobić tak:
remove_task(KAC_TASK+id)

2. Działa jak powinno, a chciałbym (jak tylko to możliwe) zmienić, aby ten model może nad nim był tworzony.

Dlatego sie spytałem:

Tak nie można?

haha.gif Trzeba by było w thinku zmieniać pozycję/kierunek enta bo wątpie by się dało na odległość od tak enta przyczepić. Jeśli nie chcesz aby ent był za graczem to zawsze możesz go przyczepić w miejscu ustalonym przez pev_body. Możesz próbowac oddalić minimalnie za pomocą SetFOV ale to chyba nic nieda
  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#17 Drago36

    Profesjonalista - if you know what i mean

  • Autor tematu
  • Power User

Reputacja: 561
Wszechwiedzący

  • Postów:707
  • GG:
  • Imię:Mów mi D.ave
  • Lokalizacja:Polska
Offline

Napisano 30.06.2014 13:25

Dobra, ale jakie są rodzaje pev_body i jak się dokładniej stosuje?

set_pev(index enta, pev_body, rodzaj) // Rodzaj od 0 do 16. Dobrze? Na alienmods tak jakoś pisało.

  • +
  • -
  • 0

#18 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 30.06.2014 15:54

Nigdy nie bawiłem się pev_body (ale go używałem) dlatego raczej tak ale pewności nie mam ;D


  • +
  • -
  • 0
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#19 Drago36

    Profesjonalista - if you know what i mean

  • Autor tematu
  • Power User

Reputacja: 561
Wszechwiedzący

  • Postów:707
  • GG:
  • Imię:Mów mi D.ave
  • Lokalizacja:Polska
Offline

Napisano 06.07.2014 09:22

pev_body jednak nie pomaga, nadal model jest tworzony w graczu.

 


Możesz próbowac oddalić minimalnie za pomocą SetFOV ale to chyba nic nieda

Pierwsze słysze. Jak to zastosować?


  • +
  • -
  • 0

#20 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 06.07.2014 12:50

Użyj:
SetUserFov(id,fov)
{
	static SetFovId
	
	if(!SetFovId)	SetFovId = get_user_msgid("SetFOV")
	set_pdata_int(id, 363, fov)
	set_pev(id,pev_fov,float(fov))
	message_begin(MSG_ALL,SetFovId,.player=id)
	write_byte(fov)
	message_end()
}
Jak wchodzisz na gracza to dajesz 50.0 (z mniejszymi wartościami widać celownik) lub 255.0 (50.0 przyblizy 255.0 oddali) a jak schodzisz to ustawiasz 90.0 bo to standardowa wartość haha.gif

Użytkownik BlackPerfum edytował ten post 06.07.2014 12:52

  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika




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

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