hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.03.29. 07:16



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: Bing [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  [ 15 hozzászólás ]  Oldal 1 2 Következő
Szerző Üzenet
 Hozzászólás témája: [TUT] NPC készítése
HozzászólásElküldve: 2012.10.13. 23:13 
Offline
Őskövület
Avatar

Csatlakozott: 2013.01.01. 17:48
Hozzászólások: 2441
Megköszönt másnak: 18 alkalommal
Megköszönték neki: 21 alkalommal
[kozep]Avagy hogyan készítsünk NPC-t?[/kozep]



Üdv!

Sokat írtak, hogy nem tudnak NPC-t készíteni. Na most ebben a tutban megmutatom hogyan is működik ez a dolog. DE! Az elején tisztázzunk pár dolgot: NPC (azaz Non Playable Character) nem foglalja a szerver slotjait, mivel nem BOT. Ez csak egy "fejlettebb" entity.

Kezdjünk hozzá!

1.

Először csináljunk egy funkciót

SMA Forráskód: [ Mindet kijelol ]
  1. public spawn_npc(id)


Majd csináljuk meg az entitynket:
SMA Forráskód: [ Mindet kijelol ]
  1. new ent = create_entity("info_target")


Megjegyzés: Ezzel hozzuk létre majd az NPC bábunkat :D

Az NPC-nek egy origint kell adjuk, így:

SMA Forráskód: [ Mindet kijelol ]
  1. new Float:origin[3]
  2.  
  3. entity_get_vector(id,EV_VEC_origin,origin)
  4. entity_set_origin(ent,origin);
  5.  
  6. origin[2] += 300.0
  7. entity_set_origin(id,origin)


Megjegyzés: Ez állítja majd be az originjét az NPC-nek.


2.

Most a solidunkat kell beépítenünk:

SMA Forráskód: [ Mindet kijelol ]
  1. new Float:maxs[3] = {16.0,16.0,36.0}
  2. new Float:mins[3] = {-16.0,-16.0,-36.0}
  3. entity_set_size(ent,mins,maxs)
  4. entity_set_int(ent,EV_INT_solid, 2)


Megjegyzés: Ezzel egy BBOX solidot készítettünk.

3.

Na a solidunk megvan, mostmár élet kell, és sebzés.

SMA Forráskód: [ Mindet kijelol ]
  1. entity_set_float(ent,EV_FL_takedamage,1.0)
  2. entity_set_float(ent,EV_FL_health,100.0)


Megjegyzés: Állítsd át a takedamage-t 1-re, és HP-t ad, nem pedig sebez xD
A health-al adtunk az entitynknek életet. Ezt növelheted ha úgy tetszik.


4.

Beállítunk az NPC-nek egy modellt.

SMA Forráskód: [ Mindet kijelol ]
  1. entity_set_string(ent,EV_SZ_classname,"npc_onna");
  2. entity_set_model(ent,"models/onna.mdl");


Megjegyzés: Ezzel készítettünk egy classname-t, és modellt adtunk az NPC-nek. Ha gondolod módosíthatod a modellt.

5.

Na eddig megvagyunk. Most adni kell az NPC-nek egy animációt.

SMA Forráskód: [ Mindet kijelol ]
  1. entity_set_float(ent,EV_FL_animtime,2.0)
  2. entity_set_float(ent,EV_FL_framerate,1.0)
  3. entity_set_int(ent,EV_INT_sequence,0);


6.

Ha eddig eljutottunk, megcsinálhatjuk a plugin_initünket.

Először egy thinket regisztrálunk

SMA Forráskód: [ Mindet kijelol ]
  1. register_think("npc_onna","npc_think");


Megjegyzés: Az npc_onna (1. paraméter) annak kell lennie, amit megadtál a classname-nél.

Na most pedig elkészítjük az NPC-nek.

SMA Forráskód: [ Mindet kijelol ]
  1. entity_set_float(ent,EV_FL_nextthink,halflife_time() + 0.01)



Az alábbiakban beállíthatunk az npc-nek egyedi thinkeket.)(pl.: körbe sétáljon a pályán, új animációt csináljon stb.)

SMA Forráskód: [ Mindet kijelol ]
  1. public npc_think(id)
  2. {
  3. // Ide tedd be a thinkjeidet!
  4. entity_set_float(id,EV_FL_nextthink,halflife_time() + 0.01)
  5. }



7.

Ha eddig kész az NPC-nk, adunk neki egy fegyvert, hogy ne a semmivel sebezzen minket.


SMA Forráskód: [ Mindet kijelol ]
  1. public give_weapon(ent)
  2. {
  3. new entWeapon = create_entity("info_target")
  4.  
  5. entity_set_string(entWeapon, EV_SZ_classname, "npc_weapon")
  6.  
  7. entity_set_int(entWeapon, EV_INT_movetype, MOVETYPE_FOLLOW)
  8. entity_set_int(entWeapon, EV_INT_solid, SOLID_NOT)
  9. entity_set_edict(entWeapon, EV_ENT_aiment, ent)
  10. entity_set_model(entWeapon, "models/p_gauss.mdl")
  11. }


FIGYELEM! Le kell töltetned a játékosokkal a modellt, és csak p_ modellt használhatsz!


Na és a tutorialom végén, az egész kód, amiben nyugodtan szerkeszthetsz, állítgathatod stb.

[ablak]SMA Forráskód: [ Mindet kijelol ]#include <amxmodx>
#include <engine>
 
public plugin_init()
{
register_clcmd("onna", "onna")
register_think("npc_onna","npc_think");
}
 
public plugin_precache()
{
precache_model("models/onna.mdl")
precache_model("models/p_gauss.mdl")
}
 
public onna(id)
{
 
new Float:origin[3]
 
entity_get_vector(id,EV_VEC_origin,origin)
 
new ent = create_entity("info_target")
give_weapon(ent)
 
entity_set_origin(ent,origin);
origin[2] += 300.0
entity_set_origin(id,origin)
 
entity_set_float(ent,EV_FL_takedamage,1.0)
entity_set_float(ent,EV_FL_health,100.0)
 
entity_set_string(ent,EV_SZ_classname,"npc_onna");
entity_set_model(ent,"models/onna.mdl");
entity_set_int(ent,EV_INT_solid, 2)
 
entity_set_byte(ent,EV_BYTE_controller1,125);
entity_set_byte(ent,EV_BYTE_controller2,125);
entity_set_byte(ent,EV_BYTE_controller3,125);
entity_set_byte(ent,EV_BYTE_controller4,125);
 
new Float:maxs[3] = {16.0,16.0,36.0}
new Float:mins[3] = {-16.0,-16.0,-36.0}
entity_set_size(ent,mins,maxs)
 
entity_set_float(ent,EV_FL_animtime,2.0)
entity_set_float(ent,EV_FL_framerate,1.0)
entity_set_int(ent,EV_INT_sequence,0);
 
entity_set_float(ent,EV_FL_nextthink,halflife_time() + 0.01)
 
drop_to_floor(ent)
return 1;
}
 
public give_weapon(ent)
{
new entWeapon = create_entity("info_target")
 
entity_set_string(entWeapon, EV_SZ_classname, "npc_weapon")
 
entity_set_int(entWeapon, EV_INT_movetype, MOVETYPE_FOLLOW)
entity_set_int(entWeapon, EV_INT_solid, SOLID_NOT)
entity_set_edict(entWeapon, EV_ENT_aiment, ent)
entity_set_model(entWeapon, "models/p_gauss.mdl")
}
 
public npc_think(id)
{
// Ide tedd be a thinkjeidet!
entity_set_float(id,EV_FL_nextthink,halflife_time() + 0.01)
}[/ablak]


Használat:
Beírod a konzoba: onna
és ahova nézel, készít egy NPC-t!

Remélem segítettem vele!

Hamarosan mégjobb, menüs, és mentési lehetőségekkel rendelkező, "okosabb" NPC-t hozok el nektek!

Megköszönni nem szégyen!

Jó szórakozást vele.


A hozzászólást 2 alkalommal szerkesztették, utoljára Anonymous 2012.10.23. 10:31-kor.

Ők köszönték meg Bence98007 nek ezt a hozzászólást (összesen 8): fear_ezmegmi (2012.10.14. 11:23) • IrOn (2012.10.14. 19:36) • kiki (2012.10.16. 21:03) • DeteCT0R (2012.10.17. 16:22) • peti.97 (2012.10.30. 13:21) • Z [e] U $$ (2013.03.03. 17:20) • norbee.16 (2014.01.23. 11:25) • White#Angel (2014.01.23. 19:53)
  Népszerűség: 18.18%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [TUT] |HOW TO| NPC készítése
HozzászólásElküldve: 2012.10.14. 09:34 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2011.09.18. 13:01
Hozzászólások: 4270
Megköszönt másnak: 55 alkalommal
Megköszönték neki: 513 alkalommal
Szep leiras :)Am alieden van mind2 rol leiras :Damikor kellet enis onan neztem :Des megis lehet olni oket.

_________________
Idk. Csak ugy funbooo.
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [TUT] |HOW TO| NPC készítése
HozzászólásElküldve: 2012.10.14. 10:09 
Offline
Őskövület
Avatar

Csatlakozott: 2013.01.01. 17:48
Hozzászólások: 2441
Megköszönt másnak: 18 alkalommal
Megköszönték neki: 21 alkalommal
Igen, azt fogom majd kiposztolni! De csak ha összegyűlik 5 köszönet!


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [TUT] |HOW TO| NPC készítése
HozzászólásElküldve: 2012.10.14. 11:23 
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
Én azért még pár dolgot részleteztem volna ,de így is kapsz 1 köszönömöt ,mert látszik ,hogy sokat dolgoztál vele.

_________________
[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: [TUT] |HOW TO| NPC készítése
HozzászólásElküldve: 2012.10.14. 12:28 
Offline
Őskövület
Avatar

Csatlakozott: 2013.01.01. 17:48
Hozzászólások: 2441
Megköszönt másnak: 18 alkalommal
Megköszönték neki: 21 alkalommal
Köszönöm! :D


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [TUT] |HOW TO| NPC készítése
HozzászólásElküldve: 2012.10.16. 20:23 
Offline
Őskövület
Avatar

Csatlakozott: 2013.01.01. 17:48
Hozzászólások: 2441
Megköszönt másnak: 18 alkalommal
Megköszönték neki: 21 alkalommal
Na már van 2 köszönöm, ha még lesz 3, jön a menüs NPC!


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [TUT] |HOW TO| NPC készítése
HozzászólásElküldve: 2012.10.17. 11:04 
Offline
Imperátor
Avatar

Csatlakozott: 2009.04.21. 09:33
Hozzászólások: 3991
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 135 alkalommal
Ajh, annyira de annyira belekötnék szinte mindenbe...

pl: "Ha eddig kész az NPC-nk, adunk neki egy fegyvert, hogy ne a semmivel sebezzen minket." <- Ez SEBEZ??? Hol??

_________________
Kód:
I'm back

Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [TUT] |HOW TO| NPC készítése
HozzászólásElküldve: 2012.10.17. 12:55 
Offline
Developer
Avatar

Csatlakozott: 2011.06.01. 21:11
Hozzászólások: 7962
Megköszönt másnak: 295 alkalommal
Megköszönték neki: 535 alkalommal
Lehetne magyarul a tutorialt, kérlek javítsd!


Idézet:
Az NPC-nek egy origint kell adjuk, így:


Idézet:
Megjegyzés: Ez állítja majd be az originjét az NPC-nek.


Idézet:
Most a solidunkat kell beépítenünk:


Idézet:
Megjegyzés: Ezzel egy BBOX solidot készítettünk.


Idézet:
Na a solidunk megvan, mostmár élet kell, és sebzés.


ezt lehetne részletesebben:
Idézet:
Először egy thinket regisztrálunk


Idézet:
Na most pedig elkészítjük az NPC-nek.


mit?
Idézet:
Megjegyzés: Ezzel 1/100 mp alatt megcsináltuk az entitynket, tehát nagyon gyorsan!


Idézet:
Az alábbiakban beállíthatunk az npc-nek egyedi thinkeket.)(pl.: körbe sétáljon a pályán, új animációt csináljon stb.)


nem sebezne..
Idézet:
Ha eddig kész az NPC-nk, adunk neki egy fegyvert, hogy ne a semmivel sebezzen minket.

_________________
http://www.easyrankup.eu


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [TUT] |HOW TO| NPC készítése
HozzászólásElküldve: 2012.10.17. 13:26 
Offline
Imperátor
Avatar

Csatlakozott: 2009.04.21. 09:33
Hozzászólások: 3991
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 135 alkalommal
Idézet:
Megjegyzés: Ezzel 1/100 mp alatt megcsináltuk az entitynket, tehát nagyon gyorsan!

Ezt én se értem... nincs értelme

_________________
Kód:
I'm back

Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [TUT] |HOW TO| NPC készítése
HozzászólásElküldve: 2012.10.17. 14:41 
Offline
Őskövület
Avatar

Csatlakozott: 2013.01.01. 17:48
Hozzászólások: 2441
Megköszönt másnak: 18 alkalommal
Megköszönték neki: 21 alkalommal
:| majd ha lesz időm megcsinálom...
Metal bácsi: 1mp törve 1000 -rel, ennyi idő alatt meg tudja csinálni az entityt. (Ha nem így van, szólj!)


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  [ 15 hozzászólás ]  Oldal 1 2 Következő


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 3 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