Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Includes
- #include <a_samp>
- #include <ocmd>
- #include <sscanf2>
- #include <a_mysql>
- //enums
- enum playerInfo{
- eingeloggt,
- level,
- db_id,
- alevel
- }
- enum buildingsEnum{
- Float:b_x,
- Float:b_y,
- Float:b_z,
- Float:b_ix,
- Float:b_iy,
- Float:b_iz,
- b_interior,
- b_shopname[15]
- }
- enum carEnum{
- id_x,
- model,
- besitzer,
- Float:c_x,
- Float:c_y,
- Float:c_z,
- Float:c_r,
- db_id
- }
- //Globale Variablen
- new dbhandle;
- new sInfo[MAX_PLAYERS][playerInfo];
- new bInfo[][buildingsEnum] = {
- {243.0825,-178.3224,1.5822,285.3642,-41.5576,1001.5156,1,"AMMUN1"},//Ammunation1
- {212.1142,-202.1886,1.5781,372.4523,-133.5244,1001.4922,5,"FDPIZA"}//Pizza
- };
- new cInfo[50][carEnum];
- //Farben
- #define COLOR_RED 0xFF0000FF
- //Dialoge
- #define DIALOG_TELEPORT 1
- #define DIALOG_REGISTER 2
- #define DIALOG_LOGIN 3
- //MySQL
- #define db_host "127.0.0.1"
- #define db_user "samp"
- #define db_pass "mysqlpasswort"
- #define db_db "samp"
- //Forwards
- forward OnUserCheck(playerid);
- forward OnPasswordResponse(playerid);
- forward carSavedToDB(carid);
- forward OnPlayerCarsLoad(playerid);
- main()
- {
- }
- public OnGameModeInit()
- {
- SetGameModeText("MrMonat Tutorialmode");
- AddPlayerClass(1,199.0846,-150.0331,1.5781,359.1443,WEAPON_MP5,500,0,0,0,0);
- AddPlayerClass(2,199.0846,-150.0331,1.5781,359.1443,WEAPON_MP5,500,0,0,0,0);
- AddPlayerClass(3,199.0846,-150.0331,1.5781,359.1443,WEAPON_MP5,500,0,0,0,0);
- DisableInteriorEnterExits();
- //Gebäude laden
- for(new i=0; i<sizeof(bInfo); i++)
- {
- CreatePickup(1239,1,bInfo[i][b_x],bInfo[i][b_y],bInfo[i][b_z]);
- Create3DTextLabel("Zum Betreten /enter",COLOR_RED,bInfo[i][b_x],bInfo[i][b_y],bInfo[i][b_z],10,0,1);
- }
- //Autos erstellen
- AddStaticVehicle(560,214.1196,-141.3710,1.3052,1.6804,-1,-1); //Sultan
- //MySQL
- dbhandle = mysql_connect(db_host,db_user,db_db,db_pass);
- return 1;
- }
- public OnGameModeExit()
- {
- mysql_close(dbhandle);
- return 1;
- }
- public OnPlayerRequestClass(playerid, classid)
- {
- SetPlayerPos(playerid,199.0846,-150.0331,1.5781);
- SetPlayerCameraPos(playerid, 199.2307,-143.8328,1.5781);
- SetPlayerCameraLookAt(playerid, 199.0846,-150.0331,1.5781);
- SetPlayerFacingAngle(playerid,359.1443);
- return 1;
- }
- public OnUserCheck(playerid)
- {
- new num_rows,num_fields;
- cache_get_data(num_rows,num_fields,dbhandle);
- if(num_rows==0)
- {
- //Registrierung
- ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrierung","Gib bitte dein gewünschtes Passwort an:","Okay","Abbrechen");
- }
- else
- {
- //Login
- ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Gibt bitte dein Passwort ein:","Okay","Abbrechen");
- }
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- new nachricht[128];
- format(nachricht,sizeof(nachricht),"Du bist mit der ID %i verbunden.",playerid);
- SendClientMessage(playerid,COLOR_RED,nachricht);
- //Login/Register
- new name[MAX_PLAYER_NAME],query[128];
- GetPlayerName(playerid,name,sizeof(name));
- format(query,sizeof(query),"SELECT id FROM user WHERE username='%s'",name);
- mysql_function_query(dbhandle,query,true,"OnUserCheck","i",playerid);
- return 1;
- }
- savePlayer(playerid)
- {
- if(sInfo[playerid][eingeloggt]==0)return 1;
- //Speichern level,money
- new query[128];
- format(query,sizeof(query),"UPDATE user SET level='%i',money='%i',alevel='%i' WHERE id='%i'",sInfo[playerid][level],GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][db_id]);
- mysql_function_query(dbhandle,query,false,"","");
- return 1;
- }
- resetPlayer(playerid)
- {
- for(new i=0; i<sizeof(sInfo[]); i++)
- {
- sInfo[playerid][playerInfo:i]=0;
- }
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- for(new i=0; i<sizeof(cInfo); i++)
- {
- if(cInfo[i][id_x]==0)continue;
- if(cInfo[i][besitzer]!=sInfo[playerid][db_id])continue;
- GetVehiclePos(cInfo[i][id_x],cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z]);
- GetVehicleZAngle(cInfo[i][id_x],cInfo[i][c_r]);
- new query[256];
- format(query,sizeof(query),"UPDATE autos SET x='%f',y='%f',z='%f',r='%f' WHERE id='%i'",cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z],cInfo[i][c_r],cInfo[i][db_id]);
- mysql_function_query(dbhandle,query,false,"","");
- DestroyVehicle(cInfo[i][id_x]);
- cInfo[i][id_x]=0;
- }
- savePlayer(playerid);
- resetPlayer(playerid);
- 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 carSavedToDB(carid)
- {
- cInfo[carid][db_id]=cache_insert_id(dbhandle);
- return 1;
- }
- saveCarToDB(playerid,carid)
- {
- new query[128];
- format(query,sizeof(query),"INSERT INTO autos (besitzer,model,x,y,z,r) VALUES ('%i','%i','%f','%f','%f','%f')",sInfo[playerid][db_id],cInfo[carid][model],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]);
- mysql_function_query(dbhandle,query,true,"carSavedToDB","i",carid);
- return 1;
- }
- createPlayerCar(playerid,modelid,Float:x,Float:y,Float:z,Float:r)
- {
- for(new i=0; i<sizeof(cInfo); i++)
- {
- if(cInfo[i][id_x]!=0)continue;
- cInfo[i][besitzer]=sInfo[playerid][db_id];
- cInfo[i][c_x]=x;
- cInfo[i][c_y]=y;
- cInfo[i][c_z]=z;
- cInfo[i][c_r]=r;
- cInfo[i][model]=modelid;
- cInfo[i][id_x] = CreateVehicle(modelid,x,y,z,r,-1,-1,-1);
- new string[128];
- format(string,sizeof(string),"Das Auto cInfo[%i] wurde erstellt.",i);
- SendClientMessageToAll(COLOR_RED,string);
- saveCarToDB(playerid,i);
- return 1;
- }
- return 1;
- }
- //Befehle
- ocmd:deletecar(playerid,params[])
- {
- if(!isAdmin(playerid,2))return SendClientMessage(playerid,COLOR_RED,"Dein Adminrang ist zu niedrig.");
- if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,COLOR_RED,"Du bist in keinem Fahrzeug.");
- DestroyVehicle(GetPlayerVehicleID(playerid));
- return 1;
- }
- ocmd:createcar(playerid,params[])
- {
- if(!isAdmin(playerid,2))return SendClientMessage(playerid,COLOR_RED,"Dein Adminrang ist zu niedrig.");
- new mID,pID;
- if(sscanf(params,"ui",pID,mID))return SendClientMessage(playerid,COLOR_RED,"INFO: /createcar [playerid] [model]");
- if(mID<400||mID>611)return SendClientMessage(playerid,COLOR_RED,"Ungültiges Model.");
- new Float:xc,Float:yc,Float:zc,Float:rc;
- GetPlayerPos(pID,xc,yc,zc);
- GetPlayerFacingAngle(pID,rc);
- createPlayerCar(pID,mID,xc,yc,zc,rc);
- return 1;
- }
- ocmd:exit(playerid,params[])
- {
- for(new i=0; i<sizeof(bInfo); i++)
- {
- if(GetPlayerVirtualWorld(playerid)!=i)continue;
- if(!IsPlayerInRangeOfPoint(playerid,2,bInfo[i][b_ix],bInfo[i][b_iy],bInfo[i][b_iz]))continue;
- SetPlayerPos(playerid,bInfo[i][b_x],bInfo[i][b_y],bInfo[i][b_z]);
- SetPlayerInterior(playerid,0);
- SetPlayerVirtualWorld(playerid,0);
- return 1;
- }
- return 1;
- }
- ocmd:enter(playerid,params[])
- {
- for(new i=0; i<sizeof(bInfo); i++)
- {
- if(!IsPlayerInRangeOfPoint(playerid,2,bInfo[i][b_x],bInfo[i][b_y],bInfo[i][b_z]))continue;
- SetPlayerPos(playerid,bInfo[i][b_ix],bInfo[i][b_iy],bInfo[i][b_iz]);
- SetPlayerInterior(playerid,bInfo[i][b_interior]);
- SetPlayerVirtualWorld(playerid,i);
- SetPlayerShopName(playerid,bInfo[i][b_shopname]);
- return 1;
- }
- return 1;
- }
- ocmd:teleport(playerid,params[])
- {
- if(!isAdmin(playerid,2))return SendClientMessage(playerid,COLOR_RED,"Dein Adminrang ist zu niedrig.");
- ShowPlayerDialog(playerid,DIALOG_TELEPORT,DIALOG_STYLE_LIST,"Teleport","Spawn\nFarm","Teleport","Abbrechen");
- return 1;
- }
- ocmd:pn(playerid,params[])
- {
- new pID,text[128];
- if(sscanf(params,"us[128]",pID,text))return SendClientMessage(playerid,COLOR_RED,"INFO: /pn [playerid] [text]");
- SendClientMessage(pID,COLOR_RED,text);
- return 1;
- }
- ocmd:setadmin(playerid,params[])
- {
- if(!isAdmin(playerid,3))return SendClientMessage(playerid,COLOR_RED,"Dein Adminrang ist zu niedrig.");
- new pID,a_level;
- if(sscanf(params,"ui",pID,a_level))return SendClientMessage(playerid,COLOR_RED,"INFO: /setadmin [playerid] [adminlevel]");
- sInfo[pID][alevel]=a_level;
- savePlayer(pID);
- SendClientMessage(pID,COLOR_RED,"Dein Adminrang wurde geändert.");
- SendClientMessage(playerid,COLOR_RED,"Du hast den Adminrang geändert.");
- return 1;
- }
- isAdmin(playerid,a_level)
- {
- if(sInfo[playerid][alevel]>=a_level)return 1;
- return 0;
- }
- ocmd:restart(playerid,params[])
- {
- if(!isAdmin(playerid,3))return SendClientMessage(playerid,COLOR_RED,"Dein Adminrang ist zu niedrig.");
- SendRconCommand("gmx");
- return 1;
- }
- ocmd:test(playerid,params[])
- {
- SendClientMessage(playerid,COLOR_RED,"Du hast /test eingegeben.");
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- 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)
- {
- if(newkeys & KEY_YES)
- {
- //Enterbefehl
- ocmd_enter(playerid,"");
- return 1;
- }
- if(newkeys & KEY_NO)
- {
- //Exitbefehl
- ocmd_exit(playerid,"");
- return 1;
- }
- 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;
- }
- SetPlayerMoney(playerid,money)
- {
- ResetPlayerMoney(playerid);
- GivePlayerMoney(playerid,money);
- return 1;
- }
- getFreeCarID()
- {
- for(new i=0; i<sizeof(cInfo); i++)
- {
- if(cInfo[i][id_x]==0)return i;
- }
- return 0;
- }
- public OnPlayerCarsLoad(playerid)
- {
- new num_fields,num_rows;
- cache_get_data(num_rows,num_fields,dbhandle);
- if(!num_rows)return 1;
- for(new i=0; i<num_rows; i++)
- {
- new id=getFreeCarID();
- cInfo[id][model]=cache_get_field_content_int(i,"model",dbhandle);
- cInfo[id][besitzer]=cache_get_field_content_int(i,"besitzer",dbhandle);
- cInfo[id][c_x]=cache_get_field_content_float(i,"x",dbhandle);
- cInfo[id][c_y]=cache_get_field_content_float(i,"y",dbhandle);
- cInfo[id][c_z]=cache_get_field_content_float(i,"z",dbhandle);
- cInfo[id][c_r]=cache_get_field_content_float(i,"r",dbhandle);
- cInfo[id][db_id]=cache_get_field_content_int(i,"id",dbhandle);
- cInfo[id][id_x]=CreateVehicle(cInfo[id][model],cInfo[id][c_x],cInfo[id][c_y],cInfo[id][c_z],cInfo[id][c_r],-1,-1,-1);
- }
- return 1;
- }
- loadPlayerCars(playerid)
- {
- new query[128];
- format(query,sizeof(query),"SELECT * FROM autos WHERE besitzer='%i'",sInfo[playerid][db_id]);
- mysql_function_query(dbhandle,query,true,"OnPlayerCarsLoad","i",playerid);
- return 1;
- }
- public OnPasswordResponse(playerid)
- {
- new num_fields,num_rows;
- cache_get_data(num_rows,num_fields,dbhandle);
- if(num_rows==1)
- {
- //Passwort richtig
- sInfo[playerid][eingeloggt] = 1;
- sInfo[playerid][level] = cache_get_field_content_int(0,"level",dbhandle);
- SetPlayerScore(playerid,sInfo[playerid][level]);
- sInfo[playerid][db_id] = cache_get_field_content_int(0,"id",dbhandle);
- SetPlayerMoney(playerid,cache_get_field_content_int(0,"money",dbhandle));
- sInfo[playerid][alevel] = cache_get_field_content_int(0,"alevel",dbhandle);
- loadPlayerCars(playerid);
- }
- else
- {
- //Passwort falsch
- SendClientMessage(playerid,COLOR_RED,"Das eingegebene Passwort ist falsch.");
- ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Gibt bitte dein Passwort ein:","Okay","Abbrechen");
- }
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid==DIALOG_LOGIN)
- {
- if(response)
- {
- new name[MAX_PLAYER_NAME],query[128],passwort[35];
- GetPlayerName(playerid,name,sizeof(name));
- if(strlen(inputtext)>0)
- {
- mysql_escape_string(inputtext,passwort,dbhandle);
- format(query,sizeof(query),"SELECT * FROM user WHERE username='%s' AND password=MD5('%s')",name,passwort);
- mysql_function_query(dbhandle,query,true,"OnPasswordResponse","i",playerid);
- }
- else
- {
- //Keine Eingabe
- SendClientMessage(playerid,COLOR_RED,"Gibt bitte dein Passwort ein.");
- ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Gibt bitte dein Passwort ein:","Okay","Abbrechen");
- }
- }
- else
- {
- Kick(playerid);
- }
- return 1;
- }
- if(dialogid==DIALOG_REGISTER)
- {
- if(response)
- {
- new name[MAX_PLAYER_NAME],query[128],passwort[35];
- GetPlayerName(playerid,name,sizeof(name));
- if(strlen(inputtext)>3)
- {
- //Registrierungsfunktion
- mysql_escape_string(inputtext,passwort,dbhandle);
- format(query,sizeof(query),"INSERT INTO user (username,password) VALUES ('%s',MD5('%s')) ",name,passwort);
- mysql_function_query(dbhandle,query,false,"","");
- }
- else
- {
- //Kleiner als 4 Zeichen
- SendClientMessage(playerid,COLOR_RED,"Dein Passwort muss mindestens 4 Zeichen lang sein.");
- ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrierung","Gib bitte dein gewünschtes Passwort an:","Okay","Abbrechen");
- }
- }
- else
- {
- Kick(playerid);
- }
- return 1;
- }
- if(dialogid==DIALOG_TELEPORT)
- {
- if(response)
- {
- if(listitem==0)
- {
- //Spawn
- SetPlayerPos(playerid,199.0846,-150.0331,1.5781);
- }
- if(listitem==1)
- {
- //Farm
- SetPlayerPos(playerid,0.0,0.0,6.0);
- }
- }
- else
- {
- SendClientMessage(playerid,COLOR_RED,"Vorgang abgebrochen.");
- }
- return 1;
- }
- return 1;
- }
- public OnPlayerClickPlayer(playerid, clickedplayerid, source)
- {
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement