Advertisement
Guest User

Realistisches Lottosystem

a guest
Oct 14th, 2013
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 12.50 KB | None | 0 0
  1. /*
  2. Dieses Lottosystem wurde von PermanenT geschrieben.
  3. Es wurde versucht so Ressorcen schonend wie nur möglich zu machen.
  4. Das dies nicht immer geht ist sicher jedem bewusst.
  5.  
  6. Die Idee für dieses Filescript habe ich beim Lotto schauen bekommen.
  7.  
  8. Leute die mir geholfen haben:
  9. Music4You der mir diversen Problemen geholfen hat als ich nicht weiter kam
  10. */
  11.  
  12. #include <a_samp>
  13. #include <zcmd>
  14. #include sscanf2
  15. #define Function%0(%1) forward%0(%1); public%0(%1)
  16.  
  17. #define DIALOG_LOTTO    70
  18. #define DIALOG_KP       71
  19.  
  20. #define GELDERHOEEN     10000       //Um wieviel man das Geld erhöht beim Adminbefehl /ALotto
  21. #define VOLLENGEWINN    6           //Wieviele man richtig haben muss für vollen gewinn. 6
  22. #define STARTGEWINN     200000      //Wieviele Geld immer im Jackpot ist nach neustart.
  23. #define TEILNAHME       10000       //Wieviel man für den Lottoschein ausgeben muss.
  24.  
  25. #define GRAU                            0xB4B4B4FF
  26. #define         HTML_WHITE              "{FAFAFA}"
  27. #define         HTML_ORANGE             "{FFA000}"
  28.  
  29. new DB:Data,
  30.     LottoGeld;
  31.  
  32. public OnFilterScriptInit()
  33. {
  34.     new oldtime = GetTickCount(),DBResult:Result, string[256];
  35.    
  36.     Data = db_open("Lotto.db");
  37.     Createtable();
  38.    
  39.     Result = db_query(Data,"SELECT * FROM `LottoGeld`");
  40.     db_get_field_assoc(Result,"Geld",string,sizeof(string));
  41.     LottoGeld=strval(string);
  42.     if(LottoGeld <= 1) { LottoGeld = STARTGEWINN; SaveLotto();}
  43.     Result = db_query(Data,"SELECT * FROM `Lotto` WHERE Name = 'Muss'");
  44.     if(db_num_rows(Result) > 0){}
  45.     else
  46.     {
  47.         format(string,sizeof(string),"INSERT INTO `Lotto` (`Name`,`Nummer`) VALUES ('Muss','0.0.0.0.0.0.Muss')");
  48.         db_query(Data,string);
  49.     }
  50.  
  51.  
  52.     print("\n--------------------------------------");
  53.     print(" Lotto System Version 1");
  54.     printf("- Server brauchte für das Hochfahren %i ms -",GetTickCount() - oldtime);
  55.     print("--------------------------------------\n");
  56.     return 1;
  57. }
  58.  
  59. public OnFilterScriptExit()
  60. {
  61.     return 1;
  62. }
  63.  
  64. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  65. {
  66.     switch(dialogid)
  67.     {
  68.         case DIALOG_LOTTO:
  69.         {
  70.             new DateInfo[6][124],string[200],query[1000];
  71.             split(inputtext,DateInfo,'.');
  72.             if(response == 0) return 1;
  73.             else
  74.             {
  75.                 if(strlen(inputtext) < 1 || strlen(inputtext) > 25)return ShowPlayerDialog(playerid,DIALOG_LOTTO,DIALOG_STYLE_INPUT,"Lotto Nummer","Bitte gebe nun 6 Ziffern ein.\nBeispiel:\n6.12.2.5.46","Bestätigen","Abbrechen");
  76.                 if(strval(DateInfo[0]) < 0 || strval(DateInfo[0]) > 46 || strval(DateInfo[1]) < 0 || strval(DateInfo[1]) > 46 ||
  77.                 strval(DateInfo[2]) < 0 || strval(DateInfo[2]) > 46 || strval(DateInfo[3]) < 0 || strval(DateInfo[3]) > 46 ||
  78.                 strval(DateInfo[4]) < 0 || strval(DateInfo[4]) > 46 || strval(DateInfo[5]) < 0 || strval(DateInfo[5]) > 46)return SendClientMessage(playerid,GRAU,"Nur von 1-46");
  79.                 if(strlen(DateInfo[0]) < 1 || strlen(DateInfo[0]) > 5)return ShowPlayerDialog(playerid,DIALOG_LOTTO,DIALOG_STYLE_INPUT,"Lotto Nummer","Bitte gebe nun 6 Ziffern ein.\nBeispiel:\n6.12.2.5.46","Bestätigen","Abbrechen");
  80.                 if(strlen(DateInfo[1]) < 1 || strlen(DateInfo[1]) > 5)return ShowPlayerDialog(playerid,DIALOG_LOTTO,DIALOG_STYLE_INPUT,"Lotto Nummer","Bitte gebe nun 6 Ziffern ein.\nBeispiel:\n6.12.2.5.46","Bestätigen","Abbrechen");
  81.                 if(strlen(DateInfo[2]) < 1 || strlen(DateInfo[2]) > 5)return ShowPlayerDialog(playerid,DIALOG_LOTTO,DIALOG_STYLE_INPUT,"Lotto Nummer","Bitte gebe nun 6 Ziffern ein.\nBeispiel:\n6.12.2.5.46","Bestätigen","Abbrechen");
  82.                 if(strlen(DateInfo[3]) < 1 || strlen(DateInfo[3]) > 5)return ShowPlayerDialog(playerid,DIALOG_LOTTO,DIALOG_STYLE_INPUT,"Lotto Nummer","Bitte gebe nun 6 Ziffern ein.\nBeispiel:\n6.12.2.5.46","Bestätigen","Abbrechen");
  83.                 if(strlen(DateInfo[4]) < 1 || strlen(DateInfo[4]) > 5)return ShowPlayerDialog(playerid,DIALOG_LOTTO,DIALOG_STYLE_INPUT,"Lotto Nummer","Bitte gebe nun 6 Ziffern ein.\nBeispiel:\n6.12.2.5.46","Bestätigen","Abbrechen");
  84.                 if(strlen(DateInfo[5]) < 1 || strlen(DateInfo[5]) > 5)return ShowPlayerDialog(playerid,DIALOG_LOTTO,DIALOG_STYLE_INPUT,"Lotto Nummer","Bitte gebe nun 6 Ziffern ein.\nBeispiel:\n6.12.2.5.46","Bestätigen","Abbrechen");
  85.                 format(string,sizeof(string),"%s.%s",inputtext,SpielerName(playerid));
  86.                 format(query,sizeof(query),"INSERT INTO `Lotto` (`Name`,`Nummer`) VALUES ('%s','%s')",
  87.                 SpielerName(playerid),string);
  88.                 db_query(Data,query);
  89.                 format(string,sizeof(string),""#HTML_ORANGE"Deine 6 Zahlen\n"#HTML_ORANGE"1. "HTML_WHITE"%d\n"#HTML_ORANGE"2. "HTML_WHITE"%d\n"#HTML_ORANGE"3. "HTML_WHITE"%d\n"#HTML_ORANGE"4. "HTML_WHITE"%d\n"#HTML_ORANGE"5. "HTML_WHITE"%d\n"#HTML_ORANGE"6. "HTML_WHITE"%d",
  90.                 strval(DateInfo[0]),strval(DateInfo[1]),strval(DateInfo[2]),strval(DateInfo[3]),strval(DateInfo[4]),strval(DateInfo[5]));
  91.                 ShowPlayerDialog(playerid,DIALOG_KP,DIALOG_STYLE_MSGBOX,"Deine Lottozahlen",string,"Okay","Zurück");
  92.                 GivePlayerMoney(playerid,-TEILNAHME);
  93.                 LottoGeld += TEILNAHME;
  94.                 SaveLotto();
  95.             }
  96.             return 1;
  97.         }
  98.     }
  99.     return 1;
  100. }
  101.  
  102. COMMAND:lotto(playerid,params[])
  103. {
  104.     new DBResult:Result, string[512];
  105.     format(string,sizeof(string),"SELECT * FROM `Lotto` WHERE Name = '%s'",SpielerName(playerid));
  106.     Result = db_query(Data,string);
  107.     if(db_num_rows(Result) > 0) return SendClientMessage(playerid,0x969696FF,"Du besitzt bereits ein Lottoschein. Nutze: /Lottoschein.");
  108.     else
  109.     {
  110.         ShowPlayerDialog(playerid,DIALOG_LOTTO,DIALOG_STYLE_INPUT,"Lotto Nummer","Bitte gebe nun 6 Ziffern ein.\nBeispiel:\n6.12.2.5.46","Bestätigen","Abbrechen");
  111.     }
  112.     return 1;
  113. }
  114. COMMAND:alotto(playerid,params[])
  115. {
  116.     new cmd[35],string[124], Zufall[6], stunde,minute,sekunde,jahr,monat,tag;
  117.     if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,GRAU,"Du bist kein Teammitglied./Du hast nicht den jeweiligen Adminrang.");
  118.     if(sscanf(params,"s[35]",cmd))
  119.     {
  120.         SendClientMessage(playerid,0x969696FF,"BENUTZE: /aLotto [Art]");
  121.         SendClientMessage(playerid,0xFFFFFFFF,"ART: Save, Geldlöschen, Gelderhöhen (+ "#GELDERHOEEN"K)");
  122.         SendClientMessage(playerid,0xFFFFFFFF,"ART: Starten");
  123.         return 1;
  124.     }
  125.     gettime(stunde,minute,sekunde); getdate(jahr,monat,tag);
  126.     if(strcmp(cmd,"Save",true) == 0)
  127.     {
  128.         SaveLotto();
  129.         format(string,sizeof(string),"Du hast das Lottogeld gesaved. Es befinden sich %d€ drinnen",LottoGeld);
  130.         SendClientMessage(playerid,0x00FFFFFF,string);
  131.         return 1;
  132.     }
  133.     else if(strcmp(cmd,"Geldlöschen",true) == 0)
  134.     {
  135.         LottoGeld = 0;
  136.         SaveLotto();
  137.         SendClientMessage(playerid,0x00FFFFFF,"Du hast das Lottogeld gelöscht!");
  138.         format(string,sizeof(string),"INSERT INTO `LottoLog` (`Tat`,`Admin`,`Uhrzeit`,`Datum`,`JackPot`) VALUES ('Löschen','%s','%02d:%02d:%02d','%04d-%02d-%02d','%d')",
  139.         SpielerName(playerid),stunde,minute,sekunde,tag,monat,jahr,LottoGeld);
  140.         return 1;
  141.     }
  142.     else if(strcmp(cmd,"Gelderhöhen",true) == 0)
  143.     {
  144.         LottoGeld += GELDERHOEEN;
  145.         SaveLotto();
  146.         SendClientMessage(playerid,0x00FFFFFF,"Du hast das Lottogeld gelöscht!");
  147.         format(string,sizeof(string),"INSERT INTO `LottoLog` (`Tat`,`Admin`,`Uhrzeit`,`Datum`,`JackPot`) VALUES ('Erhöhen','%s','%02d:%02d:%02d','%04d-%02d-%02d','%d')",
  148.         SpielerName(playerid),stunde,minute,sekunde,tag,monat,jahr,LottoGeld);
  149.         return 1;
  150.     }
  151.     else if(strcmp(cmd,"starten",true) == 0)
  152.     {
  153.         Zufall[0]=random(46);Zufall[1]=random(46);Zufall[2]=random(46);Zufall[3]=random(46);Zufall[4]=random(46);Zufall[5]=random(46);
  154.         Lotto(Zufall[0],Zufall[1],Zufall[2],Zufall[3],Zufall[4],Zufall[5]);
  155.         format(string,sizeof(string),"INSERT INTO `LottoLog` (`Tat`,`Admin`,`Uhrzeit`,`Datum`,`JackPot`) VALUES ('Starten','%s','%02d:%02d:%02d','%04d-%02d-%02d','%d')",
  156.         SpielerName(playerid),stunde,minute,sekunde,tag,monat,jahr,LottoGeld);
  157.         return 1;
  158.     }
  159.     else
  160.     {
  161.         SendClientMessage(playerid,0x969696FF,"BENUTZE: /aLotto [Art]");
  162.         SendClientMessage(playerid,0xFFFFFFFF,"ART: Save, Geldlöschen, Gelderhöhen (+ "#GELDERHOEEN"K)");
  163.         SendClientMessage(playerid,0xFFFFFFFF,"ART: Starten");
  164.     }
  165.     return 1;
  166. }
  167. COMMAND:Lottoschein(playerid,params[])
  168. {
  169.     new DBResult:Result, string[512], DateInfo[7][124];
  170.     format(string,sizeof(string),"SELECT * FROM `Lotto` WHERE Name = '%s'",SpielerName(playerid));
  171.     Result = db_query(Data,string);
  172.     if(db_num_rows(Result) > 0)
  173.     {
  174.         db_get_field_assoc(Result,"Nummer",string,sizeof(string));
  175.         split(string,DateInfo,'.');
  176.         format(string,sizeof(string),""#HTML_ORANGE"Deine 6 Zahlen\n"#HTML_ORANGE"1. "HTML_WHITE"%d\n"#HTML_ORANGE"2. "HTML_WHITE"%d\n"#HTML_ORANGE"3. "HTML_WHITE"%d\n"#HTML_ORANGE"4. "HTML_WHITE"%d\n"#HTML_ORANGE"5. "HTML_WHITE"%d\n"#HTML_ORANGE"6. "HTML_WHITE"%d",
  177.         strval(DateInfo[0]),strval(DateInfo[1]),strval(DateInfo[2]),strval(DateInfo[3]),strval(DateInfo[4]),strval(DateInfo[5]));
  178.         ShowPlayerDialog(playerid,DIALOG_KP,DIALOG_STYLE_MSGBOX,"Deine Lottozahlen",string,"Okay","Zurück");
  179.     }
  180.     else return SendClientMessage(playerid,0x969696FF,"Du besitz keinen Lottoschein. Nutze /Lotto");
  181.     return 1;
  182. }
  183. COMMAND:Gewinn(playerid,params[])
  184. {
  185.     new DBResult:Result, string[512],str[35];
  186.     format(string,sizeof(string),"SELECT * FROM `LottoUser` WHERE Name = '%s'",SpielerName(playerid));
  187.     Result = db_query(Data,string);
  188.     if(db_num_rows(Result) > 0)
  189.     {
  190.         db_get_field_assoc(Result,"Geld",str,sizeof(str));
  191.         GivePlayerMoney(playerid,strval(str));
  192.         format(string,sizeof(string),"Herzlichen Glückwunsch! Du hast im Lotto %d€ gewonnen",strval(str));
  193.         SendClientMessage(playerid,0x0087FFFF,string);
  194.     }
  195.     else return SendClientMessage(playerid,0x969696FF,"Du hast nicht im Lotto gewonnen!");
  196.     return 1;
  197. }
  198.  
  199. //Alle Stocks
  200. stock Createtable()
  201. {
  202.     db_query(Data,"CREATE TABLE IF NOT EXISTS `Lotto`(`Name`,`Nummer`)");
  203.     db_query(Data,"CREATE TABLE IF NOT EXISTS `LottoGeld`(`Geld`)");
  204.     db_query(Data,"CREATE TABLE IF NOT EXISTS `LottoUser`(`Name`,`Geld`)");
  205.     db_query(Data,"CREATE TABLE IF NOT EXISTS `LottoLog` (`Tat`,`Admin`,`Uhrzeit`,`Datum`,`JackPot`)");
  206.     return 1;
  207. }
  208. stock Lotto(One,Two,Three,Four,Five,Six)
  209. {
  210.     new store[124],JackPot,query[124];
  211.     new DBResult:Result = db_query(Data,"SELECT `Nummer` FROM `Lotto`");
  212.     while(db_next_row(Result))
  213.     {
  214.             new DateInfo[7][200],Speicher[6];
  215.             db_get_field(Result,0,store,124);
  216.             split(store,DateInfo,'.');
  217.             for(new i=0;i<6;i++)
  218.             {
  219.                 Speicher[i] = strval(DateInfo[i]);
  220.             }
  221.             JackPot = 0;
  222.             for(new i;i<6;i++)
  223.             {
  224.                 if(Speicher[i] == One)
  225.                 {
  226.                     Speicher[i] = -1;
  227.                     JackPot ++;
  228.                 }
  229.                 if(Speicher[i] == Two)
  230.                 {
  231.                     Speicher[i] = -1;
  232.                     JackPot ++;
  233.                 }
  234.                 if(Speicher[i] == Three)
  235.                 {
  236.                     Speicher[i] = -1;
  237.                     JackPot ++;
  238.                 }
  239.                 if(Speicher[i] == Four)
  240.                 {
  241.                     Speicher[i] = -1;
  242.                     JackPot ++;
  243.                 }
  244.                 if(Speicher[i] == Five)
  245.                 {
  246.                     Speicher[i] = -1;
  247.                     JackPot ++;
  248.                 }
  249.                 if(Speicher[i] == Six)
  250.                 {
  251.                     Speicher[i] = -1;
  252.                     JackPot ++;
  253.                 }
  254.             }
  255.  
  256.             if(JackPot >= VOLLENGEWINN)
  257.             {
  258.                 new string[512],str[35];
  259.                 format(string,sizeof(string),"SELECT * FROM `LottoUser` WHERE Name = '%s'",DateInfo[6]);
  260.                 Result = db_query(Data,string);
  261.                 if(db_num_rows(Result) > 0)
  262.                 {
  263.                     db_get_field_assoc(Result,"Geld",str,sizeof(str));
  264.                     format(string,sizeof(string),"UDPATE `LottoUser` SET `Geld` = %d WHERE Name = '%s'",strval(str)+LottoGeld,DateInfo[6]);
  265.                 }
  266.                 else
  267.                 {
  268.                     format(query,sizeof(query),"INSERT INTO `LottoUser` (`Name`,`Geld`) VALUES ('%s','%d')",DateInfo[6],LottoGeld);
  269.                     db_query(Data,query);
  270.                 }
  271.                 format(string,sizeof(string),"Der Spieler %s hat dein Jackpot von %d€ gewonnen",DateInfo[6],LottoGeld);
  272.                 SendClientMessageToAll(0xFFFF00AA,string);
  273.                 LottoGeld = STARTGEWINN;
  274.                 SaveLotto();
  275.             }
  276.             format(query,sizeof(query),"DELETE FROM `Lotto` WHERE Name = '%s'",DateInfo[6]);
  277.             db_query(Data,query);
  278.     }
  279.     db_free_result(Result);
  280.     format(query,sizeof(query),"DELETE FROM `Lotto` WHERE Name = 'Muss'");
  281.     db_query(Data,query);
  282.     return 1;
  283. }
  284. stock SaveLotto()
  285. {
  286.     new string[256];
  287.     format(string,sizeof(string),"UPDATE `LottoGeld` SET `Geld` = %d",LottoGeld);
  288.     db_query(Data,string);
  289.     return 1;
  290. }
  291. stock split(const strsrc[],strdest[][],delimiter)
  292. {
  293.     new aNum,len,i,li;
  294.     while(i <= strlen(strsrc))
  295.     {
  296.         if(strsrc[i] == delimiter || i == strlen(strsrc))
  297.         {
  298.             len = strmid(strdest[aNum],strsrc,li,i,128);
  299.             strdest[aNum][len] = false;
  300.             li = i+1;
  301.             aNum++;
  302.         }
  303.         i++;
  304.     }
  305.     return 1;
  306. }
  307. stock SpielerName(playerid)
  308. {
  309.     new name[MAX_PLAYER_NAME];
  310.     GetPlayerName(playerid,name,sizeof(name));
  311.     return name;
  312. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement