T4125Gamer

Verbesserung

Sep 18th, 2013
92
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. #include <a_samp>
  3. #include <dini>
  4. #include <ocmd>
  5.  
  6. #define AMeldung 0xAF0000FF
  7. #define FMeldung 0x002DFFFF
  8.  
  9.  
  10. #define DIALOG_LOGIN 1
  11. #define DIALOG_REGISTER 2
  12.  
  13. #pragma tabsize 0
  14.  
  15.  
  16.  
  17. main()
  18. {
  19.     print("\n----------------------------------");
  20.     print(" Blank Gamemode by your name here");
  21.     print("----------------------------------\n");
  22. }
  23.  
  24.  
  25. public OnGameModeInit()
  26. {
  27.     SetGameModeText("xsL33p");
  28.     return 1;
  29. }
  30.  
  31. public OnGameModeExit()
  32. {
  33.     return 1;
  34. }
  35.  
  36. public OnPlayerRequestClass(playerid, classid)
  37. {
  38.     SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  39.     SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
  40.     SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
  41.     return 1;
  42. }
  43.  
  44. public OnPlayerConnect(playerid)
  45. {
  46.     new Playerdatei[128];
  47.     new name[MAX_PLAYER_NAME];
  48.     GetPlayerName(playerid,name,sizeof(name));
  49.     format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
  50.     if(dini_Exists(Playerdatei))
  51.     {
  52.         ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Logge dich bitte ein:","Gebe bitte nun dein Passwort ein","Einloggen","Abbrechen");
  53.     }
  54.     else
  55.     {
  56.         ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Regestrierung:","Bitte wähle ein Passwort aus","Register","Abbrechen");
  57.     }
  58.     return 1;
  59. }
  60.  
  61. public OnPlayerDisconnect(playerid, reason)
  62. {
  63.     if(GetPVarInt(playerid,"Eingeloggt")==1)
  64.     {
  65.         SpielerSpeichern(playerid);
  66.     }
  67.     return 1;
  68. }
  69.  
  70. public OnPlayerSpawn(playerid)
  71. {
  72.     return 1;
  73. }
  74.  
  75. public OnPlayerDeath(playerid, killerid, reason)
  76. {
  77.     return 1;
  78. }
  79.  
  80. public OnVehicleSpawn(vehicleid)
  81. {
  82.     return 1;
  83. }
  84.  
  85. public OnVehicleDeath(vehicleid, killerid)
  86. {
  87.     return 1;
  88. }
  89.  
  90. public OnPlayerText(playerid, text[])
  91. {
  92.     return 1;
  93. }
  94.  
  95. public OnPlayerCommandText(playerid, cmdtext[])
  96. {
  97.     if (strcmp("/mycommand", cmdtext, true, 10) == 0)
  98.     {
  99.         // Do something here
  100.         return 1;
  101.     }
  102.     return 0;
  103. }
  104.  
  105. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  106. {
  107.     return 1;
  108. }
  109.  
  110. public OnPlayerExitVehicle(playerid, vehicleid)
  111. {
  112.     return 1;
  113. }
  114.  
  115. public OnPlayerStateChange(playerid, newstate, oldstate)
  116. {
  117.     return 1;
  118. }
  119.  
  120. public OnPlayerEnterCheckpoint(playerid)
  121. {
  122.     return 1;
  123. }
  124.  
  125. public OnPlayerLeaveCheckpoint(playerid)
  126. {
  127.     return 1;
  128. }
  129.  
  130. public OnPlayerEnterRaceCheckpoint(playerid)
  131. {
  132.     return 1;
  133. }
  134.  
  135. public OnPlayerLeaveRaceCheckpoint(playerid)
  136. {
  137.     return 1;
  138. }
  139.  
  140. public OnRconCommand(cmd[])
  141. {
  142.     return 1;
  143. }
  144.  
  145. public OnPlayerRequestSpawn(playerid)
  146. {
  147.     return 1;
  148. }
  149.  
  150. public OnObjectMoved(objectid)
  151. {
  152.     return 1;
  153. }
  154.  
  155. public OnPlayerObjectMoved(playerid, objectid)
  156. {
  157.     return 1;
  158. }
  159.  
  160. public OnPlayerPickUpPickup(playerid, pickupid)
  161. {
  162.     return 1;
  163. }
  164.  
  165. public OnVehicleMod(playerid, vehicleid, componentid)
  166. {
  167.     return 1;
  168. }
  169.  
  170. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  171. {
  172.     return 1;
  173. }
  174.  
  175. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  176. {
  177.     return 1;
  178. }
  179.  
  180. public OnPlayerSelectedMenuRow(playerid, row)
  181. {
  182.     return 1;
  183. }
  184.  
  185. public OnPlayerExitedMenu(playerid)
  186. {
  187.     return 1;
  188. }
  189.  
  190. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  191. {
  192.     return 1;
  193. }
  194.  
  195. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  196. {
  197.     return 1;
  198. }
  199.  
  200. public OnRconLoginAttempt(ip[], password[], success)
  201. {
  202.     return 1;
  203. }
  204.  
  205. public OnPlayerUpdate(playerid)
  206. {
  207.     return 1;
  208. }
  209.  
  210. public OnPlayerStreamIn(playerid, forplayerid)
  211. {
  212.     return 1;
  213. }
  214.  
  215. public OnPlayerStreamOut(playerid, forplayerid)
  216. {
  217.     return 1;
  218. }
  219.  
  220. public OnVehicleStreamIn(vehicleid, forplayerid)
  221. {
  222.     return 1;
  223. }
  224.  
  225. public OnVehicleStreamOut(vehicleid, forplayerid)
  226. {
  227.     return 1;
  228. }
  229.  
  230. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  231. {
  232.         if(dialogid==DIALOG_LOGIN)
  233.         {
  234.                 if(response==0)
  235.                 {
  236.                     SendClientMessage(playerid,AMeldung,"Du hast den Login Vorgang abgebrochen!");
  237.                     Kick(playerid);
  238.                     return 1;
  239.                 }
  240.                 if(response==1)
  241.                 {
  242.                         if(!strlen(inputtext))
  243.                         {
  244.                             SendClientMessage(playerid,AMeldung,"Dein eingegebenes Passwort war nicht lang genug!");
  245.                                 ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Loggin","Dein Account wurde gefunden!\nBitte gib dein Passwort ein! ","Login","Abbrechen");
  246.                                 return 1;
  247.                         }
  248.                         else
  249.                         {
  250.                                 Login(playerid,inputtext);
  251.                         return 1;
  252.                         }
  253.                 }
  254.         }
  255.         if(dialogid==DIALOG_REGISTER)
  256.         {
  257.                 if(response==0)
  258.                 {
  259.                     SendClientMessage(playerid,AMeldung,"Du hast die Registration  abgebrochen!");
  260.                     Kick(playerid);
  261.                     return 1;
  262.                 }
  263.                 if(response==1)
  264.                 {
  265.                         if(!strlen(inputtext))
  266.                         {
  267.                             SendClientMessage(playerid,AMeldung,"Dein eingegebenes Passwort war nicht lang genug!");
  268.                             ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Registrieren auf sL33p Reallife","Willkommen auf sL33p Reallife!\n Bitte gib nun dein gewünschtes Passwort ein :","Regestrieren","Abbrechen");
  269.                             return 1;
  270.                         }
  271.                         else
  272.                         {
  273.                             Register(playerid,inputtext);
  274.                             return 1;
  275.                         }
  276.                 }
  277.         }
  278.         return 1;
  279.  
  280. }
  281.  
  282. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  283. {
  284.     return 1;
  285. }
  286.  
  287. stock Register(playerid,key[])
  288. {
  289.      new Playerdatei[128];
  290.      new name[MAX_PLAYER_NAME];
  291.      GetPlayerName(playerid,name,sizeof(name));
  292.      format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
  293.      dini_Create(Playerdatei);
  294.      dini_Set(Playerdatei,"Passwort",key);
  295.      SendClientMessage(playerid,FMeldung,"Du hast dich erfolgreich eingeloggt.");
  296.      SetPlayerScore(playerid,0);
  297.      dini_IntSet(Playerdatei,"Adminlevel",0);
  298.      SetPVarInt(playerid,"Eingeloggt",1);
  299.      return 1;
  300. }
  301.  
  302.  
  303. stock Login(playerid,key[])
  304. {
  305.      new Playerdatei[128];
  306.      new name[MAX_PLAYER_NAME];
  307.      GetPlayerName(playerid,name,sizeof(name));
  308.      format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
  309.      if(!strcmp(key,dini_Get(Playerdatei,"Passwort"),false))
  310.      {
  311.            AccountLaden(playerid);// Dazu werden wir gleich wieder einen stock erstellen
  312.            SendClientMessage(playerid,FMeldung,"Du hast dich erfolgreich eingeloggt.");
  313.      }
  314.      else
  315.      {
  316.           SendClientMessage(playerid,AMeldung,"Dein hast ein falsches Passwort eingegeben!");
  317.           ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde in unserer Datenbank gefunden!\nBitte gib nun dein Passwort ein! ","LogIn", "Abbrechen");
  318.      }
  319.      return 1;
  320. }
  321.  
  322.  
  323. stock AccountLaden(playerid)
  324. {
  325.      new Playerdatei[128];
  326.      new name[MAX_PLAYER_NAME];
  327.      GetPlayerName(playerid,name,sizeof(name));
  328.      format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
  329.      SetPlayerScore(playerid,dini_Int(Playerdatei,"Level"));
  330.      GivePlayerMoney(playerid,dini_Int(Playerdatei,"Geld"));
  331.      SetPVarInt(playerid,"Adminlevel",dini_Int(Playerdatei,"Adminlevel"));
  332.      SetPVarInt(playerid,"Eingeloggt",1);
  333.      if(GetPVarInt(playerid,"Baned")==1)
  334.      {
  335.         SendClientMessage(playerid,AMeldung,"Du bist vom Server gebannt!");
  336.         Kick(playerid);
  337.      }
  338.      return 1;
  339. }
  340.  
  341.  
  342. stock SpielerSpeichern(playerid)
  343. {
  344.     if(GetPVarInt(playerid,"Eingeloggt") == 1)
  345.     {
  346.          new Playerdatei[128];
  347.          new name[MAX_PLAYER_NAME];
  348.          GetPlayerName(playerid,name,sizeof(name));
  349.          format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
  350.          dini_IntSet(Playerdatei,"Level",GetPlayerScore(playerid));
  351.          dini_IntSet(Playerdatei,"Geld",GetPlayerMoney(playerid));
  352.          dini_IntSet(Playerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
  353.          dini_IntSet(Playerdatei,"Baned",GetPVarInt(playerid,"Baned"));
  354.     }
  355. }
  356.  
  357.  
  358. stock IstSpielerEinAdmin(playerid,rang)
  359. {
  360.    if(GetPVarInt(playerid,"Adminlevel")>=rang)return 1;
  361.    return 0;
  362. }
  363.  
  364.  
  365. stock SpielerName(playerid)
  366. {
  367.         new name[MAX_PLAYER_NAME];
  368.         GetPlayerName(playerid,name,sizeof(name));
  369.         return name;
  370. }
  371.  
  372.  
  373. stock sscanf(string[], format[], {Float,_}:...)
  374. {
  375.         #if defined isnull
  376.                 if (isnull(string))
  377.         #else
  378.                 if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  379.         #endif
  380.                 {
  381.                         return format[0];
  382.                 }
  383.         #pragma tabsize 4
  384.         new
  385.                 formatPos = 0,
  386.                 stringPos = 0,
  387.                 paramPos = 2,
  388.                 paramCount = numargs(),
  389.                 delim = ' ';
  390.         while (string[stringPos] && string[stringPos] <= ' ')
  391.         {
  392.                 stringPos++;
  393.         }
  394.         while (paramPos < paramCount && string[stringPos])
  395.         {
  396.                 switch (format[formatPos++])
  397.                 {
  398.                         case '\0':
  399.                         {
  400.                                 return 0;
  401.                         }
  402.                         case 'i', 'd':
  403.                         {
  404.                                 new
  405.                                         neg = 1,
  406.                                         num = 0,
  407.                                         ch = string[stringPos];
  408.                                 if (ch == '-')
  409.                                 {
  410.                                         neg = -1;
  411.                                         ch = string[++stringPos];
  412.                                 }
  413.                                 do
  414.                                 {
  415.                                         stringPos++;
  416.                                         if ('0' <= ch <= '9')
  417.                                         {
  418.                                                 num = (num * 10) + (ch - '0');
  419.                                         }
  420.                                         else
  421.                                         {
  422.                                                 return -1;
  423.                                         }
  424.                                 }
  425.                                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  426.                                 setarg(paramPos, 0, num * neg);
  427.                         }
  428.                         case 'h', 'x':
  429.                         {
  430.                                 new
  431.                                         num = 0,
  432.                                         ch = string[stringPos];
  433.                                 do
  434.                                 {
  435.                                         stringPos++;
  436.                                         switch (ch)
  437.                                         {
  438.                                                 case 'x', 'X':
  439.                                                 {
  440.                                                         num = 0;
  441.                                                         continue;
  442.                                                 }
  443.                                                 case '0' .. '9':
  444.                                                 {
  445.                                                         num = (num << 4) | (ch - '0');
  446.                                                 }
  447.                                                 case 'a' .. 'f':
  448.                                                 {
  449.                                                         num = (num << 4) | (ch - ('a' - 10));
  450.                                                 }
  451.                                                 case 'A' .. 'F':
  452.                                                 {
  453.                                                         num = (num << 4) | (ch - ('A' - 10));
  454.                                                 }
  455.                                                 default:
  456.                                                 {
  457.                                                         return -1;
  458.                                                 }
  459.                                         }
  460.                                 }
  461.                                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  462.                                 setarg(paramPos, 0, num);
  463.                         }
  464.                         case 'c':
  465.                         {
  466.                                 setarg(paramPos, 0, string[stringPos++]);
  467.                         }
  468.                         case 'f':
  469.                         {
  470.  
  471.                                 new changestr[16], changepos = 0, strpos = stringPos;
  472.                                 while(changepos < 16 && string[strpos] && string[strpos] != delim)
  473.                                 {
  474.                                         changestr[changepos++] = string[strpos++];
  475.                                 }
  476.                                 changestr[changepos] = '\0';
  477.                                 setarg(paramPos,0,_:floatstr(changestr));
  478.                         }
  479.                         case 'p':
  480.                         {
  481.                                 delim = format[formatPos++];
  482.                                 continue;
  483.                         }
  484.                         case '\'':
  485.                         {
  486.                                 new
  487.                                         end = formatPos - 1,
  488.                                         ch;
  489.                                 while ((ch = format[++end]) && ch != '\'') {}
  490.                                 if (!ch)
  491.                                 {
  492.                                         return -1;
  493.                                 }
  494.                                 format[end] = '\0';
  495.                                 if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  496.                                 {
  497.                                         if (format[end + 1])
  498.                                         {
  499.                                                 return -1;
  500.                                         }
  501.                                         return 0;
  502.                                 }
  503.                                 format[end] = '\'';
  504.                                 stringPos = ch + (end - formatPos);
  505.                                 formatPos = end + 1;
  506.                         }
  507.                         case 'u':
  508.                         {
  509.                                 new
  510.                                         end = stringPos - 1,
  511.                                         id = 0,
  512.                                         bool:num = true,
  513.                                         ch;
  514.                                 while ((ch = string[++end]) && ch != delim)
  515.                                 {
  516.                                         if (num)
  517.                                         {
  518.                                                 if ('0' <= ch <= '9')
  519.                                                 {
  520.                                                         id = (id * 10) + (ch - '0');
  521.                                                 }
  522.                                                 else
  523.                                                 {
  524.                                                         num = false;
  525.                                                 }
  526.                                         }
  527.                                 }
  528.                                 if (num && IsPlayerConnected(id))
  529.                                 {
  530.                                         setarg(paramPos, 0, id);
  531.                                 }
  532.                                 else
  533.                                 {
  534.                                         #if !defined foreach
  535.                                                 #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  536.                                                 #define __SSCANF_FOREACH__
  537.                                         #endif
  538.                                         string[end] = '\0';
  539.                                         num = false;
  540.                                         new
  541.                                                 name[MAX_PLAYER_NAME];
  542.                                         id = end - stringPos;
  543.                                         foreach (Player, playerid)
  544.                                         {
  545.                                                 GetPlayerName(playerid, name, sizeof (name));
  546.                                                 if (!strcmp(name, string[stringPos], true, id))
  547.                                                 {
  548.                                                         setarg(paramPos, 0, playerid);
  549.                                                         num = true;
  550.                                                         break;
  551.                                                 }
  552.                                         }
  553.                                         if (!num)
  554.                                         {
  555.                                                 setarg(paramPos, 0, INVALID_PLAYER_ID);
  556.                                         }
  557.                                         string[end] = ch;
  558.                                         #if defined __SSCANF_FOREACH__
  559.                                                 #undef foreach
  560.                                                 #undef __SSCANF_FOREACH__
  561.                                         #endif
  562.                                 }
  563.                                 stringPos = end;
  564.                         }
  565.                         case 's', 'z':
  566.                         {
  567.                                 new
  568.                                         i = 0,
  569.                                         ch;
  570.                                 if (format[formatPos])
  571.                                 {
  572.                                         while ((ch = string[stringPos++]) && ch != delim)
  573.                                         {
  574.                                                 setarg(paramPos, i++, ch);
  575.                                         }
  576.                                         if (!i)
  577.                                         {
  578.                                                 return -1;
  579.                                         }
  580.                                 }
  581.                                 else
  582.                                 {
  583.                                         while ((ch = string[stringPos++]))
  584.                                         {
  585.                                                 setarg(paramPos, i++, ch);
  586.                                         }
  587.                                 }
  588.                                 stringPos--;
  589.                                 setarg(paramPos, i, '\0');
  590.                         }
  591.                         default:
  592.                         {
  593.                                 continue;
  594.                         }
  595.                 }
  596.                 while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  597.                 {
  598.                         stringPos++;
  599.                 }
  600.                 while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  601.                 {
  602.                         stringPos++;
  603.                 }
  604.                 paramPos++;
  605.         }
  606.         do
  607.         {
  608.                 if ((delim = format[formatPos++]) > ' ')
  609.                 {
  610.                         if (delim == '\'')
  611.                         {
  612.                                 while ((delim = format[formatPos++]) && delim != '\'') {}
  613.                         }
  614.                         else if (delim != 'z')
  615.                         {
  616.                                 return delim;
  617.                         }
  618.                 }
  619.         }
  620.         while (delim > ' ');
  621.         return 0;
  622. }
  623.  
  624.  
  625. ocmd:kick(playerid,params[])
  626. {
  627.      new pID, Grund[128], string[128];
  628.      if(!IstSpielerEinAdmin(playerid,1))return SendClientMessage(playerid,AMeldung,"Du bist kein Admin!");
  629.      if(sscanf(params,"us",pID,Grund))return SendClientMessage(playerid,FMeldung,"Benutzung: /kick [ID] [Grund]");
  630.      format(string,sizeof(string),"AdminSystem : %s wurde von Admin %s gekickt! Grund : %s",SpielerName(pID),SpielerName(playerid),Grund);
  631.      SendClientMessageToAll(AMeldung,string);
  632.      GameTextForPlayer(playerid,"~r~ GEKICKT!",50000,3);
  633.      TogglePlayerControllable(pID,0);
  634.      Kick(playerid);
  635.      return 1;
  636. }
  637.  
  638.  
  639. ocmd:ban(playerid,params[])
  640. {
  641.      new pID, reason[128], string[128];
  642.      if(!IstSpielerEinAdmin(playerid,1))return SendClientMessage(playerid,AMeldung,"Du bist kein Admin!");
  643.      if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,FMeldung,"Benutzung: /ban [ID] [Grund]");
  644.      format(string,sizeof(string),"AdminCMD: %s wurde von %s gebannt! Grund: %s",SpielerName(pID),SpielerName(playerid),reason);
  645.      SendClientMessage(playerid,AMeldung,string);
  646.      GameTextForPlayer(playerid,"~r~ GEBANNT!",50000,3);
  647.      TogglePlayerControllable(playerid,0);
  648.      SetPVarInt(pID,"Baned",1);
  649.      Ban(pID);
  650.      return 1;
  651. }
  652.  
  653.  
  654. ocmd:makeadmin(playerid,params[])
  655. {
  656.      new pID, rang, string[128];
  657.      if(!IstSpielerEinAdmin(playerid,1337))return SendClientMessage(playerid,AMeldung,"Du bist kein Admin!");
  658.      if(sscanf(params,"ui",pID,rang))return SendClientMessage(playerid,FMeldung,"Benutzung: /makeadmin [ID] [Rank]");
  659.      if(rang < 0 || rang > 5000)return SendClientMessage(playerid,AMeldung,"Der Rang darf nicht 0 oder unter 0 oder über 5000 sein!");
  660.      SetPVarInt(pID,"Adminlevel",rang);
  661.      format(string,sizeof(string),"Du hast %s zu einem Admin Rank %d gemacht.",SpielerName(pID),rang);
  662.      SendClientMessage(playerid,AMeldung,string);
  663.      format(string,sizeof(string),"Admin %s hat dich zu einem Admin Rank %d gemacht!",SpielerName(playerid),rang);
  664.      SendClientMessage(pID,AMeldung,string);
  665.      return 1;
  666. }
RAW Paste Data