Advertisement
ErikSon_

Dynamisches Paydaysystem by ErikSon

Jul 9th, 2014
289
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 11.60 KB | None | 0 0
  1. /*                      Dynamisches Paydaysystem by ErikSon
  2.                        
  3.                         Zinsen          einstellbar
  4.                         Steuern         einstellbar
  5.                         Paydayzeit      einstellbar
  6.                         Levelup         einstellbar
  7.                         Levelkosten     einstellbar
  8.  
  9.                                                                                                             */
  10.  
  11.  
  12. #include <a_samp>
  13. #include <dini>
  14. #include <ocmd>
  15.  
  16. //Farben
  17. #define Schwarz         0x000000FF
  18. #define Rot             0xE10000FF
  19. #define Gelb            0xFFE600FF
  20. #define HBlau           0x00FFFFFF
  21. #define DBlau           0x0000FFFF
  22. #define Blau            0x2E9AFEFF
  23. #define HGruen          0x00FF00FF
  24. #define Orange          0xFFAB00FF
  25. #define Weiss           0xFFFFFFFF
  26. #define Grau            0xDCDCDCFF
  27. #define Gold            0xD4A017AA
  28. #define Lila            0x7800FFFF
  29. #define Pink            0xFF00CDFF
  30. #define Gruen           0x009F32FF
  31.  
  32.  
  33. forward PDS_OnGameModeInit();
  34. forward PDS_OnGameModeExit();
  35. forward PDS_OnPlayerConnect(playerid);
  36. forward PDS_OnPlayerDisconnect(playerid,reason);
  37. forward PDS_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
  38.  
  39.  
  40. enum
  41. {
  42.     dSettings = 9000,
  43.     dESteuern,
  44.     dEZinsen,
  45.     dPD,
  46.     dEPDZeit,
  47.     dEEP,
  48.     dELvlKosten,
  49.     dStats
  50. }
  51.  
  52.  
  53. forward PDS_Load();
  54. enum eEP
  55. {
  56.     Float:Zinsen,
  57.     Steuern,
  58.     PDZeit,
  59.     EP,
  60.     LvlKosten,
  61.     Timer
  62. }
  63. new Payday[eEP];
  64.  
  65. enum PEP
  66. {
  67.     Zeit,
  68.     Bankgeld,
  69.     pEP
  70. }
  71. new PDS_Payday[MAX_PLAYERS][PEP];
  72.  
  73.  
  74. public OnGameModeInit()
  75. {
  76.     print("\n--------------------------------------");
  77.     print(" Dynamisches Paydaysystem by ErikSon");
  78.     print("--------------------------------------\n");
  79.     new D[32]; format(D,sizeof(D),"/Payday/Settings.ini");
  80.     if(!dini_Exists(D))
  81.     {
  82.         dini_Create(D);
  83.         dini_FloatSet(D,"Zinsen",1.2),dini_IntSet(D,"Steuern",150),dini_IntSet(D,"PDZeit",60),dini_IntSet(D,"EP",4),dini_IntSet(D,"Levelkosten",2000);
  84.         Payday[Zinsen] = 1.2,Payday[Steuern] = 150,Payday[PDZeit] = 60,Payday[EP] = 4,Payday[LvlKosten] = 2000;
  85.     }
  86.     else Payday[Zinsen] = dini_Float(D,"Zinsen"),Payday[Steuern] = dini_Int(D,"Steuern"),Payday[PDZeit] = dini_Int(D,"PDZeit"),Payday[EP] = dini_Int(D,"EP"),Payday[LvlKosten] = dini_Int(D,"Levelkosten");
  87.     Payday[Timer] = SetTimer("PDS_Load",888*60,true);
  88.     PDS_LoadDaten();
  89.     return CallLocalFunction("PDS_OnGameModeInit","");
  90. }
  91.  
  92. public OnGameModeExit()
  93. {
  94.     KillTimer(Payday[Timer]);
  95.     new D[32]; format(D,sizeof(D),"/Payday/Settings.ini");
  96.     dini_IntSet(D,"Steuern",Payday[Steuern]),dini_FloatSet(D,"Zinsen",Payday[Zinsen]),dini_IntSet(D,"PDZeit",Payday[PDZeit]),
  97.     dini_IntSet(D,"EP",Payday[EP]),dini_IntSet(D,"Levelkosten",Payday[LvlKosten]);
  98.     return CallLocalFunction("PDS_OnGameModeExit","");
  99. }
  100.  
  101. public OnPlayerConnect(playerid)
  102. {
  103.     new PDD[32],p[32]; format(PDD,sizeof(PDD),"/Payday/Daten.ini");
  104.     if(!dini_Exists(PDD))
  105.     {
  106.         dini_Create(PDD);
  107.         format(p,sizeof(p),"%s_Zeit",PDS_name(playerid)); dini_IntSet(PDD,p,0),PDS_Payday[playerid][Zeit] = 0;
  108.         format(p,sizeof(p),"%s_Bankgeld",PDS_name(playerid)); dini_IntSet(PDD,p,0), PDS_Payday[playerid][Bankgeld] = 0;
  109.         format(p,sizeof(p),"%s_EP",PDS_name(playerid)); dini_IntSet(PDD,p,0), PDS_Payday[playerid][pEP] = 0;
  110.         format(p,sizeof(p),"%s_Level",PDS_name(playerid)); dini_IntSet(PDD,p,1),SetPlayerScore(playerid,1);
  111.     }
  112.     else
  113.     {
  114.         format(p,sizeof(p),"%s_Zeit",PDS_name(playerid)); PDS_Payday[playerid][Zeit] = dini_Int(PDD,p);
  115.         format(p,sizeof(p),"%s_Bankgeld",PDS_name(playerid)); PDS_Payday[playerid][Bankgeld] = dini_Int(PDD,p);
  116.         format(p,sizeof(p),"%s_EP",PDS_name(playerid)); PDS_Payday[playerid][pEP] = dini_Int(PDD,p);
  117.         format(p,sizeof(p),"%s_Level",PDS_name(playerid)); SetPlayerScore(playerid,dini_Int(PDD,p));
  118.     }
  119.     return CallLocalFunction("PDS_OnPlayerConnect","");
  120. }
  121.  
  122. public OnPlayerDisconnect(playerid, reason)
  123. {
  124.     new PDD[32],p[32]; format(PDD,sizeof(PDD),"/Payday/Daten.ini");
  125.     format(p,sizeof(p),"%s_Zeit",PDS_name(playerid)); dini_IntSet(PDD,p,PDS_Payday[playerid][Zeit]);
  126.     format(p,sizeof(p),"%s_Bankgeld",PDS_name(playerid)); dini_IntSet(PDD,p,PDS_Payday[playerid][Bankgeld]);
  127.     format(p,sizeof(p),"%s_EP",PDS_name(playerid)); dini_IntSet(PDD,p,PDS_Payday[playerid][pEP]);
  128.     format(p,sizeof(p),"%s_Level",PDS_name(playerid)); dini_IntSet(PDD,p,GetPlayerScore(playerid));
  129.     return CallLocalFunction("PDS_OnPlayerDisconnect","ii",playerid,reason);
  130. }
  131.  
  132. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  133. {
  134.     switch(dialogid)
  135.     {
  136.         case dSettings:
  137.         {
  138.             if(!response)return 1;
  139.             switch(listitem)
  140.             {
  141.                 case 0:return ShowPlayerDialog(playerid,dESteuern,DIALOG_STYLE_INPUT,"Payday - Steuern","Bitte gebe ein, wie hoch der Steuerbetrag sein soll.","Speichern","Abbrechen");
  142.                 case 1:return ShowPlayerDialog(playerid,dEZinsen,DIALOG_STYLE_INPUT,"Payday - Zinsen","Bitte gebe ein, wie hoch der Zinsbetrag sein soll.","Speichern","Abbrechen");
  143.                 case 2:return ShowPlayerDialog(playerid,dEPDZeit,DIALOG_STYLE_INPUT,"Payday - PaydayZeit","Bitte gebe ein, wie lange ein Payday dauern soll.","Speichern","Abbrechen");
  144.                 case 3:return ShowPlayerDialog(playerid,dEEP,DIALOG_STYLE_INPUT,"Payday - EP","Bitte gebe ein, wie viel EP ( 1 EP / Stunde ) man brauchen soll,\num Level-Up zu kommen.\n\nDas Level wird dann mal den EP multipliziert.\nBeispiel: Level 3 - Es werden 4 EP pro Level benötigt.\n= 12 EP benötigt!","Speichern","Abbrechen");
  145.                 case 4:return ShowPlayerDialog(playerid,dELvlKosten,DIALOG_STYLE_INPUT,"Payday - Levelkosten","Bitte gebe ein, wie teuer ein Level-Up kosten soll.\nDie Kosten werden dann mal das Level multipliziert.\nBeispiel: Level 4 - 1000$ pro Level\n= 4000$ benötigt!","Speichern","Abbrechen");
  146.             }
  147.         }
  148.         case dESteuern:
  149.         {
  150.             if(!response)return 1;
  151.             if(!strval(inputtext))return ocmd_pdsettings(playerid),SendClientMessage(playerid,Rot,"Bitte gebe einen Betrag ein!");
  152.             Payday[Steuern] = strval(inputtext);
  153.             SendClientMessage(playerid,Blau,"Du hast den Steuerbetrag geändert & gespeichert.");
  154.             return ocmd_pdsettings(playerid);
  155.         }
  156.         case dEZinsen:
  157.         {
  158.             if(!response)return 1;
  159.             if(strval(inputtext) < 0)return ocmd_pdsettings(playerid),SendClientMessage(playerid,Rot,"Bitte gebe einen Betrag ein!");
  160.             Payday[Zinsen] = floatstr(inputtext);
  161.             SendClientMessage(playerid,Blau,"Du hast den Zinsbetrag geändert & gespeichert.");
  162.             return ocmd_pdsettings(playerid);
  163.         }
  164.         case dEPDZeit:
  165.         {
  166.             if(!response)return 1;
  167.             if(!strval(inputtext))return ocmd_pdsettings(playerid),SendClientMessage(playerid,Rot,"Bitte gebe einen Betrag ein!");
  168.             Payday[PDZeit] = strval(inputtext);
  169.             SendClientMessage(playerid,Blau,"Du hast die Paydayzeit geändert & gespeichert.");
  170.             return ocmd_pdsettings(playerid);
  171.         }
  172.         case dEEP:
  173.         {
  174.             if(!response)return 1;
  175.             if(!strval(inputtext))return ocmd_pdsettings(playerid),SendClientMessage(playerid,Rot,"Bitte gebe einen Betrag ein!");
  176.             Payday[EP] = strval(inputtext);
  177.             SendClientMessage(playerid,Blau,"Du hast die benötigte EP / Level geändert & gespeichert.");
  178.             return ocmd_pdsettings(playerid);
  179.         }
  180.         case dELvlKosten:
  181.         {
  182.             if(!response)return 1;
  183.             if(!strval(inputtext))return ocmd_pdsettings(playerid),SendClientMessage(playerid,Rot,"Bitte gebe einen Betrag ein!");
  184.             Payday[LvlKosten] = strval(inputtext);
  185.             SendClientMessage(playerid,Blau,"Du hast die Kosten / Level geändert & gespeichert.");
  186.             return ocmd_pdsettings(playerid);
  187.         }
  188.     }
  189.     return CallLocalFunction("PDS_OnDialogResponse","iiiis",playerid, dialogid, response, listitem, inputtext[512]);
  190. }
  191.  
  192. public PDS_Load()
  193. {
  194.     new i = 0;
  195.     for(; i<MAX_PLAYERS; i++)
  196.     {
  197.         if(!IsPlayerConnected(i))continue;
  198.         if(IsPlayerNPC(i))continue;
  199.         PDS_Payday[i][Zeit] ++;
  200.         if(PDS_Payday[i][Zeit] >= Payday[PDZeit])
  201.         {
  202.             new newstand = floatround((PDS_Payday[i][Bankgeld] - Payday[Steuern]) * Payday[Zinsen]);
  203.             new string[512]; format(string,sizeof(string),"Alter Kontostand: %i$\n\n\nSteuern: %i$\nZinsen: %.1f%%\n\nNeuer Kontostand: %i$",PDS_Payday[i][Bankgeld],Payday[Steuern],Payday[Zinsen],newstand);
  204.             ShowPlayerDialog(i,dPD,DIALOG_STYLE_MSGBOX,"Payday!",string,"Okay","");
  205.             PDS_Payday[i][pEP] ++;
  206.             PDS_Payday[i][Bankgeld] = newstand,PDS_Payday[i][Zeit] = 0;
  207.             if(PDS_Payday[i][pEP] >= (Payday[EP] * GetPlayerScore(i)))SendClientMessage(i,Blau,"Benutze '/buylevel', um dir einen Level-Up zu kaufen.");
  208.         }
  209.     }
  210.     return 1;
  211. }
  212.  
  213.  
  214. //Befehle
  215. ocmd:pdsettings(playerid)
  216. {
  217.     if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,Rot,"Du bist kein Admin!");
  218.     new string[128]; format(string,sizeof(string),"Steuern: %i$\nZinsen: %.1f%%\nPaydayzeit: %i Minuten / Payday\nEP / Level: %i\nKosten / Level: %i$",Payday[Steuern],Payday[Zinsen],Payday[PDZeit],Payday[EP],Payday[LvlKosten]);
  219.     return ShowPlayerDialog(playerid,dSettings,DIALOG_STYLE_LIST,"Paydayeinstellungen",string,"Bearbeiten","Abbrechen");
  220. }
  221.  
  222. ocmd:stats(playerid)
  223. {
  224.     new string[128]; format(string,sizeof(string),"Name: %s\nLevel: %i\nGeld: %i$\nBankkonto: %i$\nPayday: %i / %i Minuten\nEP: %i / %i\nLevelkosten: %i$",PDS_name(playerid),GetPlayerScore(playerid),
  225.     GetPlayerMoney(playerid),PDS_Payday[playerid][Bankgeld],PDS_Payday[playerid][Zeit],Payday[PDZeit],PDS_Payday[playerid][pEP],(Payday[EP]*GetPlayerScore(playerid)),(Payday[LvlKosten] * GetPlayerScore(playerid)));
  226.     return ShowPlayerDialog(playerid,dStats,DIALOG_STYLE_MSGBOX,"Statistik",string,"Okay","");
  227. }
  228.  
  229. ocmd:buylevel(playerid)
  230. {
  231.     if(PDS_Payday[playerid][pEP] < (Payday[EP]*GetPlayerScore(playerid)))return SendClientMessage(playerid,Rot,"Du hast noch nicht genug EP!");
  232.     if(GetPlayerMoney(playerid) < (Payday[LvlKosten]*GetPlayerScore(playerid)))return SendClientMessage(playerid,Rot,"Du hast nicht genug Geld bei!");
  233.     SetPlayerScore(playerid,GetPlayerScore(playerid)+ 1);
  234.     PDS_Payday[playerid][pEP] = 0;
  235.     GivePlayerMoney(playerid,-(Payday[LvlKosten]*GetPlayerScore(playerid)));
  236.     return SendClientMessage(playerid,Blau,"Du bist nun Level-Up!");
  237. }
  238.  
  239. //Funktionen
  240. stock PDS_name(playerid)
  241. {
  242.     new pname[MAX_PLAYER_NAME]; GetPlayerName(playerid,pname,MAX_PLAYER_NAME);
  243.     return pname;
  244. }
  245.  
  246. stock PDS_LoadDaten()
  247. {
  248.     new i = 0;
  249.     for(; i<MAX_PLAYERS; i++)
  250.     {
  251.         if(!IsPlayerConnected(i))continue;
  252.         if(IsPlayerNPC(i))continue;
  253.        
  254.         new PDD[32],p[32]; format(PDD,sizeof(PDD),"/Payday/Daten.ini");
  255.         if(!dini_Exists(PDD))
  256.         {
  257.             dini_Create(PDD);
  258.             format(p,sizeof(p),"%s_Zeit",PDS_name(i)); dini_IntSet(PDD,p,0),PDS_Payday[i][Zeit] = 0;
  259.             format(p,sizeof(p),"%s_Bankgeld",PDS_name(i)); dini_IntSet(PDD,p,0), PDS_Payday[i][Bankgeld] = 0;
  260.             format(p,sizeof(p),"%s_EP",PDS_name(i)); dini_IntSet(PDD,p,0), PDS_Payday[i][pEP] = 0;
  261.             format(p,sizeof(p),"%s_Level",PDS_name(i)); dini_IntSet(PDD,p,1),SetPlayerScore(i,1);
  262.         }
  263.         else
  264.         {
  265.             format(p,sizeof(p),"%s_Zeit",PDS_name(i)); PDS_Payday[i][Zeit] = dini_Int(PDD,p);
  266.             format(p,sizeof(p),"%s_Bankgeld",PDS_name(i)); PDS_Payday[i][Bankgeld] = dini_Int(PDD,p);
  267.             format(p,sizeof(p),"%s_EP",PDS_name(i)); PDS_Payday[i][pEP] = dini_Int(PDD,p);
  268.             format(p,sizeof(p),"%s_Level",PDS_name(i)); SetPlayerScore(i,dini_Int(PDD,p));
  269.         }
  270.     }
  271.     return 1;
  272. }
  273.  
  274. #if defined _ALS_OnPlayerConnect
  275.     #undef OnPlayerConnect
  276. #else
  277.     #define _ALS_OnPlayerConnect
  278. #endif
  279. #define OnPlayerConnect             PDS_OnPlayerConnect
  280.  
  281. #if defined _ALS_OnGameModeInit
  282.     #undef OnGameModeInit
  283. #else
  284.     #define _ALS_OnGameModeInit
  285. #endif
  286. #define OnGameModeInit              PDS_OnGameModeInit
  287.  
  288. #if defined _ALS_OnGameModeExit
  289.     #undef OnGameModeExit
  290. #else
  291.     #define _ALS_OnGameModeExit
  292. #endif
  293. #define OnGameModeExit              PDS_OnGameModeExit
  294.  
  295. #if defined _ALS_OnPlayerDisconnect
  296.     #undef OnPlayerDisconnect
  297. #else
  298.     #define _ALS_OnPlayerDisconnect
  299. #endif
  300. #define OnPlayerDisconnect              PDS_OnPlayerDisconnect
  301.  
  302. #if defined _ALS_OnPlayerConnect
  303.     #undef OnPlayerConnect
  304. #else
  305.     #define _ALS_OnPlayerConnect
  306. #endif
  307. #define OnPlayerConnect             PDS_OnPlayerConnect
  308.  
  309. #if defined _ALS_OnDialogResponse
  310.     #undef OnDialogResponse
  311. #else
  312.     #define _ALS_OnDialogResponse
  313. #endif
  314. #define OnDialogResponse                PDS_OnDialogResponse
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement