Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- FB:จ่า สิท
- YouTube: Ja Sit
- อัพเดพ 29 กันยาบน 15:00
- */
- /*
- วิธีสร้าง LEVEL หรือให้เข้าใจง่ายๆคือการเพิ่มข้อมูลหรือตัวแปร
- พี่จะสอนทำแค่ Level
- อันดับแรกให้ไปที enum ก็อบคำนี้ค้นหา
- */
- #include <a_samp>
- #include <a_mysql>
- #include <streamer>
- #include <easyDialog>
- #include <sscanf2>
- #include <crashdetect>
- #include <Pawn.CMD>
- #undef MAX_PLAYERS
- #define MAX_PLAYERS 100
- #define YSI_NO_OPTIMISATION_MESSAGE
- #define YSI_NO_CACHE_MESSAGE
- #define YSI_NO_MODE_CACHE
- #define YSI_NO_HEAP_MALLOC
- #define YSI_NO_VERSION_CHECK
- //--> เชื่อม XAMMPP ใน phpmyAdmin
- #define MYSQL_HOSTNAME "localhost"
- #define MYSQL_USERNAME "root"
- #define MYSQL_PASSWORD ""
- #define MYSQL_DATABASE "test"
- //จุดเกิดเด็กใหม่
- #define SPAWN_POSX 2003.3595
- #define SPAWN_POSY 1543.9191
- #define SPAWN_POSZ 13.5859
- #define SPAWN_POSA 274.7725
- ////////////////////////////
- #define PRESSED(%0) \
- (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
- new PlayerSaveTime[MAX_PLAYERS];
- new MySQL: Database,PlayerName[MAX_PLAYERS][30];
- new CheckLogin[MAX_PLAYERS];
- //Logoserver & TextDraw ForPlayer
- new Text:Logoserver[2];
- new PlayerText:Showmoney[MAX_PLAYERS][1];
- //นี่คือ อีนำ
- enum PlayerData
- {
- ID,
- Password[129],
- pAdmin,
- Money,
- pModel,
- Float:PosX,
- Float:PosY,
- Float:PosZ,
- Float:PosA,
- pLogin,
- //เพิ่ม
- pLevel
- //เพิ่มแล้วให้เราไปที่ SetupPlayerTable
- };
- new playerData[MAX_PLAYERS][PlayerData];
- main(){
- }
- //----------------------------------
- public OnGameModeInit(){
- new MySQLOpt: option_id = mysql_init_options();
- mysql_set_option(option_id, AUTO_RECONNECT, true);
- Database = mysql_connect(MYSQL_HOSTNAME, MYSQL_USERNAME, MYSQL_PASSWORD, MYSQL_DATABASE, option_id);
- if (Database == MYSQL_INVALID_HANDLE || mysql_errno(Database) != 0){
- print("MYSQL ERROR : SERVER OFF");
- SendRconCommand("exit");
- return 1;
- }
- print("MySQL connection is successful.");
- DisableInteriorEnterExits();
- SetupPlayerTable();
- //3DTEXT
- Create3DTextLabel("รับของเด็กใหม่ \nกด N",0x80FF00FF, 2034.9489,1538.9166,10.820, 20,0 ,0);
- //Pickup
- CreatePickup(1239, 23,2034.9489,1538.9166,10.8203, -0);
- Logoserver[0] = TextDrawCreate(516.000000, 425.000000, "Banana");
- TextDrawFont(Logoserver[0], 1);
- TextDrawLetterSize(Logoserver[0], 0.600000, 2.000000);
- TextDrawTextSize(Logoserver[0], 400.000000, 17.000000);
- TextDrawSetOutline(Logoserver[0], 1);
- TextDrawSetShadow(Logoserver[0], 0);
- TextDrawAlignment(Logoserver[0], 1);
- TextDrawColor(Logoserver[0], -65281);
- TextDrawBackgroundColor(Logoserver[0], 255);
- TextDrawBoxColor(Logoserver[0], -65486);
- TextDrawUseBox(Logoserver[0], 0);
- TextDrawSetProportional(Logoserver[0], 1);
- TextDrawSetSelectable(Logoserver[0], 0);
- Logoserver[1] = TextDrawCreate(596.000000, 426.000000, "City");
- TextDrawFont(Logoserver[1], 1);
- TextDrawLetterSize(Logoserver[1], 0.600000, 2.000000);
- TextDrawTextSize(Logoserver[1], 400.000000, 17.000000);
- TextDrawSetOutline(Logoserver[1], 1);
- TextDrawSetShadow(Logoserver[1], 0);
- TextDrawAlignment(Logoserver[1], 1);
- TextDrawColor(Logoserver[1], 852308735);
- TextDrawBackgroundColor(Logoserver[1], 255);
- TextDrawBoxColor(Logoserver[1], 50);
- TextDrawUseBox(Logoserver[1], 0);
- TextDrawSetProportional(Logoserver[1], 1);
- TextDrawSetSelectable(Logoserver[1], 0);
- return 1;
- }
- SetupPlayerTable()
- {
- mysql_tquery(Database, "\n\
- CREATE TABLE IF NOT EXISTS `players`\n\
- (`ID` int(11) NOT NULL AUTO_INCREMENT,\n\
- `Username` varchar(64) NOT NULL,\n\
- `Password` char(128) NOT NULL,\n\
- `Money` int(11) NOT NULL DEFAULT '0',\n\
- `Admins` int(11) NOT NULL DEFAULT '0',\n\
- `Model` int(11) NOT NULL DEFAULT '0',\n\
- `PosX` float NOT NULL DEFAULT '0',\n\
- `PosY` float NOT NULL DEFAULT '0',\n\
- `PosZ` float NOT NULL DEFAULT '0',\n\
- `PosA` float NOT NULL DEFAULT '0',\n\
- `Login` int(11) NOT NULL DEFAULT '0',\n\
- /*`pLevel` int(11) NOT NULL DEFAULT '0',\n\ // นี่คือวิธีสร้าง ต่อไป ไปที่ LoadPlayer*/
- PRIMARY KEY (`ID`), UNIQUE KEY `Username` (`Username`))");
- return 1;
- }
- public OnGameModeExit(){
- TextDrawDestroy(Logoserver[0]);
- TextDrawDestroy(Logoserver[1]);
- return 1;
- }
- public OnPlayerConnect(playerid){
- ShowPlayerTextDraw(playerid);
- new query[140];
- GetPlayerName(playerid, PlayerName[playerid], 30);
- mysql_format(Database, query, sizeof(query), "SELECT `Password`, `ID` FROM `players` WHERE `Username` = '%e' LIMIT 0, 1", PlayerName[playerid]); // We are selecting the password and the ID from the player's name
- mysql_tquery(Database, query, "CheckPlayer", "i", playerid);
- playerData[playerid][Money] = 0;
- PlayerSaveTime[playerid] = 0;
- playerData[playerid][pAdmin] = 0;
- playerData[playerid][pModel] = 0;
- CheckLogin[playerid] = 0;
- return 1;
- }
- stock ShowPlayerTextDraw(playerid){
- PlayerTextDrawHide(playerid, Showmoney[playerid][0]);
- Showmoney[playerid][0] = CreatePlayerTextDraw(playerid, 552.000000, 103.000000, "$00000000");
- PlayerTextDrawFont(playerid, Showmoney[playerid][0], 3);
- PlayerTextDrawLetterSize(playerid, Showmoney[playerid][0], 0.600000, 2.000000);
- PlayerTextDrawTextSize(playerid, Showmoney[playerid][0], 450.500000, 118.500000);
- PlayerTextDrawSetOutline(playerid, Showmoney[playerid][0], 1);
- PlayerTextDrawSetShadow(playerid, Showmoney[playerid][0], 0);
- PlayerTextDrawAlignment(playerid, Showmoney[playerid][0], 2);
- PlayerTextDrawColor(playerid, Showmoney[playerid][0], 16777215);
- PlayerTextDrawBackgroundColor(playerid, Showmoney[playerid][0], 255);
- PlayerTextDrawBoxColor(playerid, Showmoney[playerid][0], 255);
- PlayerTextDrawUseBox(playerid, Showmoney[playerid][0], 1);
- PlayerTextDrawSetProportional(playerid, Showmoney[playerid][0], 1);
- PlayerTextDrawSetSelectable(playerid, Showmoney[playerid][0], 0);
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason){
- new query[2566];
- if(CheckLogin[playerid] == 1){
- GetPlayerPos(playerid, playerData[playerid][PosX],playerData[playerid][PosY],playerData[playerid][PosZ]);
- GetPlayerFacingAngle(playerid, playerData[playerid][PosA]);
- mysql_format(Database, query, sizeof(query), "UPDATE `players` SET `PosX` = '%f',`PosY` = '%f',`PosZ` = '%f',`PosA` = '%f' WHERE `ID` = '%d'",
- playerData[playerid][PosX],playerData[playerid][PosY],playerData[playerid][PosZ],playerData[playerid][PosA],playerData[playerid][ID]);
- mysql_tquery(Database, query);
- SavePlayer(playerid);
- }
- PlayerTextDrawDestroy(playerid, Showmoney[playerid][0]);
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- TextDrawShowForPlayer(playerid, Logoserver[0]);
- TextDrawShowForPlayer(playerid, Logoserver[1]);
- PlayerTextDrawShow(playerid, Showmoney[playerid][0]);
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////
- SetPlayerSkin(playerid, playerData[playerid][pModel]);
- SetPlayerPos(playerid,playerData[playerid][PosX],playerData[playerid][PosY],playerData[playerid][PosZ]);
- SetPlayerFacingAngle(playerid, playerData[playerid][PosA]);
- SetPlayerInterior(playerid, 0);
- SetPlayerVirtualWorld(playerid, 0);
- return 1;
- }
- forward CheckPlayer(playerid);
- public CheckPlayer(playerid){
- new rows, string[150];
- cache_get_row_count(rows);
- if(rows) {
- cache_get_value_name(0, "Password", playerData[playerid][Password], 129);
- cache_get_value_name_int(0, "ID", playerData[playerid][ID]);
- format(string, sizeof(string), "{FFFFFF}คุณมีบัญชีในเซิร์ฟเวอร์แล้ว\n\nกรุณาใส่รหัสผ่านด้านล่าง\nเพื่อทำการล้อกอินเข้าสู่เซิร์ฟเวอร์");
- Dialog_Show(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "({FFFFFF}{00FF13}ล็อกอิน{00FF13}{FFFFFF})", string, "ล็อกอิน", "");
- }
- else {
- format(string, sizeof(string), "{FFFFFF}คุณยังไม่มีบัญชีในเซิร์ฟเวอร์\n\nกรุณาใส่รหัสผ่านด้านล่าง\nเพื่อทำการสมัครสมาชิก ในเซิร์ฟเวอร์");
- Dialog_Show(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "({FFFFFF}{FF0000}สมัคร{FF0000}{FFFFFF})", string, "สมัคร", "");
- }
- return 1;
- }
- //--> ล็อกอิน
- Dialog:DIALOG_LOGIN(playerid, response, listitem, inputtext[]){
- if(!response)
- return Kick(playerid);
- new query[100];
- if(!strcmp(inputtext, playerData[playerid][Password])) {
- mysql_format(Database, query, sizeof(query), "SELECT * FROM `players` WHERE `Username` = '%e' LIMIT 0, 1", PlayerName[playerid]);
- mysql_tquery(Database, query, "LoadPlayer", "i", playerid);
- CheckLogin[playerid] = true;
- }
- else {
- Dialog_Show(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "{FF0000}Wrong Password!\n{FFFFFF}Type your correct password below to continue and sign in to your account", "Login", "Exit");
- }
- return 1;
- }
- //--> สมัคร
- Dialog:DIALOG_REGISTER(playerid, response, listitem, inputtext[]){
- if(!response)
- return Kick(playerid);
- if(strlen(inputtext) < 3){
- SendClientMessage(playerid, 0xFF0000, "คุณใส่รหัสผ่านผิด ห้ามใส่ผิดเกิน 3 รอบ");
- return CheckPlayer(playerid);
- }
- new query[300];
- format(playerData[playerid][Password], 64, inputtext);
- mysql_format(Database, query, sizeof(query), "INSERT INTO `players` (`Username`, `Password`, `Money`, `Admins`, `model`,`PosX`,`PosY`,`PosZ`,`PosA`) VALUES ('%e','%e', 1000, 0, 22, 2003.3595,1543.9191,13.5859,274.7725)", PlayerName[playerid], playerData[playerid][Password]);
- mysql_pquery(Database, query, "RegisterPlayer", "i", playerid);
- return 1;
- }
- forward LoadPlayer(playerid);
- public LoadPlayer(playerid){
- cache_get_value_name_int(0, "Money", playerData[playerid][Money]);
- GivePlayerMoney(playerid, playerData[playerid][Money]);
- cache_get_value_name_int(0, "Admins", playerData[playerid][pAdmin]);
- cache_get_value_name_int(0, "Model",playerData[playerid][pModel]);
- cache_get_value_name_float(0, "PosX",playerData[playerid][PosX]);
- cache_get_value_name_float(0, "PosY",playerData[playerid][PosY]);
- cache_get_value_name_float(0, "PosZ",playerData[playerid][PosZ]);
- cache_get_value_name_float(0, "PosA",playerData[playerid][PosA]);
- cache_get_value_name_int(0, "Login",playerData[playerid][pLogin]);
- //ส่วนตรงนี้ให้เพิ่ม ตามตัวอย่างแค่เปลี่ยนชื่อตัวแปร เช่น
- //cache_get_value_name_int(0, "Level",playerData[playerid][pLevel]);
- //ต่อไปเราจะทำให้มันเพิ่มค่าและอัพเดทค่า ไปที่ด้านล่างสุด
- PlayerSaveTime[playerid] = 1;
- SpawnPlayer(playerid);
- return 1;
- }
- forward SavePlayer(playerid);
- public SavePlayer(playerid){
- new query[2048];
- mysql_format(Database, query, sizeof(query), "UPDATE `players` SET `Money` = '%d',`Admins` = '%d',`Model` = '%d' WHERE `ID` = '%d'",
- playerData[playerid][Money],
- playerData[playerid][pAdmin],
- playerData[playerid][pModel],
- playerData[playerid][ID]);
- mysql_tquery(Database, query);
- return 1;
- }
- //--> เวลาผู้เล่นสมัครสมาชิกมาเสร็จ
- forward RegisterPlayer(playerid);
- public RegisterPlayer(playerid){
- new string[150];
- playerData[playerid][ID] = cache_insert_id();
- printf("ID ใหม่ได้สมัครเข้ามาแล้ว SQL ID : %d", playerData[playerid][ID]);
- cache_get_value_name(0, "Password", playerData[playerid][Password], 129);
- cache_get_value_name_int(0, "ID", playerData[playerid][ID]);
- format(string, sizeof(string), "{FFFFFF}คุณมีบัญชีในเซิร์ฟเวอร์แล้ว\n\nกรุณาใส่รหัสผ่านด้านล่าง\nเพื่อทำการล้อกอินเข้าสู่เซิร์ฟเวอร์");
- Dialog_Show(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "({FFFFFF}{00FF13}ล็อกอิน{00FF13}{FFFFFF})", string, "ล็อกอิน", "");
- return 1;
- }
- stock UpdatePlayer(playerid, const field_name[], const set[], const type[])
- {
- new query[256];
- if(!strcmp(type, "d", true))
- {
- mysql_format(Database, query, sizeof(query), "UPDATE `players` SET `%s` = '%d' WHERE `ID` = '%d'",field_name,set, playerData[playerid][ID]);
- }
- else if(!strcmp(type, "s", true))
- {
- mysql_format(Database, query, sizeof(query), "UPDATE `players` SET `%s` = '%s' WHERE `ID` = '%d'",field_name,set, playerData[playerid][ID]);
- }
- mysql_tquery(Database, query);
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if (PRESSED(KEY_NO))
- {
- if(IsPlayerInRangeOfPoint(playerid, 2.0, 2034.9489,1538.9166,10.8203)){
- if (!IsPlayerInAnyVehicle(playerid))
- {
- if(playerData[playerid][pLogin] == 1) return SendClientMessage(playerid, -1, "คุณได้รับของเด็กใหม่ไปแล้ว..");
- new ran = random(4);
- if(ran == 0){
- playerData[playerid][pLogin] = 1;
- SetPlayerSkin(playerid, 22);
- playerData[playerid][pModel] = 22;
- UpdatePlayer(playerid, "Login", playerData[playerid][pLogin],"d");
- UpdatePlayer(playerid, "Model", playerData[playerid][pModel],"d");
- SendClientMessage(playerid, -1, "คุณได้รับ สกิน 22 แล้ว ....");
- return 1;
- }
- if(ran == 1){
- playerData[playerid][pLogin] = 1;
- UpdatePlayer(playerid, "Login", playerData[playerid][pLogin],"d");
- SendClientMessage(playerid, -1, "คุณได้ไม่ได้รับอะไรเลย ....");
- }
- if(ran == 2){
- playerData[playerid][pLogin] = 1;
- GivePlayerMoney(playerid, 5000);
- playerData[playerid][Money] += 5000;
- UpdatePlayer(playerid, "Login", playerData[playerid][pLogin],"d");
- UpdatePlayer(playerid, "Money", playerData[playerid][Money],"d");
- SendClientMessage(playerid, -1, "คุณได้รับ เงิน จำนวน 5000 บาท แล้ว ....");
- }
- if(ran == 3){
- playerData[playerid][pLogin] = 1;
- UpdatePlayer(playerid, "Login", playerData[playerid][pLogin],"d");
- SendClientMessage(playerid, -1, "คุณได้ไม่ได้รับอะไรเลย ....");
- }
- return 1;
- }
- else{
- SendClientMessage(playerid, -1, "คุณต้องไม่อยู่บนรถ...");
- }
- }
- }
- return 1;
- }
- public OnPlayerUpdate(playerid){
- new string[256];
- format(string, 256, "$%d", playerData[playerid][Money]);
- PlayerTextDrawSetString(playerid, Showmoney[playerid][0], string);
- return 1;
- }
- CMD:login(playerid){
- if(IsPlayerInRangeOfPoint(playerid, 2.0, 2034.9489,1538.9166,10.8203)){
- if (!IsPlayerInAnyVehicle(playerid))
- {
- if(playerData[playerid][pLogin] == 1) return SendClientMessage(playerid, -1, "คุณได้รับของเด็กใหม่ไปแล้ว..");
- new ran = random(4);
- if(ran == 0){
- playerData[playerid][pLogin] = 1;
- SetPlayerSkin(playerid, 22);
- playerData[playerid][pModel] = 22;
- UpdatePlayer(playerid, "Login", playerData[playerid][pLogin],"d");
- UpdatePlayer(playerid, "Model", playerData[playerid][pModel],"d");
- SendClientMessage(playerid, -1, "คุณได้รับ สกิน 22 แล้ว ....");
- return 1;
- }
- if(ran == 1){
- playerData[playerid][pLogin] = 1;
- UpdatePlayer(playerid, "Login", playerData[playerid][pLogin],"d");
- SendClientMessage(playerid, -1, "คุณได้ไม่ได้รับอะไรเลย ....");
- }
- if(ran == 2){
- playerData[playerid][pLogin] = 1;
- GivePlayerMoney(playerid, 5000);
- playerData[playerid][Money] += 5000;
- UpdatePlayer(playerid, "Login", playerData[playerid][pLogin],"d");
- UpdatePlayer(playerid, "Money", playerData[playerid][Money],"d");
- SendClientMessage(playerid, -1, "คุณได้รับ เงิน จำนวน 5000 บาท แล้ว ....");
- }
- if(ran == 3){
- playerData[playerid][pLogin] = 1;
- UpdatePlayer(playerid, "Login", playerData[playerid][pLogin],"d");
- SendClientMessage(playerid, -1, "คุณได้ไม่ได้รับอะไรเลย ....");
- }
- return 1;
- }
- else{
- SendClientMessage(playerid, -1, "คุณต้องไม่อยู่บนรถ...");
- }
- }
- return 1;
- }
- CMD:givemoeny(playerid, params[]){
- new id, amont, str[256];
- if(sscanf(params,"id", id, amont)) return SendClientMessage(playerid, -1, "[วิธีใช้คำสั่ง] /giveitemmoney [ID] [amont]");
- if(IsPlayerConnected(id)){
- playerData[id][Money] += amont;
- GivePlayerMoney(id, amont);
- UpdatePlayer(playerid, "Money", playerData[playerid][Money],"d");
- format(str, 256, "คุณ%s ได้เสกเงินจำนวน %d บาท ให้กับ %s",ReturnPlayerName(playerid), amont, ReturnPlayerName(id));
- SendClientMessage(playerid, -1, str);
- format(str, 256, "คุณ%s ได้รับเงินจำนวน %d บาท จาก %s",ReturnPlayerName(id), amont, ReturnPlayerName(playerid));
- SendClientMessage(playerid, -1, str);
- }
- else {
- SendClientMessage(playerid, -1, "ผู้เล่นคนนี้ไม่ได้ออนไลน์");
- }
- return 1;
- }
- stock ReturnPlayerName(playerid)
- {
- new
- str[MAX_PLAYER_NAME];
- GetPlayerName(playerid, str, sizeof (str));
- return str;
- }
- //ตรงนี้ เราจะทำให้มัน Set ค่า พร้อม Update ค่า
- //สร้างคำสั่งตามนี้
- CMD:givelevel(playerid, params[]){
- //วิธีการทำ Setค่า
- new id, amont, str[256];
- if(sscanf(params,"id", id, amont)) return SendClientMessage(playerid, -1, "[วิธีใช้คำสั่ง] /giveitemmoney [ID] [amont]");
- if(IsPlayerConnected(id)){ //ส่วนตัวนี้เอาไว้เซ็ตว่ามีใครออน ถ้าไม่มีออนก็จะขึ้น ผู้เล่นคนนี้ไม่ได้ออนไลน์
- playerData[id][pLevel] += amont; //ตัวนี้เอาไว้ Set ค่า
- UpdatePlayer(playerid, "Level", playerData[playerid][pLevel],"d");// ส่วนตัวนี้เอาไว้อัพเดทค่า
- format(str, 256, "คุณ%s ได้เสก Level จำนวน %d เวล ให้กับ %s",ReturnPlayerName(playerid), amont, ReturnPlayerName(id));
- SendClientMessage(playerid, -1, str);
- format(str, 256, "คุณ%s ได้รับ Level จำนวน %d บาท จาก แอดมิน %s",ReturnPlayerName(id), amont, ReturnPlayerName(playerid));
- SendClientMessage(playerid, -1, str);
- }
- else {
- SendClientMessage(playerid, -1, "ผู้เล่นคนนี้ไม่ได้ออนไลน์");
- }
- return 1;
- }
- //ไม่เข้าใจทักมาได้้นะ
Add Comment
Please, Sign In to add comment