· 6 years ago · Apr 15, 2019, 07:08 PM
1#include <a_samp>
2#include <a_mysql>
3
4main(){}
5
6native WP_Hash(buffer[], len, const str[]);
7//Forwardy
8forward bool:IsStrValid(string[]);
9
10//Ustawienia
11#define MONEY_MONEY_START 2500
12
13//Dialogi
14#define REGISTER1_DIALOG 0
15#define LOGIN_DIALOG 1
16
17//Definicje
18#define SKRYPT_NAME "Najlepszy Polski Serwer"
19#define SKRYPT_VER "V1.0.0"
20#define INFO_STRING "{008080}[INFO]{C0C0C0}: "
21#define ERROR_STRING "{FF0000}[BÅÄ„D]{800000}: "
22
23#define GENDER_MALE 0
24#define GENDER_FEMALE 1
25
26//eNUMY
27enum DataPlayer
28{
29 bool:LoggedIn,
30 bool:ShowMouse,
31 Cache:Cache_ID,
32 UID,
33 Password[129],
34 Age,
35 Lvl,
36 Gender,
37 IDSkin,
38 Money,
39 AdminLV
40};
41new Player[MAX_PLAYERS][DataPlayer];
42new MySQL:SQL_ID;
43
44public OnGameModeInit()
45{
46 UsePlayerPedAnims();
47
48 for(new idskinow=0; idskinow < 311; idskinow++)
49 {
50 AddPlayerClass(idskinow, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0);
51 }
52 printf("Gamemode %s %s ® by Kreto Wystartował", SKRYPT_NAME, SKRYPT_VER);
53 if(MySQL_Init())
54 {
55 //Wczytywanie
56 MySQL_SetUpTables();
57
58 //Timer
59 SetTimer("SecondUpdate", 1000, true);
60
61
62 printf("Gamemode %s %s ® by Kreto działa\n", SKRYPT_NAME, SKRYPT_VER);
63 }
64 return 1;
65}
66
67public OnGameModeExit()
68{
69 mysql_close(SQL_ID);
70 return 1;
71}
72
73public OnPlayerRequestSpawn(playerid)
74{
75
76 return 1;
77}
78
79public OnPlayerRequestClass(playerid, classid)
80{
81 SpawnPlayer(playerid);
82 return 1;
83}
84
85public OnPlayerConnect(playerid)
86{
87 ClearPlayerChat(playerid);
88 SetSpawnInfo(playerid, NO_TEAM, 181, 1248.2993,-1563.6338,12.6017, 186.4331, 0, 0, 0, 0, 0, 0);
89 return 1;
90}
91
92
93public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
94{
95 switch(dialogid)
96 {
97 case REGISTER1_DIALOG: //zAKÅADNIE KONTA
98 {
99 if(strlen(inputtext) >= 6 && IsStrValid(inputtext))
100 {
101
102 }
103 }
104 }
105 return 0;
106}
107
108public OnPlayerSpawn(playerid)
109{
110 new query[258];
111 if(Player[playerid][LoggedIn] == false)
112 {
113 // nie zalogowany
114 SetPlayerInterior(playerid, 12);
115 SetPlayerPos(playerid, 2324.3040, -1135.8479, 1051.3047);
116 SetPlayerFacingAngle(playerid, 180.2658);
117 SetPlayerVirtualWorld(playerid, 50 + playerid);
118 SetPlayerCameraPos(playerid, 2324.5247, -1138.4045, 1050.4990);
119 SetPlayerCameraLookAt(playerid, 2324.3040, -1135.8479, 1051.3047);
120 TogglePlayerControllable(playerid, false);
121 ShowPlayerMouse(playerid, true);
122 mysql_format(SQL_ID, query, sizeof query, "SELECT * FROM players_accounts WHERE Login = '%s' LIMIT 1", PlayerName(playerid));
123 mysql_tquery(SQL_ID, query, "OnAccountCheck", "i", playerid);
124 }
125 else
126 {
127 //zalogowany
128
129 }
130 return 1;
131}
132
133//CALLBACK MYSQL
134forward OnAccountCheck(playerid);
135public OnAccountCheck (playerid)
136{
137 if(cache_num_rows() > 0)
138 {
139 //konto odnalezione
140 cache_get_value(0, "password", Player[playerid][Password], 129);
141 Player[playerid][Cache_ID] = cache_save();
142 ShowPlayerDialog(playerid, LOGIN_DIALOG, DIALOG_STYLE_PASSWORD, "Logowanie", "Znaleźliśmy rejestrację Twojego konta. /nPodaj hasło aby zagrać.", "Logowanie", "Opuść Serwer");
143 }
144 else
145 {
146 //Konton nie odnalezione
147 ShowPlayerDialog(playerid, REGISTER1_DIALOG, DIALOG_STYLE_PASSWORD, "REJESTRACJA", "Aby zagrać na serwerze, prosimy stwórz konto. \nHasło proszę wpisać poniżej", "Akceptuj", "Anuluj");
148 }
149 return 1;
150}
151
152stock bool:IsStrValid(string[])
153{
154 new num;
155 new len = strlen(string);
156 for(new i; i < len; i++)
157 switch(string[i])
158 {
159 case 'A'..'Z':num++;
160 case 'a'..'z':num++;
161 case '0'..'9':num++;
162 }
163 if(num == len) return true;
164 else return false;
165}
166
167//Timery
168forward SecondUpdate();
169public SecondUpdate()
170{
171 for(new playerid, j = GetPlayerPoolSize(); playerid <= j; playerid++)
172 {
173 if(IsPlayerConnected(playerid))
174 {
175 if(Player[playerid][ShowMouse])
176 {
177 ShowPlayerMouse(playerid, true);
178 }
179 }
180 }
181 return 1;
182}
183
184//STOCKI
185stock PlayerName(playerid)
186{
187 new name[MAX_PLAYER_NAME];
188 GetPlayerName(playerid, name, sizeof name);
189 return name;
190}
191
192forward ShowPlayerMouse(playerid, bool:show);
193public ShowPlayerMouse(playerid, bool:show)
194{
195 if(show)
196 {
197 SelectTextDraw(playerid, -1);
198 Player[playerid][ShowMouse] = true;
199 }
200 else
201 {
202 CancelSelectTextDraw(playerid);
203 Player[playerid][ShowMouse] = false;
204 }
205 return 1;
206}
207
208stock ClearPlayerChat(playerid)
209{
210 for(new i; i < 15; i++)
211 SendClientMessage(playerid, -1, " ");
212 return 1;
213}
214
215stock MySQL_SetUpTables ()
216{
217 mysql_tquery(SQL_ID, " CREATE TABLE IF NOT EXISTS `Players Accounts` ( \
218 `uid` INT(11) NOT NULL AUTO_INCREMENT, \
219 `Login` TEXT NOT NULL COLLATE 'utf8_polish_ci', \
220 `password` TEXT NOT NULL COLLATE 'utf8_polish_ci', \
221 `ID Skina` INT(11) NOT NULL, \
222 `money` INT(11) NOT NULL DEFAULT '0', \
223 `gender` INT(11) NOT NULL, \
224 `age` INT(11) NOT NULL, \
225 `lvl` INT(11) NOT NULL DEFAULT '1', \
226 `admin lv` INT(11) NOT NULL DEFAULT '0', \
227 `lastip` TEXT NOT NULL COLLATE 'utf8_polish_ci', \
228 `lastonline` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, \
229 `createdate` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, \
230 PRIMARY KEY (`uid`))");
231 return 1;
232}
233
234stock MySQL_Init()
235{
236 mysql_log();
237 SQL_ID = mysql_connect_file("mysql.ini");
238 if(SQL_ID == MYSQL_INVALID_HANDLE ||mysql_errno(SQL_ID) != 0)
239 {
240 print("[MYSQL - BLAD] Nie można było połączyć się z bazą danych! Serwer wyłączony ..!");
241 SendRconCommand("exit");
242 return 0;
243 }
244 print("[MYSQL] Połączenie z bazą danych zostało nawiązane!");
245 return 1;
246}