Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include a_samp
- #include a_mysql
- #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
- #define MAX_SERVER_CARS 500
- enum ServerCars
- {
- sCarID,
- sModelID,
- Float:sX,
- Float:sY,
- Float:sZ,
- Float:sA,
- sColor1,
- sColor2
- }
- new ServerVeh[MAX_SERVER_CARS][ServerCars];
- new ServerVehIDX=0;
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print("MySQL carspawner by Perry_Cox");
- print("--------------------------------------\n");
- mysql_connect("127.0.0.1", "root", "Test", "");//IP/User/Datenbank/Passwort
- if(mysql_ping()==1)
- {
- new string[512],servercarid;
- mysql_query("CREATE TABLE IF NOT EXISTS `ServerCars` (`carID` int(11), `carModel` int(11), `Farbe1` int(11), `Farbe2` int(11), `X` float(20), `Y` float(20), `Z` float(20), `A` float(20), PRIMARY KEY (`carID`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
- mysql_query("SELECT * FROM `ServerCars`");
- mysql_store_result();
- if(mysql_num_rows() != 0)
- {
- while(mysql_retrieve_row())
- {
- mysql_fetch_field_row(string,"carID");
- ServerVeh[ServerVehIDX][sCarID] = strval(string);
- mysql_fetch_field_row(string,"carModel");
- ServerVeh[ServerVehIDX][sModelID] = strval(string);
- mysql_fetch_field_row(string,"X");
- ServerVeh[ServerVehIDX][sX] = floatstr(string);
- mysql_fetch_field_row(string,"Y");
- ServerVeh[ServerVehIDX][sY] = floatstr(string);
- mysql_fetch_field_row(string,"Z");
- ServerVeh[ServerVehIDX][sZ] = floatstr(string);
- mysql_fetch_field_row(string,"A");
- ServerVeh[ServerVehIDX][sA] = floatstr(string);
- mysql_fetch_field_row(string,"Farbe1");
- ServerVeh[ServerVehIDX][sColor1] = strval(string);
- mysql_fetch_field_row(string,"Farbe2");
- ServerVeh[ServerVehIDX][sColor2] = strval(string);
- servercarid = AddStaticVehicleEx(ServerVeh[ServerVehIDX][sModelID],ServerVeh[ServerVehIDX][sX],ServerVeh[ServerVehIDX][sY],ServerVeh[ServerVehIDX][sZ],ServerVeh[ServerVehIDX][sA],ServerVeh[ServerVehIDX][sColor1],ServerVeh[ServerVehIDX][sColor2],1000*60*5);
- format(string, sizeof(string),"SVR:%d",servercarid);
- SetVehicleNumberPlate(servercarid,string);
- format(string, sizeof(string), "UPDATE `ServerCars` SET `carID` = %d WHERE `carID` = %d", servercarid, ServerVeh[ServerVehIDX][sCarID]);
- ServerVeh[ServerVehIDX][sCarID] = servercarid;
- mysql_query(string);
- ServerVehIDX++;
- }
- }
- printf("\tEs wurden %d Serverautos geladen",ServerVehIDX);
- mysql_free_result();
- }
- else
- {
- print("MySQL Keine verbindung möglich");
- }
- return 1;
- }
- public OnFilterScriptExit()
- {
- if(mysql_ping())mysql_close();
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- dcmd(newscar,7,cmdtext);
- dcmd(spark,5,cmdtext);
- dcmd(delscar,7,cmdtext);
- return 0;
- }
- dcmd_newscar(playerid,params[])
- {
- new carid,c1,c2,query[512],serverid;
- new Float:vehx,Float:vehy,Float:vehz,Float:veha;
- if(sscanf(params,"iii",carid,c1,c2))return SendClientMessage(playerid, 0xFF3A3AFF,"/newscar [CAR-ID] [COLOR11] [COLOR-2]");
- if(carid < 400 || carid > 610 ) return SendClientMessage(playerid,0xFF3A3AFF,"Bitte wähle ein Fahrzeug zwischen 400 und 610");
- GetPlayerPos(playerid,vehx,vehy,vehz);
- GetPlayerFacingAngle(playerid,veha);
- if(ServerVehIDX!=MAX_SERVER_CARS)
- {
- ServerVehIDX++;
- serverid=CreateVehicle(carid,vehx,vehy,vehz,veha,c1,c2,1000*60*5);
- PutPlayerInVehicle(playerid, serverid, 0);
- format(query, sizeof(query),"SVR:%d",serverid);
- SetVehicleNumberPlate(serverid,query);
- ServerVeh[ServerVehIDX][sCarID]=GetPlayerVehicleID(playerid);
- ServerVeh[ServerVehIDX][sModelID]=carid;
- ServerVeh[ServerVehIDX][sX]=vehx;
- ServerVeh[ServerVehIDX][sY]=vehy;
- ServerVeh[ServerVehIDX][sZ]=vehz;
- ServerVeh[ServerVehIDX][sA]=veha;
- ServerVeh[ServerVehIDX][sColor1]=c1;
- ServerVeh[ServerVehIDX][sColor2]=c2;
- format(query, sizeof(query), "INSERT INTO ServerCars (carID, carModel, Farbe1, Farbe2, X, Y, Z, A) VALUES ('%d', '%d', '%d', '%d', '%f', '%f', '%f', '%f')", GetPlayerVehicleID(playerid), carid, c1, c2, vehx, vehy, vehz, veha);
- mysql_query(query);
- mysql_free_result();
- format(query, 128, "Du hast ein Car mit der ID: %d erstellt", ServerVeh[ServerVehIDX][sCarID]);
- SendClientMessage(playerid,0x008000FF,query);
- }
- else
- {
- SendClientMessage(playerid,0xFF3A3AFF,"Es sind bereits 500 Serverautos eingetragen");
- }
- return 1;
- }
- dcmd_spark(playerid,params[])
- {
- #pragma unused params
- new query[128];
- new Float:vehx,Float:vehy,Float:vehz,Float:veha;
- new carid = GetPlayerVehicleID(playerid);
- GetVehiclePos(carid,vehx,vehy,vehz);
- GetVehicleZAngle(carid,veha);
- if(GetPlayerState(playerid)==PLAYER_STATE_DRIVER)
- {
- for(new i;i<MAX_VEHICLES;i++)
- {
- if(GetPlayerVehicleID(playerid)==ServerVeh[i][sCarID])
- {
- format(query, 128, "UPDATE ServerCars SET X = '%f' WHERE carID = '%d'", vehx, ServerVeh[i][sCarID]);
- mysql_query(query);
- format(query, 128, "UPDATE ServerCars SET Y = '%f' WHERE carID = '%d'", vehy, ServerVeh[i][sCarID]);
- mysql_query(query);
- format(query, 128, "UPDATE ServerCars SET Z = '%f' WHERE carID = '%d'", vehz, ServerVeh[i][sCarID]);
- mysql_query(query);
- format(query, 128, "UPDATE ServerCars SET A = '%f' WHERE carID = '%d'", veha, ServerVeh[i][sCarID]);
- mysql_query(query);
- mysql_free_result();
- format(query, 128, "Du hast das Car mit der ID: %d umgeparkt", ServerVeh[i][sCarID]);
- SendClientMessage(playerid,0x008000FF,query);
- }
- }
- }
- else
- {
- SendClientMessage(playerid,0xFF3A3AFF,"Du musst der Fahrer des Wagens sein");
- }
- return 1;
- }
- dcmd_delscar(playerid,params[])
- {
- #pragma unused params
- new query[128];
- if(GetPlayerState(playerid)==PLAYER_STATE_DRIVER)
- {
- for(new i;i<MAX_VEHICLES;i++)
- {
- if(GetPlayerVehicleID(playerid)==ServerVeh[i][sCarID])
- {
- format(query,128,"DELETE FROM `ServerCars` WHERE `carID` = '%d'",ServerVeh[i][sCarID]);
- mysql_query(query);
- DestroyVehicle(ServerVeh[i][sCarID]);
- mysql_free_result();
- format(query, 128, "Du hast das Car mit der ID: %d vom Server gelöscht", ServerVeh[i][sCarID]);
- SendClientMessage(playerid,0x008000FF,query);
- }
- }
- }
- else
- {
- SendClientMessage(playerid,0xFF3A3AFF,"Du musst der Fahrer des Wagens sein");
- }
- return 1;
- }
- stock sscanf(sstring[], format[], {Float,_}:...)
- {
- #if defined isnull
- if (isnull(sstring))
- #else
- if (sstring[0] == 0 || (sstring[0] == 1 && sstring[1] == 0))
- #endif
- {
- return format[0];
- }
- #pragma tabsize 4
- new
- formatPos = 0,
- sstringPos = 0,
- paramPos = 2,
- paramCount = numargs(),
- delim = ' ';
- while (sstring[sstringPos] && sstring[sstringPos] <= ' ')
- {
- sstringPos++;
- }
- while (paramPos < paramCount && sstring[sstringPos])
- {
- switch (format[formatPos++])
- {
- case '\0':
- {
- return 0;
- }
- case 'i', 'd':
- {
- new
- neg = 1,
- num = 0,
- ch = sstring[sstringPos];
- if (ch == '-')
- {
- neg = -1;
- ch = sstring[++sstringPos];
- }
- do
- {
- sstringPos++;
- if ('0' <= ch <= '9')
- {
- num = (num * 10) + (ch - '0');
- }
- else
- {
- return -1;
- }
- }
- while ((ch = sstring[sstringPos]) > ' ' && ch != delim);
- setarg(paramPos, 0, num * neg);
- }
- case 'h', 'x':
- {
- new
- num = 0,
- ch = sstring[sstringPos];
- do
- {
- sstringPos++;
- switch (ch)
- {
- case 'x', 'X':
- {
- num = 0;
- continue;
- }
- case '0' .. '9':
- {
- num = (num << 4) | (ch - '0');
- }
- case 'a' .. 'f':
- {
- num = (num << 4) | (ch - ('a' - 10));
- }
- case 'A' .. 'F':
- {
- num = (num << 4) | (ch - ('A' - 10));
- }
- default:
- {
- return -1;
- }
- }
- }
- while ((ch = sstring[sstringPos]) > ' ' && ch != delim);
- setarg(paramPos, 0, num);
- }
- case 'c':
- {
- setarg(paramPos, 0, sstring[sstringPos++]);
- }
- case 'f':
- {
- new changestr[16], changepos = 0, strpos = sstringPos;
- while(changepos < 16 && sstring[strpos] && sstring[strpos] != delim)
- {
- changestr[changepos++] = sstring[strpos++];
- }
- changestr[changepos] = '\0';
- setarg(paramPos,0,_:floatstr(changestr));
- }
- case 'p':
- {
- delim = format[formatPos++];
- continue;
- }
- case '\'':
- {
- new
- end = formatPos - 1,
- ch;
- while ((ch = format[++end]) && ch != '\'') {}
- if (!ch)
- {
- return -1;
- }
- format[end] = '\0';
- if ((ch = strfind(sstring, format[formatPos], false, sstringPos)) == -1)
- {
- if (format[end + 1])
- {
- return -1;
- }
- return 0;
- }
- format[end] = '\'';
- sstringPos = ch + (end - formatPos);
- formatPos = end + 1;
- }
- case 'u':
- {
- new
- end = sstringPos - 1,
- id = 0,
- bool:num = true,
- ch;
- while ((ch = sstring[++end]) && ch != delim)
- {
- if (num)
- {
- if ('0' <= ch <= '9')
- {
- id = (id * 10) + (ch - '0');
- }
- else
- {
- num = false;
- }
- }
- }
- if (num && IsPlayerConnected(id))
- {
- setarg(paramPos, 0, id);
- }
- else
- {
- #if !defined foreach
- #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
- #define __SSCANF_FOREACH__
- #endif
- sstring[end] = '\0';
- num = false;
- new
- name[MAX_PLAYER_NAME];
- id = end - sstringPos;
- foreach (Player, playerid)
- {
- GetPlayerName(playerid, name, sizeof (name));
- if (!strcmp(name, sstring[sstringPos], true, id))
- {
- setarg(paramPos, 0, playerid);
- num = true;
- break;
- }
- }
- if (!num)
- {
- setarg(paramPos, 0, INVALID_PLAYER_ID);
- }
- sstring[end] = ch;
- #if defined __SSCANF_FOREACH__
- #undef foreach
- #undef __SSCANF_FOREACH__
- #endif
- }
- sstringPos = end;
- }
- case 's', 'z':
- {
- new
- i = 0,
- ch;
- if (format[formatPos])
- {
- while ((ch = sstring[sstringPos++]) && ch != delim)
- {
- setarg(paramPos, i++, ch);
- }
- if (!i)
- {
- return -1;
- }
- }
- else
- {
- while ((ch = sstring[sstringPos++]))
- {
- setarg(paramPos, i++, ch);
- }
- }
- sstringPos--;
- setarg(paramPos, i, '\0');
- }
- default:
- {
- continue;
- }
- }
- while (sstring[sstringPos] && sstring[sstringPos] != delim && sstring[sstringPos] > ' ')
- {
- sstringPos++;
- }
- while (sstring[sstringPos] && (sstring[sstringPos] == delim || sstring[sstringPos] <= ' '))
- {
- sstringPos++;
- }
- paramPos++;
- }
- do
- {
- if ((delim = format[formatPos++]) > ' ')
- {
- if (delim == '\'')
- {
- while ((delim = format[formatPos++]) && delim != '\'') {}
- }
- else if (delim != 'z')
- {
- return delim;
- }
- }
- }
- while (delim > ' ');
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement