hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.04.30. 13:56



Jelenlévő felhasználók

Jelenleg 292 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 292 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: nincs regisztrált felhasználó az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 11 hozzászólás ]  Oldal 1 2 Következő
Szerző Üzenet
 Hozzászólás témája: Random hely létrehozás a mapon
HozzászólásElküldve: 2012.10.30. 13:36 
Offline
Őskövület
Avatar

Csatlakozott: 2012.03.22. 18:22
Hozzászólások: 2978
Megköszönt másnak: 115 alkalommal
Megköszönték neki: 368 alkalommal
Sziasztok.

Valaki megcsinálná nekem azt a plugint hogy egy mapon random helyen valami modellt lerakjon?

Ezt találtam:
[ablak]
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <engine>
  4.  
  5. #define REQUIRED_ADMIN_LEVEL ADMIN_BAN // ADMIN_LEVEL_C
  6.  
  7. #define PLUGINNAME "Map Spawns Editor"
  8. #define VERSION "1.0.16"
  9. #define AUTHOR "iG_os"
  10.  
  11. // CS default MDL and SPR
  12. #define T_MDL "models/player/leet/leet.mdl"
  13. #define CT_MDL "models/player/gign/gign.mdl"
  14. #define LINE_SPR "sprites/laserbeam.spr"
  15.  
  16. #define CHECKTIMER 0.8
  17. #define CHECKTASKID 666
  18. #define RESETENTITYTASKID 777
  19. #define SAFEp2p 85 // point to point safe distance
  20. #define SAFEp2w 40 // point to wall safe distance
  21.  
  22. #define EDIT_CLASSNAME "Map_Spawns_Editor"
  23.  
  24. #define SPAWN_PRESENT_OFFSET 10
  25. #define SPAWN_ABOVE_OFFSET 115
  26.  
  27. // store filename
  28. new g_SpawnFile[256], g_DieFile[256], g_EntFile[256]
  29.  
  30. new g_MainMenuID = -1 // Menu Handel ID
  31.  
  32. new bool:g_DeathCheck_end = false
  33. new bool:g_LoadSuccessed = false
  34. new bool:g_LoadInit = false
  35.  
  36. new bool:g_CheckDistance = true
  37.  
  38. new bool:g_AbovePlayer = false
  39. new g_OffSet = SPAWN_PRESENT_OFFSET
  40.  
  41. new g_Editing
  42. new g_SpawnT, g_EditT
  43. new g_SpawnCT,g_EditCT
  44. new Laser_Spr
  45. new g_BeamColors[4][3]={{255,0,0},{0,255,0},{200,200,0},{0,0,255}}
  46.  
  47.  
  48. public plugin_init()
  49. {
  50. register_plugin(PLUGINNAME, VERSION, AUTHOR)
  51. register_dictionary("map_spawns_editor.txt")
  52.  
  53. g_LoadInit = true // disabled pfn_keyvalue using
  54.  
  55. Spawns_Count()
  56. new string[16]
  57. format(string,15,"T(%d) CT(%d)",g_SpawnT,g_SpawnCT)
  58. register_cvar("map_spawns",string,FCVAR_SERVER) // spawns info for HLSW display
  59.  
  60. register_event("TextMsg", "event_restartgame", "a", "2&#Game_C","2&#Game_w")
  61. register_event("DeathMsg", "event_death", "a")
  62. register_event("HLTV", "event_newround", "a", "1=0", "2=0")
  63.  
  64. register_clcmd("amx_spawn_editor", "editor_onoff", REQUIRED_ADMIN_LEVEL, "- 1/0 switch editor function on/off")
  65. register_clcmd("amx_editor_menu", "editor_menu", REQUIRED_ADMIN_LEVEL, "- open editor menu")
  66.  
  67. }
  68.  
  69.  
  70. public editor_onoff(id,level,cid)
  71. {
  72. if (!cmd_access(id,level,cid,1)) return PLUGIN_HANDLED
  73.  
  74. if (g_Editing && g_Editing!=id){
  75. client_print(id,print_chat,"* %L",id,"MSG_ALREADY_INUSE")
  76. return PLUGIN_HANDLED
  77. }
  78.  
  79. new arg[2]
  80. read_argv(1,arg,2)
  81. if (equal(arg,"1",1) && !g_Editing){
  82. g_Editing = id
  83. Clear_AllEdit(0)
  84. Load_SpawnFlie(0)
  85. Spawns_To_Edit()
  86. client_print(0,print_chat,">> %L - %L",id,"MENU_TITLE",id,"ON")
  87. }else if (equal(arg,"0",1)){
  88. g_Editing = 0
  89. Clear_AllEdit(0)
  90. if (task_exists(id+CHECKTASKID)) remove_task(id+CHECKTASKID)
  91. client_print(0,print_chat,">> %L - %L",id,"MENU_TITLE",id,"OFF")
  92. }
  93. return PLUGIN_HANDLED
  94. }
  95.  
  96.  
  97. public editor_menu(id,level,cid)
  98. {
  99. if (!cmd_access(id,level,cid,1))
  100. return PLUGIN_HANDLED
  101.  
  102. if (!g_Editing){
  103. client_print(id,print_chat,"* %L",id,"MSG_FUNCTION_DISABLED")
  104. return PLUGIN_HANDLED
  105. }
  106.  
  107. if (g_Editing!=id){
  108. client_print(id,print_chat,"* %L",id,"MSG_ALREADY_INUSE")
  109. return PLUGIN_HANDLED
  110. }
  111.  
  112. new tempString[101]
  113. format(tempString,100,"%L",id,"MENU_TITLE")
  114. g_MainMenuID = menu_create(tempString, "m_MainHandler")
  115. new callbackMenu = menu_makecallback("c_Main")
  116.  
  117. // page 1
  118. menu_additem(g_MainMenuID, "[Spawns Info]","1", 1, callbackMenu)
  119. menu_addblank(g_MainMenuID, 0)
  120.  
  121. menu_additem(g_MainMenuID, "[Add spawn locate: present/above player]","2", 0, callbackMenu)
  122. format(tempString,100,"%L",id,"MENU_ADD_SPAWN","T")
  123. menu_additem(g_MainMenuID, tempString,"3", 0, callbackMenu)
  124. format(tempString,100,"%L",id,"MENU_ADD_SPAWN","CT")
  125. menu_additem(g_MainMenuID, tempString,"4", 0, callbackMenu)
  126. menu_addblank(g_MainMenuID, 0)
  127.  
  128. format(tempString,100,"\y%L",id,"MENU_TURN_LEFT")
  129. menu_additem(g_MainMenuID, tempString,"5", 0, callbackMenu)
  130. format(tempString,100,"\y%L",id,"MENU_TURN_RIGHT")
  131. menu_additem(g_MainMenuID, tempString,"6", 0, callbackMenu)
  132. menu_addblank(g_MainMenuID, 0)
  133.  
  134. format(tempString,100,"%L",id,"MENU_SAVE_ALL_SPAWNS")
  135. menu_additem(g_MainMenuID, tempString,"7", 0, callbackMenu)
  136. menu_addblank(g_MainMenuID, 0)
  137. // page 1 end
  138.  
  139. // page 2
  140. menu_additem(g_MainMenuID, "[Spawns Info]","11", 1, callbackMenu)
  141. menu_addblank(g_MainMenuID, 0)
  142.  
  143. menu_additem(g_MainMenuID, "[Safe range check on/off]","12", 0, callbackMenu)
  144. format(tempString,100,"%L",id,"MENU_CLEAR_SPAWN")
  145. menu_additem(g_MainMenuID, tempString,"13", 0, callbackMenu)
  146. menu_addblank(g_MainMenuID, 0)
  147.  
  148. format(tempString,100,"%L",id,"MENU_CLEAR_ALL_T_SPAWNS")
  149. menu_additem(g_MainMenuID, tempString,"14", 0, callbackMenu)
  150. format(tempString,100,"%L",id,"MENU_CLEAR_ALL_CT_SPAWNS")
  151. menu_additem(g_MainMenuID, tempString,"15", 0, callbackMenu)
  152.  
  153. format(tempString,100,"%L",id,"MENU_DEL_SPAWNS_FILE")
  154. menu_additem(g_MainMenuID, tempString,"16", 0, callbackMenu)
  155.  
  156. format(tempString,100,"%L",id,"MENU_EXPORT_FOR_RIPENT")
  157. menu_additem(g_MainMenuID, tempString,"17", 0, callbackMenu)
  158. menu_addblank(g_MainMenuID, 0)
  159. // page 2 end
  160.  
  161. format(tempString,100,"%L",id,"MENU_EXIT")
  162. menu_setprop(g_MainMenuID, MPROP_EXITNAME, tempString)
  163. format(tempString,100,"%L",id,"MENU_NEXT")
  164. menu_setprop(g_MainMenuID, MPROP_NEXTNAME, tempString)
  165. format(tempString,100,"%L",id,"MENU_BACK")
  166. menu_setprop(g_MainMenuID, MPROP_BACKNAME, tempString)
  167.  
  168. menu_setprop(g_MainMenuID, MPROP_EXIT, MEXIT_ALL)
  169. menu_display (id,g_MainMenuID,0)
  170.  
  171. client_cmd(id,"spk buttons/button9")
  172. set_task(CHECKTIMER,"check_Task",id+CHECKTASKID,_,_,"b")
  173.  
  174. return PLUGIN_HANDLED
  175. }
  176.  
  177. public c_Main(id, menu, item)
  178. {
  179. if (item < 0) return PLUGIN_CONTINUE
  180.  
  181. new cmd[6], fItem[256], iName[64]
  182. new access, callback
  183. menu_item_getinfo(menu, item, access, cmd, 5, iName, 63, callback)
  184. new num = str_to_num(cmd)
  185.  
  186. if (num==1 || num==11){
  187. if (g_EditT!=g_SpawnT || g_EditCT!=g_SpawnCT)
  188. format(fItem,255,"%L ( T=%d + CT=%d ) ^n0.\y %L \r( T=%d + CT=%d ) ^n>> %L", id, "MENU_ORIGIN_SPAWNS",g_SpawnT,g_SpawnCT, id,"MENU_EDIT_SPAWNS", g_EditT,g_EditCT, id,"MENU_NOTICE_SAVE")
  189. else format(fItem,255,"%L ( T=%d + CT=%d ) ^n0.\y %L ( T=%d + CT=%d )", id, "MENU_ORIGIN_SPAWNS",g_SpawnT,g_SpawnCT, id,"MENU_EDIT_SPAWNS", g_EditT,g_EditCT)
  190. menu_item_setname(menu, item, fItem )
  191. return ITEM_DISABLED
  192. }
  193. switch (num){
  194. case 2:{
  195. if (g_AbovePlayer)
  196. format(fItem,255,"\y%L ->\r %L",id,"MENU_ADD_LOCATION",id,"MENU_LOCATION_ABOVE")
  197. else format(fItem,255,"\y%L ->\r %L",id,"MENU_ADD_LOCATION",id,"MENU_LOCATION_CURRENT")
  198. menu_item_setname(menu, item, fItem )
  199. }
  200. case 12:{
  201. if (g_CheckDistance)
  202. format(fItem,255,"\y%L ->\r %L",id,"MENU_SAFE_CHECK",id,"ON")
  203. else format(fItem,255,"\y%L ->\r %L",id,"MENU_SAFE_CHECK",id,"OFF")
  204. menu_item_setname(menu, item, fItem )
  205. }
  206. }
  207. return ITEM_ENABLED
  208. }
  209.  
  210. public m_MainHandler(id, menu, item)
  211. {
  212. if (item==MENU_EXIT || !g_Editing){
  213. if (task_exists(id+CHECKTASKID)) remove_task(id+CHECKTASKID)
  214. menu_destroy(g_MainMenuID)
  215. return PLUGIN_HANDLED
  216. }
  217.  
  218. new cmd[6], iName[64]
  219. new access, callback
  220. menu_item_getinfo(menu, item, access, cmd,5, iName, 63, callback)
  221. new iChoice = str_to_num(cmd)
  222.  
  223. switch(iChoice)
  224. {
  225. case 2:{ // Location Set
  226. if (g_AbovePlayer){
  227. g_OffSet = SPAWN_PRESENT_OFFSET
  228. g_AbovePlayer = false
  229. }else{
  230. g_OffSet = SPAWN_ABOVE_OFFSET
  231. g_AbovePlayer = true
  232. }
  233. client_cmd(id,"spk buttons/button3")
  234. }
  235. case 3:{ // Add T Spawn
  236. if (g_CheckDistance && !SafeRangeCheck(id,g_OffSet)){
  237. client_cmd(id,"spk buttons/button2")
  238. client_print(0,print_chat,">> %L",id,"MSG_CHECK_FAULT")
  239. }
  240. else if (CreateEditEntity(1,id,g_OffSet)==1){
  241. g_EditT++
  242. client_cmd(id,"spk buttons/button9")
  243. client_print(0,print_chat,">> %L",id,"MENU_ADD_SPAWN","T")
  244. }
  245. }
  246. case 4:{ // Add CT Spawn
  247. if (g_CheckDistance && !SafeRangeCheck(id,g_OffSet)){
  248. client_cmd(id,"spk buttons/button2")
  249. client_print(0,print_chat,">> %L",id,"MSG_CHECK_FAULT")
  250. }
  251. else if (CreateEditEntity(2,id,g_OffSet)==2){
  252. g_EditCT++
  253. client_cmd(id,"spk buttons/button9")
  254. client_print(0,print_chat,">> %L",id,"MENU_ADD_SPAWN","CT")
  255. }
  256. }
  257. case 5:{ // Spawn Turn Left
  258. new entity = Get_Edit_Point_By_Aim(id)
  259. if (entity && is_valid_ent(entity)){
  260. Entity_Turn_angle(entity,10)
  261. client_cmd(id,"spk buttons/blip1")
  262. }else{
  263. client_cmd(id,"spk buttons/button2")
  264. client_print(0,print_chat,">> %L",id,"ERROR_POINT_NOTFOUND")
  265. }
  266. }
  267. case 6:{ // Spawn Turn Right
  268. new entity = Get_Edit_Point_By_Aim(id)
  269. if (entity && is_valid_ent(entity)){
  270. Entity_Turn_angle(entity,-10)
  271. client_cmd(id,"spk buttons/blip1")
  272. }else{
  273. client_cmd(id,"spk buttons/button2")
  274. client_print(0,print_chat,">> %L",id,"ERROR_POINT_NOTFOUND")
  275. }
  276. }
  277. case 7:{ // Save All Spawn To File
  278. if (Save_SpawnsFile()){
  279. Load_SpawnFlie(0)
  280. client_cmd(id,"spk buttons/blip2")
  281. client_print(0,print_chat,">> %L (T=%d,CT=%d)",id,"MSG_SAVE_SPAWNSFLIE",g_EditT,g_EditCT)
  282. }else
  283. client_print(0,print_chat,">> %L",id,"ERROR_SAVE_SPAWNSFLIE")
  284. }
  285. case 12:{ // Safe Range Check
  286. g_CheckDistance = g_CheckDistance ? false:true
  287. client_cmd(id,"spk buttons/button3")
  288. }
  289. case 13:{ // Clear a Spawn
  290. new entity = Get_Edit_Point_By_Aim(id)
  291. if (entity && is_valid_ent(entity)){
  292. new team = entity_get_int(entity,EV_INT_iuser2)
  293. remove_entity(entity)
  294. client_cmd(id,"spk buttons/button3")
  295. if (team==1){
  296. g_EditT--
  297. client_print(0,print_chat,">> %L",id,"MSG_CLEAR_SPAWN","T")
  298. }else{
  299. g_EditCT--
  300. client_print(0,print_chat,">> %L",id,"MSG_CLEAR_SPAWN","CT")
  301. }
  302. }else{
  303. client_cmd(id,"spk buttons/button2")
  304. client_print(0,print_chat,">> %L",id,"ERROR_POINT_NOTFOUND")
  305. }
  306. }
  307. case 14:{ // Clear All T Spawn
  308. Clear_AllEdit(1)
  309. client_cmd(id,"spk buttons/blip2")
  310. client_print(0,print_chat,">> %L",id,"MENU_CLEAR_ALL_T_SPAWNS")
  311. }
  312. case 15:{ // Clear All CT Spawn
  313. Clear_AllEdit(2)
  314. client_cmd(id,"spk buttons/blip2")
  315. client_print(0,print_chat,">> %L",id,"MENU_CLEAR_ALL_CT_SPAWNS")
  316. }
  317. case 16:{ // Del Spawns Flie
  318. if (file_exists(g_SpawnFile)){
  319. delete_file(g_SpawnFile)
  320. client_cmd(id,"spk buttons/blip2")
  321. client_print(0,print_chat,">> %L",id,"MSG_DEL_SPAWNSFILE")
  322. }
  323. }
  324. case 17:{ // Expotr Spawn To ENT Format
  325. if (Export_RipentFormatFile()){
  326. client_cmd(id,"spk buttons/blip2")
  327. client_print(0,print_chat,">> %L [%s] (T=%d,CT=%d)",id,"MSG_EXOPRT_SPAWNSFLIE",g_EntFile,g_EditT,g_EditCT)
  328. }
  329. }
  330. }
  331.  
  332. if (iChoice>=11 && iChoice<=17) // go back to second page is using
  333. menu_display (id, g_MainMenuID, 1)
  334. else menu_display (id, g_MainMenuID, 0)
  335. return PLUGIN_CONTINUE
  336. }
  337.  
  338.  
  339. public plugin_precache()
  340. {
  341. new configdir[128]
  342. get_configsdir(configdir, 127 )
  343. new spawndir[256]
  344. format(spawndir,255,"%s/spawns",configdir)
  345. if (!dir_exists(spawndir)){
  346. if (mkdir(spawndir)==0){ // Create a dir,if it's not exist
  347. log_amx("Create [%s] dir successfully finished.",spawndir)
  348. }else{
  349. log_error(AMX_ERR_NOTFOUND,"Couldn't create [%s] dir,plugin stoped.",spawndir)
  350. pause("ad")
  351. return PLUGIN_CONTINUE
  352. }
  353. }
  354.  
  355. precache_model(T_MDL)
  356. precache_model(CT_MDL)
  357. Laser_Spr = precache_model(LINE_SPR)
  358.  
  359. new MapName[32]
  360. get_mapname(MapName, 31)
  361. //store spawns point data in this file
  362. format(g_SpawnFile, 255, "%s/%s_spawns.cfg",spawndir, MapName)
  363. //when restart game some bad spawn point will make user die,store data in this file,it's useful.
  364. format(g_DieFile, 255, "%s/%s_spawns_die.cfg",spawndir, MapName)
  365. //export spawns data to this file for ripent.exe format,it's useful for import to bsp for ripent.exe
  366. format(g_EntFile, 255, "%s/%s_ent.txt",spawndir, MapName)
  367.  
  368. if (Load_SpawnFlie(1)) //load spawn file and create player spawn points
  369. g_LoadSuccessed = true
  370. else
  371. g_LoadSuccessed = false
  372.  
  373. return PLUGIN_CONTINUE
  374. }
  375.  
  376. //load spawns from file, Return 0 when didn't load anything.
  377. stock Load_SpawnFlie(type) //createEntity = 1 create an entity when load a point
  378. {
  379. if (file_exists(g_SpawnFile))
  380. {
  381. new ent_T, ent_CT
  382. new Data[128], len, line = 0
  383. new team[8], p_origin[3][8], p_angles[3][8]
  384. new Float:origin[3], Float:angles[3]
  385.  
  386. while((line = read_file(g_SpawnFile , line , Data , 127 , len) ) != 0 )
  387. {
  388. if (strlen(Data)<2) continue
  389.  
  390. parse(Data, team,7, p_origin[0],7, p_origin[1],7, p_origin[2],7, p_angles[0],7, p_angles[1],7, p_angles[2],7)
  391.  
  392. origin[0] = str_to_float(p_origin[0]); origin[1] = str_to_float(p_origin[1]); origin[2] = str_to_float(p_origin[2]);
  393. angles[0] = str_to_float(p_angles[0]); angles[1] = str_to_float(p_angles[1]); angles[2] = str_to_float(p_angles[2]);
  394.  
  395. if (equali(team,"T")){
  396. if (type==1) ent_T = create_entity("info_player_deathmatch")
  397. else ent_T = find_ent_by_class(ent_T, "info_player_deathmatch")
  398. if (ent_T>0){
  399. entity_set_int(ent_T,EV_INT_iuser1,1) // mark that create by map spawns editor
  400. entity_set_origin(ent_T,origin)
  401. entity_set_vector(ent_T, EV_VEC_angles, angles)
  402. }
  403. }
  404. else if (equali(team,"CT")){
  405. if (type==1) ent_CT = create_entity("info_player_start")
  406. else ent_CT = find_ent_by_class(ent_CT, "info_player_start")
  407. if (ent_CT>0){
  408. entity_set_int(ent_CT,EV_INT_iuser1,1) // mark that create by map spawns editor
  409. entity_set_origin(ent_CT,origin)
  410. entity_set_vector(ent_CT, EV_VEC_angles, angles)
  411. }
  412. }
  413. }
  414. return 1
  415. }
  416. return 0
  417. }
  418.  
  419. // pfn_keyvalue..Execure after plugin_precache and before plugin_init
  420. public pfn_keyvalue(entid)
  421. { // when load custom spawns file successed,we are del all spawns by map originate create
  422. if (g_LoadSuccessed && !g_LoadInit){
  423. new classname[32], key[32], value[32]
  424. copy_keyvalue(classname, 31, key, 31, value, 31)
  425.  
  426. if (equal(classname, "info_player_deathmatch") || equal(classname, "info_player_start")){
  427. if (is_valid_ent(entid) && entity_get_int(entid,EV_INT_iuser1)!=1) //filter out custom spawns
  428. remove_entity(entid)
  429. }
  430. }
  431. return PLUGIN_CONTINUE
  432. }
  433.  
  434.  
  435. public event_restartgame()
  436. {
  437. if (g_Editing && file_exists(g_DieFile))
  438. delete_file(g_DieFile)
  439.  
  440. g_DeathCheck_end = false
  441.  
  442. if (g_Editing){
  443. Clear_AllEdit(0)
  444. Load_SpawnFlie(0)
  445. Spawns_To_Edit()
  446. }
  447. return PLUGIN_CONTINUE
  448. }
  449.  
  450. // Remove & save bad spawn point where force user die.
  451. public event_death()
  452. {
  453. if (!g_DeathCheck_end){
  454. new string[12]
  455. read_data(4,string,11)
  456. if (equal(string,"worldspawn")){
  457. new id = read_data(2)
  458. if (g_Editing){
  459. new entList[1],team
  460. find_sphere_class(id,EDIT_CLASSNAME, 30.0, entList, 1)
  461. if (entList[0]){
  462. team = entity_get_int(entList[0],EV_INT_iuser2) // team mark
  463. if (team==1){
  464. client_print(0,print_chat,">> %L",id,"MSG_AUTO_REMOVE_SPAWN","T")
  465. g_EditT--
  466. }else{
  467. client_print(0,print_chat,">> %L",id,"MSG_AUTO_REMOVE_SPAWN","CT")
  468. g_EditCT--
  469. }
  470. remove_entity(entList[0])
  471. return PLUGIN_CONTINUE
  472. }
  473. }else{
  474. new team = get_user_team(id)
  475. if (team==1) Point_WriteToFlie(g_DieFile,1,id,1)
  476. else if (team==2) Point_WriteToFlie(g_DieFile,2,id,1)
  477. }
  478. }
  479. }
  480. return PLUGIN_CONTINUE
  481. }
  482.  
  483. public event_newround()
  484. set_task(3.0,"deathCheck_end")
  485.  
  486. public deathCheck_end()
  487. g_DeathCheck_end = true
  488.  
  489.  
  490. // create a edit point
  491. stock CreateEditEntity(team,iEnt,offset)
  492. {
  493. new Float:fOrigin[3],Float:fAngles[3]
  494. entity_get_vector(iEnt, EV_VEC_origin, fOrigin)
  495. entity_get_vector(iEnt, EV_VEC_angles, fAngles)
  496. fOrigin[2] += float(offset) //offset Z
  497.  
  498. new entity = create_entity("info_target")
  499. if (entity){
  500. entity_set_string(entity, EV_SZ_classname, EDIT_CLASSNAME)
  501. entity_set_model(entity,(team==1) ? T_MDL:CT_MDL)
  502. entity_set_origin(entity, fOrigin)
  503. entity_set_vector(entity, EV_VEC_angles, fAngles)
  504. entity_set_int(entity, EV_INT_sequence, 4)
  505. entity_set_int(entity,EV_INT_iuser2,team) // team mark
  506. return team
  507. }
  508. return 0
  509. }
  510.  
  511. // clear up all edit points
  512. stock Clear_AllEdit(team){
  513. new entity
  514. switch (team){
  515. case 0:{
  516. while ((entity = find_ent_by_class(entity, EDIT_CLASSNAME)))
  517. remove_entity(entity)
  518. g_EditT = 0
  519. g_EditCT = 0
  520. }
  521. case 1:{
  522. while ((entity = find_ent_by_class(entity, EDIT_CLASSNAME)))
  523. if (entity_get_int(entity,EV_INT_iuser2)==1)
  524. remove_entity(entity)
  525. g_EditT = 0
  526. }
  527. case 2:{
  528. while ((entity = find_ent_by_class(entity, EDIT_CLASSNAME)))
  529. if (entity_get_int(entity,EV_INT_iuser2)==2)
  530. remove_entity(entity)
  531. g_EditCT = 0
  532. }
  533. }
  534. }
  535.  
  536. // convert origin spawns to edit points
  537. stock Spawns_To_Edit()
  538. {
  539. new entity
  540. g_EditT = 0
  541. while ((entity = find_ent_by_class(entity, "info_player_deathmatch"))){
  542. CreateEditEntity(1,entity,0)
  543. g_EditT++
  544. }
  545. entity = 0
  546. g_EditCT = 0
  547. while ((entity = find_ent_by_class(entity, "info_player_start"))){
  548. CreateEditEntity(2,entity,0)
  549. g_EditCT++
  550. }
  551. }
  552.  
  553. stock Spawns_Count()
  554. {
  555. new entity
  556. g_SpawnT = 0
  557. while ((entity = find_ent_by_class(entity, "info_player_deathmatch")))
  558. g_SpawnT++
  559.  
  560. entity = 0
  561. g_SpawnCT = 0
  562. while ((entity = find_ent_by_class(entity, "info_player_start")))
  563. g_SpawnCT++
  564. }
  565.  
  566. public check_Task(taskid){
  567. SafeRangeCheck(taskid-CHECKTASKID,SPAWN_PRESENT_OFFSET)
  568. Get_Edit_Point_By_Aim(taskid-CHECKTASKID)
  569. }
  570.  
  571. // reset entity sequence
  572. public reset_entity_stats(param){
  573. new entity = param - RESETENTITYTASKID
  574. if (is_valid_ent(entity)){
  575. entity_set_float(entity, EV_FL_animtime, 0.0)
  576. entity_set_float(entity, EV_FL_framerate, 0.0)
  577. entity_set_int(entity, EV_INT_sequence, 4)
  578. }
  579. }
  580.  
  581. // set entity vangle[1]+turn
  582. stock Entity_Turn_angle(entity,turn){
  583. if (is_valid_ent(entity)){
  584. new Float:fAngles[3]
  585. entity_get_vector(entity, EV_VEC_angles, fAngles)
  586. fAngles[1] += turn
  587. if (fAngles[1]>=360) fAngles[1] -= 360
  588. if (fAngles[1]<0) fAngles[1] += 360
  589. entity_set_vector(entity, EV_VEC_angles, fAngles)
  590. }
  591. }
  592.  
  593. // check edit point or wall distance to id
  594. stock SafeRangeCheck(id,offset)
  595. {
  596. new safepostion = 1
  597. new Float:fOrigin[3],Float:fAngles[3],Float:inFrontPoint[3],Float:HitPoint[3]
  598. entity_get_vector(id, EV_VEC_origin, fOrigin)
  599. fOrigin[2] += offset // hight offset,same as Edit Point offset
  600. entity_get_vector(id, EV_VEC_angles, fAngles)
  601.  
  602. for (new i=0;i<360;i+=10)
  603. {
  604. fAngles[1] = float(i)
  605. // get the id infront point for trace_line
  606. Vector_By_Angle(fOrigin,fAngles, SAFEp2w * 2.0, 1, inFrontPoint)
  607.  
  608. // check id nearby wall
  609. trace_line(-1,fOrigin,inFrontPoint,HitPoint)
  610. new distance = floatround(vector_distance(fOrigin, HitPoint))
  611.  
  612. if (distance<SAFEp2w){ // unsafe distance to wall
  613. Make_TE_BEAMPOINTS(id,0,fOrigin,HitPoint,2,255)
  614. safepostion = 0
  615. }
  616. else if (distance < SAFEp2w * 1.5)
  617. Make_TE_BEAMPOINTS(id,2,fOrigin,HitPoint,2,255)
  618. }
  619.  
  620. // check id nearby Edit Points
  621. new entList[10],Float:vDistance
  622. new Float:entity_origin[3]
  623. find_sphere_class(0,EDIT_CLASSNAME, SAFEp2p * 1.5, entList, 9, fOrigin)
  624. for(new i=0;i<10;i++){
  625. if (entList[i]){
  626. entity_get_vector(entList[i], EV_VEC_origin, entity_origin)
  627. vDistance = vector_distance(fOrigin,entity_origin)
  628. if (vDistance < SAFEp2p){ // unsafe location to Edit Points
  629. Make_TE_BEAMPOINTS(id,0,fOrigin,entity_origin,5,255)
  630. entity_set_int(entList[i], EV_INT_sequence, 64)
  631. safepostion = 0
  632. if (task_exists(entList[i]+RESETENTITYTASKID))
  633. remove_task(entList[i]+RESETENTITYTASKID)
  634. set_task(CHECKTIMER+0.1,"reset_entity_stats",entList[i]+RESETENTITYTASKID)
  635. } else Make_TE_BEAMPOINTS(id,1,fOrigin,entity_origin,5,255)
  636. }
  637. }
  638. return safepostion
  639. }
  640.  
  641.  
  642. stock Get_Edit_Point_By_Aim(id)
  643. {
  644. new entList[1],team
  645. new Float:fOrigin[3],Float:vAngles[3],Float:vecReturn[3]
  646. entity_get_vector(id, EV_VEC_origin, fOrigin)
  647. fOrigin[2] += 10 // offset Z of id
  648. entity_get_vector(id, EV_VEC_v_angle, vAngles)
  649.  
  650. for(new Float:i=0.0;i<=1000.0;i+=20.0)
  651. {
  652. Vector_By_Angle(fOrigin,vAngles,i,1,vecReturn)
  653. //Make_TE_BEAMPOINTS(id,3,fOrigin,vecReturn,5,255)
  654. //client_print(0,print_chat,"fOrigin={%d,%d,%d},vecReturn={%d,%d,%d}",floatround(fOrigin[0]),floatround(fOrigin[1]),floatround(fOrigin[2]),floatround(vecReturn[0]),floatround(vecReturn[1]),floatround(vecReturn[2]))
  655.  
  656. find_sphere_class(0,EDIT_CLASSNAME, 20.0, entList, 1, vecReturn)
  657. if (entList[0]){
  658. // let entity have anim.
  659. entity_set_float(entList[0], EV_FL_animtime, 1.0)
  660. entity_set_float(entList[0], EV_FL_framerate, 1.0)
  661. team = entity_get_int(entList[0],EV_INT_iuser2)
  662. client_print(id,print_center,"%L #%d",id,"MSG_AIM_SPAWN",(team==1) ? "T":"CT",entList[0])
  663. if (task_exists(entList[0]+RESETENTITYTASKID))
  664. remove_task(entList[0]+RESETENTITYTASKID)
  665. set_task(CHECKTIMER+0.1,"reset_entity_stats",entList[0]+RESETENTITYTASKID)
  666. break
  667. }
  668. }
  669. return entList[0] // return entity if be found
  670. }
  671.  
  672.  
  673. /* FRU define in vector.inc
  674. #define ANGLEVECTOR_FORWARD 1
  675. #define ANGLEVECTOR_RIGHT 2
  676. #define ANGLEVECTOR_UP 3
  677. */
  678. stock Vector_By_Angle(Float:fOrigin[3],Float:vAngles[3], Float:multiplier, FRU, Float:vecReturn[3])
  679. {
  680. angle_vector(vAngles, FRU, vecReturn)
  681. vecReturn[0] = vecReturn[0] * multiplier + fOrigin[0]
  682. vecReturn[1] = vecReturn[1] * multiplier + fOrigin[1]
  683. vecReturn[2] = vecReturn[2] * multiplier + fOrigin[2]
  684. }
  685.  
  686.  
  687. // draw laserBeam
  688. stock Make_TE_BEAMPOINTS(id,color,Float:Vec1[3],Float:Vec2[3],width,brightness){
  689. message_begin(MSG_ONE_UNRELIABLE ,SVC_TEMPENTITY,{0,0,0},id)
  690. write_byte(TE_BEAMPOINTS) // TE_BEAMPOINTS = 0
  691. write_coord(floatround(Vec1[0])) // start position
  692. write_coord(floatround(Vec1[1]))
  693. write_coord(floatround(Vec1[2]))
  694. write_coord(floatround(Vec2[0])) // end position
  695. write_coord(floatround(Vec2[1]))
  696. write_coord(floatround(Vec2[2]))
  697. write_short(Laser_Spr) // sprite index
  698. write_byte(1) // starting frame
  699. write_byte(0) // frame rate in 0.1's
  700. write_byte(4) // life in 0.1's
  701. write_byte(width) // line width in 0.1's
  702. write_byte(0) // noise amplitude in 0.01's
  703. write_byte(g_BeamColors[color][0])
  704. write_byte(g_BeamColors[color][1])
  705. write_byte(g_BeamColors[color][2])
  706. write_byte(brightness) // brightness)
  707. write_byte(0) // scroll speed in 0.1's
  708. message_end()
  709. }
  710.  
  711.  
  712. stock Save_SpawnsFile()
  713. {
  714. if (file_exists(g_SpawnFile))
  715. delete_file(g_SpawnFile)
  716.  
  717. new mapname[32],line[128]
  718. get_mapname(mapname,31)
  719. format(line,127,"/* %s T=%d,CT=%d */ Map Spawns Editor Format File",mapname,g_EditT,g_EditCT)
  720. write_file(g_SpawnFile, line, -1)
  721.  
  722. new entity,team
  723. while ((entity = find_ent_by_class(entity, EDIT_CLASSNAME))){
  724. team = entity_get_int(entity,EV_INT_iuser2)
  725. Point_WriteToFlie(g_SpawnFile,team,entity,1)
  726. }
  727.  
  728. return 1
  729. }
  730.  
  731. stock Export_RipentFormatFile()
  732. {
  733. if (file_exists(g_EntFile))
  734. delete_file(g_EntFile)
  735.  
  736. new entity,team
  737. while ((entity = find_ent_by_class(entity, EDIT_CLASSNAME))){
  738. team = entity_get_int(entity,EV_INT_iuser2)
  739. Point_WriteToFlie(g_EntFile,team,entity,2)
  740. }
  741. return 1
  742. }
  743.  
  744. // store one entity data to file
  745. stock Point_WriteToFlie(Flie[],team,entity,saveformat)
  746. {
  747. new line[128],sTeam[32]
  748. new nOrigin[3],nAngles[3]
  749. new Float:fOrigin[3],Float:fAngles[3]
  750.  
  751. entity_get_vector(entity, EV_VEC_origin, fOrigin)
  752. entity_get_vector(entity, EV_VEC_angles, fAngles)
  753. FVecIVec(fOrigin,nOrigin)
  754. FVecIVec(fAngles,nAngles)
  755. if (nAngles[1]>=360) nAngles[1] -= 360
  756. if (nAngles[1]<0) nAngles[1] += 360
  757.  
  758. if (saveformat==1){ // write for plugin using format
  759. if (team==1) sTeam = "T"
  760. else sTeam = "CT"
  761. format(line, 127, "%s %d %d %d %d %d %d", sTeam, nOrigin[0], nOrigin[1], nOrigin[2], 0, nAngles[1], 0)
  762. write_file(Flie, line, -1)
  763. }
  764. else if (saveformat==2){ // write for ripent.exe format
  765. if (team==1) sTeam = "info_player_deathmatch"
  766. else sTeam = "info_player_start"
  767. format(line, 127,"{^n ^"classname^" ^"%s^"",sTeam)
  768. write_file(Flie, line , -1)
  769. format(line, 127, " ^"origin^" ^"%d %d %d^"", nOrigin[0], nOrigin[1], nOrigin[2])
  770. write_file(Flie, line, -1)
  771. format(line, 127, " ^"angle^" ^"0 %d 0^"^n}^n", nAngles[1])
  772. write_file(Flie, line, -1)
  773. }
  774. }

 [/ablak]

Nem lehet átírni hogy modellt rakjon le ne spawn helyet?

_________________
Blasenkampfwagen

https://discord.gg/uBYnNnZP
GTA:PURSUIT MTA


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Random hely létrehozás a mapon
HozzászólásElküldve: 2012.10.30. 15:26 
Offline
Tiszteletbeli

Csatlakozott: 2010.02.04. 19:12
Hozzászólások: 3528
Megköszönt másnak: 26 alkalommal
Megköszönték neki: 180 alkalommal
ez se randomra rakja, neked kell állítanod
szerinted tudja a plugin milyen kordinátákon kezdődik egy map? hol vannak entity-k meg ilyesmi?

_________________
http://www.ebateam.eu/


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Random hely létrehozás a mapon
HozzászólásElküldve: 2012.10.30. 16:54 
Offline
Őskövület
Avatar

Csatlakozott: 2012.03.22. 18:22
Hozzászólások: 2978
Megköszönt másnak: 115 alkalommal
Megköszönték neki: 368 alkalommal
akkor a csdm? :D

_________________
Blasenkampfwagen

https://discord.gg/uBYnNnZP
GTA:PURSUIT MTA


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Random hely létrehozás a mapon
HozzászólásElküldve: 2012.10.30. 17:38 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2011.09.18. 13:01
Hozzászólások: 4270
Megköszönt másnak: 55 alkalommal
Megköszönték neki: 513 alkalommal
ultraibolya írta:
akkor a csdm? :D

Ahoz is kordinata kell egyszer

_________________
Idk. Csak ugy funbooo.
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Random hely létrehozás a mapon
HozzászólásElküldve: 2012.10.31. 11:51 
Offline
Őskövület
Avatar

Csatlakozott: 2013.01.01. 17:48
Hozzászólások: 2441
Megköszönt másnak: 18 alkalommal
Megköszönték neki: 21 alkalommal
DeteCT0R írta:
ultraibolya írta:
akkor a csdm? :D

Ahoz is kordinata kell egyszer

Kép
Alliedsen van random spawn készítő.Abból kell kivenni!


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Random hely létrehozás a mapon
HozzászólásElküldve: 2012.10.31. 12:54 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2011.09.18. 13:01
Hozzászólások: 4270
Megköszönt másnak: 55 alkalommal
Megköszönték neki: 513 alkalommal
Bence98007 írta:
DeteCT0R írta:
ultraibolya írta:
akkor a csdm? :D

Ahoz is kordinata kell egyszer

Kép
Alliedsen van random spawn készítő.Abból kell kivenni!

De tuti nem automata.

_________________
Idk. Csak ugy funbooo.
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Random hely létrehozás a mapon
HozzászólásElküldve: 2012.10.31. 12:59 
Offline
Developer
Avatar

Csatlakozott: 2011.06.01. 21:11
Hozzászólások: 7962
Megköszönt másnak: 295 alkalommal
Megköszönték neki: 535 alkalommal
Kilehet indulni: http://amxmodx.crys.hu/site/?p=pluginz&c=l&f=rexcsomag

_________________
http://www.easyrankup.eu


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Random hely létrehozás a mapon
HozzászólásElküldve: 2012.10.31. 13:16 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2011.09.18. 13:01
Hozzászólások: 4270
Megköszönt másnak: 55 alkalommal
Megköszönték neki: 513 alkalommal
kiki írta:

de ehez is kell kordinata :Daddig nemfogja magatol lerakni.

_________________
Idk. Csak ugy funbooo.
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Random hely létrehozás a mapon
HozzászólásElküldve: 2012.10.31. 13:22 
Offline
Félisten

Csatlakozott: 2012.01.07. 21:10
Hozzászólások: 850
Megköszönt másnak: 9 alkalommal
Megköszönték neki: 154 alkalommal
Az hogy ,,randomra lerakja" az nem azt jelenti hogy tényleg véletlenszerűen csinálja, hanem a meglévő pontok közül sorsol. Egyik plugin sem magától rakja le mert mindegyik mapnak mások a koordinátái.

_________________
Megköszönni nem szégyen!
Csak kattints a Kép jelre. --->


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Random hely létrehozás a mapon
HozzászólásElküldve: 2012.10.31. 13:55 
Offline
Developer
Avatar

Csatlakozott: 2011.06.01. 21:11
Hozzászólások: 7962
Megköszönt másnak: 295 alkalommal
Megköszönték neki: 535 alkalommal
Ja, azé mondom abból induljon ki, mert nagy valószinüségel a falba rakná valahova!

_________________
http://www.easyrankup.eu


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 11 hozzászólás ]  Oldal 1 2 Következő


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 15 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole