Pewnego dnia postanowiłem rozwiać wszelkie wątpliwości na temat tworzenia bytów o dowolnych kształtach, ponieważ chciałem w końcu stworzyć coś nowego używając amxxa, niż tylko marne bryły w kształcie sześcianów/prostopadłościanów.
Okazało się to możliwe i to w niemożliwie prosty sposób ![]()
SOLID_BSP
No, ale co dalej?
Cała magia polega na tym, że musimy stworzyć "pustą" mapę w VHE, tworząc na środku niej naszą bryłę. Jako jej teksturę ustawiamy CLIP.
Dodajemy dowolne "point entity", np info_null. Kompilujemy mapę, otrzymujemy plik .bsp.
Następnie musimy stworzyć swój własny model, o rozmiarach takich samych jak nasza bryła w pliku .bsp. Jak go stworzyć nie będę tłumaczyć, ponieważ mnie samego wyręczył znajomy. ![]()
Posiadając plik .bsp oraz .mdl wystarczy już tylko napisać plugin stawiający nasze dwa byty w jednym miejscu -
- jeden posiadający model x.bsp + SOLID_BSP + MOVETYPE_PUSH (jest to jedyny movetype "wspołpracujący" z solid_bsp);
- drugi posiadający model x.mdl
I to tyle. Pierwszy byt będzie niewidoczny ale będzie odpowiadać za dotyk, drugi natomiast jest modelem zapewniającym "oteksturowanie" tego pierwszego - nie posiadającym dotyku.
Przykład w kodzie:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <engine>
#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"
enum _:Wut{
BSP,
MDL
};
new g_sWut[Wut][0xE] = {
"maps/x.bsp",
"models/x.mdl"
};
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_concmd("stworz", "_Stworz");
}
public plugin_precache() {
for(new i ; i < Wut ; i++) precache_model(g_sWut[i]);
}
public _Stworz(id){
new Float:fOrigin[0x3];
entity_get_vector(id, EV_VEC_origin, fOrigin);
fOrigin[0x2]-=36.0;
new iEnt = create_entity("func_wall");
entity_set_origin(iEnt, fOrigin);
entity_set_int(iEnt, EV_INT_movetype, 0x7); //MOVETYPE_PUSH
entity_set_int(iEnt, EV_INT_solid, 0x4);
entity_set_model(iEnt, g_sWut[BSP]);
new iRendered = create_entity("info_target");
entity_set_origin(iRendered, fOrigin);
entity_set_model(iRendered, g_sWut[MDL]);
}
Kod ten stworzy byt(y) pod naszymi stopami.
Załączam przykładowy kod wraz z przykładowym modelem oraz plikiem .bsp.


Dodatki SourceMod




Moja zawartość
Mężczyzna




adminchat.amxx





