1 registered members (Ayumi),
662
guests, and 3
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Re: c_trace durch eine transparente Stelle in einem Sprite
[Re: Alexander]
#360360
02/23/11 19:14
02/23/11 19:14
|
Joined: Apr 2005
Posts: 4,506 Germany
fogman
Expert
|
Expert
Joined: Apr 2005
Posts: 4,506
Germany
|
Ich würde es so probieren: Trace aufs Sprite -> Alphawert an der Trefferstelle auslesen hit.skin1,skin2 BMAP* pointers of the first and second texture of the hit surface. Can be used to determine the pixel color or alpha value at the contact position. Alphawert == 0? - falls ja -> von der Trefferstelle weiter Richtung Ziel tracen, dabei das Sprite ignorieren. Edit: vent war schneller.
no science involved
|
|
|
Re: c_trace durch eine transparente Stelle in einem Sprite
[Re: Alexander]
#360361
02/23/11 19:16
02/23/11 19:16
|
Joined: Jan 2011
Posts: 797 Da wo du nicht bist! Muhahaha!
xxxxxxx
User
|
User
Joined: Jan 2011
Posts: 797
Da wo du nicht bist! Muhahaha!
|
Du könntest bei c_trace scna_texture oder so setzen dann die beschaffen heit(alpha) prüfen und wenns transperent genug ist ein zeites mal von der position zum ziehl tracen(mit ignore_you) das machst du solange bis du angekommen bist! Ich weiß nicht ob es bei sprites klappt aber es sollte eigentlich seinen Zweck erfüffen es sei denn du schießt durch zehn transperteten sachen gleichzeitig durch dann wirts lam! EDIT: zwei waren da schneller! xxxxxxx
Last edited by xxxxxxx; 02/23/11 19:16.
Es ist immer wieder erstaunlich, dass Leute die riesen Scripte schreiben die einfachsten sachen nicht können zb. mich mit SIEBEN x zu schreiben!
|
|
|
Re: c_trace durch eine transparente Stelle in einem Sprite
[Re: Alexander]
#360400
02/23/11 20:49
02/23/11 20:49
|
Joined: Jun 2005
Posts: 152 Weiterstadt, Germany
Alexander
OP
Member
|
OP
Member
Joined: Jun 2005
Posts: 152
Weiterstadt, Germany
|
Jetzt muss ich aber doch noch mal doof fragen. Ich habe bei c_trace SCAN_TEXTURE gesetzt und habe eine if Abfrage "if (hit.skin1 ...)" wie komme ich jetzt an den Alphawert heran? Im Handbuch steht es handelt sich um einen BMAP* Pointer, da würde mir aber nur "pixel_to_vec" einfallen, was es aber eigentlich nicht sein kann, oder?
Gruß Alex =)
|
|
|
Re: c_trace durch eine transparente Stelle in einem Sprite
[Re: Alexander]
#360401
02/23/11 20:51
02/23/11 20:51
|
Joined: Apr 2005
Posts: 4,506 Germany
fogman
Expert
|
Expert
Joined: Apr 2005
Posts: 4,506
Germany
|
pixel_for_bmap ist das was Du suchst.
no science involved
|
|
|
Re: c_trace durch eine transparente Stelle in einem Sprite
[Re: fogman]
#360423
02/23/11 21:34
02/23/11 21:34
|
Joined: Jun 2005
Posts: 152 Weiterstadt, Germany
Alexander
OP
Member
|
OP
Member
Joined: Jun 2005
Posts: 152
Weiterstadt, Germany
|
Ich glaube ich bin auf dem Holzweg. "Pointer_Skin1 = hit.skin1;" funktioniert noch, danach gibt es den Fehler "E1515: Invalid arguments".
Pointer_Skin1 = hit.skin1;
bmap_lock(Pointer_Skin1, 0);
pixel = pixel_for_bmap(Pointer_Skin1, Pointer_Skin1.x, Pointer_Skin1.y);
bmap_unlock(Pointer_Skin1); // unlock the locked bitmap
pixel_to_vec(temp, alpha, 8888, pixel);
Gruß Alex =)
|
|
|
Re: c_trace durch eine transparente Stelle in einem Sprite
[Re: Alexander]
#360431
02/23/11 22:12
02/23/11 22:12
|
Joined: Aug 2007
Posts: 1,922 Schweiz
Widi
Serious User
|
Serious User
Joined: Aug 2007
Posts: 1,922
Schweiz
|
pixel = pixel_for_bmap(Pointer_Skin1, Pointer_Skin1.x, Pointer_Skin1.y);
wechsle das:
pixel = pixel_for_bmap(Pointer_Skin1, Pointer_Skin1.u1, Pointer_Skin1.v1);
u1 / v1 sind die Kontaktkoordinaten auf der hit.skin. Frage auch ab, ob überhaupt eine entity getroffen wurde und führe den code nur aus, wenn dies zutrift (if (hit.entity))... Teste auch das Format: var format; format = bmap_lock(...); ... pixel_to_vec(temp, alpha, format, pixel);
Last edited by Widi; 02/23/11 22:16.
|
|
|
Re: c_trace durch eine transparente Stelle in einem Sprite
[Re: Widi]
#360648
02/25/11 19:32
02/25/11 19:32
|
Joined: Jun 2005
Posts: 152 Weiterstadt, Germany
Alexander
OP
Member
|
OP
Member
Joined: Jun 2005
Posts: 152
Weiterstadt, Germany
|
Hi, danke für deine Hilfe. Das Problem ist aber, er stürzt schon beim verriegeln des Bitmaps ab.
bmap_lock(Pointer_Skin1, 0);
Gruß Alex =)
|
|
|
Moderated by mk_1, Perro, rayp, Realspawn, Rei_Ayanami, rvL_eXile, Spirit, Superku, Tobias, TSG_Torsten, VeT
|