hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.03.28. 13:02



Jelenlévő felhasználók

Jelenleg 271 felhasználó van jelen :: 1 regisztrált, 0 rejtett és 270 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: Google [Bot] az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 5 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: NPC játékos keresés
HozzászólásElküldve: 2013.05.20. 10:06 
Offline
Őskövület
Avatar

Csatlakozott: 2012.02.07. 23:34
Hozzászólások: 2192
Megköszönt másnak: 27 alkalommal
Megköszönték neki: 55 alkalommal
Az lenne a problémám, hogy az NPC néha észreveszi az embert, de legtöbbször nem. Illetve, hogy ha 1 pillanatra nem látja a játékost akkor megáll.
Miként lehetne orvosolni ezt a problémát? ( egy kód jól jönne)
Eddig ezzel a kóddal próbáltam a keresést:
SMA Forráskód: [ Mindet kijelol ]
  1. public FwdThink(ent)
  2. {
  3. static classname[32];
  4. pev(ent, pev_classname, classname, sizeof(classname) - 1);
  5.  
  6. if( !equali(classname, NPC_CLASS) ) return;
  7.  
  8. if(g_NpcDead[ent])
  9. {
  10. return;
  11. }
  12.  
  13. new victim = FindClosesEnemy(ent)
  14.  
  15. if( victim )
  16. {
  17. //mozgás a játékos felé illetve támadás
  18. }
  19. }
  20. public FindClosesEnemy(entid)
  21. {
  22. new Float:Dist
  23. new Float:maxdistance=4000.0
  24. new indexid=0
  25. for(new i=1;i<=get_maxplayers();i++){
  26. if(is_user_alive(i) && is_valid_ent(i) && can_see_fm(entid, i))
  27. {
  28. Dist = entity_range(entid, i)
  29. if(Dist <= maxdistance)
  30. {
  31. maxdistance=Dist
  32. indexid=i
  33.  
  34. return indexid
  35. }
  36. }
  37. }
  38. return 0
  39. }
  40.  
  41. public bool:can_see_fm(entindex1, entindex2)
  42. {
  43. if (!entindex1 || !entindex2)
  44. return false
  45.  
  46. if (pev_valid(entindex1) && pev_valid(entindex1))
  47. {
  48. new flags = pev(entindex1, pev_flags)
  49. if (flags & EF_NODRAW || flags & FL_NOTARGET)
  50. {
  51. return false
  52. }
  53.  
  54. new Float:lookerOrig[3]
  55. new Float:targetBaseOrig[3]
  56. new Float:targetOrig[3]
  57. new Float:temp[3]
  58.  
  59. pev(entindex1, pev_origin, lookerOrig)
  60. pev(entindex1, pev_view_ofs, temp)
  61. lookerOrig[0] += temp[0]
  62. lookerOrig[1] += temp[1]
  63. lookerOrig[2] += temp[2]
  64.  
  65. pev(entindex2, pev_origin, targetBaseOrig)
  66. pev(entindex2, pev_view_ofs, temp)
  67. targetOrig[0] = targetBaseOrig [0] + temp[0]
  68. targetOrig[1] = targetBaseOrig [1] + temp[1]
  69. targetOrig[2] = targetBaseOrig [2] + temp[2]
  70.  
  71. engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) // checks the had of seen player
  72. if (get_tr2(0, TraceResult:TR_InOpen) && get_tr2(0, TraceResult:TR_InWater))
  73. {
  74. return false
  75. }
  76. else
  77. {
  78. new Float:flFraction
  79. get_tr2(0, TraceResult:TR_flFraction, flFraction)
  80. if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
  81. {
  82. return true
  83. }
  84. else
  85. {
  86. targetOrig[0] = targetBaseOrig [0]
  87. targetOrig[1] = targetBaseOrig [1]
  88. targetOrig[2] = targetBaseOrig [2]
  89. engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) // checks the body of seen player
  90. get_tr2(0, TraceResult:TR_flFraction, flFraction)
  91. if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
  92. {
  93. return true
  94. }
  95. else
  96. {
  97. targetOrig[0] = targetBaseOrig [0]
  98. targetOrig[1] = targetBaseOrig [1]
  99. targetOrig[2] = targetBaseOrig [2] - 17.0
  100. engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) // checks the legs of seen player
  101. get_tr2(0, TraceResult:TR_flFraction, flFraction)
  102. if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
  103. {
  104. return true
  105. }
  106. }
  107. }
  108. }
  109. }
  110. return false
  111. }

_________________
[sma]CMD:fear(playerid, params[]){ new str[5]; if(!sscanf(params, "s[5]", str)){ if(egyezik(str, "find")) Msg(playerid, "A-a!");}  return 1;}[/sma]


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: NPC játékos keresés
HozzászólásElküldve: 2013.05.20. 11:16 
Offline
Félisten
Avatar

Csatlakozott: 2010.09.16. 20:57
Hozzászólások: 950
Megköszönt másnak: 9 alkalommal
Megköszönték neki: 101 alkalommal
can_see_fm-et szedd ki

_________________
Weboldalam: nandee.smmg.hu
Kép

Ők köszönték meg Nandee nek ezt a hozzászólást: fear_ezmegmi (2013.05.20. 11:43)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: NPC játékos keresés
HozzászólásElküldve: 2013.05.20. 12:43 
Offline
Őskövület
Avatar

Csatlakozott: 2012.02.07. 23:34
Hozzászólások: 2192
Megköszönt másnak: 27 alkalommal
Megköszönték neki: 55 alkalommal
Nandee írta:
can_see_fm-et szedd ki

Most már nem vesztenek el :D Kösz, müködik :D
már csak azt kéne, hogy folyamatosan keresse az ellent azt hogyis kell? :D

_________________
[sma]CMD:fear(playerid, params[]){ new str[5]; if(!sscanf(params, "s[5]", str)){ if(egyezik(str, "find")) Msg(playerid, "A-a!");}  return 1;}[/sma]


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: NPC játékos keresés
HozzászólásElküldve: 2013.05.20. 13:04 
Offline
Félisten
Avatar

Csatlakozott: 2010.09.16. 20:57
Hozzászólások: 950
Megköszönt másnak: 9 alkalommal
Megköszönték neki: 101 alkalommal
fear_ezmegmi írta:
Nandee írta:
can_see_fm-et szedd ki

Most már nem vesztenek el :D Kösz, müködik :D
már csak azt kéne, hogy folyamatosan keresse az ellent azt hogyis kell? :D

think-ben keress folyamatosan játékost és tárold el az npc-n

_________________
Weboldalam: nandee.smmg.hu
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: NPC játékos keresés
HozzászólásElküldve: 2013.05.20. 19:41 
Offline
Őskövület
Avatar

Csatlakozott: 2012.02.07. 23:34
Hozzászólások: 2192
Megköszönt másnak: 27 alkalommal
Megköszönték neki: 55 alkalommal
Nandee írta:
fear_ezmegmi írta:
Nandee írta:
can_see_fm-et szedd ki

Most már nem vesztenek el :D Kösz, müködik :D
már csak azt kéne, hogy folyamatosan keresse az ellent azt hogyis kell? :D

think-ben keress folyamatosan játékost és tárold el az npc-n

konkrét kódot kaphatok? xd

_________________
[sma]CMD:fear(playerid, params[]){ new str[5]; if(!sscanf(params, "s[5]", str)){ if(egyezik(str, "find")) Msg(playerid, "A-a!");}  return 1;}[/sma]


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 5 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 10 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole