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 uialb7bo6as dodana przez Fili:P, 15.12.2012 18:09
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.
#include <amxmodx> #include <hamsandwich> #include <nvault> #include <ColorChat> #define PLUGIN "Achievements" #define VERSION "1.0" #define AUTHOR "Fili:P" #define MAX 32 #define PREFIX "[Achievements]" // achievement new AchValue; new Array:AchStance[ MAX+1 ]; new Array:AchStatus[ MAX+1 ]; new Array:AchTarget; new Array:AchName; new Array:AchDesc; // forwardy new g_Forward[ 5 ]; // cvary new g_cvar_display; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); register_clcmd("say /ach", "AchMenu"); register_clcmd("say_team /ach", "AchMenu"); RegisterHam(Ham_Killed, "player", "HamCheck", 0); RegisterHam(Ham_Spawn, "player", "HamSpawn", 1); g_cvar_display = get_pcvar_num( register_cvar("ach_display_gz", "1") ); // czy wyswietlac gratulacje zdobyles %s ? AchTarget = ArrayCreate(1, 1); AchName = ArrayCreate(32, 1); AchDesc = ArrayCreate(256, 1); g_Forward[ 0 ] = CreateMultiForward("ach_give_reward", ET_CONTINUE, FP_CELL, FP_CELL); g_Forward[ 1 ] = CreateMultiForward("ach_load_post", ET_CONTINUE, FP_CELL); g_Forward[ 2 ] = CreateMultiForward("ach_save_pre", ET_CONTINUE, FP_CELL, FP_CELL); g_Forward[ 3 ] = CreateMultiForward("ach_save_post", ET_CONTINUE, FP_CELL, FP_CELL); g_Forward[ 4 ] = CreateMultiForward("ach_menu_display", ET_CONTINUE, FP_CELL, FP_ARRAY); AchValue = nvault_open("Achievements"); if (AchValue == INVALID_HANDLE) set_fail_state( "Nie moge otworzyc pliku!"); } public plugin_natives() { register_library("achievements"); register_native("ach_get_index", "_ach_get_index"); register_native("ach_get_stance", "_ach_get_stance"); // pobiera czy ach zaliczony czy nie register_native("ach_get_status", "_ach_get_status"); // pobiera postep w achu register_native("ach_get_desc", "_ach_get_desc"); // pobiera do talibyc opis acha o konkretnym id register_native("ach_get_name", "_ach_get_name"); // pobiera do tablicy nazwe acha o konkretnym id register_native("ach_get_target", "_ach_get_target"); // pobiera wymagana ilosc do zakonczenia acha register_native("ach_get_max", "_ach_get_max"); // pobiera ilosc achievementow (ACH_NUM) register_native("ach_set_stance", "_ach_set_stance"); // ustawia czy gracz ukonczyl acha register_native("ach_set_status", "_ach_set_status"); // ustawia postep w achu register_native("ach_add", "_ach_add"); // tworzy nowy ach register_native("ach_reset_status", "_ach_reset_status"); // ustawia AchStatus[id][aid] na 0 register_native("ach_add_status", "_ach_add_status"); // dodaje postep w achu } public plugin_end() { nvault_close(AchValue); } public client_authorized(id) { AchStance[id]=ArrayCreate(1,1); AchStatus[id]=ArrayCreate(1,1); for(new i=0; i<ArraySize(AchTarget); i++) { ArrayPushCell(AchStance[id], 0); ArrayPushCell(AchStatus[id], 0); load_nvault(id, i); } new iRet; ExecuteForward(g_Forward[ 1 ], iRet, id); } public client_disconnect(id) { new iRet; ExecuteForward(g_Forward[ 2 ], iRet, id, 1); for(new i=0; i<ArraySize(AchTarget); i++) save_nvault(id, i) ArrayDestroy(AchStatus[id]); ArrayDestroy(AchStance[id]); } public AchMenu(id) { new AchM = menu_create("Osiagniecia", "AchMenuHandle"); for(new i=0; i<ArraySize(AchTarget); i++) { if(is_user_connected(id)) { new message[128]; new iAchName[64]; new data[ 2 ]; data[ 0 ] = ArrayGetCell(AchTarget, i); data[ 1 ] = ArrayGetCell(AchStatus[id], i); new iRet ExecuteForward(g_Forward[ 4 ], iRet, id, PrepareArray(data, 2, 1)); new iAchStance = ArrayGetCell(AchStance[id], i); new iAchStatus = data[ 1 ]; new iTarget = data[ 0 ]; ArrayGetString(AchName, i, iAchName, 63); if(!iAchStance) format(message, 127, "w%s ty%d/%d", iAchName, iAchStatus, iTarget) if(iAchStance) format(message, 127, "w%s tyZaliczone!", iAchName) menu_additem(AchM, message); } } menu_display(id, AchM, 0); return PLUGIN_HANDLED; } public AchMenuHandle(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED } else if(is_user_connected(id) && item && item < ArraySize(AchTarget)) { new iAchDesc[256]; ArrayGetString(AchDesc, item, iAchDesc, 255); if(!ArrayGetCell(AchStance[id], item)) ColorChat(id, YELLOW, "^x04[Achievements] ^x01%s ^x04%d/%d", iAchDesc, ArrayGetCell(AchStatus[id], item), ArrayGetCell(AchTarget, item)) else ColorChat(id, YELLOW, "^x04[Achievements] ^x01%s ^x04Zaliczone!", iAchDesc) menu_display(id, menu, 0); } return PLUGIN_HANDLED; } // ham public HamSpawn(id) { if(is_user_connected(id)) { for(new i=0; i<ArraySize(AchTarget); i++) { load_nvault(id, i); } } } public HamCheck(id) { if(is_user_connected(id)) { check_all_ach(id); new iRet; ExecuteForward(g_Forward[ 2 ], iRet, id, 2); for(new i=0; i<ArraySize(AchTarget); i++) save_nvault(id, i); new iRet2; ExecuteForward(g_Forward[ 3 ], iRet2, id, 2); } } //natywy public _ach_get_index(plugin, params) { //if(params != 1) //return 0; new szAchName[32]; new zwroc; get_string(1, szAchName, 31); for(new i=0; i<ArraySize(AchTarget); i++) { new szAchName2[31]; ArrayGetString(AchName, i, szAchName2, 31); if(equal(szAchName2, szAchName)) zwroc = i; } return zwroc; } public _ach_get_max(plugin, params) return ArraySize(AchTarget); public _ach_get_stance(plugin, params) { new id = get_param(1); return ArrayGetCell(AchStance[ id ], get_param(2)); } public _ach_get_status(plugin, params) { new id = get_param(1); if( !is_user_connected( id ) ) return 0; return ArrayGetCell(AchStatus[ id ], get_param(2)); } public _ach_get_target(plugin, params) return ArrayGetCell(AchTarget, get_param(1)); public _ach_get_name(plugin, params) { new iAchName[64]; ArrayGetString(AchName, get_param(1), iAchName, 63); set_string(2, iAchName, get_param(3)); } public _ach_get_desc(plugin, params) { new iAchDesc[64]; ArrayGetString(AchDesc, get_param(1), iAchDesc, 63); set_string(2, iAchDesc, get_param(3)); } public _ach_set_stance(plugin, params) ArraySetCell(AchStatus[ get_param(1) ],get_param(2), get_param(3)); public _ach_set_status(plugin, params) ArraySetCell(AchStatus[ get_param(1) ], get_param(2), get_param(3)); public _ach_add(plugin, params) { new szAchName[64]; new szAchDesc[256]; get_string(1, szAchName, 63); get_string(2, szAchDesc, 255); ArrayPushString(AchName, szAchName); ArrayPushString(AchDesc, szAchDesc); ArrayPushCell(AchTarget, get_param(3)); return ArraySize(AchTarget)-1; } public _ach_reset_status(plugin, params) ArraySetCell(AchStatus[get_param(1)], get_param(2), 0); public _ach_add_status(plugin, params) ArraySetCell(AchStatus[get_param(1)], get_param(2), ArrayGetCell(AchStatus[get_param(1)] , get_param(2)) + get_param(3)); // stocki stock check_ach(pid, aid) { if(ArrayGetCell(AchStatus[pid], aid) >= ArrayGetCell(AchTarget, aid) && !ArrayGetCell(AchStance[pid], aid) && is_user_connected(pid)) { new name[33]; get_user_name(pid, name, 32); ArraySetCell(AchStance[pid], aid, 1); new iAchName[64]; ArrayGetString(AchName, aid, iAchName, 63); if(g_cvar_display) ColorChat(pid, YELLOW, "^x04%s ^x01Gratulacje ^x04%s^x01! Zdobyles osiagniecie ^x04^"%s^"^x01!", PREFIX, name, iAchName) new iRet; ExecuteForward(g_Forward[ 0 ], iRet, pid, aid); } } stock check_all_ach(pid) for(new i=0; i<ArraySize(AchTarget); i++) check_ach(pid, i); stock load_nvault(index, ach_id) { if(is_user_connected(index)) { new name[35] get_user_name(index,name,34) new vaultkey[64],vaultdata[256] format(vaultkey,63,"%s-%d-ach",name, ach_id) format(vaultdata,255,"%d#%d#",ArrayGetCell(AchStatus[index], ach_id) , ArrayGetCell(AchStance[index], ach_id)) nvault_get(AchValue,vaultkey,vaultdata,255) replace_all(vaultdata, 255, "#", " ") new ach_status[33], ach_stance[33]; parse(vaultdata,ach_status,32,ach_stance,32) ArraySetCell(AchStatus[index], ach_id, str_to_num(ach_status)); ArraySetCell(AchStance[index], ach_id, str_to_num(ach_stance)); } } stock save_nvault(index, ach_id) { if(is_user_connected(index)) { new name[35] get_user_name(index,name,34) new vaultkey[64],vaultdata[256] format(vaultkey,63,"%s-%d-ach",name, ach_id) format(vaultdata,255,"%d#%d#", ArrayGetCell(AchStatus[index], ach_id), ArrayGetCell(AchStance[index], ach_id)) nvault_set(AchValue,vaultkey,vaultdata) } }
Dodanych wklejek: 4031
Powered By (Pav32) Pastebin © 2011