Sziasztok.
Valaki megoldána azt, hogy a felhasználónevet is megkelljen adni úgyan úgy mint a jelsztó.
Kód:
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <fakemeta>
#include <cstrike>
#include <colorchat>
#include <fvault>
#include <engine>
#define PLUGIN "plugin"
#define VERSION "1.0"
#define AUTHOR "author"
new const file[] = "regisztraciosadatok"
new jelszo[32], reg_pont[33], belepve[33], beirt_jelszo[32], mentett_pw[33][32], beirt_pw[33][32], ef_jsz[32][33]
new users_db_file[256] , reg_vault, probal[33], irt[33]
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /reg", "Regisztralas")
reg_vault = nvault_open("regrendszer")
register_clcmd("REGISZTRACIOS_JELSZO", "reg_jelszo")
register_clcmd("BELEPESI_JELSZO", "belepes_jelszo")
register_forward(FM_ClientUserInfoChanged, "nevvaltas")
}
public Regisztralas(id){
new menu
new ks1[121], ks2[121], cim[121]
new nev[32]
get_user_name(id, nev, 31)
if(belepve[id] == 0){
if(reg_pont[id] == 0){
format(cim, charsmax(cim), "\yStátusz: \dNem regisztrált")
}
else if(reg_pont[id] == 1){
format(cim, charsmax(cim), "\yStátusz: \dRegisztrálva^n\rPróbálkozások: \w%d\d/\w3", probal[id])
}
menu = menu_create(cim, "reg_h")
format(ks2, charsmax(ks2), "\rFelhasználónév:\d %s", nev)
if(reg_pont[id] == 0){
if(irt[id] == 1){
format(ks1, charsmax(ks1), "\rJelszó: \d%s^n", mentett_pw[id])
}
else if(irt[id] == 0){
format(ks1, charsmax(ks1), "\rJelszó: ^n")
}
}
else if(reg_pont[id] == 1){
format(ks1, charsmax(ks1), "\rJelszó: \d%s^n", beirt_pw[id])
}
menu_additem(menu, ks2, "0", 0)
menu_additem(menu, ks1, "1", 0)
if(reg_pont[id] == 0){
if(irt[id] == 0){
menu_additem(menu, "\dRegisztrálok", "4", 0)
}
else if(irt[id] == 1){
menu_additem(menu, "Regisztrálok", "2", 0)
}
}
else if(reg_pont[id] == 1){
menu_additem(menu, "Belépek", "3", 0)
}
menu_display(id, menu, 0)
}
}
public reg_h(id, menu, item){
if( item == MENU_EXIT ){
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[9], szName[64], name[32]
get_user_name(id, name, 31)
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
new key = str_to_num(data);
switch(key)
{
case 0: Regisztralas(id)
case 1:{
if(reg_pont[id] == 0){
client_cmd(id, "messagemode REGISZTRACIOS_JELSZO")
}
else if(reg_pont[id] == 1){
client_cmd(id, "messagemode BELEPESI_JELSZO")
}
}
case 2:{
ef_jsz[id] = jelszo
reg_pont[id] = 1
ColorChat(id, GREEN, "Sikeres regisztráció! Jelszavad: %s", mentett_pw[id])
Regisztralas(id)
client_cmd(id, "setinfo _jelszo ^"%s^"", ef_jsz[id])
regisztralas_mentese(id)
}
case 3:{
if(equali(beirt_pw[id], mentett_pw[id])){
belepve[id] = 1
ColorChat(id, GREEN, "Sikeresen beléptél!")
}
else if(probal[id] >= 2){
server_cmd("kick #%i ^"Sok próbálkozás! (3/3)",get_user_userid(id))
}
else if(!equali(beirt_pw[id], mentett_pw[id])){
probal[id]++
ColorChat(id, RED, "Hibás jelszó!")
Regisztralas(id)
}
}
case 4:{
ColorChat(id, RED, "Nem írtál be jelszót!")
Regisztralas(id)
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public belepes_jelszo(id){
read_args(beirt_jelszo, charsmax(beirt_jelszo))
remove_quotes(beirt_jelszo)
new hossz = strlen(beirt_jelszo)
if(equal(beirt_jelszo, ""))
return PLUGIN_HANDLED
if(hossz < 6)
{
ColorChat(id, RED, "Jelszavadnak minimum ^36 ^1betűnek kell lennie!")
client_cmd(id, "messagemode BELEPESI_JELSZO")
}
else
{
beirt_pw[id] = beirt_jelszo
Regisztralas(id)
}
return PLUGIN_CONTINUE
}
public reg_jelszo(id){
if(reg_pont[id] == 0){
read_args(jelszo, charsmax(jelszo))
remove_quotes(jelszo)
new hossz = strlen(jelszo)
if(equal(jelszo, ""))
return PLUGIN_HANDLED
if(hossz < 6)
{
ColorChat(id, RED, "^1 Jelszavadnak minimum ^36 ^1betűnek kell lennie!")
client_cmd(id, "messagemode REGISZTRACIOS_JELSZO")
}
else
{
irt[id] = 1
mentett_pw[id] = jelszo
ef_jsz[id] = jelszo
Regisztralas(id)
}
}
return PLUGIN_CONTINUE
}
public regisztralas_mentese(id){
new Buffer[256]
new adate[128], name[32]
get_time("%x", adate, sizeof adate - 1);
get_user_name(id, name, 31)
format(Buffer, sizeof Buffer - 1, "^"%s^" ^"%s^" ^n^n^n^n", name, mentett_pw[id]);
new file = fopen(users_db_file, "at+");
fprintf(file, Buffer);
fclose(file);
return 1;
}
public nevvaltas(id){
if(!is_user_connected(id))
return FMRES_IGNORED
new regi_nev[32], uj_nev[32], nev[32]
get_user_name(id, nev, 31)
pev(id, pev_netname, regi_nev, charsmax(regi_nev))
if(regi_nev[0])
{
get_user_info(id, "name", uj_nev, charsmax(uj_nev))
if(!equal(regi_nev, uj_nev))
{
if(belepve[id] == 1)
{
set_user_info(id, "name", regi_nev)
ColorChat(id, RED, "^1 A név váltás tiltott!")
return FMRES_HANDLED
}
else
{
set_user_info(id, "name", regi_nev)
ColorChat(id, RED, "^1 A név váltás tiltott!")
return FMRES_HANDLED
}
}
}
return FMRES_IGNORED
}
public save(id) {
new vaultkey[64],vaultdata[256], name[32]
get_user_name(id, name, 31)
format(vaultkey,63,"%s-REG", name)
format(vaultdata,255,"%i#",reg_pont[id])
nvault_set(reg_vault,vaultkey,vaultdata)
return PLUGIN_CONTINUE
}
public load(id) {
new vaultkey[64],vaultdata[256], name[32]
get_user_name(id, name, 31)
format(vaultkey,63,"%s-REG", name)
format(vaultdata,255,"%i#",reg_pont[id])
nvault_get(reg_vault,vaultkey,vaultdata,255)
replace_all(vaultdata, 255, "#", " ")
new a3[32]
parse(vaultdata, a3, 31)
reg_pont[id] = str_to_num(a3)
return PLUGIN_CONTINUE;
}
public client_disconnect(id)
{
save(id)
Saved(id)
belepve[id] = 0
irt[id] = 0
probal[id] = 0
beirt_pw[id] = ""
}
Loaded(id)
{
new nev[35]
get_user_name(id, nev, sizeof(nev)-1)
new adatok[20]
format(adatok, 19, "%s", mentett_pw[id]);
if(fvault_get_data(file, nev, adatok, 19))
{
new pw[32]
parse(adatok, pw, 31);
mentett_pw[id] = pw
}
else
{
mentett_pw[id] = ""
}
}
Saved(id)
{
new nev[35]
get_user_name(id, nev, sizeof(nev)-1)
new adatok[20]
format(adatok, 19, "%s", mentett_pw[id]);
fvault_set_data(file, nev, adatok)
}
public client_putinserver(id)
{
set_task(5.0, "Regisztralas", id)
load(id)
Loaded(id)
}
stock print_color(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4")
replace_all(msg, 190, "!y", "^1")
replace_all(msg, 190, "!t", "^3")
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, get_user_msgid("SayText"), _, players[i])
write_byte(players[i])
write_string(msg)
message_end()
}
}
}
return PLUGIN_HANDLED
}