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