AMX Mod X - vše co potřebuješ k serveru
Prostor pro Vaši reklamu - napište nám

Pokročilé hledání



Pravidla fóra


1. Na začátek titulku tématu napište [WEB] / [PLUGIN] / [PROJEKT] nebo [OSTATNÍ] dle nejlepší shody zaměření vašich témat.



Všechny časy jsou v UTC


 [ Příspěvků: 29 ]  Přejít na stránku 1, 2, 3  Další
Autor Zpráva
 Předmět příspěvku: BMOD - Vylepšená fyzika (Backup)
PříspěvekNapsal: pát 10. úno 2012 22:02:36 
Offline
AMXX Lama
AMXX Lama
Uživatelský avatar

Registrován: pon 20. čer 2011 16:29:52
Příspěvky: 23
Poděkoval: 0 x
Obdržel poděkování: 8 x
Obrázek
Co je to BMOD?
BMOD je modul pro amxx, který umožňuje vývojářům používat alternativní fyzikální engine (Bullet). Pro lepší představu přikládám pár videí:
http://www.youtube.com/watch?v=Nn26KkoIGNY
http://www.youtube.com/watch?v=CUmNRsVro1U
http://www.youtube.com/watch?v=vUCIKGlyDBQ

Jak to funguje?
Na začítku mapy Bullet načte celou mapu. Tím dostaneme dva "světy" - jeden se starou HL1 fyzikou a druhý s Bullet fyzikou. Pak můžeme přidat do světa Bullet nějaký objekt a synchronizovat jeho polohu a pohyb s libovolnou entitu ve světě HL1.

Jaké funkce BMOD poskytuje?
Kód:
/*
Types of bmod objects.
*/
enum {
   BMOD_sphere = 0,   /* x is radius */
   BMOD_box,   /* x, y and z are half of box dimensions */
   BMOD_cylinder,   /* same as box, x is radius; cylinder is situated along Z axis */
   BMOD_capsule,   /* x is radius, y is distance between half spheres; capsule is situated along Z axis */
   BMOD_cone   /* x is radius, y is height; cone is situated along Z axis */
};

/*
Creates a bmod object of given type, mass and size (x,y,z). Bmod object is subsequently hooked to given entity.
*/
native bmod_object_add(ent,type,Float:mass,Float:size[3])

/*
Destroys the bmod object hooked to given entity.
*/
native bmod_object_remove(ent)

/*
Return 1 if there is any object hooked to given entity.
*/
native bmod_object_check(ent)

enum BMOD_FL {
   BMOD_FL_afactor,   //setAngularFactor only
   BMOD_FL_friction,   //set/getFriction
   BMOD_FL_restitution   //set/getRestitution
};

enum BMOD_VEC {
   BMOD_VEC_afactor,   //set/getAngularFactor
   BMOD_VEC_avelocity,   //set/getAngularVelocity
   BMOD_VEC_afriction,   //set/getAnisotropicFriction
   BMOD_VEC_gravity,   //set/getGravity
   BMOD_VEC_factor,   //set/getLinearFactor
   BMOD_VEC_velocity,   //set/getLinearVelocity
   BMOD_VEC_force,   //applyCentralForce / getTotalForce
   BMOD_VEC_torque   //applyTorque / getTotalTorque
};

/*
Set object vars.
*/
native bmod_object_set_float(ent,BMOD_FL:key,Float:float)
native bmod_object_set_vector(ent,BMOD_VEC:key,Float:vector[3])

/*
Apply object force at relative position.
*/
native bmod_object_apply_force_at(ent,Float:force[3],Float:pos[3])

/*
Get object vars.
*/
native Float:bmod_object_get_float(ent,BMOD_FL:key)
native bmod_object_get_vector(ent,BMOD_VEC:key,Float:vector[3])

/*
Activate callback(forward) for given entity.
*/
native bmod_object_set_callback(ent,bool)

/*
Set/get world vars.
*/
native bmod_world_set_float(BMOD_FL:key,Float:float)
native Float:bmod_world_get_float(BMOD_FL:key)

/*
Do a traceline, return entity id or zero. Also may return hit point or normal.
*/
native bmod_traceline(Float:start[3],Float:end[3],Float:point[3],Float:normal[3])

/*
Forward called on objects collision.
*/
forward bmod_forward_contact(ent1,ent2,Float:distance)


Byl by nějaký příklad kódu?
Tenhle kód spawne pružnou kouli nad hráče.
Kód:
public plugin_init() {
    register_concmd("bmod_test","_bmod_test")
}
public _bmod_test(id){
    //vytvoříme novou entitu
    new entity = create_entity("func_wall")
    entity_set_model(entity,"models/fyzsph.mdl")
    //nastavíme origin entity 128 jednotek nad hráče
    new Float:origin[3]
    entity_get_vector(id,EV_VEC_origin,origin)
    origin[2]+=128
    entity_set_origin(entity,origin)
    //nastavíme movetype a nextthink, aby nebyl pohyb cukaný (kvůli velocity a avelocity)
    entity_set_float(entity,EV_FL_nextthink,86400.0)
    entity_set_int(entity,EV_INT_movetype,8)
    //propojíme entitu s bmod objektem
    new Float:size[3] = {24.0,24.0,24.0}
    bmod_object_add(entity,BMOD_sphere,10.0,size)
    //nastavíme tření a sílu reakce objektu
    bmod_object_set_float(entity,BMOD_FL_friction,2.0)
    bmod_object_set_float(entity,BMOD_FL_restitution,0.88)
   
    //nastavíme tření a sílu reakce světa
    bmod_world_set_float(entity,BMOD_FL_friction,2.0)
    bmod_world_set_float(entity,BMOD_FL_restitution,0.88)
}
public plugin_precache(){
    precache_model("models/fyzsph.mdl")
}

Nejnovější binárky/zdrojáky
Stáhnout nejnovější binárky z GitHubu (windows,linux).
Stáhnout nejnovější amxx include soubor z GitHubu.
Prohlížet nejnovější zdrojáky na GitHubu.

Dodatečné informace
Zpětná vazba a všemožná přání jsou vítána.
Tento topic je zpětným překladem mého topicu na AlliedMods, tak prosím omluvte místy kostrbatější stavbu věty.


Nemáte oprávnění prohlížet přiložené soubory.

_________________
Obrázek


Naposledy upravil Backup dne sob 18. úno 2012 20:46:06, celkově upraveno 2

Nahoru
  
 
 Předmět příspěvku: Re: BMOD - Vylepšená fyzika (Backup)
PříspěvekNapsal: pát 10. úno 2012 22:09:33 
Offline
AMXX Podpora
Uživatelský avatar

Registrován: ned 25. pro 2011 16:56:50
Příspěvky: 359
Bydliště: Praha
Poděkoval: 4 x
Obdržel poděkování: 40 x
Skvělá práce !!

_________________

Jsem zpátky, lásky.

Soukromé projekty - €
API, Oprava-optimalitace pluginů - Zdarma
Ostatní konzultace-rady (Skype hovor)
Skype: csarmada


Nahoru
  
 
 Předmět příspěvku: Re: BMOD - Vylepšená fyzika (Backup)
PříspěvekNapsal: sob 11. úno 2012 9:08:15 
Offline
VIP
VIP
Uživatelský avatar

Registrován: ned 18. pro 2011 17:57:08
Příspěvky: 192
Poděkoval: 2 x
Obdržel poděkování: 24 x
Hmmmmm... Very good project .. Jak napsal CSarmada " Skvělá práce !! " to je ještě víc jak skvělá :-D


Nahoru
  
 
 Předmět příspěvku: Re: BMOD - Vylepšená fyzika (Backup)
PříspěvekNapsal: sob 11. úno 2012 11:31:40 
Offline
AMXX Podpora
Uživatelský avatar

Registrován: ned 27. úno 2011 12:53:16
Příspěvky: 447
Poděkoval: 0 x
Obdržel poděkování: 72 x
Velmi pekné :)

ak sa to spojí s ďalšími modulmi mohol by vzniknúť nejaký nový mód..
Dúfam že po čase bude aj nejaký update ..


Nahoru
  
 
 Předmět příspěvku: Re: BMOD - Vylepšená fyzika (Backup)
PříspěvekNapsal: sob 11. úno 2012 13:41:05 
Offline
Moderátor
Uživatelský avatar

Registrován: ned 27. bře 2011 12:18:01
Příspěvky: 1140
Bydliště: Šurany
Poděkoval: 18 x
Obdržel poděkování: 130 x
Pekné! Dal by si prosím aj príklad kódu aby sa spawnla gula tam kde hráč mieri?

_________________
-= Chat money 3.0 =-
-= Furien Team Changer =-
AMXX pluginy na zákazku - info PM


Nahoru
  
 
 Předmět příspěvku: Re: BMOD - Vylepšená fyzika (Backup)
PříspěvekNapsal: sob 11. úno 2012 14:13:35 
Offline
AMXX Lama
AMXX Lama
Uživatelský avatar

Registrován: pon 20. čer 2011 16:29:52
Příspěvky: 23
Poděkoval: 0 x
Obdržel poděkování: 8 x
Neones píše:
Pekné! Dal by si prosím aj príklad kódu aby sa spawnla gula tam kde hráč mieri?

Uděláš traceline v_angle hráče, k EndPos přičteš PlaneNormal * rozměr objektu, tím získáš kýžený origin.
Na šikmých plochách by se možná hodilo použít ceil() z PlaneNormal (aby se objekty nespawnovaly částečně mimo mapu), tam ale nevím, jak by to fungovalo pro záporné hodnoty.

_________________
Obrázek


Nahoru
  
 
 Předmět příspěvku: Re: BMOD - Vylepšená fyzika (Backup)
PříspěvekNapsal: sob 11. úno 2012 15:08:09 
Offline
Moderátor
Uživatelský avatar

Registrován: ned 27. bře 2011 12:18:01
Příspěvky: 1140
Bydliště: Šurany
Poděkoval: 18 x
Obdržel poděkování: 130 x
Backup píše:
Neones píše:
Pekné! Dal by si prosím aj príklad kódu aby sa spawnla gula tam kde hráč mieri?

Uděláš traceline v_angle hráče, k EndPos přičteš PlaneNormal * rozměr objektu, tím získáš kýžený origin.
Na šikmých plochách by se možná hodilo použít ceil() z PlaneNormal (aby se objekty nespawnovaly částečně mimo mapu), tam ale nevím, jak by to fungovalo pro záporné hodnoty.

Prepáč ale toto som trošku nepobral :) Neviem čo kde ako. Nerozumiem trošku :)

_________________
-= Chat money 3.0 =-
-= Furien Team Changer =-
AMXX pluginy na zákazku - info PM


Nahoru
  
 
 Předmět příspěvku: Re: BMOD - Vylepšená fyzika (Backup)
PříspěvekNapsal: ned 12. úno 2012 16:59:45 
Offline
Administrátor
Uživatelský avatar

Registrován: sob 06. led 2007 18:21:12
Příspěvky: 796
Poděkoval: 1 x
Obdržel poděkování: 76 x
tohle je parada, dobra prace. myslim si ze brzo muzeme cekat nejaky novy mod prave s timhle modulem a to bude pecka.

_________________
Obrázek


Nahoru
  
 
 Předmět příspěvku: Re: BMOD - Vylepšená fyzika (Backup)
PříspěvekNapsal: pát 17. úno 2012 17:16:15 
Offline
AMXX Lama
AMXX Lama
Uživatelský avatar

Registrován: pon 20. čer 2011 16:29:52
Příspěvky: 23
Poděkoval: 0 x
Obdržel poděkování: 8 x
Přidány další funkce, mrkněte se do include souboru.
Na videu používám bod posledního zásahu kulkou jako cíl pro traceline, protože jsem moc líný to udělat přes v_angle hráče. Gravitaci (nebo sílu v bodě dotyku s tracovacím paprskem) nastavuji tracenutému objektu pomocí bindu.

_________________
Obrázek


Nahoru
  
 
 Předmět příspěvku: Re: BMOD - Vylepšená fyzika (Backup)
PříspěvekNapsal: sob 18. úno 2012 20:47:51 
Offline
AMXX Lama
AMXX Lama
Uživatelský avatar

Registrován: pon 20. čer 2011 16:29:52
Příspěvky: 23
Poděkoval: 0 x
Obdržel poděkování: 8 x
Tak další update, přidán forward díky kterému můžete např. ozvučit kolizi.

_________________
Obrázek


Nahoru
  
 
 [ Příspěvků: 29 ]  Přejít na stránku 1, 2, 3  Další

Všechny časy jsou v UTC


Kdo je online

Uživatelé procházející toto fórum: CommonCrawl [Bot] a 0 návštevníků



Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Přejít na:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
All rights reserved 2007 - 2019 © by AMXMODX.cz, kopírování textů nebo grafických prvků z této stránky je bez souhlasu administrátora (jab.jab@seznam.cz) přísně zakázáno!


TOPlist