Advertisement
Guest User

Aufgabensystem ([v1]Rechenaufgaben) by heyho

a guest
Apr 13th, 2014
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 24.54 KB | None | 0 0
  1. /**Diese Filterscript wurde von dem Benutzer heyhooo (Maxi B) geschrieben!**
  2. ***Ich bitte darum, meinen Namen nirgendswo zu entfernen.**
  3. ***Viel Spaß mit diesem simplen Aufgabensystem! (Rechenaufgaben [v1])**/
  4. #define FILTERSCRIPT
  5. #include <a_samp>
  6. #include <dini>
  7. #undef MAX_PLAYERS
  8. #define SCM SendClientMessage
  9. #define DIALOG_STATS 1
  10. #define DIALOG_HELP 2
  11. #define DIALOG_CREDIT 3
  12.  
  13. //============**CONTROL_PANEL**=============//
  14. new mainmenu = 1;                   //1 - Mit Hauptsauswahl, 0 - Hauptauswahl aus ****ERKLÄRUNG HIERZU AM ENDE****
  15. new enablemiddlekey = 1;            //1 - Man kann die Einheit mit der mittleren Maustaste beenden, 0 - nicht.
  16. new timertime = 10000;              //größer als 0 - Angabe der Zeit in der einer Aufgabe gelöst werden muss (in millisekunden) - 0 timer aus!
  17. new command[20] = "/aufgaben";      //Command zum aufrufen des Menüs (Falls an[1])
  18. new stopcommand[20] = "/astop";     //Zum stoppen dieser Einheit.
  19. new manucommandl[20] = "/astartl";  //Command zum manuellen aufrufen der Aufgaben (leicht)(Falls aus[0])
  20. new manucommandm[20] = "/astartm";  //Command zum manuellen aufrufen der Aufgaben (mittel)(Falls aus[0])
  21. new manucommands[20] = "/astarts";  //Command zum manuellen aufrufen der Aufgaben (schwer)(Falls aus[0])
  22. new enablestats = 1;                //1 - Zum einsehen von eigenen Stats, 2 - Zum Einsehen von eigenen und anderen Spielern(FOLGT NOCH), - 0 aus.
  23. new statscommand[20] = "/astats";   //Zum einsehen der eigenen Stats oder von anderen Spielern.
  24. new money = 0;                      //>0 - Zur Belohung des Spielers nach einer Aufgabe![in $], 0- Keine Belohung
  25. #define MAX_PLAYERS 50              //Maximale Spieler auf dem Server (ggf. ändern)
  26.  
  27. #define hovercolor 0x00FF00FF       //Farbe des Textdraws beim 'drüber gehen' mit der Maus
  28. #define successcolor 0x00D100FF     //Farbe für Erfolgs-Nachrichten
  29. #define failedcolor 0xC00000FF      //Farbe für Fehler-Nachrichten
  30. #define messagecolor 0xFFFFFFFF     //Farbe für die Nachrichten
  31. //=========================================//
  32.  
  33.  
  34. new intask[MAX_PLAYERS];
  35. new ergebnis[MAX_PLAYERS];
  36. new Timervar[MAX_PLAYERS];
  37. new countdown[MAX_PLAYERS];
  38.  
  39. enum astats
  40. {
  41.     pName[25],
  42.     pFails,
  43.     pLWins,
  44.     pMWins,
  45.     pSWins,
  46.     pWRound,
  47.     pFRound,
  48.     pScore
  49. }
  50. new PlayerStats[MAX_PLAYERS][astats];
  51.  
  52. //Textdraws
  53. new Text:blackbox1;
  54. new Text:header;
  55. new Text:leicht;
  56. new Text:mittel;
  57. new Text:schwer;
  58. new Text:disleicht;
  59. new Text:dismittel;
  60. new Text:disschwer;
  61.  
  62.  
  63. public OnFilterScriptInit()
  64. {
  65.     print("\n--------------------------------------------------");
  66.     print("Aufgabensystem © by heyhooo / Maxi B. wurde geladen!");
  67.     print("--------------------------------------------------\n");
  68.  
  69.    
  70.     //Textdraws
  71.     blackbox1 = TextDrawCreate(422.731628, 131.583358, "usebox");
  72.     TextDrawLetterSize(blackbox1, 0.212240, 26.697967);
  73.     TextDrawTextSize(blackbox1, 206.491958, 0.000000);
  74.     TextDrawAlignment(blackbox1, 1);
  75.     TextDrawColor(blackbox1, 0);
  76.     TextDrawUseBox(blackbox1, true);
  77.     TextDrawBoxColor(blackbox1, 102);
  78.     TextDrawSetShadow(blackbox1, 0);
  79.     TextDrawSetOutline(blackbox1, 0);
  80.     TextDrawFont(blackbox1, 0);
  81.  
  82.     header = TextDrawCreate(215.519683, 136.500137, "Waehle die Schwirigkeit");
  83.     TextDrawLetterSize(header, 0.485139, 2.416670);
  84.     TextDrawAlignment(header, 1);
  85.     TextDrawColor(header, -1061109505);
  86.     TextDrawSetShadow(header, 3);
  87.     TextDrawSetOutline(header, 0);
  88.     TextDrawBackgroundColor(header, 51);
  89.     TextDrawFont(header, 1);
  90.     TextDrawSetProportional(header, 1);
  91.  
  92.     leicht = TextDrawCreate(231.449447, 203.583343, "Leicht");
  93.     TextDrawLetterSize(leicht, 0.700189, 2.690835);
  94.     TextDrawAlignment(leicht, 1);
  95.     TextDrawColor(leicht, -1);
  96.     TextDrawSetShadow(leicht, 0);
  97.     TextDrawSetOutline(leicht, 1);
  98.     TextDrawBackgroundColor(leicht, 51);
  99.     TextDrawFont(leicht, 0);
  100.     TextDrawSetProportional(leicht, 1);
  101.     TextDrawSetSelectable(leicht, true);
  102.  
  103.     mittel = TextDrawCreate(232.855056, 257.833282, "Mittel");
  104.     TextDrawLetterSize(mittel, 0.601332, 2.603332);
  105.     TextDrawAlignment(mittel, 1);
  106.     TextDrawColor(mittel, -1);
  107.     TextDrawSetShadow(mittel, 0);
  108.     TextDrawSetOutline(mittel, 1);
  109.     TextDrawBackgroundColor(mittel, 51);
  110.     TextDrawFont(mittel, 0);
  111.     TextDrawSetProportional(mittel, 1);
  112.     TextDrawSetSelectable(mittel, true);
  113.  
  114.     schwer = TextDrawCreate(230.043884, 309.750030, "Schwer");
  115.     TextDrawLetterSize(schwer, 0.606017, 2.603332);
  116.     TextDrawAlignment(schwer, 1);
  117.     TextDrawColor(schwer, -1);
  118.     TextDrawSetShadow(schwer, 0);
  119.     TextDrawSetOutline(schwer, 1);
  120.     TextDrawBackgroundColor(schwer, 51);
  121.     TextDrawFont(schwer, 0);
  122.     TextDrawSetProportional(schwer, 1);
  123.     TextDrawSetSelectable(schwer, true);
  124.  
  125.     disleicht = TextDrawCreate(312.972320, 212.916625, "- Im Bereich von 10 - 100");
  126.     TextDrawLetterSize(disleicht, 0.202151, 1.168331);
  127.     TextDrawAlignment(disleicht, 1);
  128.     TextDrawColor(disleicht, -2139062017);
  129.     TextDrawSetShadow(disleicht, 0);
  130.     TextDrawSetOutline(disleicht, 1);
  131.     TextDrawBackgroundColor(disleicht, 51);
  132.     TextDrawFont(disleicht, 1);
  133.     TextDrawSetProportional(disleicht, 1);
  134.  
  135.     dismittel = TextDrawCreate(312.035522, 267.166748, "- Im Bereich von 10 - 1000");
  136.     TextDrawLetterSize(dismittel, 0.200746, 1.197497);
  137.     TextDrawAlignment(dismittel, 1);
  138.     TextDrawColor(dismittel, -2139062017);
  139.     TextDrawSetShadow(dismittel, 0);
  140.     TextDrawSetOutline(dismittel, 1);
  141.     TextDrawBackgroundColor(dismittel, 51);
  142.     TextDrawFont(dismittel, 1);
  143.     TextDrawSetProportional(dismittel, 1);
  144.  
  145.     disschwer = TextDrawCreate(311.566558, 318.499938, "- Alles moeglich");
  146.     TextDrawLetterSize(disschwer, 0.200277, 1.197498);
  147.     TextDrawAlignment(disschwer, 1);
  148.     TextDrawColor(disschwer, -2139062017);
  149.     TextDrawSetShadow(disschwer, 0);
  150.     TextDrawSetOutline(disschwer, 1);
  151.     TextDrawBackgroundColor(disschwer, 51);
  152.     TextDrawFont(disschwer, 1);
  153.     TextDrawSetProportional(disschwer, 1);
  154.     return 1;
  155. }
  156.  
  157. public OnFilterScriptExit()
  158. {
  159.     print("\n---------------------------------------------");
  160.     print("Aufgabensystem © by heyhooo / Maxi B. unloaded!");
  161.     print("---------------------------------------------\n");
  162.     return 1;
  163. }
  164.  
  165. public OnPlayerConnect(playerid)
  166. {
  167.     new pfad[20], sName[25];
  168.     countdown[playerid] = 3;
  169.     intask[playerid] = 0;
  170.     GetPlayerName(playerid, sName, 25);
  171.     format(PlayerStats[playerid][pName], 25, sName);
  172.     format(pfad, 20, "/astats/%s.ini",sName);
  173.     if(!fexist("astats.ini")) dini_Create(pfad);
  174.     PlayerStats[playerid][pFails] = dini_Int(pfad, "fails");
  175.     PlayerStats[playerid][pLWins] = dini_Int(pfad, "lwins");
  176.     PlayerStats[playerid][pMWins] = dini_Int(pfad, "mwins");
  177.     PlayerStats[playerid][pSWins] = dini_Int(pfad, "swins");
  178.     return 1;
  179. }
  180.  
  181. public OnPlayerDisconnect(playerid, reason)
  182. {
  183.     new pfad[20];
  184.     format(pfad, 20, "/astats/%s.ini",PlayerStats[playerid][pName]);
  185.     dini_IntSet(pfad, "fails", PlayerStats[playerid][pFails]);
  186.     dini_IntSet(pfad, "lwins", PlayerStats[playerid][pLWins]);
  187.     dini_IntSet(pfad, "mwins", PlayerStats[playerid][pMWins]);
  188.     dini_IntSet(pfad, "swins", PlayerStats[playerid][pSWins]);
  189.     TextDrawHideForPlayer(playerid, blackbox1);
  190.     TextDrawHideForPlayer(playerid, header);
  191.     TextDrawHideForPlayer(playerid, leicht);
  192.     TextDrawHideForPlayer(playerid, mittel);
  193.     TextDrawHideForPlayer(playerid, schwer);
  194.     TextDrawHideForPlayer(playerid, disleicht);
  195.     TextDrawHideForPlayer(playerid, dismittel);
  196.     TextDrawHideForPlayer(playerid, disschwer);
  197.     countdown[playerid] = 3;
  198.     intask[playerid] = 0;
  199.     return 1;
  200. }
  201.  
  202. public OnPlayerSpawn(playerid)
  203. {
  204.     return 1;
  205. }
  206.  
  207. public OnPlayerDeath(playerid, killerid, reason)
  208. {
  209.     return 1;
  210. }
  211.  
  212.  
  213. public OnPlayerText(playerid, text[])
  214. {
  215.     if(intask[playerid] != 0)
  216.     {
  217.         new string[80];
  218.         if(strval(text) == ergebnis[playerid]) {
  219.             if(intask[playerid] == 1)PlayerStats[playerid][pLWins] += 1;
  220.             else if(intask[playerid] == 2)PlayerStats[playerid][pMWins] += 1;
  221.             else if(intask[playerid] == 3)PlayerStats[playerid][pSWins] += 1;
  222.             PlayerStats[playerid][pWRound] += 1;
  223.             format(string, 80, "[RICHTIG]Du hast die Aufgabe erfolgreich gelöst! (%d)", ergebnis[playerid]);
  224.             SCM(playerid, successcolor, "[RICHTIG]Du hast die Aufgabe erfolgreich gelöst!");
  225.             GivePlayerTask(playerid);
  226.             countdown[playerid] = 3;
  227.             if(money > 0) GivePlayerMoney(playerid,money);
  228.             KillTimer(Timervar[playerid]);
  229.             return 0;
  230.         }
  231.         else {
  232.             format(string,80,"[FALSCH]Das war leider nicht richtig! Es wäre %d gewesen!",ergebnis[playerid]);
  233.             PlayerStats[playerid][pFails] += 1; PlayerStats[playerid][pFRound] += 1;
  234.             SCM(playerid, failedcolor, string);
  235.             GivePlayerTask(playerid);
  236.             countdown[playerid] = 3;
  237.             KillTimer(Timervar[playerid]);
  238.             return 0;
  239.         }
  240.     }
  241.     return 1;
  242. }
  243.  
  244. public OnPlayerCommandText(playerid, cmdtext[])
  245. {
  246.     new string[100], tmp[20], idx;
  247.     if (strcmp(command, cmdtext, true, 20) == 0)
  248.     {
  249.         if(intask[playerid] == 0)
  250.         {
  251.             if(mainmenu == 0) return 1;
  252.             TextDrawShowForPlayer(playerid, blackbox1);
  253.             TextDrawShowForPlayer(playerid, header);
  254.             TextDrawShowForPlayer(playerid, leicht);
  255.             TextDrawShowForPlayer(playerid, mittel);
  256.             TextDrawShowForPlayer(playerid, schwer);
  257.             TextDrawShowForPlayer(playerid, disleicht);
  258.             TextDrawShowForPlayer(playerid, dismittel);
  259.             TextDrawShowForPlayer(playerid, disschwer);
  260.             SelectTextDraw(playerid, hovercolor);
  261.         }
  262.         return 1;
  263.     }
  264.     if (strcmp("/ahelp", cmdtext, true) == 0)
  265.     {
  266.         new info[400],info2[100];
  267.         format(info,sizeof(info),"{FFFFFF}Das Aufgabensystem besteht in dieser Verion aus Rechenaufgaben!\n");
  268.         if(mainmenu == 1) strcat(info,"Du kannst das Startmenu unter {0069FF)/aufgaben{FFFFFF} aufrufen und somit deine Schwirigkeit wählen.\n");
  269.         if(mainmenu == 0) format(info2,sizeof(info2),"Du kannst deine Schwirigkeit per Command (%s - Leicht, %s - Mittel, %s - Schwer) wählen und somit direkt starten!\n", manucommandl,manucommandm,manucommands); format(info,sizeof(info), "%s%s", info, info2);
  270.         strcat(info, "Der Schwirigkeitsgrad hat auch auswirkung darauf, wie viele Punkte du jewiels bekommst, wenn die Antwort richtig war!\nLeicht - 1;  Mittel - 2;  Schwer - 3\n");
  271.         format(info2, sizeof(info2),"Deine Statisiken kannst du unter %s nachgucken. Dort wird alles aufgelistet!\nUnd jetzt versuchs doch gleich mal!");
  272.         ShowPlayerDialog(playerid, DIALOG_HELP,DIALOG_STYLE_MSGBOX,"Das Aufgabensystem",info,"OK","");
  273.     }
  274.     if (strcmp("/acredit", cmdtext, true) == 0)
  275.     {
  276.         new string2[60];
  277.         format(string2, sizeof(string2),"{FFFFFF}Das Aufgabensystem ([v1]Rechenaufgaben) wurde von heyho geschrieben und veröffentlicht!");
  278.         ShowPlayerDialog(playerid, DIALOG_CREDIT, DIALOG_STYLE_MSGBOX,"Aufgabensystem by heyho",string2,"OK","");
  279.     }
  280.     if (strcmp(cmdtext,statscommand, true) == 0)
  281.     {
  282.         if(enablestats == 0) return 1;
  283.         tmp = strtok(cmdtext, idx);
  284.         new info[200],info2[200],info3[100],info4[100],info5[120],zsm[400];
  285.         PlayerStats[playerid][pScore] = (PlayerStats[playerid][pLWins]+(PlayerStats[playerid][pMWins]*2)+(PlayerStats[playerid][pSWins]*3))-PlayerStats[playerid][pFails];
  286.         if(enablestats >= 0 && IsNumeric(tmp) == 1 && strval(tmp) != INVALID_PLAYER_ID) {
  287.             new givepl = strval(tmp);
  288.             format(string, sizeof(string),"Stats von %s",PlayerStats[givepl][pName]);
  289.             format(info,sizeof(info),"{FFFFFF}%s hat\n{0069FF}%d richtige{FFFFFF} und {FF2800}%d falsche{FFFFFF} Aufgaben gelöst!\n",PlayerStats[givepl][pLWins]+PlayerStats[givepl][pMWins]+PlayerStats[givepl][pSWins],PlayerStats[givepl][pFails]);
  290.             format(info2,sizeof(info2),"Davon sind %d leichte, %d mittlere und %d Schwere Aufgaben richtig!\nDas ergibt einen Punktestand von %d", PlayerStats[givepl][pLWins],PlayerStats[givepl][pMWins],PlayerStats[givepl][pSWins], PlayerStats[givepl][pScore]);
  291.             format(zsm,sizeof(zsm),"%s%s",info,info2);
  292.             ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,string,info,"OK","");
  293.         }
  294.         else {
  295.             format(info2,sizeof(info2),"{0069FF}Hier kannst du deine eigenen Stats sehen!\n{FFFFFF}");
  296.             if(enablestats == 2) format(info3,sizeof(info3),"\nUm die Stats eines anderen zu sehen tippe '%s [playerid]'.\n\n",statscommand);
  297.             format(info4,sizeof(info4),"{FFFFFF}Du hast\n{00FF00}%d richtige{FFFFFF} und {FF2800}%d falsche{FFFFFF} Aufgaben gelöst!\n",PlayerStats[playerid][pLWins]+PlayerStats[playerid][pMWins]+PlayerStats[playerid][pSWins],PlayerStats[playerid][pFails]);
  298.             format(info5,sizeof(info5),"Davon sind %d leichte, %d mittlere und %d Schwere Aufgaben richtig!\nDas ergibt einen Punktestand von %d", PlayerStats[playerid][pLWins],PlayerStats[playerid][pMWins],PlayerStats[playerid][pSWins], PlayerStats[playerid][pScore]);
  299.             format(zsm,sizeof(zsm),"%s%s%s%s",info2,info3,info4,info5);
  300.             ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,"Meine Stats",zsm,"OK","");
  301.             if(enablestats == 2) {format(string, sizeof(string),"Benutze %s [playerid], um die Stats eines anderen einzusehen",statscommand);SCM(playerid, messagecolor, string);}
  302.             printf("%s",tmp);
  303.             return 1;
  304.         }
  305.         printf("%s",tmp);
  306.         return 1;
  307.     }
  308.     if (strcmp(stopcommand, cmdtext, true, 20) == 0)
  309.     {
  310.         SCM(playerid, messagecolor, "Du hast die Rechenaufgaben beendet!");
  311.         format(string, 70, "In dieser Runde hast du %d richtig und %d falsch gelöst!", PlayerStats[playerid][pWRound],PlayerStats[playerid][pFRound]);
  312.         SCM(playerid, messagecolor, string);
  313.         intask[playerid] = 0;
  314.         countdown[playerid] = 3;
  315.         KillTimer(Timervar[playerid]);
  316.         return 1;
  317.     }
  318.     if (strcmp(manucommandl, cmdtext, true, 20) == 0)
  319.     {
  320.         intask[playerid] = 1;
  321.         SCM(playerid, messagecolor, "Dir werden nun in der Schwirigkeit 'Leicht' Rechenaufgaben gestellt!");
  322.         format(string, sizeof(string),"Zum stoppen dieser Einheit tippe einfach %s", stopcommand);
  323.         if(enablemiddlekey == 1)strcat(string, " oder drücke die mittlere Maustaste!");
  324.         SCM(playerid, messagecolor, string);
  325.         if(timertime > 0) {format(string, sizeof(string),"{FFFFFF}Du hast jeweils {0069FF}%d{FFFFFF} Sekunden für eine Aufgabe Zeit!",timertime/1000); SCM(playerid, messagecolor, string);}
  326.         SCM(playerid, messagecolor, string);
  327.         GivePlayerTask(playerid);
  328.         return 1;
  329.     }
  330.     if (strcmp(manucommandm, cmdtext, true, 20) == 0)
  331.     {
  332.         intask[playerid] = 2;
  333.         SCM(playerid, messagecolor, "Dir werden nun in der Schwirigkeit 'Mittel' Rechenaufgaben gestellt!");
  334.         format(string, sizeof(string),"Zum stoppen dieser Einheit tippe einfach %s", stopcommand);
  335.         if(enablemiddlekey == 1)strcat(string, " oder drücke die mittlere Maustaste!");
  336.         SCM(playerid, messagecolor, string);
  337.         if(timertime > 0) {format(string, sizeof(string),"{FFFFFF}Du hast jeweils {0069FF}%d{FFFFFF} Sekunden für eine Aufgabe Zeit!",timertime/1000); SCM(playerid, messagecolor, string);}
  338.         SCM(playerid, messagecolor, string);
  339.         GivePlayerTask(playerid);
  340.         return 1;
  341.     }
  342.     if (strcmp(manucommands, cmdtext, true, 20) == 0)
  343.     {
  344.         intask[playerid] = 3;
  345.         SCM(playerid, messagecolor, "Dir werden nun in der Schwirigkeit 'Schwer' Rechenaufgaben gestellt!");
  346.         format(string, sizeof(string),"Zum stoppen dieser Einheit tippe einfach %s", stopcommand);
  347.         if(enablemiddlekey == 1)strcat(string, " oder drücke die mittlere Maustaste!");
  348.         SCM(playerid, messagecolor, string);
  349.         if(timertime > 0) {format(string, sizeof(string),"{FFFFFF}Du hast jeweils {0069FF}%d{FFFFFF} Sekunden für eine Aufgabe Zeit!",timertime/1000); SCM(playerid, messagecolor, string);}
  350.         SCM(playerid, messagecolor, string);
  351.         GivePlayerTask(playerid);
  352.         return 1;
  353.     }
  354.     return 0;
  355. }
  356.  
  357. public OnPlayerClickTextDraw(playerid, Text:clickedid)
  358. {
  359.     new string[80];
  360.     if(clickedid == leicht)
  361.     {
  362.         intask[playerid] = 1;
  363.         SCM(playerid, messagecolor, "Dir werden nun in der Schwirigkeit 'Leicht' Rechenaufgaben gestellt!");
  364.         format(string, sizeof(string),"Zum stoppen dieser Einheit tippe einfach %s", stopcommand);
  365.         if(enablemiddlekey == 1)strcat(string, " oder drücke die mittlere Maustaste!");
  366.         SCM(playerid, messagecolor, string);
  367.         if(timertime > 0) {format(string, sizeof(string),"{FFFFFF}Du hast jeweils {0069FF}%d{FFFFFF} Sekunden für eine Aufgabe Zeit!",timertime/1000); SCM(playerid, messagecolor, string);}
  368.         SCM(playerid, messagecolor, string);
  369.         GivePlayerTask(playerid);
  370.         return 1;
  371.     }
  372.     if(clickedid == mittel)
  373.     {
  374.         intask[playerid] = 2;
  375.         SCM(playerid, messagecolor, "Dir werden nun in der Schwirigkeit 'Mittel' Rechenaufgaben gestellt!");
  376.         format(string, sizeof(string),"Zum stoppen dieser Einheit tippe einfach %s", stopcommand);
  377.         if(enablemiddlekey == 1)strcat(string, " oder drücke die mittlere Maustaste!");
  378.         SCM(playerid, messagecolor, string);
  379.         if(timertime > 0) {format(string, sizeof(string),"{FFFFFF}Du hast jeweils {0069FF}%d{FFFFFF} Sekunden für eine Aufgabe Zeit!",timertime/1000); SCM(playerid, messagecolor, string);}
  380.         SCM(playerid, messagecolor, string);
  381.         GivePlayerTask(playerid);
  382.     }
  383.     if(clickedid == schwer)
  384.     {
  385.         intask[playerid] = 3;
  386.         SCM(playerid, messagecolor, "Dir werden nun in der Schwirigkeit 'Schwer' Rechenaufgaben gestellt!");
  387.         format(string, sizeof(string),"Zum stoppen dieser Einheit tippe einfach %s", stopcommand);
  388.         if(enablemiddlekey == 1)strcat(string, " oder drücke die mittlere Maustaste!");
  389.         SCM(playerid, messagecolor, string);
  390.         if(timertime > 0) {format(string, sizeof(string),"{FFFFFF}Du hast jeweils {0069FF}%d{FFFFFF} Sekunden für eine Aufgabe Zeit!",timertime/1000); SCM(playerid, messagecolor, string);}
  391.         SCM(playerid, messagecolor, string);
  392.         GivePlayerTask(playerid);
  393.         return 1;
  394.     }
  395.     return 1;
  396. }
  397.  
  398. /*
  399. art 0 = addition
  400. art 1 = subtraktion
  401. art 2 = add. subtrak.
  402. art 3 = subtrak add
  403. art 4 = multiplikation
  404. art 5 = division
  405. art 6 = multi. divi.
  406. art 7 = divi. multi.
  407. */
  408.  
  409. stock GivePlayerTask(playerid)
  410. {
  411.     new vars[4], art, string[50];
  412.     CancelSelectTextDraw(playerid);
  413.     TextDrawHideForPlayer(playerid, blackbox1);
  414.     TextDrawHideForPlayer(playerid, header);
  415.     TextDrawHideForPlayer(playerid, leicht);
  416.     TextDrawHideForPlayer(playerid, mittel);
  417.     TextDrawHideForPlayer(playerid, schwer);
  418.     TextDrawHideForPlayer(playerid, disleicht);
  419.     TextDrawHideForPlayer(playerid, dismittel);
  420.     TextDrawHideForPlayer(playerid, disschwer);
  421.     if(timertime > 0) Timervar[playerid] = SetTimerEx("ATimer", timertime - 3000, 0, "i",playerid);
  422.     if(intask[playerid] == 1)
  423.     {
  424.         art = random(1);
  425.         vars[0] = 10+random(90); vars[1] = 10+random(90);
  426.         if(art == 1) {
  427.             do {
  428.                 vars[0] = 10+random(90); vars[1] = 10+random(90);
  429.             } while(vars[0] < vars[1]);
  430.         }
  431.         else if(art == 0) {format(string, sizeof(string), "[AUFGABE]: %d + %d", vars[0], vars[1]); ergebnis[playerid] = vars[0]+vars[1];}
  432.         else if(art == 1) {format(string, sizeof(string), "[AUFGABE]: %d - %d", vars[0], vars[1]); ergebnis[playerid] = vars[0]-vars[1];}
  433.     }
  434.     else if(intask[playerid] == 2)
  435.     {
  436.         art = random(3);
  437.         vars[0] = 10+random(990); vars[1] = 10+random(990);
  438.         if(art == 0) {format(string, sizeof(string), "[AUFGABE]: %d + %d", vars[0], vars[1]); ergebnis[playerid] = vars[0]+vars[1];}
  439.         else if(art == 1) {
  440.             do {
  441.                 vars[0] = 10+random(990); vars[1] = 10+random(990);
  442.             } while(vars[0] < vars[1]);
  443.             format(string, sizeof(string), "[AUFGABE]: %d - %d", vars[0], vars[1]);
  444.             ergebnis[playerid] = vars[0]-vars[1];
  445.         }
  446.         else if(art == 2) {
  447.             vars[0] = 10+random(30); vars[1] = 10+random(10);
  448.             format(string, sizeof(string), "[AUFGABE]: %d * %d", vars[0], vars[1]); ergebnis[playerid] = vars[0]*vars[1];
  449.         }
  450.         else if(art == 3) {
  451.             vars[0] = 20+random(30); vars[1] = 10+random(10);
  452.             vars[0] = vars[0] * vars[1];
  453.             format(string, sizeof(string), "[AUFGABE]: %d / %d", vars[0], vars[1]); ergebnis[playerid] = vars[0]/vars[1];
  454.         }
  455.     }
  456.     else if(intask[playerid] == 3)
  457.     {
  458.         new anzahl = random(3);
  459.         art = random(3);
  460.         vars[0] = 10+random(10000); vars[1] = 10+random(10000); vars[2] = 10+random(40);
  461.         if(art == 0) {
  462.             if(anzahl == 0) {format(string, sizeof(string), "[AUFGABE]: %d + %d", vars[0], vars[1]); ergebnis[playerid] = vars[0]+vars[1];}
  463.             else if(anzahl == 1) {format(string, sizeof(string), "[AUFGABE]: %d + %d + %d", vars[0], vars[1], vars[2]); ergebnis[playerid] = vars[0]+vars[1]+vars[2];}
  464.             else if(anzahl == 2) {format(string, sizeof(string), "[AUFGABE]: %d + %d - %d", vars[0], vars[1], vars[2]); ergebnis[playerid] = vars[0]+vars[1]-vars[2];}
  465.             else if(anzahl == 3) {format(string, sizeof(string), "[AUFGABE]: %d + %d * %d", vars[0], vars[1], vars[2]); ergebnis[playerid] = vars[0]+vars[1]*vars[2];}
  466.         }
  467.         else if(art == 1) {
  468.             if(anzahl == 0) {format(string, sizeof(string), "[AUFGABE]: %d - %d", vars[0], vars[1]); ergebnis[playerid] = vars[0]-vars[1];}
  469.             else if(anzahl == 1) {format(string, sizeof(string), "[AUFGABE]: %d - %d + %d", vars[0], vars[1], vars[2]); ergebnis[playerid] = vars[0]-vars[1]+vars[2];}
  470.             else if(anzahl == 2) {format(string, sizeof(string), "[AUFGABE]: %d - %d - %d", vars[0], vars[1], vars[2]); ergebnis[playerid] = vars[0]-vars[1]-vars[2];}
  471.             else if(anzahl == 3) {format(string, sizeof(string), "[AUFGABE]: %d - %d * %d", vars[0], vars[1], vars[2]); ergebnis[playerid] = vars[0]-vars[1]*vars[2];}
  472.         }
  473.         else if(art == 2) {
  474.             vars[0] = 10+random(50); vars[1] = 10+random(30); vars[2] = 10+random(60);
  475.             if(anzahl == 0) {format(string, sizeof(string), "[AUFGABE]: %d * %d", vars[0], vars[1]); ergebnis[playerid] = vars[0]*vars[1];}
  476.             else if(anzahl == 1) {format(string, sizeof(string), "[AUFGABE]: %d * %d + %d", vars[0], vars[1], vars[2]); ergebnis[playerid] = vars[0]*vars[1]+vars[2];}
  477.             else if(anzahl == 2) {format(string, sizeof(string), "[AUFGABE]: %d * %d - %d", vars[0], vars[1], vars[2]); ergebnis[playerid] = vars[0]*vars[1]-vars[2];}
  478.             else if(anzahl == 3) {format(string, sizeof(string), "[AUFGABE]: %d * %d * %d", vars[0], vars[1], vars[2]); ergebnis[playerid] = vars[0]*vars[1]*vars[2];}
  479.         }
  480.         else if(art == 3) {
  481.             vars[0] = 20+random(80); vars[1] = 20+random(50); vars[2] = 10+random(60);
  482.             vars[0] = vars[0] * vars[1];
  483.             if(anzahl == 0) {format(string, sizeof(string), "[AUFGABE]: %d / %d", vars[0], vars[1]); ergebnis[playerid] = vars[0]/vars[1];}
  484.             if(anzahl == 1) {format(string, sizeof(string), "[AUFGABE]: %d / %d + %d", vars[0], vars[1], vars[2]); ergebnis[playerid] = vars[0]/vars[1]+vars[2];}
  485.             if(anzahl == 2) {format(string, sizeof(string), "[AUFGABE]: %d / %d - %d", vars[0], vars[1], vars[2]); ergebnis[playerid] = vars[0]/vars[1]-vars[2];}
  486.             if(anzahl == 3) {format(string, sizeof(string), "[AUFGABE]: %d / %d * %d", vars[0], vars[1], vars[2]); ergebnis[playerid] = vars[0]/vars[1]*vars[2];}
  487.         }
  488.     }
  489.     else return 1;
  490.     return SCM(playerid, messagecolor, string);
  491. }
  492.  
  493. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  494. {
  495.     if(enablemiddlekey == 1 && (newkeys & KEY_SUBMISSION) && intask[playerid] > 0)
  496.     {
  497.         new string[70];
  498.         SCM(playerid, messagecolor, "Du hast die Rechenaufgaben beendet!");
  499.         format(string, 70, "In dieser Runde hast du %d richtig und %d falsch gelöst!", PlayerStats[playerid][pWRound],PlayerStats[playerid][pFRound]);
  500.         SCM(playerid, messagecolor, string);
  501.         intask[playerid] = 0;
  502.         countdown[playerid] = 3;
  503.         KillTimer(Timervar[playerid]);
  504.     }
  505.     return 1;
  506. }
  507.  
  508. forward ATimer(playerid);
  509. public ATimer(playerid)
  510. {
  511.     if(countdown[playerid] != 0)
  512.     {
  513.         new timestring[4];
  514.         format(timestring, 4, "%d",countdown[playerid]);
  515.         PlayerPlaySound(playerid, 5201, 0, 0, 0);
  516.         GameTextForPlayer(playerid, timestring, 1000, 3);
  517.         countdown[playerid] --;
  518.         return Timervar[playerid] = SetTimerEx("ATimer", 1000, 0, "i",playerid);
  519.     }
  520.     new string[100];
  521.     countdown[playerid] = 3;
  522.     PlayerPlaySound(playerid, 5205, 0, 0, 0);
  523.     SCM(playerid, failedcolor, "Die Zeit ist abgelaufen! Starte es erneut für weitere Aufgaben!");
  524.     format(string, 70, "In dieser Runde hast du %d richtig und %d falsch gelöst!", PlayerStats[playerid][pWRound],PlayerStats[playerid][pFRound]);
  525.     SCM(playerid, messagecolor, string);
  526.     PlayerStats[playerid][pFails]++;
  527.     intask[playerid] = 0;
  528.     return 1;
  529. }
  530.  
  531. IsNumeric(const string[])
  532. {
  533.     new i;
  534.     while(string[i] != '\0') //end of string
  535.     {
  536.         if (string[i] > '9' || string[i] < '0'){return 0;}
  537.         i++;
  538.     }
  539.     return 1;
  540. }
  541.  
  542. strtok(const string[], &index)
  543. {
  544.     new length = strlen(string);
  545.     while ((index < length) && (string[index] <= ' '))
  546.     {
  547.         index++;
  548.     }
  549.  
  550.     new offset = index;
  551.     new result[20];
  552.     while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  553.     {
  554.         result[index - offset] = string[index];
  555.         index++;
  556.     }
  557.     result[index - offset] = EOS;
  558.     return result;
  559. }
  560.  
  561.  
  562. /********ERKLÄRUNG ZUM MAINMENU*********
  563. Das Mainmenu wird durch den freien Befehl (default: /aufgaben) aufgerufen.
  564. Hier kann zwischen leichten, mittleren und schweren Aufgaben gewählt werden.
  565. Wer dieses nicht möchte stellt es um und muss somit diese Auswahl manuell treffen.
  566. Dies geht über die selbst gewählten Befehle (default: /astartl, /astartm, /astarts).
  567. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement