Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- NoDM Zonen Include by [DT]Beavis
- Diese Include darf frei verwendet werden.
- Das was nicht genehmigt wird, ist das Werk als eigenes zu missbrauchen,
- Die weiterveröffentlichung bedarf nur mit einer Genehmigung von mir.
- 2013 by [DT]Beavis aka Chris
- */
- #include a_samp
- #define diaNoDMCreate 10000
- #define diaNoDMInfo 10001
- enum NoDMEnum
- {
- Float:B_MinX,
- Float:B_MinY,
- Float:B_MaxX,
- Float:B_MaxY,
- B_Erstellt,
- B_Zone
- };
- new BeavisNoDM[100][NoDMEnum],
- Text:Beavis[4],
- BeavisInit = 0,
- DB:BeavisDB;
- forward CreateNoDMZone(Float:B_XMin,Float:B_YMin,Float:B_XMax,Float:B_YMax);
- public CreateNoDMZone(Float:B_XMin,Float:B_YMin,Float:B_XMax,Float:B_YMax)
- {
- for(new i = 0; i < sizeof(BeavisNoDM); i++)
- {
- if(BeavisNoDM[i][B_Erstellt] == 0)
- {
- BeavisNoDM[i][B_MinX]=B_XMin;
- BeavisNoDM[i][B_MinY]=B_YMin;
- BeavisNoDM[i][B_MaxX]=B_XMax;
- BeavisNoDM[i][B_MaxY]=B_YMax;
- BeavisNoDM[i][B_Erstellt]=1;
- BeavisNoDM[i][B_Zone] = GangZoneCreate(BeavisNoDM[i][B_MinX], BeavisNoDM[i][B_MinY], BeavisNoDM[i][B_MaxX], BeavisNoDM[i][B_MaxY]);
- return 1;
- }
- }
- return 0;
- }
- stock NoDMZoneInit(BeavisDM = 0)
- {
- if(BeavisDM == 0 || BeavisDM == 1 ||BeavisDM == 2 || BeavisDM == 3)
- {
- BeavisInit = BeavisDM;
- print("\n\n______________________________________________");
- print("Beavis NoDM-Include wurde geladen");
- print("______________________________________________\n\n");
- }
- else
- {
- print("\n\n______________________________________________");
- print("Beavis NoDM-Include Error!");
- print("NoDMZoneInit fehlerhaft eingestellt");
- print("Es wird die Standarteinstellung verwendet");
- BeavisInit = 0;
- print("______________________________________________\n\n");
- }
- return 1;
- }
- forward Beavis_OnGameModeInit();
- public OnGameModeInit()
- {
- BeavisDB = db_open("BeavisNoDM.db");
- new DBResult:query = db_query(BeavisDB, "CREATE TABLE IF NOT EXISTS \"NoDM\" (\"id\" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, \"MinX\" VARCHAR NOT NULL,\"MinY\" VARCHAR NOT NULL,\"MaxX\" VARCHAR NOT NULL,\"MaxY\" VARCHAR NOT NULL);");
- db_free_result(query);
- LoadNoDMZonen();
- SetTimer("IsInBeavisNoDm",1000,1);
- Beavis[0] = TextDrawCreate(233.000000, 395.000000, "NoDM Zone");
- TextDrawBackgroundColor(Beavis[0], 255);
- TextDrawFont(Beavis[0], 1);
- TextDrawLetterSize(Beavis[0], 0.719999, 3.299998);
- TextDrawColor(Beavis[0], -16776961);
- TextDrawSetOutline(Beavis[0], 0);
- TextDrawSetProportional(Beavis[0], 1);
- TextDrawSetShadow(Beavis[0], 1);
- Beavis[1] = TextDrawCreate(33.000000, 421.000000, "NoDM Zone");
- TextDrawBackgroundColor(Beavis[1], 255);
- TextDrawFont(Beavis[1], 1);
- TextDrawLetterSize(Beavis[1], 0.500000, 1.000000);
- TextDrawColor(Beavis[1], -16776961);
- TextDrawSetOutline(Beavis[1], 1);
- TextDrawSetProportional(Beavis[1], 1);
- Beavis[2] = TextDrawCreate(538.000000, 415.000000, "NoDM Zone");
- TextDrawBackgroundColor(Beavis[2], 255);
- TextDrawFont(Beavis[2], 0);
- TextDrawLetterSize(Beavis[2], 0.629999, 2.599999);
- TextDrawColor(Beavis[2], -16776961);
- TextDrawSetOutline(Beavis[2], 0);
- TextDrawSetProportional(Beavis[2], 1);
- TextDrawSetShadow(Beavis[2], 1);
- Beavis[3] = TextDrawCreate(498.000000, 98.000000, "~g~NoDM Zone");
- TextDrawBackgroundColor(Beavis[3], 255);
- TextDrawFont(Beavis[3], 3);
- TextDrawLetterSize(Beavis[3], 0.589999, 1.500000);
- TextDrawColor(Beavis[3], -16776961);
- TextDrawSetOutline(Beavis[3], 1);
- TextDrawSetProportional(Beavis[3], 1);
- return CallLocalFunction("Beavis_OnGameModeInit","");
- }
- forward Beavis_OnGameModeExit();
- public OnGameModeExit()
- {
- db_close(BeavisDB);
- return CallLocalFunction("Beavis_OnGameModeExit","");
- }
- forward Beavis_OnPlayerConnect(playerid);
- public OnPlayerConnect(playerid)
- {
- for(new c = 0; c < sizeof(Beavis); c++){
- TextDrawHideForPlayer(playerid, Beavis[c]);}
- for(new i = 0; i < sizeof(BeavisNoDM); i++){
- if(BeavisNoDM[i][B_Erstellt] == 0) continue;
- GangZoneShowForPlayer(playerid, BeavisNoDM[i][B_Zone], 0xFF3A3A66);}
- return CallLocalFunction("Beavis_OnPlayerConnect","d",playerid);
- }
- forward Beavis_OnPlayerCommandText(playerid, cmdtext[]);
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if(!strcmp("/createnodmzone", cmdtext, true))
- {
- if(!IsPlayerAdmin(playerid))
- SendClientMessage(playerid,-1,"Um diesen Command eingeben zu können, musst du als RCON Admin eingeloggt sein!");
- else{
- SetPVarInt(playerid,"ErstelleNoDMZone",1);
- ShowPlayerDialog(playerid,diaNoDMCreate,DIALOG_STYLE_MSGBOX,"NoDM Zone erstellen","Um eine NoDM Zone zu erstellen,\nmusst du einige aufforderungen nachkommen.\nIch werde dir hier erklären, wie du eine NoDM Zone\
- \neinfach erstellen kannst.\n\nMöchtest du jetzt anfangen?","Ja","Nein");}
- return CallLocalFunction("Beavis_OnPlayerCommandText","ds",playerid, cmdtext);
- }
- return CallLocalFunction("Beavis_OnPlayerCommandText","ds",playerid, cmdtext);
- }
- forward Beavis_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == diaNoDMCreate)
- {
- if(!response)
- DeletePVar(playerid,"ErstelleNoDMZone");
- else
- ShowPlayerDialog(playerid,diaNoDMInfo,DIALOG_STYLE_MSGBOX,"NoDM Zone erstellen","Gehe jetzt zu der Oberen Ecke und drücke die Z Taste!","Ok","");
- }
- if(!inputtext[0])return CallLocalFunction("Beavis_OnDialogResponse","dddds",playerid, dialogid, response, listitem, " ");
- return CallLocalFunction("Beavis_OnDialogResponse","dddds",playerid, dialogid, response, listitem, inputtext);
- }
- forward Beavis_OnPlayerKeyStateChange(playerid, newkeys, oldkeys);
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if(newkeys & 65536)
- {
- new Float:Pos[3];
- if(GetPVarInt(playerid,"ErstelleNoDMZone") == 1)
- {
- GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
- SetPVarFloat(playerid,"X1",Pos[0]);
- SetPVarFloat(playerid,"Y1",Pos[1]);
- ShowPlayerDialog(playerid,diaNoDMInfo,DIALOG_STYLE_MSGBOX,"NoDM Zone erstellen","Gehe jetzt zu der Unteren Ecke und drücke die Z Taste erneut!","Ok","");
- SetPVarInt(playerid,"ErstelleNoDMZone",2);
- return CallLocalFunction("Beavis_OnPlayerKeyStateChange","ddd",playerid, newkeys, oldkeys);
- }
- else if(GetPVarInt(playerid,"ErstelleNoDMZone") == 2)
- {
- GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
- SetPVarFloat(playerid,"X2",Pos[0]);
- SetPVarFloat(playerid,"Y2",Pos[1]);
- CreateNoDMZoneOnGame(GetPVarFloat(playerid,"X1"),GetPVarFloat(playerid,"Y1"),GetPVarFloat(playerid,"X2"),GetPVarFloat(playerid,"Y2"));
- DeletePVar(playerid,"ErstelleNoDMZone");
- DeletePVar(playerid,"X1");
- DeletePVar(playerid,"Y1");
- DeletePVar(playerid,"X2");
- DeletePVar(playerid,"Y2");
- ShowPlayerDialog(playerid,diaNoDMInfo,DIALOG_STYLE_MSGBOX,"NoDM Zone erstellen","Die NoDM Zone wurde erfolgreich erstellt!\nSie wurde gespeichert und wird beim Serverstart wieder geladen.\nDie Zone ist schon Aktiv nur sie wird NICHT angezeigt!\nBei einen Reconnect wirst du sie sehen","Ok","");
- return CallLocalFunction("Beavis_OnPlayerKeyStateChange","ddd",playerid, newkeys, oldkeys);
- }
- }
- if(newkeys & 4)
- {
- for(new i = 0; i < sizeof(BeavisNoDM); i++)
- {
- if(BeavisNoDM[i][B_Erstellt] == 0) continue;
- if(Beavis_IsPlayerInArea(playerid, BeavisNoDM[i][B_MinX], BeavisNoDM[i][B_MinY], BeavisNoDM[i][B_MaxX], BeavisNoDM[i][B_MaxY]))
- {
- if(!IsPlayerInAnyVehicle(playerid))
- {
- SendClientMessage(playerid,0xFF3A3AFF,"Du wurdest wegen DM in einer NoDM Zone für 5 Sekunden gefreezt!");
- TogglePlayerControllable(playerid, 0);
- SetTimerEx("Beavis_Freeze", 5000, 0, "d", playerid);
- return CallLocalFunction("Beavis_OnPlayerKeyStateChange","ddd",playerid, newkeys, oldkeys);
- }
- }
- }
- }
- return CallLocalFunction("Beavis_OnPlayerKeyStateChange","ddd",playerid, newkeys, oldkeys);
- }
- forward Beavis_Freeze(playerid);
- public Beavis_Freeze(playerid)
- {
- TogglePlayerControllable(playerid, 1);
- return 1;
- }
- forward IsInBeavisNoDm();
- public IsInBeavisNoDm()
- {
- for(new playerid; playerid < MAX_PLAYERS; playerid++)
- {
- if(!IsPlayerConnected(playerid)) continue;
- for(new i = 0; i < sizeof(BeavisNoDM); i++)
- {
- if(BeavisNoDM[i][B_Erstellt] == 0) continue;
- if(Beavis_IsPlayerInArea(playerid, BeavisNoDM[i][B_MinX], BeavisNoDM[i][B_MinY], BeavisNoDM[i][B_MaxX], BeavisNoDM[i][B_MaxY]))
- {
- TextDrawShowForPlayer(playerid, Beavis[BeavisInit]);
- SetPlayerArmedWeapon(playerid,0);
- }
- else
- {
- TextDrawHideForPlayer(playerid, Beavis[BeavisInit]);
- }
- }
- }
- return 1;
- }
- forward CreateNoDMZoneOnGame(Float:minXX,Float:minYY,Float:maxXX,Float:maxYY);
- public CreateNoDMZoneOnGame(Float:minXX,Float:minYY,Float:maxXX,Float:maxYY)
- {
- new Float:_Beavis_[4],query[128];
- if(minXX > maxXX){
- _Beavis_[0] = maxXX;
- _Beavis_[2] = minXX;
- }else{
- _Beavis_[0] = minXX;
- _Beavis_[2] = maxXX;
- }
- if(minYY > maxYY){
- _Beavis_[1] = maxYY;
- _Beavis_[3] = minYY;
- }else{
- _Beavis_[1] = minYY;
- _Beavis_[3] = maxYY;
- }
- format(query,sizeof(query),"INSERT INTO \"NoDM\" (\"MinX\",\"MinY\",\"MaxX\",\"MaxY\") VALUES ('%f','%f','%f','%f')",_Beavis_[0],_Beavis_[1],_Beavis_[2],_Beavis_[3]);
- new DBResult:res = db_query(BeavisDB,query);
- db_free_result(res);
- return CreateNoDMZone(_Beavis_[0],_Beavis_[1],_Beavis_[2],_Beavis_[3]);
- }
- stock GetMaxNoDMZonenFromSQL()
- {
- new DBResult:qresult = db_query(BeavisDB,"SELECT * FROM \"NoDM\"");
- new iRows = db_num_rows(qresult);
- db_free_result(qresult);
- return iRows;
- }
- stock LoadNoDMZonen()
- {
- new data[20],Float:DMMaja[4];
- new DBResult:qresult = db_query(BeavisDB,"SELECT * FROM \"NoDM\"");
- new iRows = db_num_rows(qresult);
- if(iRows==0)
- return 1;
- for(new i = 0; i < iRows; i++)
- {
- db_get_field_assoc(qresult,"MinX",data,sizeof(data));
- DMMaja[0] = floatstr(data);
- db_get_field_assoc(qresult,"MinY",data,sizeof(data));
- DMMaja[1] = floatstr(data);
- db_get_field_assoc(qresult,"MaxX",data,sizeof(data));
- DMMaja[2] = floatstr(data);
- db_get_field_assoc(qresult,"MaxY",data,sizeof(data));
- DMMaja[3] = floatstr(data);
- CreateNoDMZone(DMMaja[0],DMMaja[1],DMMaja[2],DMMaja[3]);
- db_next_row(qresult);
- }
- db_free_result(qresult);
- return 1;
- }
- stock Beavis_IsPlayerInArea(playerid,Float:MinX,Float:MinY,Float:MaxX,Float:MaxY)
- {
- new Float:pX,Float:pY,Float:pZ;
- GetPlayerPos(playerid,pX,pY,pZ);
- if(pX >= MinX && pX <= MaxX && pY >= MinY && pY <= MaxY) return 1;
- else return 0;
- }
- #if defined _ALS_OnPlayerConnect
- #undef OnPlayerConnect
- #else
- #define _ALS_OnPlayerConnect
- #endif
- #define OnPlayerConnect Beavis_OnPlayerConnect
- #if defined _ALS_OnGameModeInit
- #undef OnGameModeInit
- #else
- #define _ALS_OnGameModeInit
- #endif
- #define OnGameModeInit Beavis_OnGameModeInit
- #if defined _ALS_OnPlayerKeyStateChange
- #undef OnPlayerKeyStateChange
- #else
- #define _ALS_OnPlayerKeyStateChange
- #endif
- #define OnPlayerKeyStateChange Beavis_OnPlayerKeyStateChange
- #if defined _ALS_OnPlayerCommandText
- #undef OnPlayerCommandText
- #else
- #define _ALS_OnPlayerCommandText
- #endif
- #define OnPlayerCommandText Beavis_OnPlayerCommandText
- #if defined _ALS_OnGameModeExit
- #undef OnGameModeExit
- #else
- #define _ALS_OnGameModeExit
- #endif
- #define OnGameModeExit Beavis_OnGameModeExit
- #if defined _ALS_OnDialogResponse
- #undef OnDialogResponse
- #else
- #define _ALS_OnDialogResponse
- #endif
- #define OnDialogResponse Beavis_OnDialogResponse
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement