hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.03.28. 16:38



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: Google [Bot], MateaBoss 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  [ 6 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: spawn csdm fájlok alapján
HozzászólásElküldve: 2013.09.08. 17:56 
Offline
Őstag
Avatar

Csatlakozott: 2010.04.16. 16:50
Hozzászólások: 1342
Megköszönt másnak: 42 alkalommal
Megköszönték neki: 58 alkalommal
sziasztok, nekem egy olyan respawn plugin kellene ami nem az alap spawnokra spawnol hanem a csdm fájlok spawnjaira mint pl a gungame ban is van ilyen funkcio.

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: spawn csdm fájlok alapján
HozzászólásElküldve: 2013.09.08. 19:21 
Offline
Signore Senior
Avatar

Csatlakozott: 2011.09.09. 17:39
Hozzászólások: 4020
Megköszönt másnak: 12 alkalommal
Megköszönték neki: 139 alkalommal
Egy ilyen CSDM fájl részleges tartalmát ha bemásolnál, az jelentősen megkönnyítené a dolgunk.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: spawn csdm fájlok alapján
HozzászólásElküldve: 2013.09.08. 20:08 
Offline
Őstag
Avatar

Csatlakozott: 2010.04.16. 16:50
Hozzászólások: 1342
Megköszönt másnak: 42 alkalommal
Megköszönték neki: 58 alkalommal
SMA Forráskód: [ Mindet kijelol ]
  1. /**
  2.  * csdm_spawn_preset.sma
  3.  * Allows for Counter-Strike to be played as DeathMatch.
  4.  
  5.  * CSDM Spawn Method - Preset Spawning
  6.  * by Freecode and BAILOPAN
  7.  * (C)2003-2006 David "BAILOPAN" Anderson
  8.  *
  9.  * Give credit where due.
  10.  * Share the source - it sets you free
  11.  */
  12.  
  13. #define MAX_SPAWNS 60
  14.  
  15. #include <amxmodx>
  16. #include <amxmisc>
  17. #include <fakemeta>
  18. #include <csdm>
  19.  
  20. //Tampering with the author and name lines will violate copyrights
  21. new PLUGINNAME[] = "CSDM Mod"
  22. new VERSION[] = CSDM_VERSION
  23. new AUTHORS[] = "CSDM Team"
  24.  
  25.  
  26. new Float:g_SpawnVecs[MAX_SPAWNS][3];
  27. new Float:g_SpawnAngles[MAX_SPAWNS][3];
  28. new Float:g_SpawnVAngles[MAX_SPAWNS][3];
  29. new g_TotalSpawns = 0;
  30.  
  31. public csdm_Init(const version[])
  32. {
  33. if (version[0] == 0)
  34. {
  35. set_fail_state("CSDM failed to load.")
  36. return
  37. }
  38.  
  39. csdm_addstyle("preset", "spawn_Preset")
  40. }
  41.  
  42. public csdm_CfgInit()
  43. {
  44. csdm_reg_cfg("settings", "read_cfg")
  45. }
  46.  
  47. public plugin_init()
  48. {
  49. register_plugin(PLUGINNAME,VERSION,AUTHORS)
  50. }
  51.  
  52. public read_cfg(action, line[], section[])
  53. {
  54. if (action == CFG_RELOAD)
  55. {
  56. readSpawns()
  57. }
  58. }
  59.  
  60. readSpawns()
  61. {
  62. //-617 2648 179 16 -22 0 0 -5 -22 0
  63. // Origin (x,y,z), Angles (x,y,z), vAngles(x,y,z), Team (0 = ALL) - ignore
  64. // :TODO: Implement team specific spawns
  65.  
  66. new Map[32], config[32], MapFile[64]
  67.  
  68. get_mapname(Map, 31)
  69. get_configsdir(config, 31)
  70. format(MapFile, 63, "%s\csdm\%s.spawns.cfg", config, Map)
  71. g_TotalSpawns = 0;
  72.  
  73. if (file_exists(MapFile))
  74. {
  75. new Data[124], len
  76. new line = 0
  77. new pos[12][8]
  78.  
  79. while(g_TotalSpawns < MAX_SPAWNS && (line = read_file(MapFile , line , Data , 123 , len) ) != 0 )
  80. {
  81. if (strlen(Data)<2 || Data[0] == '[')
  82. continue;
  83.  
  84. parse(Data, pos[1], 7, pos[2], 7, pos[3], 7, pos[4], 7, pos[5], 7, pos[6], 7, pos[7], 7, pos[8], 7, pos[9], 7, pos[10], 7);
  85.  
  86. // Origin
  87. g_SpawnVecs[g_TotalSpawns][0] = str_to_float(pos[1])
  88. g_SpawnVecs[g_TotalSpawns][1] = str_to_float(pos[2])
  89. g_SpawnVecs[g_TotalSpawns][2] = str_to_float(pos[3])
  90.  
  91. //Angles
  92. g_SpawnAngles[g_TotalSpawns][0] = str_to_float(pos[4])
  93. g_SpawnAngles[g_TotalSpawns][1] = str_to_float(pos[5])
  94. g_SpawnAngles[g_TotalSpawns][2] = str_to_float(pos[6])
  95.  
  96. //v-Angles
  97. g_SpawnVAngles[g_TotalSpawns][0] = str_to_float(pos[8])
  98. g_SpawnVAngles[g_TotalSpawns][1] = str_to_float(pos[9])
  99. g_SpawnVAngles[g_TotalSpawns][2] = str_to_float(pos[10])
  100.  
  101. //Team - ignore - 7
  102.  
  103. g_TotalSpawns++;
  104. }
  105.  
  106. log_amx("Loaded %d spawn points for map %s.", g_TotalSpawns, Map)
  107. } else {
  108. log_amx("No spawn points file found (%s)", MapFile)
  109. }
  110.  
  111. return 1;
  112. }
  113.  
  114. public spawn_Preset(id, num)
  115. {
  116. if (g_TotalSpawns < 2)
  117. return PLUGIN_CONTINUE
  118.  
  119. new list[MAX_SPAWNS]
  120. new num = 0
  121. new final = -1
  122. new total=0
  123. new players[32], n, x = 0
  124. new Float:loc[32][3], locnum
  125.  
  126. //cache locations
  127. get_players(players, num)
  128. for (new i=0; i<num; i++)
  129. {
  130. if (is_user_alive(players[i]) && players[i] != id)
  131. {
  132. pev(players[i], pev_origin, loc[locnum])
  133. locnum++
  134. }
  135. }
  136.  
  137. num = 0
  138. while (num <= g_TotalSpawns)
  139. {
  140. //have we visited all the spawns yet?
  141. if (num == g_TotalSpawns)
  142. break;
  143. //get a random spawn
  144. n = random_num(0, g_TotalSpawns-1)
  145. //have we visited this spawn yet?
  146. if (!list[n])
  147. {
  148. //yes, set the flag to true, and inc the number of spawns we've visited
  149. list[n] = 1
  150. num++
  151. }
  152. else
  153. {
  154. //this was a useless loop, so add to the infinite loop prevention counter
  155. total++;
  156. if (total > 100) // don't search forever
  157. break;
  158. continue; //don't check again
  159. }
  160.  
  161. new trace = csdm_trace_hull(g_SpawnVecs[n], 1)
  162.  
  163. if (trace)
  164. continue;
  165.  
  166. if (locnum < 1)
  167. {
  168. final = n
  169. break
  170. }
  171.  
  172. final = n
  173. for (x = 0; x < locnum; x++)
  174. {
  175. new Float:distance = get_distance_f(g_SpawnVecs[n], loc[x]);
  176. if (distance < 250.0)
  177. {
  178. //invalidate
  179. final = -1
  180. break;
  181. }
  182. }
  183.  
  184. if (final != -1)
  185. break
  186. }
  187.  
  188. if (final != -1)
  189. {
  190. new Float:mins[3], Float:maxs[3]
  191. pev(id, pev_mins, mins)
  192. pev(id, pev_maxs, maxs)
  193. engfunc(EngFunc_SetSize, id, mins, maxs)
  194. engfunc(EngFunc_SetOrigin, id, g_SpawnVecs[final])
  195. set_pev(id, pev_fixangle, 1)
  196. set_pev(id, pev_angles, g_SpawnAngles[final])
  197. set_pev(id, pev_v_angle, g_SpawnVAngles[final])
  198. set_pev(id, pev_fixangle, 1)
  199.  
  200. return PLUGIN_HANDLED
  201. }
  202.  
  203. return PLUGIN_CONTINUE
  204. }
  205.  


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: spawn csdm fájlok alapján
HozzászólásElküldve: 2013.09.08. 20:41 
csdm.cfg-ben nem lehet beállítani? :D


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: spawn csdm fájlok alapján
HozzászólásElküldve: 2013.09.08. 20:47 
Offline
Őstag
Avatar

Csatlakozott: 2010.04.16. 16:50
Hozzászólások: 1342
Megköszönt másnak: 42 alkalommal
Megköszönték neki: 58 alkalommal
dehogynem csak én csdm plugin nélkül akarom megoldani


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: spawn csdm fájlok alapján
HozzászólásElküldve: 2013.09.10. 05:34 
Offline
Félisten
Avatar

Csatlakozott: 2010.09.16. 20:57
Hozzászólások: 950
Megköszönt másnak: 9 alkalommal
Megköszönték neki: 101 alkalommal
Red vs Blue módból:

SMA Forráskód: [ Mindet kijelol ]
  1. /**
  2.  * csdm_spawn_preset.sma
  3.  * Allows for Counter-Strike to be played as DeathMatch.
  4.  
  5.  * CSDM Spawn Method - Preset Spawning
  6.  * by Freecode and BAILOPAN
  7.  * (C)2003-2005 David "BAILOPAN" Anderson
  8.  *
  9.  * Give credit where due.
  10.  * Share the source - it sets you free
  11.  */
  12.  
  13. #define MAX_SPAWNS 60
  14.  
  15. #include <amxmodx>
  16. #include <amxmisc>
  17. #include <engine>
  18. #include <hamsandwich>
  19.  
  20. //Tampering with the author and name lines will violate copyrights
  21. new PLUGINNAME[] = "CSDM Mod"
  22. new VERSION[] = "2.00"
  23. new AUTHORS[] = "CSDM Team+Nandee"
  24.  
  25.  
  26. new Float:g_SpawnVecs[MAX_SPAWNS][3];
  27. new Float:g_SpawnAngles[MAX_SPAWNS][3];
  28. new Float:g_SpawnVAngles[MAX_SPAWNS][3];
  29. new g_TotalSpawns;
  30.  
  31. public plugin_init()
  32. {
  33. register_plugin(PLUGINNAME,VERSION,AUTHORS);
  34. register_clcmd("csdmt","spawn_Preset")
  35. RegisterHam(Ham_Spawn,"player","spawn_Preset",1)
  36. }
  37.  
  38. public plugin_cfg()
  39. {
  40. readSpawns()
  41. }
  42.  
  43. readSpawns()
  44. {
  45. //-617 2648 179 16 -22 0 0 -5 -22 0
  46. // Origin (x,y,z), Angles (x,y,z), vAngles(x,y,z), Team (0 = ALL) - ignore
  47. // :TODO: Implement team specific spawns
  48.  
  49. new Map[32], config[32], MapFile[64];
  50.  
  51. get_mapname(Map, 31)
  52. get_configsdir(config, 31 )
  53. format(MapFile, 63, "%s\spawns\%s.spawns.cfg", config, Map);
  54. g_TotalSpawns = 0;
  55.  
  56. if (file_exists(MapFile))
  57. {
  58. new Data[124], len;
  59. new line = 0;
  60. new pos[12][8];
  61.  
  62. while(g_TotalSpawns < MAX_SPAWNS && (line = read_file(MapFile , line , Data , 123 , len) ) != 0 )
  63. {
  64. if (strlen(Data)<2 || Data[0] == '[')
  65. continue;
  66.  
  67. parse(Data, pos[1], 7, pos[2], 7, pos[3], 7, pos[4], 7, pos[5], 7, pos[6], 7, pos[7], 7, pos[8], 7, pos[9], 7, pos[10], 7);
  68.  
  69. g_TotalSpawns++;
  70.  
  71. // Origin
  72. g_SpawnVecs[g_TotalSpawns][0] = str_to_float(pos[1]);
  73. g_SpawnVecs[g_TotalSpawns][1] = str_to_float(pos[2]);
  74. g_SpawnVecs[g_TotalSpawns][2] = str_to_float(pos[3]);
  75.  
  76. //Angles
  77. g_SpawnAngles[g_TotalSpawns][0] = str_to_float(pos[4]);
  78. g_SpawnAngles[g_TotalSpawns][1] = str_to_float(pos[5]);
  79. g_SpawnAngles[g_TotalSpawns][2] = str_to_float(pos[6]);
  80.  
  81. //v-Angles
  82. g_SpawnVAngles[g_TotalSpawns][0] = str_to_float(pos[7]);
  83. g_SpawnVAngles[g_TotalSpawns][1] = str_to_float(pos[8]);
  84. g_SpawnVAngles[g_TotalSpawns][2] = str_to_float(pos[9]);
  85.  
  86. //Team - ignore
  87. }
  88.  
  89. log_amx("Loaded %d spawn points for map %s.", g_TotalSpawns, Map)
  90. } else {
  91. log_amx("No spawn points file found (%s)", MapFile)
  92. }
  93.  
  94. return 1;
  95. }
  96.  
  97. public spawn_Preset(id, num)
  98. {
  99. if (g_TotalSpawns < 2)
  100. return PLUGIN_CONTINUE
  101.  
  102. new list[MAX_SPAWNS];
  103. new num = 0;
  104. new final = -1;
  105. new total=0;
  106. new players[32], n, x = 0;
  107. new Float:loc[32][3], locnum
  108.  
  109. //cache locations
  110. get_players(players, num)
  111. for (new i=0; i<num; i++)
  112. {
  113. if (is_user_alive(players[i]) && players[i] != id)
  114. {
  115. entity_get_vector(players[i], EV_VEC_origin, loc[locnum])
  116. locnum++
  117. }
  118. }
  119.  
  120. num = 0
  121. while (num <= g_TotalSpawns)
  122. {
  123. //have we visited all the spawns yet?
  124. if (num == g_TotalSpawns)
  125. break;
  126. //get a random spawn
  127. n = random_num(0, g_TotalSpawns-1);
  128. //have we visited this spawn yet?
  129. if (!list[n])
  130. {
  131. //yes, set the flag to true, and inc the number of spawns we've visited
  132. list[n] = 1;
  133. num++;
  134. }
  135. else
  136. {
  137. //this was a useless loop, so add to the infinite loop prevention counter
  138. total++;
  139. if (total > 100) // don't search forever
  140. break;
  141. continue; //don't check again
  142. }
  143.  
  144. new trace = trace_hull(g_SpawnVecs[n],1);
  145. if (trace)
  146. continue;
  147.  
  148. if (locnum < 1)
  149. {
  150. final = n
  151. break
  152. }
  153.  
  154. final = n
  155. for (x = 0; x < locnum; x++)
  156. {
  157. new Float:distance = get_distance_f(g_SpawnVecs[n], loc[x]);
  158. if (distance < 250.0)
  159. {
  160. //invalidate
  161. final = -1;
  162. break;
  163. }
  164. }
  165.  
  166. if (final != -1)
  167. break
  168. }
  169. if (final != -1)
  170. {
  171. entity_set_origin(id, g_SpawnVecs[final]);
  172. entity_set_int(id, EV_INT_fixangle, 1);
  173. entity_set_vector(id, EV_VEC_angles, g_SpawnAngles[final]);
  174. entity_set_vector(id, EV_VEC_v_angle, g_SpawnVAngles[final]);
  175. entity_set_int(id, EV_INT_fixangle, 1);
  176.  
  177. return PLUGIN_HANDLED
  178. }
  179.  
  180. return PLUGIN_CONTINUE
  181. }
  182.  

_________________
Weboldalam: nandee.smmg.hu
Kép

Ők köszönték meg Nandee nek ezt a hozzászólást: expert (2013.09.10. 19:08)
  Népszerűség: 2.27%


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  [ 6 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 9 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