| JuanCruz.- |
12-29-2009 11:06 |
Optimize and Improve the Code
Optimize and Improve the Code.
Aid is saving accounts ammo packs, and I need to stay put rather well to the server.
PHP Code:
#include <amxmodx> #include <amxmisc> #include <hamsandwich> #include <fvault> #include <nvault> #include <zombieplague> #include <regex>
#define PLUGIN "[ZP] GUARDADO DE CUENTAS" #define VERSION "1.0" #define AUTHOR "..." #define is_valid_player(%1) (1 <= %1 <= 32) #define VAULTNAME "zp_ammopacks"
new const g_guardar[] = "[REGISTRO]" new Text, cvar_password_prefijo, bool: g_registrado[33]
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /registrarse", "menu") register_clcmd("say registrarse", "menu") register_clcmd("say_team /registrarse", "menu") register_clcmd("say_team registrarse", "menu") register_clcmd("ingresar_password", "filtro_cuenta") cvar_password_prefijo = register_cvar("zp_password_prefijo", "_pass") Text = get_user_msgid("SayText") }
public menu(id) { if (!g_registrado[id]) { new reg = menu_create("\yMenu de Registro^n^n- Guardado de Cuantas [ZP]^n^n", "abrir_menu") menu_additem(reg, "\wRegistrar Cuenta", "1", 0) menu_additem(reg, "\wNo Registrar Cuenta", "2", 0) menu_setprop(reg, MPROP_EXITNAME, "\wSalir.") menu_display(id, reg, 0) return PLUGIN_HANDLED } else { client_print(id, print_center, "[ZP] Ya estas registrado") } return PLUGIN_HANDLED }
public abrir_menu(id, reg, item) { if (item == MENU_EXIT) { menu_destroy(reg) return PLUGIN_HANDLED } new data[6], iName[64] new access, callback menu_item_getinfo(reg, item, access, data,5, iName, 63, callback) switch (str_to_num(data)) { case 1: { registrar(id) g_registrado[id] = true } case 2: { menu_destroy(reg) } } menu_destroy(reg) return PLUGIN_HANDLED }
public filtro_cuenta(id) { new say[300] read_args(say, charsmax(say)) remove_quotes(say), trim(say) if(equal(say, "")) return PLUGIN_HANDLED if(contain(say, " ") != -1) { client_print(id, print_chat, "[ZP] Password con ESPACIOS, pueden llegar a perder datos") return PLUGIN_HANDLED } crear_cuenta(id, say) return PLUGIN_CONTINUE }
crear_cuenta(id, say[]) { new password[32] copy(password, charsmax(password), say) new data[64], name[32], prefijo[8] get_user_name(id, name, charsmax(name)) get_pcvar_string(cvar_password_prefijo, prefijo, charsmax(prefijo)) client_cmd(id, "setinfo %s %s", prefijo, password) formatex(data, charsmax(data), "%s", password) fvault_set_data(g_guardar, name, data) ColorPrint(id, "/v[ZP] /nHas sido registrado!. Nick: /t%s - setinfo _pass: /t%s", name, password) g_registrado[id] = true }
public registrar(id) { switch(load_ammopacks(id)) { case 1: { g_registrado[id] = true ColorPrint(id, "[ZP] Este nick ya posee una cuenta") return PLUGIN_HANDLED } case 2: { g_registrado[id] = true ColorPrint(id, "[ZP] Ya estas logueado") return PLUGIN_HANDLED } } client_cmd(id, "messagemode Ingresar_Password") return PLUGIN_HANDLED }
public client_connect(id) { g_registrado[id] = false load_ammopacks(id) }
public client_infochanged(id) { new oldname[32], newname[32] get_user_name(id, oldname, 31) get_user_info(id, "name", newname, 31) if( !equal(oldname, newname) ) check_user_name(id, newname) }
stock check_user_name(id, const name[32] = "") { new plrname[32] if(equal(name, "")) { get_user_name(id, plrname, 31) } else { plrname = name } load_ammopacks(id) }
public task_ammopacks(taskid) { load_ammopacks(taskid) }
load_ammopacks(id) { new data[64], name[32], password[32], password_en_archivo[32], ap[8] get_datos(id, name, password) if(!fvault_get_data(g_guardar, name, data, charsmax(data))) { return 0 } parse(data, password_en_archivo, charsmax(password_en_archivo), ap, charsmax(ap)) if(equali(password_en_archivo, password)) { g_registrado[id] = true client_print(id, print_console, "* [ZP] Contrasenia Aceptada") return 2 } else { g_registrado[id] = false new lReason[64] server_cmd("kick #%d ^"Contrasenia Incorrecta.^"", get_user_userid(id), lReason) client_print(id, print_console, "* [ZP] Contrasenia Incorrecta") } return 1 }
get_datos(id, name[32], password[32]) { new prefijo[8] get_user_name(id, name, charsmax(name)) get_pcvar_string(cvar_password_prefijo, prefijo, charsmax(prefijo)) get_user_info(id, prefijo, password, charsmax(password)) }
stock ColorPrint(const id, const input[], any:...) { new count = 1, players[32] static msg[191] vformat(msg, charsmax(msg), input, 3) replace_all(msg, 190, "/v", "^4") // texto verde replace_all(msg, 190, "/n", "^1") // texto naranja replace_all(msg, 190, "/t", "^3") // texto team replace_all(msg, 190, "/c", "^0") // "" "" if(id) players[0] = id else get_players(players, count, "ch") for (new i = 0; i < count; i++) { if (is_user_connected(players[i])) { message_begin(MSG_ONE_UNRELIABLE, Text, _, players[i]) write_byte(players[i]) write_string(msg) message_end() } } }
public client_disconnect(id) { new g_vault = nvault_open(VAULTNAME) if(g_vault == INVALID_HANDLE) set_fail_state("Vault returned Invalid Handle") new szKey[62], szValue[10], szName[32] get_user_name(id, szName, 31) format(szKey, 61,"%sAP", szName) format(szValue, 9,"%i",zp_get_user_ammo_packs(id)) nvault_set(g_vault, szKey, szValue) nvault_close(g_vault) return PLUGIN_CONTINUE }
public client_putinserver(id) { set_task(5.0,"cmdLoad",id) }
public cmdLoad(id) { new g_vault = nvault_open(VAULTNAME) if(g_vault == INVALID_HANDLE) set_fail_state("Vault returned Invalid Handle") new szKey[100], szName[32] get_user_name(id, szName, 31) format(szKey, 99,"%sAP", szName) new iAp = nvault_get(g_vault, szKey) if(iAp) { zp_set_user_ammo_packs(id , iAp) client_print(id,print_chat,"[ZP] Login Exitoso.") client_print(id,print_chat,"[ZP] Recuerda antes de entrar al server poner en consola: [ setinfo _pass password ].") client_print(id,print_chat,"[ZP] Recuerda que tu nick no deve tener espacios para que se guarden tus datos.") nvault_remove(g_vault , szKey) } nvault_close(g_vault) return PLUGIN_CONTINUE; }
|