05.02.2013, 14:30
Code:
//WackoX - SQL Tutorial //////////////////////////////////////////////////////////////////////////////// #include <a_samp> #include <a_mysql> //////////////////////////////////////////////////////////////////////////////// #define MYSQL_HOST "ip" #define MYSQL_USER "username" #define MYSQL_DB "database" #define MYSQL_PASS "password" //////////////////////////////////////////////////////////////////////////////// #define COLOR_RED 0x00FFFF #define COLOR_YELLOW 0xFFFFFF //////////////////////////////////////////////////////////////////////////////// #define MAX_PLAYER_PASSWORD 24 //////////////////////////////////////////////////////////////////////////////// #define LOGIN_DIALOG 1 #define REGISTER_DIALOG 2 //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// enum PlayerInfo_t { Name[MAX_PLAYER_NAME], Password[MAX_PLAYER_PASSWORD], Money, Score, Admin, LoggedIn, AccountExists, } //////////////////////////////////////////////////////////////////////////////// new PlayerInfo[MAX_PLAYERS][PlayerInfo_t]; //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //(Created by Westie) explode(const sSource[], aExplode[][], const sDelimiter[] = " ", iVertices = sizeof aExplode, iLength = sizeof aExplode[]) // Created by Westie { new iNode, iPointer, iPrevious = -1, iDelimiter = strlen(sDelimiter); while(iNode < iVertices) { iPointer = strfind(sSource, sDelimiter, false, iPointer); if(iPointer == -1) { strmid(aExplode[iNode], sSource, iPrevious, strlen(sSource), iLength); break; } else { strmid(aExplode[iNode], sSource, iPrevious, iPointer, iLength); } iPrevious = (iPointer += iDelimiter); ++iNode; } return iPrevious; } //////////////////////////////////////////////////////////////////////////////// CheckAccountExists(account[]) { new string[128]; format(string, sizeof(string), "SELECT * FROM Users WHERE Name = '%s'", account); mysql_query(string); mysql_store_result(); new value; value = mysql_num_rows(); mysql_free_result(); return value; } //////////////////////////////////////////////////////////////////////////////// ConnectMySQL() { if(mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DB, MYSQL_PASS)) print("[SERVER-XA][MySQL] Connection to the MySQL Database was successfully!"); else print("[SERVER-XA][MySQL] Could not connect to the MySQL Database!"); } CheckMySQL() { if(mysql_ping() == -1) mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DB, MYSQL_PASS); } //////////////////////////////////////////////////////////////////////////////// RegisterPlayer(playerid, password[]) { if(PlayerInfo[playerid][AccountExists]) return SendClientMessage(playerid, COLOR_RED, "[SERVER-XA][ACCOUNT] >>You're already registered!"); if(PlayerInfo[playerid][LoggedIn]) return SendClientMessage(playerid, COLOR_RED, "[SERVER-XA][ACCOUNT] >>You're already logged in!"); if(strlen(password) < 3 || strlen(password) >= 32) return SendClientMessage(playerid, COLOR_RED, "[SERVER-XA][ACCOUNT] >>Your password is too short or too long!"); CheckMySQL(); new string[128]; format(string, sizeof(string), "INSERT INTO Users (Name,Password) VALUES ('%s','%s')", PlayerInfo[playerid][ Name], password); mysql_query(string); PlayerInfo[playerid][AccountExists] = 1; SendClientMessage(playerid, COLOR_YELLOW, "[SERVER-XA][ACCOUNT] >>Your account has been created, please login now!"); LoginPlayer(playerid, password); return 1; } LoginPlayer(playerid, password[]) { if(!PlayerInfo[playerid][AccountExists]) return SendClientMessage(playerid, COLOR_RED, "[SERVER-XA][ACCOUNT] >>You're not registered!"); if(PlayerInfo[playerid][LoggedIn]) return SendClientMessage(playerid, COLOR_RED, "[SERVER-XA][ACCOUNT] >>You're already logged in!"); if(strlen(password) < 3 || strlen(password) >= 32) return SendClientMessage(playerid, COLOR_RED, "[SERVER-XA][ACCOUNT] >>Your password is too short or too long!"); CheckMySQL(); new string[128]; format(string, sizeof(string), "SELECT * FROM Users WHERE Name = '%s' AND Password = '%s'", PlayerInfo[playerid][Name], password); mysql_query(string); mysql_store_result(); if(!mysql_num_rows()) return SendClientMessage(playerid, COLOR_RED, "[SERVER-XA][ACCOUNT] >>Incorrect password!"); new row[128]; new field[4][32]; mysql_fetch_row_format(row, "|"); explode(row, field, "|"); mysql_free_result(); format(PlayerInfo[playerid][Password], 32, "%s", field[1]); PlayerInfo[playerid][Admin] = strval(field[2]); PlayerInfo[playerid][Money] = strval(field[3]); GivePlayerMoney(playerid,PlayerInfo[playerid][Money]); format(string, sizeof(string), "Welcome back %s, XATTACK!",PlayerInfo[playerid][Name]); SendClientMessage(playerid, COLOR_YELLOW, string); PlayerInfo[playerid][LoggedIn] = 1; return 1; } SavePlayer(playerid) { if(!PlayerInfo[playerid][LoggedIn]) return 0; PlayerInfo[playerid][Money] = GetPlayerMoney(playerid); CheckMySQL(); new string[256]; format(string, sizeof(string), "UPDATE Users SET Password='%s',Admin='%d',Money='%d' WHERE Name='%s'",PlayerInfo[playerid][Password], PlayerInfo[playerid][Admin], PlayerInfo[playerid][Money], PlayerInfo[playerid][Name]); mysql_query(string); return 1; } //////////////////////////////////////////////////////////////////////////////// main() { print("\n----------------------------------"); print(" Bill Gates Computer :P :P Auto Ban as u connect :P :P >:("); print("----------------------------------\n"); } //////////////////////////////////////////////////////////////////////////////// public OnGameModeInit() { SetGameModeText("LTX XAttack"); AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); ConnectMySQL(); return 1; } public OnGameModeExit() { return 1; } //////////////////////////////////////////////////////////////////////////////// public OnPlayerRequestClass(playerid, classid) { SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746); return 1; } public OnPlayerConnect(playerid) { GetPlayerName(playerid, PlayerInfo[playerid][Name], MAX_PLAYER_NAME); if(CheckAccountExists(PlayerInfo[playerid][Name])) { PlayerInfo[playerid][AccountExists] = 1; ShowPlayerDialog(playerid, LOGIN_DIALOG,DIALOG_STYLE_PASSWORD, "Login", "Enter your password to login.If you are a new user, this username is currently in use, please choose another username and restart the game.", "Login", ""); } else { PlayerInfo[playerid][AccountExists] = 0; ShowPlayerDialog(playerid, LOGIN_DIALOG,DIALOG_STYLE_PASSWORD, "Register", "This account is not registerd.Enter a password to register this account.", "Register", ""); } return 1; } public OnPlayerDisconnect(playerid, reason) { SavePlayer(playerid); PlayerInfo[playerid][Admin] = 0; PlayerInfo[playerid][Money] = 0; return 1; } public OnPlayerSpawn(playerid) { return 1; } public OnPlayerDeath(playerid, killerid, reason) { return 1; } public OnVehicleSpawn(vehicleid) { return 1; } public OnVehicleDeath(vehicleid, killerid) { return 1; } public OnPlayerText(playerid, text[]) { return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/mycommand", cmdtext, true, 10) == 0) { // Do something here return 1; } return 0; } public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { return 1; } public OnPlayerExitVehicle(playerid, vehicleid) { return 1; } public OnPlayerStateChange(playerid, newstate, oldstate) { return 1; } public OnPlayerEnterCheckpoint(playerid) { return 1; } public OnPlayerLeaveCheckpoint(playerid) { return 1; } public OnPlayerEnterRaceCheckpoint(playerid) { return 1; } public OnPlayerLeaveRaceCheckpoint(playerid) { return 1; } public OnRconCommand(cmd[]) { return 1; } public OnPlayerRequestSpawn(playerid) { return 1; } public OnObjectMoved(objectid) { return 1; } public OnPlayerObjectMoved(playerid, objectid) { return 1; } public OnPlayerPickUpPickup(playerid, pickupid) { return 1; } public OnVehicleMod(playerid, vehicleid, componentid) { return 1; } public OnVehiclePaintjob(playerid, vehicleid, paintjobid) { return 1; } public OnVehicleRespray(playerid, vehicleid, color1, color2) { return 1; } public OnPlayerSelectedMenuRow(playerid, row) { return 1; } public OnPlayerExitedMenu(playerid) { return 1; } public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid) { return 1; } public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { return 1; } public OnRconLoginAttempt(ip[], password[], success) { return 1; } public OnPlayerUpdate(playerid) { return 1; } public OnPlayerStreamIn(playerid, forplayerid) { return 1; } public OnPlayerStreamOut(playerid, forplayerid) { return 1; } public OnVehicleStreamIn(vehicleid, forplayerid) { return 1; } public OnVehicleStreamOut(vehicleid, forplayerid) { return 1; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { switch(dialogid) { case LOGIN_DIALOG: { LoginPlayer(playerid, inputtext); } case REGISTER_DIALOG: { RegisterPlayer(playerid, inputtext); } } return 1; } public OnPlayerClickPlayer(playerid, clickedplayerid, source) { return 1; }
Here are the errors
Code:
F:\SAMP\gamemodes\XAMode.pwn(81) : warning 217: loose indentation F:\SAMP\gamemodes\XAMode.pwn(82) : error 017: undefined symbol "mysql_query" F:\SAMP\gamemodes\XAMode.pwn(84) : warning 217: loose indentation F:\SAMP\gamemodes\XAMode.pwn(121) : error 017: undefined symbol "mysql_query" F:\SAMP\gamemodes\XAMode.pwn(123) : warning 217: loose indentation F:\SAMP\gamemodes\XAMode.pwn(124) : warning 217: loose indentation F:\SAMP\gamemodes\XAMode.pwn(143) : warning 217: loose indentation F:\SAMP\gamemodes\XAMode.pwn(144) : warning 217: loose indentation F:\SAMP\gamemodes\XAMode.pwn(145) : error 017: undefined symbol "mysql_query" F:\SAMP\gamemodes\XAMode.pwn(166) : warning 217: loose indentation F:\SAMP\gamemodes\XAMode.pwn(182) : warning 217: loose indentation F:\SAMP\gamemodes\XAMode.pwn(184) : error 017: undefined symbol "mysql_query" Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase