Hello!
Már régen publikáltam, ezért írtam egy regisztrációs filterscriptet.
Tudom, hogy nem nagy szám, nem is azért írtam, hogy majd ezzel nyerem el a 2011-es év filterscriptje díjat hanem azért, hogy a kezdõ scripterek megtanulják a fájlokkal való munkát. Azért használtam a dini-t mert a scriptek 98%-át ezzel írják. Ha valamit egyszerûbben is meglehet(ett volna) oldani akkor írjatok és megcsinálom.
UPDATE 2012:Mivel törölték felrakom máshova. Lehet, hogy nem ez volt, viszont ugyan olyan regisztrációs script plusz tartalmaz egy bank rendszert is.
Parancsok:deposit [összeg] - pénzt rak be a számládra
withdraw [összeg] - pénzt vesz ki a számládról
balance - Megnézi mennyi pénz van a számládon
stats - statisztikád (pont, pénz, halálok, ölések, csatlakozások)
Letöltés:Solidfiles Pastebin
#include <a_samp>
#include <Dini>
#include <zcmd>
#include <sscanf2>
#define COLOR_RED 0xF60000AA
#define COLOR_GREEN 0x33AA33AA
#define DIALOG_REGISTER 1337
#define DIALOG_LOGIN 1338
#define DEPOSIT 1339
#define WITHDRAW 1440
#define Mappa \"Users\"
new fajl[256], str[128];
public OnPlayerConnect(playerid)
{
SetPVarInt(playerid, \"Bejelentkezve\", 0);
format(fajl, 256,\"%s/%s.ini\", Mappa, GetPlayerNameEx(playerid));
if(!dini_Exists(fajl))
{
format(str, 128,\"Hello %s!\\nTe még nem regisztráltál!\\nÍrj be egy jelszót!\", GetPlayerNameEx(playerid));
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,\"Regisztráció\", str,\"Regisztrál\",\"Kilép\");
}
else
{
format(str, 128,\"Hello %s!\\nEz a név regisztrálva van\\nKérlek jelentkezz be!\", GetPlayerNameEx(playerid));
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,\"Belépés\", str, \"Belépés\", \"Kilépés\");
}
return 1;
}
public OnPlayerDisconnect(playerid)
{
format(fajl, 256, \"%s/%s.ini\", Mappa, GetPlayerNameEx(playerid));
if(dini_Exists(fajl))
{
dini_Create(fajl);
dini_IntSet(fajl,\"Pénz\", GetPlayerMoney(playerid));
dini_IntSet(fajl,\"Ölések\", GetPVarInt(playerid, \"Ölések\"));
dini_IntSet(fajl,\"Halálok\", GetPVarInt(playerid, \"Halálok\"));
dini_IntSet(fajl,\"BankMoney\", GetPVarInt(playerid, \"BankMoney\"));
}
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
SetPVarInt(playerid, \"Halálok\", GetPVarInt(playerid, \"Halálok\")+1);
SetPVarInt(killerid, \"Ölések\", GetPVarInt(killerid, \"Ölések\")+1);
SetPlayerScore(killerid, GetPlayerScore(killerid)+1);
SetPlayerScore(playerid, GetPlayerScore(playerid)-1);
GivePlayerMoney(killerid, 2000);
GivePlayerMoney(playerid, -1000);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_REGISTER)
{
if(response)
{
if(!inputtext[0] && !strlen(inputtext)) ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,\"Regisztráció\", \"Nem írtál be semmit!\",\"Regisztrál\",\"Kilép\");
else
{
dini_Create(fajl);
dini_Set(fajl,\"Jelszó\", inputtext);
dini_IntSet(fajl,\"Pénz\", GetPlayerMoney(playerid));
dini_IntSet(fajl,\"Ölések\", GetPVarInt(playerid, \"Ölések\"));
dini_IntSet(fajl,\"Halálok\", GetPVarInt(playerid, \"Halálok\"));
dini_IntSet(fajl,\"Csatlakozások\", 1);
dini_IntSet(fajl,\"Kickelve\", 0);
dini_IntSet(fajl,\"BankMoney\", 0);
SetPVarInt(playerid, \"Bejelentkezve\", 1);
SetPVarInt(playerid, \"Kickelve\", 0);
SendClientMessage(playerid, 0x33AA33AA, \"Sikeresen Regisztráltál!\");
}
}
else Kick(playerid);
}
if(dialogid == DIALOG_LOGIN)
{
if(response)
{
if(!inputtext[0] && !strlen(inputtext)) ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,\"Belépés\", \"Nem írtál be semmit!\", \"Belépés\", \"Kilépés\");
else if(strcmp(inputtext, dini_Get(fajl, \"Jelszó\"), false) != 0)
{
SendClientMessage(playerid, COLOR_RED, \"Hibás jelszó!\");
Kick(playerid);
}
else
{
SetPVarInt(playerid, \"Bejelentkezve\", 1);
GivePlayerMoney(playerid, dini_Int(fajl, \"Pénz\"));
SetPVarInt(playerid, \"Ölések\", dini_Int(fajl,\"Ölések\"));
SetPVarInt(playerid, \"Halálok\", dini_Int(fajl,\"Halálok\"));
SetPVarInt(playerid, \"Kickelve\", dini_Int(fajl,\"Kickelve\"));
SetPVarInt(playerid, \"BankMoney\", dini_Int(fajl,\"BankMoney\"));
SetPVarInt(playerid, \"Csatlakozások\", dini_Int(fajl,\"Csatlakozások\"));
dini_IntSet(fajl,\"Csatlakozások\", GetPVarInt(playerid, \"Csatlakozások\")+1);
SendClientMessage(playerid, COLOR_GREEN, \"Sikeresen Bejelentkeztél!\");
}
}
else Kick(playerid);
}
if(dialogid == DEPOSIT)
{
if(strval(inputtext) > GetPlayerMoney(playerid)) return SendClientMessage(playerid,0xFFFFFFFF,\"Nincs ennyi pénzed!\");
else if(!IsNumeric(inputtext)) return SendClientMessage(playerid,0xFFFFFFFF,\"Számokat!\"),ShowPlayerDialog(playerid, DEPOSIT, DIALOG_STYLE_INPUT,\"Bank\",\"Írd be, hogy menni pénzt szeretnél betenni a számládra.\",\"Betesz\",\"Back\");
else
{
new jaj = GetPVarInt(playerid, \"BankMoney\");
GivePlayerMoney(playerid, -strval(inputtext));
SetPVarInt(playerid, \"BankMoney\", jaj += strval(inputtext));
dini_IntSet(fajl,\"BankMoney\", GetPVarInt(playerid, \"BankMoney\"));
}
}
if(dialogid == WITHDRAW)
{
if(strval(inputtext) > GetPVarInt(playerid, \"BankMoney\")) return SendClientMessage(playerid,0xFFFFFFFF,\"Nincs ennyi pénz a számládon!\");
else if(!IsNumeric(inputtext)) return SendClientMessage(playerid,0xFFFFFFFF,\"Számokat!\"),ShowPlayerDialog(playerid, WITHDRAW, DIALOG_STYLE_INPUT,\"Bank\",\"Írd be, hogy menni pénzt szeretnél kivenni a számládról.\",\"Kivesz\",\"Mégse\");
else
{
new jaj = GetPVarInt(playerid, \"BankMoney\");
GivePlayerMoney(playerid, strval(inputtext));
SetPVarInt(playerid, \"BankMoney\", jaj -= strval(inputtext));
dini_IntSet(fajl,\"BankMoney\", GetPVarInt(playerid, \"BankMoney\"));
}
}
return 1;
}
CMD:deposit(playerid, params[])
{
ShowPlayerDialog(playerid, DEPOSIT, DIALOG_STYLE_INPUT,\"Bank\",\"Írd be, hogy menni pénzt szeretnél betenni a számládra.\",\"Betesz\",\"Mégse\");
return 1;
}
CMD:withdraw(playerid, params[])
{
ShowPlayerDialog(playerid, WITHDRAW, DIALOG_STYLE_INPUT,\"Bank\",\"Írd be, hogy menni pénzt szeretnél kivenni a számládról.\",\"Kivesz\",\"Mégse\");
return 1;
}
CMD:balance(playerid, params[])
{
format(str, 128, \"{FFFFFF}A számládon levõ összeg: {FF8843}%d\",GetPVarInt(playerid, \"BankMoney\"));
SendClientMessage(playerid, 0xFFFFFFFF, str);
return 1;
}
CMD:stats(playerid, params[])
{
format(str, 128, \"Név: %s, Pontok: %d, Pénz: %d, Halálok száma: %d, Ölések száma: %d, Csatlakozások száma: %d\",
GetPlayerNameEx(playerid),
GetPlayerScore(playerid),
GetPlayerMoney(playerid),
GetPVarInt(playerid, \"Halálok\"),
GetPVarInt(playerid, \"Ölések\"),
GetPVarInt(playerid, \"Csatlakozások\"));
return SendClientMessage(playerid, 0xFFFFFFFF, str);
}
stock GetPlayerNameEx(playerid) { new name[MAX_PLAYER_NAME]; GetPlayerName(playerid, name, MAX_PLAYER_NAME); return name;}
stock IsNumeric(string[])
{
for (new i = 0, j = strlen(string); i < j; i++) if (string > \'9\' || string < \'0\') return 0;
return 1;
}