In Cima:
/* Sistema Registrazione con dialog: Autore: Frank_Mangano aka Marcostox Descrizione: Semplice sistema di registrazione con dialog Bug: Nessuno Fixed: Nessuno Versione: 1.0 */
In Alto:
#include <a_samp> #include <dini> #include <dudb> //Colori (( GLi ho inseriti tanto per ancora vi potrebbero servire )) #define Giallo 0xFFFF00AA #define Azzurro 0x33CCFFAA #define Verde 0x00F600AA #define Rosso 0xF60000AA #define Arancione 0xFF9900AA #define RossoVivace 0xF60000AA #define Bianco 0xFFFFFFFF #define Nero 0x000000AA //Forward forward CaricamentoDatiPlayer(playerid); forward SalvataggioDatiPlayer(playerid); forward CancellaFunzioni(playerid); //Define dei Dialog #define dialogo_registrazione 0 #define dialogo_login 1 //Enum (( Ho usato PlayerInfo xke è il + comune in tutte le gm e non sapevo cosa scrivere... )) enum PlayerInfoSystem { Loggato, pnome, }; //new new PlayerInfo[MAX_PLAYERS][PlayerInfoSystem];
In OnGameModeInit:
CancellaFunzioni(playerid);
In OnPlayerConnect:
new Nome[MAX_PLAYER_NAME], string[128]; new PlayerFile[128]; GetPlayerName(playerid, Nome, sizeof(Nome)); format(PlayerFile, sizeof(PlayerFile), "Impostazioni/Utenti/%s.ini", Nome); if(!dini_Exists(PlayerFile)) { ShowPlayerDialog(playerid, dialogo_registrazione, DIALOG_STYLE_INPUT, "Registrazione", "Non sei ancora registrato.\nPerpiacere inserisci una password:", "Registrati", "Annulla"); } else { ShowPlayerDialog(playerid, dialogo_login, DIALOG_STYLE_INPUT, "Identificazione", "Il tuo account è registrato\nInserisci la tua password:", "Entra", "Annulla"); }
In OnPlayerDisconnect:
if(PlayerInfo[playerid][Loggato] == 2) { SalvataggioDatiPlayer(playerid); } GetPlayerName(playerid,nome,sizeof(nome)); format(stringa,sizeof(stringa),"Impostazioni/Utenti/%s.ini",nome);
In OnPlayerSpawn:
if(PlayerInfo[playerid][Loggato] == 1) { CaricamentoDatiPlayer(playerid); PlayerInfo[playerid][Loggato] = 2; }
In OnDialogResponse:
if(dialogid == dialogo_registrazione) { if(response) { if(!strlen(inputtext)) return ShowPlayerDialog(playerid, dialogo_registrazione, DIALOG_STYLE_INPUT, "Registrazione", "Non sei ancora registrato.\nPerpiacere inserisci una password:", "Registrati", "Annulla"); { new PlayerFile[128], Nome[128]; GetPlayerName(playerid, Nome, sizeof(Nome)); format(PlayerFile, sizeof(PlayerFile), "Impostazioni/Utenti/%s.ini", Nome); dini_Create(PlayerFile); dini_Set(PlayerFile, "Password", inputtext); PlayerInfo[playerid][Loggato] = 2; SendClientMessage(playerid, 0xFFFFFFFF, "Ti sei registrato con successo, sei automaticamente loggato al server"); GivePlayerMoney(playerid, 200); // Da 200 dollari al player appena spawnato dini_FloatSet(PlayerFile, "Pos_X", 0);//Imposta nel dini lo spawn principale cambiare 0 dini_FloatSet(PlayerFile, "Pos_Y", 0);//Imposta nel dini lo spawn principale cambiare 0 dini_FloatSet(PlayerFile, "Pos_Z", 0);//Imposta nel dini lo spawn principale cambiare 0 SalvataggioDatiPlayer(playerid); SetPlayerPos(playerid, dini_Float(PlayerFile, "Pos_X"), dini_Float(PlayerFile, "Pos_Y"), dini_Float(PlayerFile, "Pos_Z")); SetTimerEx("TempoSpawn",1000,false,"d",playerid); //Se il player non spawna aggiungere questo se no rimuoverlo } } return 1; } if(dialogid == dialogo_login) { if(response) { if(!strlen(inputtext)) return ShowPlayerDialog(playerid, dialogo_registrazione, DIALOG_STYLE_INPUT, "Registrazione", "Non sei ancora{FF0000} registrato.\nPerpiacere inserisci una password:", "Registrati", "Annulla"); new PlayerFile[128], Nome[128], Password[256]; GetPlayerName(playerid, Nome, sizeof(Nome)); format(PlayerFile, sizeof(PlayerFile), "Impostazioni/Utenti/%s.ini", Nome); Password = dini_Get(PlayerFile, "Password"); if((!strcmp(Password, inputtext, true))) { PlayerInfo[playerid][Loggato] = 1; SendClientMessage(playerid, 0xFFFFFFFF, "Ti sei loggato con successo"); SetPlayerPos(playerid, dini_Float(PlayerFile, "Pos_X"), dini_Float(PlayerFile, "Pos_Y"), dini_Float(PlayerFile, "Pos_Z")); CaricamentoDatiPlayer(playerid); SetTimerEx("TempoSpawn",1000,false,"d",playerid);//Se il player non spawna aggiungere questo se no rimuoverlo } else { ShowPlayerDialog(playerid, dialogo_login, DIALOG_STYLE_INPUT,"Identificazione", "Password non corretta.\n}Perpiacere inserisci nuovamente la passowrd:", "Entra", "Annulla"); } } else if(!response) { Kick(playerid); } return 1; }
Fuori da tutto:
public CancellaFunzioni(playerid) { PlayerInfo[playerid][Loggato] = 0; return 1; } public SalvataggioDatiPlayer(playerid) { new Nome[MAX_PLAYER_NAME], PlayerFile[128], Float: UltimaPos[3]; GetPlayerName(playerid, Nome,sizeof(Nome)); GetPlayerPos(playerid, UltimaPos[0], UltimaPos[1], UltimaPos[2]); format(PlayerFile, sizeof(PlayerFile),"Impostazioni/Utenti/%s.ini", Nome); if(!fexist(PlayerFile)) { dini_Create(PlayerFile); } dini_IntSet(PlayerFile,"Soldi", GetPlayerMoney(playerid));//Salva i soldi che si posseggono in mano dini_IntSet(PlayerFile,"Esperienza", GetPlayerScore(playerid));//Salva il lv di esperienza dini_IntSet(PlayerFile,"Skin", GetPlayerSkin(playerid));//Salva la skin che si possiede return 1; } public CaricamentoDatiPlayer(playerid) { new Nome[MAX_PLAYER_NAME], PlayerFile[128]; GetPlayerName(playerid, Nome,sizeof(Nome)); format(PlayerFile, sizeof(PlayerFile), "Impostazioni/Utenti/%s.ini", Nome); if(!fexist(PlayerFile)) return 1; SetPlayerScore(playerid, dini_Int(PlayerFile, "Esperienza")); SetPlayerPos(playerid, dini_Float(PlayerFile, "Pos_X"), dini_Float(PlayerFile, "Pos_Y"), dini_Float(PlayerFile, "Pos_Z")); GivePlayerMoney(playerid, dini_Int(PlayerFile, "Soldi"));//Consegna i soldi al player SetPlayerSkin(playerid, dini_Int(PlayerFile, "Skin"));//Imposta la skin al player return 1; PlayerName(playerid) { new pNome[24]; GetPlayerName(playerid, pNome, 24); return pNome; } }
Spero che il rilascio di questi 2 script (( a mio parere non stupendi )) faccia venire la voglia ai novellini di Pawno a imparare bene il pawno e produrne anche loro altri, e che quelli che conoscono il pawno si diano una spinta a pubblicare qualcosa per la community di pawno di gta-expert.it. Speriamo...
Messaggio modificato da Frank_Mangano il 22 giugno 2012 - 16:18