13.05.2014, 14:13
Nop, still spawning in the same point.
Is not loading the saved pos.
Is not loading the saved pos.
Код:
#include <a_samp> #include <a_mysql> //MySQL ajustes #define host "localhost" #define user "root" #define db "server" #define pass "" //Dialogs #define dregister 6287 #define dlogin 6288 //Variables globales static mysql, Name[MAX_PLAYERS][24], IP[MAX_PLAYERS][16]; //Enums enum PDATA { ID, Password[129], Admin, VIP, Money, Float:Posx, Float:Posy, Float:Posz } new pInfo[MAX_PLAYERS][PDATA]; main(){} public OnGameModeInit() { mysql_log(LOG_ERROR | LOG_WARNING | LOG_DEBUG); mysql = mysql_connect(host, user, db, pass); if(mysql_errno(mysql) != 0) print("No se ha podido conectar a la base de datos."); SetGameModeText("Yay"); AddPlayerClass(0, 1643.4510, -2287.4954, -1.1971, 0.0, 0, 0, 0, 0, 0, 0); return 1; } public OnPlayerRequestClass(playerid, classid) { SetPlayerPos(playerid, pInfo[playerid][Posx], pInfo[playerid][Posy], pInfo[playerid][Posz]); SetPlayerCameraPos(playerid, pInfo[playerid][Posx], pInfo[playerid][Posy], pInfo[playerid][Posz]); SetPlayerCameraLookAt(playerid, pInfo[playerid][Posx], pInfo[playerid][Posy], pInfo[playerid][Posz]); return 1; } public OnPlayerConnect(playerid) { new query[128]; GetPlayerName(playerid, Name[playerid], 24); GetPlayerIp(playerid, IP[playerid], 16); pInfo[playerid][Posx] = 0.0; pInfo[playerid][Posy] = 0.0; pInfo[playerid][Posz] = 0.0; mysql_format(mysql, query, sizeof(query), "SELECT `Password`, `ID` FROM `players` WHERE `Username` = '%e' LIMIT 1", Name[playerid]); mysql_tquery(mysql, query, "OnAccountCheck", "i", playerid); return 1; } public OnPlayerDisconnect(playerid, reason) { new query[128], Float:pos[3]; GetPlayerPos(playerid, pos[0], pos[1], pos[2]); mysql_format(mysql, query, sizeof(query), "UPDATE `players` SET `Admin`=%d, `VIP`=%d, `Money`=%d, `posx`=%f, `posy`=%f, `posz`=%f WHERE `ID`=%d", pInfo[playerid][Admin], pInfo[playerid][VIP], pInfo[playerid][Money], pos[0], pos[1], pos[2], pInfo[playerid][ID]); mysql_tquery(mysql, query, "", ""); 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; } forward OnAccountCheck(playerid); public OnAccountCheck(playerid) { new rows, fields; cache_get_data(rows, fields, mysql); if(rows) { cache_get_field_content(0, "PASS", pInfo[playerid][Password], mysql, 129); pInfo[playerid][ID] = cache_get_field_content_int(0, "ID"); printf("%s", pInfo[playerid][Password]); ShowPlayerDialog(playerid, dlogin, DIALOG_STYLE_INPUT, "Login", "Bienvenido! Porfavor, introduce tu contraseсa para entrar.", "Login", "Salir"); }else { ShowPlayerDialog(playerid, dregister, DIALOG_STYLE_INPUT, "Registro", "Bienvenido! Porfavor, introduce una contraseсa para registrarte.", "Registrar", "Salir"); } return 1; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { switch(dialogid) { case dlogin: { if(!response) Kick(playerid); new hpass[129]; new query[100]; if(!strcmp(hpass, pInfo[playerid][Password])) { mysql_format(mysql, query, sizeof(query), "SELECT * FROM `players` WHERE `username` = %e LIMIT 1", Name[playerid]); mysql_tquery(mysql, query, "OnAccountLoad", "i", playerid); } else { ShowPlayerDialog(playerid, dlogin, DIALOG_STYLE_INPUT, "Login", "Contraseсa incorrecta!\nIntentalo de nuevo.", "Login", "Salir"); } } case dregister: { if(!response) return Kick(playerid); if(strlen(inputtext) < 6) return ShowPlayerDialog(playerid, dregister, DIALOG_STYLE_INPUT, "Register", "Tu contraseсa es demasiado corta!\nIntroduce una mas larga.", "Registrar", "Salir"); printf("Nueva cuenta registrada. Contraseсa: %s", inputtext); new query[300]; mysql_format(mysql, query, sizeof(query), "INSERT INTO `players` (`Username`, `Password`, `IP`, `Admin`, `VIP`, `Money`, `posx`, `posy`, `posz`) VALUES ('%e', '%s', '%s', 0, 0, 0, 1958.3783, 1343.1572, 15.3746)", Name[playerid], inputtext, IP[playerid]); mysql_tquery(mysql, query, "OnAccountRegister", "i", playerid); } } return 1; } public OnPlayerClickPlayer(playerid, clickedplayerid, source) { return 1; } forward OnAccountLoad(playerid); forward OnAccountRegister(playerid); public OnAccountLoad(playerid) { pInfo[playerid][Admin] = cache_get_field_content_int(0, "Admin"); pInfo[playerid][VIP] = cache_get_field_content_int(0, "VIP"); pInfo[playerid][Money] = cache_get_field_content_int(0, "Money"); pInfo[playerid][Posx] = cache_get_field_content_float(0, "Posx"); pInfo[playerid][Posy] = cache_get_field_content_float(0, "Posy"); pInfo[playerid][Posz] = cache_get_field_content_float(0, "Posz"); SetSpawnInfo(playerid, 0, 0, pInfo[playerid][Posx], pInfo[playerid][Posy], pInfo[playerid][Posz], 0, 0, 0, 0, 0, 0, 0); SpawnPlayer(playerid); GivePlayerMoney(playerid, pInfo[playerid][Money]); SendClientMessage(playerid, -1, "Datos cargados correctamente"); return 1; } public OnAccountRegister(playerid) { pInfo[playerid][ID] = cache_insert_id(); printf("Nueva cuenta registrada. ID: %d", pInfo[playerid][ID]); return 1; }