Spoiler
Wklejka 122pyrhzx9jk8 dodana przez Kawon, 20.08.2012 22:19
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.
/* / * / * / * / * / * / * / * / * / * / * / * / * / * / * / * / * / * / * / * [Rejestracja Nicku www] Skrypt do rejestracji nicku na stronie www. wersja 0.1 Cvary: amx_rejestracja_host - host (Do bazy danych) amx_rejestracja_user - nazwa uzytkownika (Do bazy danych) amx_rejestracja_password - haslo (Do bazy danych) amx_rejestracja_db - nazwa bazy danych (Do bazy danych) amx_rejestracja_site - strona na ktorej znajduje sie skrypt amx_rejestracja_maxwarn - maksymalna ilosc pomylek przy wpisywaniu hasel amx_rejestracja_seckick - czas na wpisanie hasla (po tym czasie KICK) amx_rejestracja_name - blokuje zmiane nicka na serwerze by F.E.A.R.&Many Edit: kyku - - - - - - - - - - - - - - - Logi zmian. 0.1 - wydanie | _ _| * / * / * / * / * / * / * / * / * / * / * / * / * / * / * / * / * / * / * / */ #include <amxmodx> #include <amxmisc> #include <sqlx> #include <colorchat> #define NAZWA "[Rejestracja Nicku www]" #define WERSJA "0.1" #define AUTOR "kyku" #define tag "RNW" #define table "users" new Handle:g_SqlX new Handle:g_SqlConnection new g_error[512] new warn[33]; new zalogowany[33]; public plugin_init(){ register_plugin(NAZWA, WERSJA, AUTOR) register_cvar("amx_rejestracja_host", "localhost"); // Host register_cvar("amx_rejestracja_user", "root"); // Uzytkownik register_cvar("amx_rejestracja_password", ""); // Haslo register_cvar("amx_rejestracja_db", "fragtrade"); // Nazwa bazy danych register_cvar("amx_rejestracja_site", "fragtrade.net"); // Strona na ktorej jest skrypt register_cvar("amx_rejestracja_maxwarn", "3"); // Maksymalna ilosc pomylek przy wpisywaniu hasel register_cvar("amx_rejestracja_seckick", "10"); // Czas na wpisanie hasla (po tym czasie KICK) register_cvar("amx_rejestracja_name", "1"); // Blokuje zmiane nicka na serwerze (by F.E.A.R.&Many) register_message(get_user_msgid("SayText"), "message") register_clcmd("say", "login") set_task(0.1, "check_sql") return PLUGIN_CONTINUE } public message() { new arg[32] get_msg_arg_string(2, arg, 31) if(containi(arg,"name")!=-1 && get_cvar_num("amx_rejestracja_name")) { return PLUGIN_HANDLED } return PLUGIN_CONTINUE } public client_infochanged(id) // by F.E.A.R.&Many edit: kyku { new newname[32],oldname[32] get_user_info(id, "name", newname,31) get_user_name(id,oldname,31) if(!is_user_connected(id) || is_user_bot(id)) return PLUGIN_CONTINUE; if(!equali(newname, oldname) && get_cvar_num("amx_rejestracja_name")) { set_user_info(id,"name",oldname) ColorChat(id, GREEN, "[%s]^x01 Zakaz zmiany nicka!", tag); return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; } public client_authorized(id){ warn[id] = 0; zalogowany[id] = 0; set_task(3.0, "client_start", id) } public client_disconnect(id){ warn[id] = 0; zalogowany[id] = 0; } public client_start(id){ new data[1]; data[0] = id-1337; new query[1001]; new name[31]; get_user_name(id, name, 30); format(query,1000,"SELECT pass FROM `%s` WHERE name='%s'",table,name) SQL_ThreadQuery(g_SqlX,"QueryHandle",query, data, 1) } public delaykick(id){ if(id>1000){ id-=1000; if(is_user_connected(id)){ new strona[64]; get_cvar_string("amx_rejestracja_site", strona, 63); server_cmd("kick #%d ^"Zarejestruj sie na %s^"",get_user_userid(id), strona) } } else if(is_user_connected(id)){ new name[33]; get_user_name(id, name, 32); ColorChat(id, GREEN, "[%s]^x01 Gracz %s zostal wyrzucony przez serwer. Powod: Czas na zalogowanie skonczyl sie.",tag , name) server_cmd("kick #%d ^"Przekroczono czas na zalogowanie sie!^"",get_user_userid(id)) } } public login(id){ new haslo[192] read_args(haslo,191) if ( containi (haslo, "/login") != -1){ if(zalogowany[id]){ ColorChat(id, GREEN, "[%s]^x01 Jestes juz zalogowany.",tag ); return PLUGIN_HANDLED; } replace_all(haslo, 191, "", "") replace_all(haslo, 191, "/login ", "") remove_quotes(haslo) new name[32]; get_user_name(id, name, 31); new query[1001] format(query,1000,"SELECT pass, name FROM `%s` WHERE name='%s'",table,name) SQL_ThreadQuery(g_SqlX,"LoginH",query, haslo,192) return PLUGIN_HANDLED; } if(!zalogowany[id]){ ColorChat(id, GREEN, "[%s]^x01 By pisac musisz byc zalgowanym! (Wpisz:^x03 /login haslo ^x01)",tag ); return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; } public LoginH(FailState,Handle:Query,Error[],Errcode,Data[],DataSize){ if(FailState == TQUERY_CONNECT_FAILED){ return log_amx("[Rejestracja]: Brak polaczenia z baza danych.") }else if(FailState == TQUERY_QUERY_FAILED){ return log_amx("[Rejestracja]: Zle zbudowane zapytanie") }else if(Errcode){ return log_amx("[Rejestracja]: Blad w zapytaniu: %s",Error) } new haslo[50]; new nick[33]; new tab = SQL_FieldNameToNum(Query, "pass"); new tab2 = SQL_FieldNameToNum(Query, "name"); if(SQL_MoreResults(Query)) { SQL_ReadResult(Query, tab, haslo, 49); SQL_ReadResult(Query, tab2, nick, 32); new id = get_user_index(nick); if(is_user_connected(id)){ if(equal(Data,haslo)){ ColorChat(id, GREEN, "[%s]^x01 Zalogowales sie.",tag ); warn[id] = 0; zalogowany[id] = 1; if(task_exists(id)) remove_task(id); } else { warn[id]++; ColorChat(id, GREEN, "[%s]^x01 Podano zle haslo. (%d/%d)",tag , warn[id], get_cvar_num("amx_rejestracja_maxwarn")); if(warn[id] >= get_cvar_num("amx_rejestracja_maxwarn")){ server_cmd("kick #%d ^"Za duzo prob wpisania hasla.^"",get_user_userid(id)); warn[id] = 0; } } } } return PLUGIN_CONTINUE } public QueryHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize) { new id=Data[0]; if(FailState == TQUERY_CONNECT_FAILED){ return log_amx("[Rejestracja]: Brak polaczenia z baza danych.") }else if(FailState == TQUERY_QUERY_FAILED){ return log_amx("[Rejestracja]: Zle zbudowane zapytanie") }else if(Errcode){ return log_amx("[Rejestracja]: Blad w zapytaniu: %s",Error) } if(id < 0){ id += 1337; if(is_user_connected(id)){ if(SQL_NumResults(Query) <= 0){ new strona[64]; get_cvar_string("amx_rejestracja_site", strona, 63); ColorChat(id, GREEN, "[%s]^x01 By grac na serwerze musisz sie zarejestrowac na stronie serwera.",tag ) ColorChat(id, GREEN, "[%s]^x01 Wejdz na %s i zarejestruj sie!",tag , strona) set_task(1.5, "delaykick", id+1000); } else { new ilesekund = get_cvar_num("amx_rejestracja_seckick"); if(ilesekund < 10){ ilesekund = 10; } new str[11]; num_to_str(ilesekund, str, 10) ColorChat(id, GREEN, "[%s]^x01 Twoj nick jest juz zarejestrowany. Zaloguj sie wpisujac^x03 /login haslo",tag ) ColorChat(id, GREEN, "[%s]^x01 Masz %s sekund na zalogowanie sie.",tag , str) set_task(str_to_float(str), "delaykick", id); } } } return PLUGIN_CONTINUE } public plugin_end() { SQL_FreeHandle(g_SqlConnection) return } public check_sql() { new errorcode new host[64], user[64], pass[64], db[64]; get_cvar_string("amx_rejestracja_host", host, 63); get_cvar_string("amx_rejestracja_user", user, 63); get_cvar_string("amx_rejestracja_password", pass, 63); get_cvar_string("amx_rejestracja_db", db, 63); g_SqlX = SQL_MakeDbTuple(host, user, pass, db) g_SqlConnection = SQL_Connect(g_SqlX,errorcode,g_error,511); if (!g_SqlConnection) { console_print(0,"[Rejestracja]: Nie mozna polaczyc sie z baza danych.") return log_amx("[Rejestracja]: Nie mozna polaczyc sie z baza danych.") } new query_create[1001] format(query_create,1000,"CREATE TABLE IF NOT EXISTS `%s`(`id` int(11) NOT NULL auto_increment,`name` varchar(100) NOT NULL default '',`pass` varchar(100) NOT NULL default '',PRIMARY KEY (`id`));",table) SQL_ThreadQuery(g_SqlX,"QueryHandle",query_create) console_print(0,"[AMXX SQL] Connected!") return PLUGIN_CONTINUE }
Wszystko działa. Tylko nie kickuje jak nie ma w bazie, albo jak nie wpisze się hasła w ciągu 20 sekund.
Jak zrobić, aby nic nie dało się robić dopóki nie wpiszę się hasła?.
Użytkownik Kawon edytował ten post 20.08.2012 22:21
zmieniłem wklejkę