Advertisement
Guest User

Support System by Slash aka Music4You

a guest
Apr 22nd, 2014
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 7.96 KB | None | 0 0
  1. /*
  2. ================================================================================
  3. Supportsystem by Music4You aka. Slash aka. Items4Landwirt
  4.  
  5. Das System gibt euch ein Optimales Supportsystem mit allen Ansprüchen,
  6. die ein Server braucht.
  7.  
  8. Ich bitte stets darum, meinen Namen im Script stehen zu lassen, es sieht ja eh
  9. keiner :)
  10. ================================================================================
  11.  
  12. Das kommt in euren Gamemode, ihr müsst nur die Abfrage anpassen.
  13.  
  14. public PlayerIsAdmin(playerid)
  15. {
  16.     if(pInfo[playerid][AdminLevel] >= 1) return 1;
  17.     return 0;
  18. }
  19. */
  20.  
  21. #include <a_samp>
  22.  
  23. #define MAX_SUP 10
  24.  
  25. new bool:subgesendet[MAX_PLAYERS],SupDiaID[MAX_PLAYERS],ueberschrift[MAX_PLAYERS][50],subtext[MAX_PLAYERS][129],SupportID[MAX_PLAYERS],ASupportID[MAX_PLAYERS],bool:ImSupport[MAX_PLAYERS];
  26. new SupIDauswahl[MAX_PLAYERS];
  27.  
  28. #define SCM SendClientMessage
  29. #define grün 0x04A800FF
  30. #define rot 0xCC0000FF
  31. #define hellblau 0x00A3F0FF
  32. #define orange 0xE68A00FF
  33. #define MSG DIALOG_STYLE_MSGBOX
  34. #define INPUT DIALOG_STYLE_INPUT
  35. #define LIST DIALOG_STYLE_LIST
  36. #define Dialog ShowPlayerDialog
  37.  
  38. enum
  39. {
  40.     DIALOG_SUP = 900,
  41.     DIALOG_ASUP,
  42.     DIALOG_ACSUP
  43. }
  44.  
  45. enum supports
  46. {
  47.     bool:erstellt,
  48.     Name[MAX_PLAYER_NAME],
  49.     Admin[MAX_PLAYER_NAME],
  50.     Text[129],
  51.     Ueberschrift[50],
  52.     SpielerID,
  53.     AdminID,
  54.     bool:bearbeitung
  55. }
  56. new SupInfo[MAX_SUP][supports];
  57.  
  58. public OnFilterScriptInit()
  59. {
  60.     print("\n=============================================================");
  61.     print(" Support System by Slash aka. Music4You aka. Items4Landwirt");
  62.     print("=============================================================\n");
  63.     for(new i=0;i<MAX_SUP;i++)SupInfo[i][SpielerID]=-1;
  64.     return 1;
  65. }
  66. public OnPlayerText(playerid, text[])
  67. {
  68.     new string[256];
  69.     if(ImSupport[playerid]==true)
  70.     {
  71.         if(CallRemoteFunction("PlayerIsAdmin","i",playerid))
  72.         {
  73.             format(string,256,"[Support-Amin] %s: %s",SpielerName(playerid),text);
  74.             SCM(playerid,hellblau,string);
  75.             SCM(SupInfo[ASupportID[playerid]][SpielerID],hellblau,string);
  76.             return 0;
  77.         }
  78.         else
  79.         {
  80.             format(string,256,"[Support] %s: %s",SpielerName(playerid),text);
  81.             SCM(playerid,hellblau,string);
  82.             SCM(SupInfo[SupportID[playerid]][AdminID],hellblau,string);
  83.             return 0;
  84.         }
  85.     }
  86.     return 1;
  87. }
  88.  
  89. public OnPlayerCommandText(playerid, cmdtext[])
  90. {
  91.     if (strcmp("/sup", cmdtext, true, 10) == 0)
  92.     {
  93.         if(subgesendet[playerid]==true)return SCM(playerid,rot,"Du hast bereits ein Support Ticket offen, /closesup um es zu löschen");
  94.         return Dialog(playerid,DIALOG_SUP,INPUT,"Überschrift","Gebe eine Geeignete Überschrift ein\nBeschriebe dein Problem mit einem Wort, z.B. Bug","Weiter","Abbrechen"),SupDiaID[playerid]=1;
  95.     }
  96.     if (strcmp("/sup", cmdtext, true, 10) == 0)
  97.     {
  98.         if(subgesendet[playerid]==false)return SCM(playerid,rot,"Du hast kein Support Ticket geöffnet");
  99.         subgesendet[playerid]=false;
  100.         SendAdminMessage(2,playerid,1);
  101.         return SCM(playerid,grün,"Du hast dein Support Ticket geschlossen");
  102.     }
  103.     if (strcmp("/supinfo", cmdtext, true, 10) == 0)
  104.     {
  105.         new string[1024],i=0;
  106.         if(!CallRemoteFunction("PlayerIsAdmin","i",playerid))return SCM(playerid,rot,"Du bist nicht befugt");
  107.         for(;i<MAX_SUP;i++)
  108.         {
  109.             if(SupInfo[i][erstellt]==true)
  110.             {
  111.                 if(SupInfo[i][bearbeitung]==false){format(string,1024,"%s {00A911}%s | %s\n",string,SupInfo[i][Name],SupInfo[i][Ueberschrift]);}
  112.                 else if(SupInfo[i][bearbeitung]==true) {format(string,1024,"%s {FFA600}[In Bearbeitung]%s | %s\n",string,SupInfo[i][Name],SupInfo[i][Ueberschrift]);}
  113.             }
  114.             else {format(string,1024,"%s {940000}Support ID Nicht vergeben!\n",string);}
  115.         }
  116.         return Dialog(playerid,DIALOG_ASUP,LIST,"Support Menü",string,"Auswählen","Abbrechen");
  117.     }
  118.     return 0;
  119. }
  120.  
  121. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  122. {
  123.     switch(dialogid)
  124.     {
  125.         case DIALOG_SUP:
  126.         {
  127.             if(response)
  128.             {
  129.                 switch(SupDiaID[playerid])
  130.                 {
  131.                     case 1:
  132.                     {
  133.                         format(ueberschrift[playerid],50,"%s",inputtext);
  134.                         Dialog(playerid,DIALOG_SUP,INPUT,"Problem","Gebe nun dein Text ein, welcher dein Problem genauer beschreibt","Weiter","Abbrechen"),SupDiaID[playerid]=2;
  135.                     }
  136.                     case 2:
  137.                     {
  138.                         new string[300];
  139.                         format(subtext[playerid],128,"%s",inputtext);
  140.                         format(string,300,"Überschrift: %s\n\nText: %s\n\nBist du sicher das du den Support absenden möchtest?",ueberschrift[playerid],subtext[playerid]);
  141.                         Dialog(playerid,DIALOG_SUP,MSG,"Support",string,"Absenden","Abbrechen"),SupDiaID[playerid]=3;
  142.                     }
  143.                     case 3:return CreateSup(playerid,ueberschrift[playerid],subtext[playerid]);
  144.                 }
  145.             }
  146.             else return SCM(playerid,rot,"Du hast den Support abgebrochen"),SupDiaID[playerid]=0;
  147.         }
  148.         case DIALOG_ASUP:
  149.         {
  150.             if(response)
  151.             {
  152.                 SupIDauswahl[playerid] = listitem;
  153.                 new string[200];
  154.                 if(SupInfo[SupIDauswahl[playerid]][erstellt]==false)return SCM(playerid,rot,"Die Support ID ist nicht vergeben"),OnPlayerCommandText(playerid,"/supinfo");
  155.                 format(string,200,"Absender: %s\nÜberschrift: %s\nText: %s",SupInfo[SupIDauswahl[playerid]][Name],SupInfo[SupIDauswahl[playerid]][Ueberschrift],SupInfo[SupIDauswahl[playerid]][Text]);
  156.                 Dialog(playerid,DIALOG_ACSUP,MSG,"Support Ticket",string,"Annehmen","Löschen");
  157.             }
  158.         }
  159.         case DIALOG_ACSUP:
  160.         {
  161.             if(response)
  162.             {
  163.                 new string[128];
  164.                 SupInfo[SupIDauswahl[playerid]][bearbeitung]=true;
  165.                 format(SupInfo[SupIDauswahl[playerid]][Admin],MAX_PLAYER_NAME,"%s",SpielerName(playerid));
  166.                 SupInfo[SupIDauswahl[playerid]][AdminID]=playerid;
  167.                 format(string,128,"%s hat dein Support Ticket geöffnet, du kannst einfach im Chat mit ihm schreiben",SpielerName(playerid));
  168.                 SCM(SupInfo[SupIDauswahl[playerid]][SpielerID],orange,string);
  169.                 SCM(playerid,orange,"Du hast das Ticket geöffnet, du kannst im Chat mit dem User schrieben.");
  170.                 ImSupport[playerid]=true;
  171.                 ASupportID[playerid]=SupIDauswahl[playerid];
  172.                 ImSupport[SupInfo[SupIDauswahl[playerid]][SpielerID]]=true;
  173.                 SupIDauswahl[playerid]=0;
  174.             }
  175.             else
  176.             {
  177.                 new string[128];
  178.                 format(string,128,"Du hast das Ticket von %s gelöscht",SupInfo[SupIDauswahl[playerid]][Name]);
  179.                 SCM(playerid,orange,string);
  180.                 format(string,128,"%s hat dein Support Ticket gelöscht",SpielerName(playerid));
  181.                 SCM(SupInfo[SupIDauswahl[playerid]][SpielerID],orange,string);
  182.                 subgesendet[SupInfo[SupIDauswahl[playerid]][SpielerID]]=false;
  183.                 SupInfo[SupIDauswahl[playerid]][erstellt]=false;
  184.                 ImSupport[playerid]=false;
  185.                 ASupportID[playerid]=-1;
  186.                 ImSupport[SupInfo[SupIDauswahl[playerid]][SpielerID]]=false;
  187.                 SupIDauswahl[playerid]=0;
  188.             }
  189.         }
  190.     }
  191.     return 1;
  192. }
  193.  
  194. stock GetFreeSupID()
  195. {
  196.     new i=0;
  197.     for(;i<MAX_SUP;i++)
  198.     {
  199.         if(SupInfo[i][erstellt]==true)continue;
  200.         return i;
  201.     }
  202.     return -1;
  203. }
  204. stock CreateSup(playerid,header[],text[])
  205. {
  206.     new ID=GetFreeSupID();
  207.     if(ID==-1)return SCM(playerid,rot,"Die Maximale Anzahl von Support Tickets ist erreicht!");
  208.     format(SupInfo[ID][Ueberschrift],50,"%s",header);
  209.     format(SupInfo[ID][Text],129,"%s",text);
  210.     format(SupInfo[ID][Name],129,"%s",SpielerName(playerid));
  211.     SupInfo[ID][SpielerID]=playerid;
  212.     SupInfo[ID][bearbeitung]=false;
  213.     SupInfo[ID][erstellt]=true;
  214.     SendAdminMessage(1,playerid,ID);
  215.     subgesendet[playerid]=true;
  216.     SupportID[playerid]=ID;
  217.     return SCM(playerid,grün,"Der Support wurde erfolgreich abgesendet");
  218. }
  219. stock SpielerName(playerid)
  220. {
  221.     new pName[MAX_PLAYER_NAME];
  222.     GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
  223.     return pName;
  224. }
  225. stock SendAdminMessage(art,playerid,ID)
  226. {
  227.     new i=0,string[256];
  228.     if(art==1){format(string,256,"Spieler:{00A911} %s{FFFFFF} hat ein Support Ticket eingereicht:{00A911} %s{FFFFFF}, /supinfo zum einsehen",SpielerName(playerid),SupInfo[ID][Ueberschrift]);}
  229.     else if(art==2){format(string,256,"Spieler: %s hat sein Support Ticket gelöscht",SpielerName(playerid));}
  230.     for(;i<MAX_PLAYERS;i++)
  231.     {
  232.         if(CallRemoteFunction("PlayerIsAdmin","i",i))
  233.         {
  234.             SCM(i,-1,string);
  235.         }
  236.     }
  237. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement