Offline |
 |
 |
Csatlakozott:2013.01.15. 19:04 Hozzászólások:407 Megköszönt másnak: 17 alkalommal Megköszönték neki: 176 alkalommal
|
Ha az életet állítom akkor paintball módban nem robban fel a doboz. D2-n a robbanó dobozok mind func_breakable entityk. A fenti pluginokkal az a gond, hogy az összes func_breakable entityt figyelembe veszi. A 2 plugin közül egyiket se használd. Tessék ez a plugin a func_breakable entityket átállítsa func_wall-ra, így nem fog felrobbanni ha meglövöd JetPack bazookával. Használata: Ránézel arra az entityre(célkereszted rajta legyen) amely felrobban ha bazookával meglövöd, és konzolba beírok, hogy e_edit, majd ha chatbe kírja, hogy "A nézett entity sikeresen szerkesztve lett." akkor többet már azt a dobozt, elemet nem fogod tudni szétlőni. Mindegyik robbanó dobozzal, elemmel csináld meg ugyanezt. Van még egy parancs, amelyet ha használsz akkor visszaállítsa az összes szerkesztett entityt (csak az adott pályáról), ez nem más mint e_reset. Csak pályaváltás után állnak vissza az entityk. #include <amxmodx> #include <amxmisc> #include <fakemeta> #include <engine> #define PLUGIN "Breakable ent editor" #define VERSION "1.0" #define AUTHOR "Demon" new ents[100][32], g_total; new g_save_file[200]; public plugin_precache() { get_configsdir(g_save_file, 199); add(g_save_file, 199, "/edited_ents", 0); if( !dir_exists(g_save_file) ) mkdir(g_save_file); new map[64]; get_mapname(map, 63); strtolower(map); format(g_save_file, 199, "%s/%s.txt", g_save_file, map); LoadEntities(); return PLUGIN_CONTINUE; } public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("e_edit", "CmdEdit", ADMIN_KICK, "-- breakable entity szerkesztes"); register_concmd("e_reset", "CmdReset", ADMIN_KICK, "-- osszes entity visszaallitas"); register_event("HLTV", "EventNewRound", "a", "1=0", "2=0"); register_logevent("EventNewRound", 2, "1=Round_Start"); register_logevent("EventNewRound", 2, "1=Round_End"); } public EventNewRound() { for(new i; i < g_total; i++) { new ent = find_ent_by_model(-1, "func_breakable", ents[i]); if(ent > 0) set_pev(ent, pev_classname, "func_wall"); } } public CmdEdit(plr, level, cid) { if(!cmd_access(plr, level, cid, 1)) return PLUGIN_HANDLED; new ent = GetAimAtEnt(plr); if(pev_valid(ent)) { static classname[64]; pev(ent, pev_classname, classname, 63); if(!equali(classname, "func_breakable")) { print_color(plr, "!gA nĂ©zett entity nem func_breakable entity."); return PLUGIN_HANDLED; } new model[32]; pev(ent, pev_model, model, 31); set_pev(ent, pev_classname, "func_wall"); copy(ents[g_total], 31, model); g_total++; SaveEntities(); print_color(plr, "!gA nĂ©zett entity sikeresen szerkesztve lett."); } return PLUGIN_HANDLED; } public CmdReset(plr, level, cid) { if(!cmd_access(plr, level, cid, 1)) return PLUGIN_HANDLED; g_total = 0; if(file_exists(g_save_file)) delete_file(g_save_file); console_print(plr, "Az osszes szerkesztett entity mapvaltas utan visszaall az eredeti adatokra."); return PLUGIN_HANDLED; } LoadEntities() { if(file_exists(g_save_file)) { g_total = 0; new f = fopen(g_save_file, "rt"); new data[36], model[32]; while(!feof(f)) { fgets(f, data, 35); parse(data, model, 31); copy(ents[g_total], 31, model); g_total++; } fclose(f); return 1; } return 0; } SaveEntities() { if(file_exists(g_save_file)) delete_file(g_save_file); new f = fopen(g_save_file, "wt"); new data[36]; for(new i = 0; i < g_total; i++) { formatex(data, 35, "^"%s^"^n", ents[i]); fputs(f, data); } fclose(f); return 1; } GetAimAtEnt(plr) { static Float:start[3], Float:view_ofs[3], Float:dest[3], i; pev(plr, pev_origin, start); pev(plr, pev_view_ofs, view_ofs); for( i = 0; i < 3; i++ ) start[i] += view_ofs[i]; pev(plr, pev_v_angle, dest); engfunc(EngFunc_MakeVectors, dest); global_get(glb_v_forward, dest); for( i = 0; i < 3; i++ ) { dest[i] *= 9999.0; dest[i] += start[i]; } engfunc(EngFunc_TraceLine, start, dest, DONT_IGNORE_MONSTERS, plr, 0); return get_tr2(0, TR_pHit); } stock print_color(const id, const input[], any:...) { new count = 1, players[32]; static msg[191]; vformat(msg, 190, input, 3); replace_all(msg, 190, "!g", "^4"); replace_all(msg, 190, "!y", "^1"); replace_all(msg, 190, "!t", "^3"); if (id) players[0] = id; else get_players(players, count, "ch"); { for (new i = 0; i < count; i++) { if (is_user_connected(players[i])) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]); write_byte(players[i]); write_string(msg); message_end(); } } } return PLUGIN_HANDLED; }
|
|