Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Guest Message by DevFuse
Wklejka 1jlirnkk5dtwg dodana przez MariuszeŁ, 28.09.2012 12:55
parachute
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393. 394. 395. 396. 397. 398. 399. 400. 401. 402. 403. 404. 405. 406. 407. 408. 409. 410. 411. 412. 413. 414. 415. 416. 417. 418. 419. 420. 421. 422. 423. 424. 425. 426. 427. 428. 429. 430. 431. 432. 433. 434. 435. 436. 437. 438. 439. 440. 441. 442. 443. 444. 445. 446. 447. 448. 449. 450. 451. 452. 453. 454. 455. 456. 457. 458. 459. 460. 461. 462. 463. 464. 465. 466. 467. 468. 469. 470. 471. 472. 473. 474. 475. 476. 477. 478. 479. 480. 481. 482. 483. 484. 485.
/******************************************************************************* Parachute Version: 1.3 Author: KRoTaL/JTP10181 0.1 Release 0.1.1 Players can't buy a parachute if they already own one 0.1.2 Release for AMX MOD X 0.1.3 Minor changes 0.1.4 Players lose their parachute if they die 0.1.5 Added amx_parachute cvar 0.1.6 Changed set_origin to movetype_follow (you won't see your own parachute) 0.1.7 Added amx_parachute <name> | admins with admin level a get a free parachute 0.1.8 JTP - Cleaned up code, fixed runtime error 1.0 JTP - Should be final version, made it work on basically any mod 1.1 JTP - Added Changes from AMX Version 0.1.8 Added say give_parachute and parachute_fallspeed cvar Plays the release animation when you touch the ground Added chat responder forg automatic help 1.2 JTP - Added cvar to disable the detach animation Redid animation code to improve organization Force "walk" animation on players when falling Change users gravity when falling to avoid choppiness 1.3 JTP - Upgraded to pCVARs Commands: say buy_parachute - buys a parachute (CStrike ONLY) saw sell_parachute - sells your parachute (75% of the purchase price) say give_parachute <nick, #userid or @team> - gives your parachute to the player amx_parachute <nick, #userid or @team> - gives a player a free parachute (CStrike ONLY) amx_parachute @all - gives everyone a free parachute (CStrike ONLY) Press +use to slow down your fall. Cvars: sv_parachute "1" - 0: disables the plugin - 1: enables the plugin parachute_cost "1000" - cost of the parachute (CStrike ONLY) parachute_payback "100" - how many percent of the parachute cost you get when you sell your parachute (ie. (75/100) * 1000 = 750$) parachute_fallspeed "100" - speed of the fall when you use the parachute Setup (AMXX 1.x): Install the amxx file. Enable engine and cstrike (for cs only) in the amxx modules.ini Put the parachute.mdl file in the modname/models/ folder *******************************************************************************/ #include <amxmodx> #include <amxmisc> #include <engine> #include <cstrike> #include <fun> new bool:has_parachute[33] new para_ent[33] new gCStrike = 0 new pDetach, pFallSpeed, pEnabled, pCost, pPayback #define PARACHUTE_LEVEL ADMIN_LEVEL_A new Float: user_grav[33] public plugin_init() { register_plugin("Parachute", "1.3", "KRoT@L/JTP10181") pEnabled = register_cvar("sv_parachute", "1" ) pFallSpeed = register_cvar("parachute_fallspeed", "100") pDetach = register_cvar("parachute_detach", "1") if (cstrike_running()) gCStrike = true if (gCStrike) { pCost = register_cvar("parachute_cost", "1000") pPayback = register_cvar("parachute_payback", "75") register_concmd("amx_parachute", "admin_give_parachute", PARACHUTE_LEVEL, "<nick, #userid or @team>" ) } register_clcmd("say", "HandleSay") register_clcmd("say_team", "HandleSay") register_event("ResetHUD", "newSpawn", "be") register_event("DeathMsg", "death_event", "a") //Setup jtp10181 CVAR new cvarString[256], shortName[16] copy(shortName,15,"chute") register_cvar("jtp10181","",FCVAR_SERVER|FCVAR_SPONLY) get_cvar_string("jtp10181",cvarString,255) if (strlen(cvarString) == 0) { formatex(cvarString,255,shortName) set_cvar_string("jtp10181",cvarString) } else if (contain(cvarString,shortName) == -1) { format(cvarString,255,"%s,%s",cvarString, shortName) set_cvar_string("jtp10181",cvarString) } } public plugin_natives() { set_module_filter("module_filter") set_native_filter("native_filter") } public module_filter(const module[]) { if (!cstrike_running() && equali(module, "cstrike")) { return PLUGIN_HANDLED } return PLUGIN_CONTINUE } public native_filter(const name[], index, trap) { if (!trap) return PLUGIN_HANDLED return PLUGIN_CONTINUE } public plugin_precache() { precache_model("models/parachute.mdl") } public client_connect(id) { user_grav[id]=1.0 parachute_reset(id) } public client_disconnect(id) { user_grav[id]=1.0 parachute_reset(id) } public death_event() { new id = read_data(2) parachute_reset(id) } parachute_reset(id) { if(para_ent[id] > 0) { if (is_valid_ent(para_ent[id])) { remove_entity(para_ent[id]) } } if (is_user_alive(id)) set_user_gravity(id, user_grav[id]) has_parachute[id] = false para_ent[id] = 0 } public newSpawn(id) { if(para_ent[id] > 0) { remove_entity(para_ent[id]) set_user_gravity(id, user_grav[id]) para_ent[id] = 0 } if (!gCStrike || access(id,PARACHUTE_LEVEL) || get_pcvar_num(pCost) <= 0) { has_parachute[id] = true //set_view(id, CAMERA_3RDPERSON) } } public HandleSay(id) { if(!is_user_connected(id)) return PLUGIN_CONTINUE new args[128] read_args(args, 127) remove_quotes(args) if (gCStrike) { if (equali(args, "buy_parachute")) { buy_parachute(id) return PLUGIN_HANDLED } else if (equali(args, "sell_parachute")) { sell_parachute(id) return PLUGIN_HANDLED } else if (containi(args, "give_parachute") == 0) { give_parachute(id,args[15]) return PLUGIN_HANDLED } } if (containi(args, "parachute") != -1) { if (gCStrike) client_print(id, print_chat, "[AMXX] Parachute commands: buy_parachute, sell_parachute, give_parachute") client_print(id, print_chat, "[AMXX] To use your parachute press and hold your +use button while falling") } return PLUGIN_CONTINUE } public buy_parachute(id) { if (!gCStrike) return PLUGIN_CONTINUE if (!is_user_connected(id)) return PLUGIN_CONTINUE if (!get_pcvar_num(pEnabled)) { client_print(id, print_chat, "[AMXX] Parachute plugin is disabled") return PLUGIN_HANDLED } if (has_parachute[id]) { client_print(id, print_chat, "[AMXX] You already have a parachute") return PLUGIN_HANDLED } new money = cs_get_user_money(id) new cost = get_pcvar_num(pCost) if (money < cost) { client_print(id, print_chat, "[AMXX] You don't have enough moneyfor a parachute - Costs $%i", cost) return PLUGIN_HANDLED } cs_set_user_money(id, money - cost) client_print(id, print_chat, "[AMXX] You have bought a parachute. To use it, press +use while falling.") has_parachute[id] = true return PLUGIN_HANDLED } public sell_parachute(id) { if (!gCStrike) return PLUGIN_CONTINUE if (!is_user_connected(id)) return PLUGIN_CONTINUE if (!get_pcvar_num(pEnabled)) { client_print(id, print_chat, "[AMXX] Parachute plugin is disabled") return PLUGIN_HANDLED } if (!has_parachute[id]) { client_print(id, print_chat, "[AMXX] You don't have a parachute to sell") return PLUGIN_HANDLED } if (access(id,PARACHUTE_LEVEL)) { client_print(id, print_chat, "[AMXX] You cannot sell your free admin parachute") return PLUGIN_HANDLED } parachute_reset(id) new money = cs_get_user_money(id) new cost = get_pcvar_num(pCost) new sellamt = floatround(cost * (get_pcvar_num(pPayback) / 100.0)) cs_set_user_money(id, money + sellamt) client_print(id, print_chat, "[AMX] You have sold your used parachute for $%d", sellamt) return PLUGIN_CONTINUE } public give_parachute(id,args[]) { if (!gCStrike) return PLUGIN_CONTINUE if (!is_user_connected(id)) return PLUGIN_CONTINUE if (!get_pcvar_num(pEnabled)) { client_print(id, print_chat, "[AMXX] Parachute plugin is disabled") return PLUGIN_HANDLED } if (!has_parachute[id]) { client_print(id, print_chat, "[AMXX] You don't have a parachute to give") return PLUGIN_HANDLED } new player = cmd_target(id, args, 4) if (!player) return PLUGIN_HANDLED new id_name[32], pl_name[32] get_user_name(id, id_name, 31) get_user_name(player, pl_name, 31) if(has_parachute[player]) { client_print(id, print_chat, "[AMXX] %s already has a parachute.", pl_name) return PLUGIN_HANDLED } parachute_reset(id) has_parachute[player] = true client_print(id, print_chat, "[AMXX] You have given your parachute to %s.", pl_name) client_print(player, print_chat, "[AMXX] %s has given thier parachute to you.", id_name) return PLUGIN_HANDLED } public admin_give_parachute(id, level, cid) { if (!gCStrike) return PLUGIN_CONTINUE if(!cmd_access(id,level,cid,2)) return PLUGIN_HANDLED if (!get_pcvar_num(pEnabled)) { client_print(id, print_chat, "[AMXX] Parachute plugin is disabled") return PLUGIN_HANDLED } new arg[32], name[32], name2[32], authid[35], authid2[35] read_argv(1,arg,31) get_user_name(id,name,31) get_user_authid(id,authid,34) if (arg[0]=='@'){ new players[32], inum if (equali("T",arg[1])) copy(arg[1],31,"TERRORIST") if (equali("ALL",arg[1])) get_players(players,inum) else get_players(players,inum,"e",arg[1]) if (inum == 0) { console_print(id,"No clients in such team") return PLUGIN_HANDLED } for(new a = 0; a < inum; a++) { has_parachute[players[a]] = true } console_print(id,"[AMXX] You gave a parachute to ^"%s^" players",arg[1]) log_amx("^"%s<%d><%s><>^" gave a parachute to ^"%s^"", name,get_user_userid(id),authid,arg[1]) } else { new player = cmd_target(id,arg,6) if (!player) return PLUGIN_HANDLED has_parachute[player] = true get_user_name(player,name2,31) get_user_authid(player,authid2,34) console_print(id,"[AMXX] You gave a parachute to ^"%s^"", name2) log_amx("^"%s<%d><%s><>^" gave a parachute to ^"%s<%d><%s><>^"", name,get_user_userid(id),authid,name2,get_user_userid(player),authid2) } return PLUGIN_HANDLED } public client_PreThink(id) { //parachute.mdl animation information //0 - deploy - 84 frames //1 - idle - 39 frames //2 - detach - 29 frames if (!get_pcvar_num(pEnabled)) return if (!is_user_alive(id) || !has_parachute[id]) return new Float:fallspeed = get_pcvar_float(pFallSpeed) * -1.0 new Float:frame new button = get_user_button(id) new oldbutton = get_user_oldbutton(id) new flags = get_entity_flags(id) if (para_ent[id] > 0 && (flags & FL_ONGROUND)) { if (get_pcvar_num(pDetach)) { if (get_user_gravity(id) != user_grav[id]) set_user_gravity(id, user_grav[id]) if (entity_get_int(para_ent[id],EV_INT_sequence) != 2) { entity_set_int(para_ent[id], EV_INT_sequence, 2) entity_set_int(para_ent[id], EV_INT_gaitsequence, 1) entity_set_float(para_ent[id], EV_FL_frame, 0.0) entity_set_float(para_ent[id], EV_FL_fuser1, 0.0) entity_set_float(para_ent[id], EV_FL_animtime, 0.0) entity_set_float(para_ent[id], EV_FL_framerate, 0.0) return } frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 2.0 entity_set_float(para_ent[id],EV_FL_fuser1,frame) entity_set_float(para_ent[id],EV_FL_frame,frame) if (frame > 254.0) { remove_entity(para_ent[id]) para_ent[id] = 0 } } else { remove_entity(para_ent[id]) set_user_gravity(id, user_grav[id]) para_ent[id] = 0 } return } if (button & IN_USE) { new Float:velocity[3] entity_get_vector(id, EV_VEC_velocity, velocity) if (velocity[2] < 0.0) { if(para_ent[id] <= 0) { para_ent[id] = create_entity("info_target") if(para_ent[id] > 0) { entity_set_string(para_ent[id],EV_SZ_classname,"parachute") entity_set_edict(para_ent[id], EV_ENT_aiment, id) entity_set_edict(para_ent[id], EV_ENT_owner, id) entity_set_int(para_ent[id], EV_INT_movetype, MOVETYPE_FOLLOW) entity_set_model(para_ent[id], "models/parachute.mdl") entity_set_int(para_ent[id], EV_INT_sequence, 0) entity_set_int(para_ent[id], EV_INT_gaitsequence, 1) entity_set_float(para_ent[id], EV_FL_frame, 0.0) entity_set_float(para_ent[id], EV_FL_fuser1, 0.0) } } if (para_ent[id] > 0 && get_user_gravity(id)!=0.1) { entity_set_int(id, EV_INT_sequence, 3) entity_set_int(id, EV_INT_gaitsequence, 1) entity_set_float(id, EV_FL_frame, 1.0) entity_set_float(id, EV_FL_framerate, 1.0) user_grav[id]=get_user_gravity(id) set_user_gravity(id, 0.1) velocity[2] = (velocity[2] + 40.0 < fallspeed) ? velocity[2] + 40.0 : fallspeed entity_set_vector(id, EV_VEC_velocity, velocity) if (entity_get_int(para_ent[id],EV_INT_sequence) == 0) { frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 1.0 entity_set_float(para_ent[id],EV_FL_fuser1,frame) entity_set_float(para_ent[id],EV_FL_frame,frame) if (frame > 100.0) { entity_set_float(para_ent[id], EV_FL_animtime, 0.0) entity_set_float(para_ent[id], EV_FL_framerate, 0.4) entity_set_int(para_ent[id], EV_INT_sequence, 1) entity_set_int(para_ent[id], EV_INT_gaitsequence, 1) entity_set_float(para_ent[id], EV_FL_frame, 0.0) entity_set_float(para_ent[id], EV_FL_fuser1, 0.0) } } } } else if (para_ent[id] > 0) { remove_entity(para_ent[id]) set_user_gravity(id, user_grav[id]) para_ent[id] = 0 } } else if ((oldbutton & IN_USE) && para_ent[id] > 0 ) { remove_entity(para_ent[id]) set_user_gravity(id, user_grav[id]) para_ent[id] = 0 } }
Dodanych wklejek: 10848
Powered By (Pav32) Pastebin © 2011