←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Dodawanie nowych elementów na mape

  • +
  • -
Kris Groove - zdjęcie Kris Groove 07.10.2012

Witam.

Piszę w sprawie kontynuacji wpisu:
http://amxx.pl/topic...mentow-na-mape/

i prosił bym o dokładniejsze objaśnienie i pełny kod (z #include) jeżeli można najlepiej z jakimś modelem albo coś bo chce sam to przerobić i zobaczyć jak wyjdzie :)

Pozdrawiam K'Groove
Odpowiedz

GT Team - zdjęcie GT Team 07.10.2012

Masz, opisalem wszystko wlasnymi slowami, jak cos nie bedzie dzialac albo bedziesz miec jakies problemy pisz

/* Plugin generated by AMXX-Studio */

#include
#include
#include //Obowiazkowe dla tworzenia entitow
#include //Wygodniejsze pobieranie Origin itp...

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"


public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

register_clcmd("say /test", "Test")
}
public plugin_precache()
{
precache_model("models/nazwamodelu.mdl")
}
public Test(id)
{
new Float:Origin[3]

pev(id, pev_origin, Origin)
// Pobiera twoje polozenie

new ent = create_entity("info_target")
//Tworzy obiekt "info_target" ( byt)
entity_set_model(ent, "models/nazwamodelu.mdl");
// Ustawia entowi model, model musi zosta zprecahowany

entity_set_float(ent, EV_FL_health, 10.0);
//Jezeli chcesz zeby model byl
//zniszczalny wpisujesz tutaj wartosc hp we float
//jezeli nie chcesz mozesz to usunac

entity_set_float(ent, EV_FL_takedamage, DAMAGE_YES);
//Czy byt ma przetwarzac obrazenia ( on moze zadawac, ktos go atakuje)
//Jezeli dales zycie musisz to zostawic

entity_set_size(ent, Float:{-16.0, -16.0, 0.0}, Float:{16.0, 16.0, 48.0});
//Ustawia wielkosc lecz dla mnie nic to nie robi tylko zmienia polozenie
//Najlepiej zostaw, mozesz tez dac na 0.0

entity_set_origin(ent, Origin);
//Ustawia polozenie

entity_set_int(ent, EV_INT_solid, SOLID_BBOX);
entity_set_int(ent, EV_INT_movetype, MOVETYPE_FLY);
//Tutaj mozna sie troche pobawic.
//Jezeli dales zycie entowi dajesz albo SOLID_BBOX
//albo SOLID_SLIDEBOX tzn ze byt koliduje z innymi rzeczami
//czyli np strzalem
//Movetype tutaj ustawiasz czy byt ma latac czyli nie dziala na niego
//grawitacja albo inne przydatne funkcje
///poczytaj o solid i o movetype
//http://www.amxmodx.org/funcwiki.php?go=module&id=3
//Mozesz rowniez dac set_pev(ent, pev_gravity, 0.5)
//Czyli grawitacje ze byt opada - zalezne od solidtype
entity_set_vector(ent, EV_VEC_angles, Float:{0.0, 0.0, 0.0});
//ustawia kont widzenia, mozesz to usunac

drop_to_floor(ent)
//Jezeli chcesz zeby upuscilo na ziemie to dajesz
//nie dziala to z niektorymi SOLID_... albo MOVETYPE_...
//musisz sie pobawic
}
Odpowiedz

  • +
  • -
Kris Groove - zdjęcie Kris Groove 08.10.2012

A dało by się zrobić tak że jak już ustawie ten model to zapisuje jego położenie np w configs/models.ini, a potem już sam się tam ustawia?
Albo coś w tym stylu :P

P.S.

#include - poznikały :P
Użytkownik Kris Groove edytował ten post 08.10.2012 06:21
Odpowiedz

GT Team - zdjęcie GT Team 08.10.2012

sorka jakoś zawsze mi znikają :

dodaj engine, fakemeta, amxmodx i amxmisc

propo zapisywania pozycji jasne ze się da
Odpowiedz

  • +
  • -
Kris Groove - zdjęcie Kris Groove 08.10.2012

Tak mi się wydaje że najlepiej to zrobić write_file i potem read_file :) ale nie jestem pewien
Odpowiedz

GT Team - zdjęcie GT Team 09.10.2012

"A dało by się zrobić tak że jak już ustawie ten model to zapisuje jego położenie np w configs/models.ini, a potem już sam się tam ustawia?"

tutaj np zapisanie polozenia maxymalnie 3 miejsca po przecinku czyli zapisze np :

-5.344 45.235 45.111

X, Y, Z (tak myślę :D)


new szDir[128], szOrigin[128]

formatex(szDir, 127, "addons/amxmodx/configs/models.ini")
formatex(szOrigin, 127, "%0.3f %0.3f %0.3f", Origin[0], Origin[1], Origin[2])

write_file(szDir, szOrigin, 1)


a wczytanie to parsujesz wartości



new szDir[128], szText[128], szData[3][33], len

formatex(szDir, 127, "addons/amxmodx/configs/models.ini")

read_file(szDir, 1, szText, 127, len)

parse(szText, szData[0], 32, szData[1], 32, szData[2], 32)

Origin[0] = str_to_float(szData[0])
Origin[1] = str_to_float(szData[1])
Origin[2] = str_to_float(szData[2])

// i ustawiasz origin
entity_set_float(ent, EV_FL_origin, Origin)



cała filozowia, niczego nie testowałem. Za błędy przepraszam :)
Odpowiedz