hlmod.hu
https://hlmod.hu/

Entitys Robbanó Tárgyak
https://hlmod.hu/viewtopic.php?f=9&t=22004
Oldal: 1 / 1

Szerző:  JohanCorn [2015.08.20. 21:01 ]
Hozzászólás témája:  Entitys Robbanó Tárgyak

Tiszteletem!

Vannak azok az objektumok amelyeken olyan enetity van ami ha c4 robbanásnál közel van felrobban. Ismerős, például a de_dust-ról.
Ezek a tárgyak egy másik modell érintkezésekor is felrobbannak. Teszem azt, ha meglövöm JetPack-kal és amikor a rocket.mdl hozzáér (Touch-ol) akkor az rögtön robban.
Erre szeretnék valamit kitalálni, mert nem jó hogy a robbanás emódon le tud sebezni vagy meg is tud ölni akár.
Valakinek valamilyen ötlete erre?

Köszönöm!

Szerző:  demon [2015.08.21. 02:32 ]
Hozzászólás témája:  Re: Entitys Robbanó Tárgyak

Van több módja a dolognak.
1. A robbanó dobozokat törlöd a pályáról:
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <fakemeta>
  3. #include <engine>
  4.  
  5. #define PLUGIN "ASD"
  6. #define VERSION "1.0"
  7. #define AUTHOR "Demon"
  8.  
  9. public plugin_init() {
  10. register_plugin(PLUGIN, VERSION, AUTHOR)
  11.  
  12. if(engfunc(EngFunc_FindEntityByString,-1 ,"classname", "func_breakable")) {
  13. new ent = FM_NULLENT;
  14. while((ent = find_ent_by_class(ent, "func_breakable") ) > 0)
  15. remove_entity(ent);
  16. }
  17. }

2. A robbanó dobozoknak az életét végtelenre állítod:
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <fakemeta>
  3. #include <engine>
  4.  
  5. #define PLUGIN "ASD"
  6. #define VERSION "1.0"
  7. #define AUTHOR "Demon"
  8.  
  9. public plugin_init() {
  10. register_plugin(PLUGIN, VERSION, AUTHOR)
  11.  
  12. register_logevent( "Round_start", 2, "1=Round_Start" );
  13. }
  14.  
  15. public Round_start() {
  16. if(engfunc(EngFunc_FindEntityByString,-1 ,"classname", "func_breakable")) {
  17. new ent = FM_NULLENT;
  18. while((ent = find_ent_by_class(ent, "func_breakable") ) > 0)
  19. set_pev(ent, pev_health, 0);
  20. }
  21. }

Szerző:  JohanCorn [2015.08.21. 18:49 ]
Hozzászólás témája:  Re: Entitys Robbanó Tárgyak

Az 1. nekem nem színpatikus, nem akarom őket törölni.
A második, pedig nem működött.

Szerintem az élet az mindegy, ugyanis szerintem a d2-ős dobozok nem is func_breakable entitysek.
És nem is a kártól robbannak fel, hanem a touch-tól. Ugyanis amikor a func_breakable cuccot lövöm akkor nem esik szét, csak ha az a másikat.

Szerző:  demon [2015.08.22. 00:10 ]
Hozzászólás témája:  Re: Entitys Robbanó Tárgyak

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.
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <fakemeta>
  4. #include <engine>
  5.  
  6. #define PLUGIN "Breakable ent editor"
  7. #define VERSION "1.0"
  8. #define AUTHOR "Demon"
  9.  
  10. new ents[100][32], g_total;
  11. new g_save_file[200];
  12.  
  13. public plugin_precache()
  14. {
  15. get_configsdir(g_save_file, 199);
  16. add(g_save_file, 199, "/edited_ents", 0);
  17.  
  18. if( !dir_exists(g_save_file) )
  19. mkdir(g_save_file);
  20.  
  21. new map[64];
  22. get_mapname(map, 63);
  23. strtolower(map);
  24.  
  25. format(g_save_file, 199, "%s/%s.txt", g_save_file, map);
  26.  
  27. LoadEntities();
  28.  
  29. return PLUGIN_CONTINUE;
  30. }
  31.  
  32. public plugin_init() {
  33. register_plugin(PLUGIN, VERSION, AUTHOR)
  34.  
  35. register_clcmd("e_edit", "CmdEdit", ADMIN_KICK, "-- breakable entity szerkesztes");
  36. register_concmd("e_reset", "CmdReset", ADMIN_KICK, "-- osszes entity visszaallitas");
  37.  
  38. register_event("HLTV", "EventNewRound", "a", "1=0", "2=0");
  39. register_logevent("EventNewRound", 2, "1=Round_Start");
  40. register_logevent("EventNewRound", 2, "1=Round_End");
  41. }
  42.  
  43. public EventNewRound()
  44. {
  45. for(new i; i < g_total; i++)
  46. {
  47. new ent = find_ent_by_model(-1, "func_breakable", ents[i]);
  48. if(ent > 0)
  49. set_pev(ent, pev_classname, "func_wall");
  50. }
  51. }
  52.  
  53. public CmdEdit(plr, level, cid)
  54. {
  55. if(!cmd_access(plr, level, cid, 1))
  56. return PLUGIN_HANDLED;
  57.  
  58. new ent = GetAimAtEnt(plr);
  59.  
  60. if(pev_valid(ent))
  61. {
  62. static classname[64];
  63. pev(ent, pev_classname, classname, 63);
  64.  
  65. if(!equali(classname, "func_breakable"))
  66. {
  67. print_color(plr, "!gA nézett entity nem func_breakable entity.");
  68. return PLUGIN_HANDLED;
  69. }
  70.  
  71. new model[32];
  72. pev(ent, pev_model, model, 31);
  73.  
  74. set_pev(ent, pev_classname, "func_wall");
  75.  
  76. copy(ents[g_total], 31, model);
  77. g_total++;
  78.  
  79. SaveEntities();
  80.  
  81. print_color(plr, "!gA nézett entity sikeresen szerkesztve lett.");
  82. }
  83.  
  84. return PLUGIN_HANDLED;
  85. }
  86.  
  87. public CmdReset(plr, level, cid)
  88. {
  89. if(!cmd_access(plr, level, cid, 1))
  90. return PLUGIN_HANDLED;
  91.  
  92. g_total = 0;
  93. if(file_exists(g_save_file))
  94. delete_file(g_save_file);
  95.  
  96. console_print(plr, "Az osszes szerkesztett entity mapvaltas utan visszaall az eredeti adatokra.");
  97.  
  98. return PLUGIN_HANDLED;
  99. }
  100.  
  101. LoadEntities()
  102. {
  103. if(file_exists(g_save_file))
  104. {
  105. g_total = 0;
  106. new f = fopen(g_save_file, "rt");
  107.  
  108. new data[36], model[32];
  109.  
  110. while(!feof(f))
  111. {
  112. fgets(f, data, 35);
  113.  
  114. parse(data, model, 31);
  115.  
  116. copy(ents[g_total], 31, model);
  117. g_total++;
  118. }
  119.  
  120. fclose(f);
  121.  
  122. return 1;
  123. }
  124.  
  125. return 0;
  126. }
  127.  
  128. SaveEntities()
  129. {
  130. if(file_exists(g_save_file))
  131. delete_file(g_save_file);
  132. new f = fopen(g_save_file, "wt");
  133.  
  134. new data[36];
  135.  
  136. for(new i = 0; i < g_total; i++)
  137. {
  138. formatex(data, 35, "^"%s^"^n", ents[i]);
  139.  
  140. fputs(f, data);
  141. }
  142.  
  143. fclose(f);
  144.  
  145. return 1;
  146. }
  147.  
  148. GetAimAtEnt(plr)
  149. {
  150. static Float:start[3], Float:view_ofs[3], Float:dest[3], i;
  151.  
  152. pev(plr, pev_origin, start);
  153. pev(plr, pev_view_ofs, view_ofs);
  154.  
  155. for( i = 0; i < 3; i++ )
  156. start[i] += view_ofs[i];
  157.  
  158. pev(plr, pev_v_angle, dest);
  159. engfunc(EngFunc_MakeVectors, dest);
  160. global_get(glb_v_forward, dest);
  161.  
  162. for( i = 0; i < 3; i++ )
  163. {
  164. dest[i] *= 9999.0;
  165. dest[i] += start[i];
  166. }
  167.  
  168. engfunc(EngFunc_TraceLine, start, dest, DONT_IGNORE_MONSTERS, plr, 0);
  169.  
  170. return get_tr2(0, TR_pHit);
  171. }
  172.  
  173. stock print_color(const id, const input[], any:...)
  174. {
  175. new count = 1, players[32];
  176. static msg[191];
  177. vformat(msg, 190, input, 3);
  178.  
  179. replace_all(msg, 190, "!g", "^4");
  180. replace_all(msg, 190, "!y", "^1");
  181. replace_all(msg, 190, "!t", "^3");
  182.  
  183. if (id) players[0] = id; else get_players(players, count, "ch");
  184. {
  185. for (new i = 0; i < count; i++)
  186. {
  187. if (is_user_connected(players[i]))
  188. {
  189. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
  190. write_byte(players[i]);
  191. write_string(msg);
  192. message_end();
  193. }
  194. }
  195. }
  196. return PLUGIN_HANDLED;
  197. }

Szerző:  JohanCorn [2015.09.19. 23:43 ]
Hozzászólás témája:  Re: Entitys Robbanó Tárgyak

Ez csodálatos lenne, csak egy probléma még akad vele, mégpedig hogy fa c4-től felrobban, ami nem baj ez így pont jó is lenne, de a követekző kör elején már egyáltalán nem jelennek meg a dobozok. :C

Oldal: 1 / 1 Minden időpont UTC+02:00 időzóna szerinti
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/