Advertisement
Guest User

Untitled

a guest
Dec 3rd, 2014
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 38.58 KB | None | 0 0
  1. #if defined _savesys_included
  2.   #endinput
  3. #endif
  4. #define _savesys_included
  5. //WICHTIG:  Dieses Include ist ausschließlich nur für die Community der EmP hergestellt worden.
  6. //          Bei anderwertiger Verwendung müssen folgende untengenannte Personen informiert und um Erlaubnis
  7. //              gebeten werden.
  8. //
  9. //BEACHTE:  Der Prefix muss per "Replace" verändert werden und darf max. 3 Zeichen besitzen.
  10. //          Aufgrund eines define Fehlers bei forward´s muss es per Hand Geschehen.
  11. //          Bei der Überschreibung muss Groß-/Kleinschreibung beachtet werden.
  12. //
  13. //          Der Prefix in diesem Dokument lautet: SAS
  14. //
  15. //
  16. //          Include Credits:
  17. //              LaVey (Programmierer und Konzeptierung)
  18. //
  19. //Notwendigkeiten damit dieses Include in Scripts funktioniert
  20. /*
  21.     - Bei der Funktion wo die Daten in die Variablen gelesen werden, darf keine Passwort Abfrage sein,
  22.         muss bei vorhandener Datei 'true' wiedergeben und bei Verwendung sollte er die alte Datei löschen.
  23.     - Die Variablen dürfen keine PVar´s sein
  24.     - Die Variable pLostKey in der enum-Struktur muss auch vorhanden sein
  25.     - enum-Strukturen müssen kompatible eingefügt sein
  26.     - Präprozessoren Einstellungen durchführen
  27.     - Achten Sie auf Variablen, die Fehler in mySQL verursachen könnten (Beispiel: Int)
  28.     - Das Include muss unterhalb der SpielerDefinition (bsp. PlayerInfo) platziert werden
  29. */
  30.  
  31. #include <a_mysql>
  32.  
  33. #define SAS_SQL_HOST MySQL_HOST
  34. #define SAS_SQL_USER MySQL_USER
  35. #define SAS_SQL_PASSWORD MySQL_PASSWORD
  36. #define SAS_SQL_TABLE "samp_players"
  37. #define SAS_SQL_DATABASE MySQL_DB
  38.  
  39. #define SAS_PLAYER_NAME_FIELD "SpielerName"
  40. #define SAS_PLAYER_VW 50
  41.  
  42. #define SAS_PLAYER_PASSWORD "SpielerPasswort"
  43. //#define SAS_PLAYER_LOSTPW(%0) PlayerInfo[%0][pLostKey] //Bitte auch nicht vergessen in 'PVarSaveSystem' einzutragen /* NOCH NICHT FERTIG */
  44. #define SAS_PLAYER_SAVING_SET(%0,%1) gPlayerSaving[%0] = %1 //Sollte nicht per SQL gespeichert werden
  45. #define SAS_PLAYER_SAVING_GET(%0) gPlayerSaving[%0] //Sollte nicht per SQL gespeichert werden
  46. #define SAS_PLAYER_LOGGED_IN_SET(%0,%1) SetPVarInt(%0,"PlayerLogged",%1) //Sollte nicht per SQL gespeichert werden
  47. #define SAS_PLAYER_LOGGED_IN_GET(%0) GetPVarInt(%0,"PlayerLogged") //Sollte nicht per SQL gespeichert werden
  48.  
  49. #define SAS_OLD_USER_FILE_FUNCTION "OnPlayerLogInOLD" //Sollte vielleicht ausgelassen werden.
  50. #define SAS_LOG_IN_CONFIGURATION "OnPlayerLogIn"
  51. #define SAS_REGISTER_CONFIGURATION "OnPlayerRegister"
  52.  
  53. #define SAS_PASSWORD_SIZEOF 129
  54. #define SAS_MIN_PASSWORD_LENGTH 3
  55. #define SAS_MAX_PASSWORD_LENGTH 16
  56.  
  57. enum pss_sys
  58. {
  59.     sasName[32],
  60.     sasType,
  61.     sasEnumNumber[128],
  62.     sasDefault[128],
  63. };
  64. new PVarSaveSystem[][pss_sys] = {
  65. {"Level", 0, "SpielerLevel", "1"},
  66. {"Respekt", 0, "SpielerRespekt", "1"},
  67. {"Passwort", 2, "SpielerPasswort", ""},
  68. {"Geld", 0, "SpielerGeld", "0"},
  69. {"Quick", 0, "SpielerQuick", "0"},
  70. {"Admin", 0, "SpielerAdmin", "0"},
  71. {"Skin", 0, "SpielerSkin", "0"},
  72. {"Stufe", 0, "SpielerStufe", "0"},
  73. {"Branche", 0, "SpielerBranche", "0"},
  74. {"Unterkunft", 0, "SpielerUnterkunft", "-1"},
  75. {"Payday", 0, "SpielerPayday", "0"},
  76. {"Stumm", 0, "SpielerStumm", "0"},
  77. {"MotelDauer", 0, "SpielerMotelDauer", "0"},
  78. {"FrakKonto", 0, "SpielerFrakKonto", "0"},
  79. {"BrancheSpent", 0, "SpielerBrancheSpent", "0"},
  80. {"Knast", 0, "SpielerKnast", "0"},
  81. {"KnastZeit", 0, "SpielerKnastZeit", "0"},
  82. {"KnastKaution", 0, "SpielerKnastKaution", "0"},
  83. {"LostVehicles", 0, "SpielerLostVehicles", "0"},
  84. {"LostVehicleCost", 0, "SpielerLostVehicleCost", "0"},
  85. {"LostVehicleModel", 0, "SpielerLostVehicleModel", "0"},
  86. {"InventarMenge", 1, "SpielerInventarMenge", "0"},
  87. {"InventarMax", 1, "SpielerInventarMax", "50.0"},
  88. {"WeaponRohlinge", 2, "SpielerWeaponRohlinge", "0"},
  89. {"AmmoMaterials", 2, "SpielerAmmoMaterials", "0"},
  90. {"VehicleKeys", 2, "SpielerVehicleKeys", "-1"},
  91. {"RohFisch", 2, "SpielerRohFisch", "0"},
  92. {"RohPlant", 2, "SpielerRohPlant", "0"},
  93. {"Drugs", 2, "SpielerDrugs", "0"},
  94. {"WeaponProjectile", 2, "SpielerWeaponProjectile", "0"},
  95. {"CarThiefTime", 0, "SpielerCarThiefTime", "0"},
  96. {"Organisation", 0, "SpielerOrganisation", "0"},
  97. {"StufeOrganisation", 0, "SpielerStufeOrganisation", "0"},
  98. {"MiniJob", 0, "SpielerMiniJob", "0"},
  99. {"MiniJobSkills", 2, "SpielerMiniJobSkills", "0-0-0"},
  100. {"OnDutyOfficial", 0, "SpielerOnDutyOfficial", "0"},
  101. {"Houses", 0, "SpielerHouses", "0"},
  102. {"MaxHouses", 0, "SpielerMaxHouses", "2"},
  103. {"SpawnHouse", 0, "SpielerSpawnHouse", "0"},
  104. {"SpawnHouseTemplate", 0, "SpielerSpawnHouseTemplate", "0"},
  105. {"Wanted", 0, "SpielerWanted", "0"},
  106. {"PremiumPunkte", 0, "SpielerPremiumPunkte", "0"},
  107. {"DrugFactory", 0, "SpielerDrugFactory", "0"},
  108. {"ConsumedDrugs", 2, "SpielerConsumedDrugs", "0"},
  109. {"MindCode", 2, "SpielerMindCode", "0"},
  110. {"MaxMinds", 0, "SpielerMaxMinds", "10"},
  111. {"Minds",0,"SpielerMinds","0"},
  112. {"AdminOnDuty",0,"SpielerAdminOnDuty","0"},
  113. {"QuestInfo",2,"SpielerQuestInfo","0,0"},
  114. {"Tutorial",0,"SpielerTutorial","0"},
  115. {"LastPosition",2,"SpielerLastPosition","0"},
  116. {"InteriorID",0,"SpielerInteriorID","0"},
  117. {"TimeBan",0,"SpielerTimeBan","0"},
  118. {"TimeBanGrund",2,"SpielerTimeBanGrund","0"},
  119. {"DutySkin",0,"SpielerDutySkin","0"},
  120. {"Vehicles",0,"SpielerVehicles","0"},
  121. {"MaxVehicles",0,"SpielerMaxVehicles","3"},
  122. {"HelpBox",0,"SpielerHelpBox","1"},
  123. {"Lizenzen",2,"SpielerLizenzen","0,0"},
  124. {"LizenzenTime",2,"SpielerLizenzenTime","0,0"},
  125. {"LostGeheimzahl",0,"SpielerLostGeheimzahl","0"},
  126. {"WeaponSkill",2,"SpielerWeaponSkill","0"},
  127. {"TotenStatus",0,"SpielerTotenStatus","0"},
  128. {"TotenZeit",0,"SpielerTotenZeit","0"},
  129. {"TotenKrankenhaus",0,"SpielerTotenKrankenhaus","0"},
  130. {"Alkohol",2,"SpielerAlkohol","0,0"},
  131. {"Kisten",0,"SpielerKisten","0"},
  132. {"HausAbmahnung",0,"SpielerHausAbmahnung","0"},
  133. {"AllowedToGet",0,"SpielerAllowedToGet","0"},
  134. {"TestSkin",0,"SpielerTestSkin","0"},
  135. {"SeeConnection",0,"SpielerSeeConnection","0"},
  136. {"Accessory",2,"SpielerAccessory","0"}
  137. };
  138.  
  139. #if !defined PRESSED
  140.     #define PRESSED(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
  141. #endif
  142.  
  143. #define SAS_DIALOG 2000
  144.  
  145. //new PlayerCacheData[MAX_PLAYERS][sizeof(PVarSaveSystem)][64];
  146.  
  147. // Old Pos Files
  148. /*
  149. {3927.0, 564.86114501953, -1876.6134033203, 3.5893173217773, 0.0, 0.0, 303.5},
  150. {3927.0, 563.91851806641, -1874.5614013672, 3.4788494110107, 0.0, 6.25, 284.4951171875},
  151. {3927.0, 563.31878662109, -1872.2543945313, 3.6198387145996, 0.0, 0.5, 271.24133300781},
  152. {1610.0, 566.02752685547, -1879.3833007813, 2.9029607772827, 0.0, 0.0, 0.0},
  153. {1641.0, 564.93988037109, -1879.2976074219, 2.9249949455261, 2.0, 0.0, 357.5},
  154. {1643.0, 563.4521484375, -1879.3100585938, 2.916339635849, 2.0, 0.0, 0.0},
  155. {1461.0, 556.39477539063, -1877.2852783203, 3.8329367637634, 0.0, 0.0, 104.0},
  156. {1598.0, 562.46136474609, -1878.6851806641, 3.2899911403656, 0.0, 0.0, 0.0}
  157. */
  158.  
  159. new SAS_JS[][][] = {
  160. {"Willkommen", "Schoen Sie hier auf~n~~n~~b~~h~Elegant modernes Pathos~n~~n~~w~zu sehen :D~n~~n~Waehlen Sie diese Option ~n~um sich zu registrieren~n~oder anzumelden."},
  161. {"Lost PW", "Sie haben Ihr Passwort~n~vergessen?~n~~n~Kein Problem!~n~Einfach Wegwerf-Passwort~n~anfordern."},
  162. {"Change Name", "Mit falschem Accountnamen~n~auf den Server gejoint?~n~~n~Aender Sie diesen hier!"}
  163. };
  164.  
  165. new Float:SAS_JS_Pos[][] = {
  166. {299.000000, 109.000000, 244.000000, 134.000000},
  167. {424.000000, 121.000000, 375.000000, 142.000000},
  168. {575.000000, 109.000000, 516.000000, 132.000000}
  169. };
  170.  
  171. new Text:SAS_TextHeader[3];
  172. new Text:SAS_TextDescription[3];
  173.  
  174. new gSASConnection;
  175. new bool:gSASGameModeRestart;
  176.  
  177. new Text:SASBlackScreen;
  178.  
  179. forward OnPlayerLoadData(query[], index, extraid, connectionHandle);
  180. forward OnPlayerSaveData(query[], index, extraid, connectionHandle);
  181. forward OnPlayerVerify(query[], index, extraid, connectionHandle);
  182. forward LoadNextItemForPlayer(playerid, nextid);
  183.  
  184. enum sasInfo
  185. {
  186.     sasName[MAX_PLAYER_NAME],
  187.     sasEnumNumber[MAX_PLAYER_NAME],
  188.     sasType,
  189. }
  190.  
  191. /*stock CreatingSaveRepository(playerid)
  192. {
  193.     for(new rep; rep != sizeof(PVarSaveSystem); rep++)
  194.     {
  195.         switch(PVarSaveSystem[rep][sasType])
  196.         {
  197.             case 0: format(PlayerCacheData[playerid][rep], 64, "%d", GetPVarInt(playerid, PVarSaveSystem[rep][sasEnumNumber]));
  198.             case 1: format(PlayerCacheData[playerid][rep], 64, "%f", GetPVarFloat(playerid, PVarSaveSystem[rep][sasEnumNumber]));
  199.             case 2: GetPVarString(playerid, PVarSaveSystem[rep][sasEnumNumber], PlayerCacheData[playerid][rep], 64);
  200.         }
  201.     }
  202. }*/
  203.  
  204. stock CheckIfColoumnExist(table[], column[])
  205. {
  206.     format(StockString, StockStringLength, "SHOW COLUMNS FROM %s LIKE '%s';", table, column);
  207.     mysql_query(StockString, -1, -1, gSASConnection);
  208.     mysql_store_result(gSASConnection);
  209.     if (mysql_num_rows(gSASConnection))
  210.     {
  211.         mysql_free_result(gSASConnection);
  212.         return true;
  213.     }
  214.     mysql_free_result(gSASConnection);
  215.     return false;
  216. }
  217.  
  218. stock InitilizeDataForPlayer(playerid)
  219. {
  220.     for(new reset; reset != sizeof(PVarSaveSystem); reset++)
  221.     {
  222.         switch(PVarSaveSystem[reset][sasType])
  223.         {
  224.             case 0: SetPVarInt(playerid, PVarSaveSystem[reset][sasEnumNumber], strval(PVarSaveSystem[reset][sasDefault]));
  225.             case 1: SetPVarFloat(playerid, PVarSaveSystem[reset][sasEnumNumber], floatstr(PVarSaveSystem[reset][sasDefault]));
  226.             case 2: SetPVarString(playerid, PVarSaveSystem[reset][sasEnumNumber], PVarSaveSystem[reset][sasDefault]);
  227.         }
  228.     }
  229.    
  230.     SAS_PLAYER_LOGGED_IN_SET(playerid, -1);
  231.     DeletePVar(playerid, SAS_PLAYER_PASSWORD);
  232.    
  233.     SetPVarInt(playerid, "LoadingPlayerData", sizeof(PVarSaveSystem));
  234.     format(StockString, StockStringLength, "SELECT %s FROM %s WHERE %s = '%s' LIMIT 1;", SAS_PLAYER_NAME_FIELD, SAS_SQL_TABLE, SAS_PLAYER_NAME_FIELD, GetName(playerid));
  235.     mysql_query_callback(playerid, StockString, "OnPlayerVerify", 1, gSASConnection); //mysql_query(query, -1, -1, gSASConnection);
  236.     ShowPlayerDialogEx(playerid, SAS_DIALOG, DIALOG_STYLE_MSGBOX, "EmP", "Einen Moment bitte..\n\nIhre Umgebung wird gerade initialisiert.", "Warten..", "");
  237.     return 1;
  238. }
  239.  
  240. stock PrepareEnumFields()
  241. {
  242.     new File:enumFields = fopen("enumFields.txt", io_read), File:enumFieldsComplete = fopen("enumFieldsComplete.txt", io_append);
  243.     new rstring[128], output[256];
  244.     while(fread(enumFields, rstring))
  245.     {
  246.         strdel(rstring, strlen(rstring)-2, strlen(rstring));
  247.         format(output, sizeof(output), "{\"%s\", 0, \"Spieler%s\", \"0\"},\r\n", rstring, rstring);
  248.         fwrite(enumFieldsComplete, output);
  249.     }
  250.    
  251.     fclose(enumFields);
  252.     fclose(enumFieldsComplete);
  253. }
  254.  
  255. stock InitializeJoinObjects(playerid, bool:reset = false)
  256. {
  257.     if(IsPlayerNPC(playerid)) return false;
  258.     for(new td; td != sizeof(SAS_JS); td++)
  259.     {
  260.         if(reset)
  261.         {
  262.             TextDrawHideForPlayer(playerid, SAS_TextHeader[td]);
  263.             TextDrawHideForPlayer(playerid, SAS_TextDescription[td]);
  264.         }
  265.         else
  266.         {
  267.             TextDrawShowForPlayer(playerid, SAS_TextHeader[td]);
  268.             TextDrawShowForPlayer(playerid, SAS_TextDescription[td]);
  269.         }
  270.     }
  271.    
  272.     SetPlayerVirtualWorld(playerid, (reset ? 0 : SAS_PLAYER_VW));
  273.     TogglePlayerControllable(playerid, reset);
  274.    
  275.     if(reset)
  276.     {  
  277.         // new time[3];
  278.         // gettime(time[0], time[1], time[2]);
  279.         // SetPlayerTime(playerid, time[0], time[1]);
  280.         SetCameraBehindPlayer(playerid);
  281.         CancelSelectTextDraw(playerid);
  282.     }
  283.     else
  284.     {
  285.         SelectTextDraw(playerid, 12582690);
  286.        
  287.         SetPlayerPos(playerid, 572, -1874, 10);
  288.         SetPlayerCameraPos(playerid, 572, -1874, 4.5);
  289.         SetPlayerCameraLookAt(playerid, 565, -1876, 3.6);
  290.        
  291.         SetPlayerWeather(playerid, 10);
  292.         SetPlayerTime(playerid, 20, 30);
  293.     }
  294.    
  295.     return true;
  296. }
  297.  
  298. stock LoadPlayerData(playerid)
  299. {
  300.     if(GetPVarInt(playerid, "SAS_LoginStep") == 1) return false;
  301.    
  302.     new playername[MAX_PLAYER_NAME], query[512], load, length = sizeof(query);
  303.     GetPlayerName(playerid,playername,MAX_PLAYER_NAME);
  304.  
  305.     SetPVarInt(playerid, "SAS_LoginStep", 1);
  306.    
  307.     format(query, length, "SELECT %s FROM %s WHERE %s = '%s' LIMIT 1;", PVarSaveSystem[load][sasName], SAS_SQL_TABLE, SAS_PLAYER_NAME_FIELD, playername);
  308.     mysql_query_callback(playerid, query, "OnPlayerLoadData", load, gSASConnection);
  309.    
  310.     return true;
  311. }
  312.  
  313. stock SavePlayerData(playerid, bool:direct = false)
  314. {
  315.     new playername[MAX_PLAYER_NAME], query[512], save, length = sizeof(query), maxsave = (direct ? sizeof(PVarSaveSystem) : 1);
  316.     GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
  317.  
  318.     if(!direct && SAS_PLAYER_SAVING_GET(playerid) > 0) return false;
  319.    
  320.     if(!direct) CreatingSaveRepository(playerid);
  321.     SAS_PLAYER_SAVING_SET(playerid, sizeof(PVarSaveSystem) + (direct ? 1 : 0));
  322.    
  323.     for(; save != maxsave; save++)
  324.     {
  325.         switch(PVarSaveSystem[save][sasType])
  326.         {
  327.             case 0: format(query, length, "UPDATE %s SET %s = '%d' WHERE %s = '%s' LIMIT 1;", SAS_SQL_TABLE, PVarSaveSystem[save][sasName], GetPVarInt(playerid, PVarSaveSystem[save][sasEnumNumber]), SAS_PLAYER_NAME_FIELD, playername);
  328.             case 1: format(query, length, "UPDATE %s SET %s = '%f' WHERE %s = '%s' LIMIT 1;", SAS_SQL_TABLE, PVarSaveSystem[save][sasName], GetPVarFloat(playerid, PVarSaveSystem[save][sasEnumNumber]), SAS_PLAYER_NAME_FIELD, playername);
  329.             case 2:
  330.             {
  331.                 new result[128];
  332.                 GetPVarString(playerid, PVarSaveSystem[save][sasEnumNumber], result, sizeof(result));
  333.                 format(query, length, "UPDATE %s SET %s = '%s' WHERE %s = '%s' LIMIT 1;", SAS_SQL_TABLE, PVarSaveSystem[save][sasName], result, SAS_PLAYER_NAME_FIELD, playername);
  334.             }
  335.         }
  336.         if(direct) mysql_query(query, -1, -1, gSASConnection);
  337.         else mysql_query_callback(playerid, query, "OnPlayerSaveData", save, gSASConnection);
  338.     }
  339.    
  340.     return true;
  341. }
  342.  
  343. public OnPlayerLoadData(query[], index, extraid, connectionHandle)
  344. {
  345.     if(GetPVarInt(index, "LoadingPlayerData") == 0 || sizeof(PVarSaveSystem) - GetPVarInt(index, "LoadingPlayerData") != extraid) return 1;
  346.    
  347.     new nextid;
  348.    
  349.     ShowPlayerDialogEx(index, -1, DIALOG_STYLE_MSGBOX, "EmP", "Closing...", "Ok", "");
  350.     format(StockString, StockStringLength, "Derzeit werden Ihre Spielstände geladen, weshalb wir Sie um ein wenig Geduld bitten!\n\nDer Fortschritt liegt derzeit bei: %.2f Prozent", floatsub(100, floatmul(floatdiv(100, sizeof(PVarSaveSystem)), GetPVarInt(index, "LoadingPlayerData"))));
  351.     ShowPlayerDialogEx(index, SAS_DIALOG, DIALOG_STYLE_MSGBOX, "EmP - Spielerdaten", StockString, "Warten..", "");
  352.  
  353.     //format(StockString, StockStringLength, "~n~~n~~g~...Lade Daten...~n~~w~%.2f Prozent", floatsub(100, floatmul(floatdiv(100, sizeof(PVarSaveSystem)), GetPVarInt(index, "LoadingPlayerData"))));
  354.     //GameTextForPlayer(index, StockString, 1200, 3);
  355.    
  356.     mysql_store_result(gSASConnection);
  357.    
  358.     new result[512];
  359.     mysql_retrieve_row(gSASConnection);
  360.     mysql_fetch_field_row(result, PVarSaveSystem[extraid][sasName], gSASConnection);
  361.  
  362.     switch(PVarSaveSystem[extraid][sasType])
  363.     {
  364.         case 0: { SetPVarInt(index, PVarSaveSystem[extraid][sasEnumNumber], strval(result)); }
  365.         case 1: { SetPVarFloat(index, PVarSaveSystem[extraid][sasEnumNumber], floatstr(result)); }
  366.         case 2: {
  367.             if(!strcmp(PVarSaveSystem[extraid][sasEnumNumber],SAS_PLAYER_PASSWORD,false) && !strcmp(result,"NULL",true) && strlen(result) > 0){
  368.                 result[0] = EOS;
  369.             }
  370.             SetPVarString(index, PVarSaveSystem[extraid][sasEnumNumber], result);
  371.         }
  372.     }
  373.    
  374.     SetPVarInt(index, "LoadingPlayerData", GetPVarInt(index, "LoadingPlayerData") - 1);
  375.     nextid = sizeof(PVarSaveSystem) - GetPVarInt(index, "LoadingPlayerData");
  376.  
  377.     mysql_free_result(gSASConnection);
  378.    
  379.     if(GetPVarInt(index, "LoadingPlayerData") == 0)
  380.     {
  381.         //GameTextForPlayer(index," ",1200,3);
  382.         ShowPlayerDialogEx(index, -1, DIALOG_STYLE_MSGBOX, "EmP", "Closing...", "Ok", "");
  383.         SAS_PLAYER_LOGGED_IN_SET(index, 0);
  384.         SetPVarInt(index, "PlayerFilesLoaded", 1);
  385.         DeletePVar(index, "SAS_LoginStep");
  386.         SpawnPlayer(index);
  387.     }
  388.     else
  389.     {
  390.         // ladevorgang der Spielerdaten verzögern
  391.         // print("Loading...");
  392.         // SetTimerEx("LoadNextItemForPlayer",75,false,"dd",index,nextid);
  393.         LoadNextItemForPlayer(index,nextid);
  394.     }
  395.    
  396.     return 1;
  397. }
  398.  
  399. public LoadNextItemForPlayer(playerid, nextid)
  400. {
  401.     format(StockString, StockStringLength, "SELECT %s FROM %s WHERE %s = '%s' LIMIT 1;", PVarSaveSystem[nextid][sasName], SAS_SQL_TABLE, SAS_PLAYER_NAME_FIELD, GetName(playerid));
  402.     // printf("Query: %s", string);
  403.     mysql_query_callback(playerid, StockString, "OnPlayerLoadData", nextid, gSASConnection);
  404.     return 1;
  405. }
  406.  
  407. public OnPlayerSaveData(query[], index, extraid, connectionHandle)
  408. {
  409.     new counter = sizeof(PVarSaveSystem) - SAS_PLAYER_SAVING_GET(index), length = 512, playername[MAX_PLAYER_NAME];
  410.     GetPlayerName(index, playername, MAX_PLAYER_NAME);
  411.     // format(playername, MAX_PLAYER_NAME, gPlayerName[index]);
  412.    
  413.     if(index > MAX_PLAYERS - 1 || counter != extraid || counter <= -1 || extraid >= sizeof(PVarSaveSystem)) return false;
  414.  
  415.     if(counter == 0 && IsPlayerConnected(index))
  416.     {
  417.         SetPVarInt(index, "SAS_LoginStep", 2);
  418.         format(query, length, "Hallo %s und Herzlich Willkommen auf EmP!\nKlicken Sie mit der linken Maustaste auf 'Go!' bzw. drücken Sie die ENTER-Taste um fortzufahren!\n\nWir wünschen dir ne schöne Spielzeit.\n\nDas EmP Projekt", playername);
  419.         ShowPlayerDialogEx(index, SAS_DIALOG, DIALOG_STYLE_MSGBOX, "EmP", query, "Go!", "");
  420.     }
  421.     /*SAS_PLAYER_SAVING_SET(index, SAS_PLAYER_SAVING_GET(index) - 1);
  422.     switch(PVarSaveSystem[counter][sasType])
  423.     {
  424.         case 0: format(query, length, "UPDATE %s SET %s = '%d' WHERE %s = '%s' LIMIT 1;", SAS_SQL_TABLE, PVarSaveSystem[counter][sasName], strval(PlayerCacheData[index][counter]), SAS_PLAYER_NAME_FIELD, playername);
  425.         case 1: format(query, length, "UPDATE %s SET %s = '%f' WHERE %s = '%s' LIMIT 1;", SAS_SQL_TABLE, PVarSaveSystem[counter][sasName], floatstr(PlayerCacheData[index][counter]), SAS_PLAYER_NAME_FIELD, playername);
  426.         case 2: format(query, length, "UPDATE %s SET %s = '%s' WHERE %s = '%s' LIMIT 1;", SAS_SQL_TABLE, PVarSaveSystem[counter][sasName], PlayerCacheData[index][counter], SAS_PLAYER_NAME_FIELD, playername);
  427.     }
  428.     mysql_query_callback(index, query, "OnPlayerSaveData", counter + 1, gSASConnection);*/
  429.    
  430.     return 1;
  431. }
  432.  
  433. public OnPlayerVerify(query[], index, extraid, connectionHandle)
  434. {
  435.     switch(extraid)
  436.     {
  437.         case 1: //Überprüfen der vorhandenen Spielerdatei
  438.         {
  439.             new /*oldfile = CallLocalFunction(SAS_OLD_USER_FILE_FUNCTION, "d", index), */playername[MAX_PLAYER_NAME];
  440.             GetPlayerName(index, playername, MAX_PLAYER_NAME);
  441.            
  442.             mysql_store_result(gSASConnection);
  443.            
  444.             // if(oldfile > 0) mysql_free_result(gSASConnection);
  445.             if(mysql_num_rows(gSASConnection) > 0)
  446.             {
  447.                 mysql_free_result(gSASConnection);
  448.                 SetPVarInt(index, "PlayerHasAccount", 1);
  449.             }
  450.             else
  451.             {
  452.                 mysql_free_result(gSASConnection);
  453.                
  454.                 format(query, 128, "INSERT INTO %s (%s) VALUES('%s');", SAS_SQL_TABLE, SAS_PLAYER_NAME_FIELD, playername);
  455.                 mysql_query_callback(index, query, "OnPlayerVerify", 2, gSASConnection); //mysql_query(query, -1, -1, gSASConnection);
  456.             }
  457.            
  458.             SetPlayerPos(index, 572.0, -1874.0, 10.0);
  459.             SetPlayerCameraPos(index, 572.0, -1874.0, 4.5);
  460.             SetPlayerCameraLookAt(index, 565, -1876, 3.6);
  461.            
  462.             //SetPlayerWeather(playerid, 10);
  463.             //SetPlayerTime(playerid, 20, 30);
  464.  
  465.             ShowPlayerDialogEx(index,-1,DIALOG_STYLE_MSGBOX,"Closing","Closing Dialog","Zurück","");
  466.            
  467.             if(SAS_PLAYER_LOGGED_IN_GET(index) == -3) SpawnPlayer(index);
  468.             else SAS_PLAYER_LOGGED_IN_SET(index, -2);
  469.         }
  470.         case 2: //Neuen Spielereintrag in Datenbank erstellen
  471.         {
  472.            
  473.         }
  474.     }
  475.     return 1;
  476. }
  477.  
  478. //GameMode Überschreibungen
  479.  
  480. forward SAS_OnGameModeInit();
  481. forward SAS_OnGameModeExit();
  482. forward SAS_OnPlayerConnect(playerid);
  483. forward SAS_OnPlayerDisconnect(playerid, reason);
  484. forward SAS_OnPlayerSpawn(playerid);
  485. forward SAS_OnPlayerRequestClass(playerid, classid);
  486. forward SAS_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
  487. forward SAS_OnPlayerClickTextDraw(playerid, Text:clickedid);
  488. forward SAS_OnPlayerCommandText(playerid, cmdtext[]);
  489.  
  490. public OnGameModeInit()
  491. {
  492.     //PrepareEnumFields(); //Wird nur verwendet um große enums leicht zu konvertieren :-p
  493.  
  494.     gSASConnection = 1;
  495.     // gSASConnection = mysql_connect(databaseHost,databaseUser,databaseName,databasePassword);
  496.    
  497.     /*print("-> Aktualisiere MySQL Datenbank...");
  498.     new query[128], length = sizeof(query);
  499.     for(new x; x != sizeof(PVarSaveSystem); x++)
  500.     {
  501.         if(CheckIfColoumnExist(SAS_SQL_TABLE, PVarSaveSystem[x][sasName])) continue;
  502.         switch(PVarSaveSystem[x][sasType])
  503.         {
  504.             case 0: format(query, length, "ALTER TABLE %s ADD %s INTEGER NOT NULL DEFAULT '%d';", SAS_SQL_TABLE, PVarSaveSystem[x][sasName], strval(PVarSaveSystem[x][sasDefault]));
  505.             case 1: format(query, length, "ALTER TABLE %s ADD %s FLOAT NOT NULL DEFAULT '%f';", SAS_SQL_TABLE, PVarSaveSystem[x][sasName], floatstr(PVarSaveSystem[x][sasDefault]));
  506.             case 2: format(query, length, "ALTER TABLE %s ADD %s VARCHAR(128) NOT NULL DEFAULT '%s';", SAS_SQL_TABLE, PVarSaveSystem[x][sasName], PVarSaveSystem[x][sasDefault]);
  507.         }
  508.         mysql_query(query, -1, -1, gSASConnection);
  509.     }*/
  510.    
  511.     for(new td; td != sizeof(SAS_JS); td++)
  512.     {
  513.         SAS_TextHeader[td] = TextDrawCreate(SAS_JS_Pos[td][0], SAS_JS_Pos[td][1], SAS_JS[td][0]);
  514.         TextDrawAlignment(SAS_TextHeader[td], 2);
  515.         TextDrawBackgroundColor(SAS_TextHeader[td], -1);
  516.         TextDrawFont(SAS_TextHeader[td], 3);
  517.         TextDrawLetterSize(SAS_TextHeader[td], 0.409999, 1.700000);
  518.         TextDrawTextSize(SAS_TextHeader[td], 20.0, 100.0);
  519.         TextDrawColor(SAS_TextHeader[td], -1);
  520.         TextDrawSetOutline(SAS_TextHeader[td], 0);
  521.         TextDrawSetProportional(SAS_TextHeader[td], 1);
  522.         TextDrawSetShadow(SAS_TextHeader[td], 0);
  523.         TextDrawSetSelectable(SAS_TextHeader[td], 1);
  524.        
  525.         SAS_TextDescription[td] = TextDrawCreate(SAS_JS_Pos[td][2], SAS_JS_Pos[td][3], SAS_JS[td][1]);
  526.         TextDrawBackgroundColor(SAS_TextDescription[td], -1);
  527.         TextDrawFont(SAS_TextDescription[td], 1);
  528.         TextDrawLetterSize(SAS_TextDescription[td], 0.239999, 1.100000);
  529.         TextDrawColor(SAS_TextDescription[td], -1);
  530.         TextDrawSetOutline(SAS_TextDescription[td], 0);
  531.         TextDrawSetProportional(SAS_TextDescription[td], 1);
  532.         TextDrawSetShadow(SAS_TextDescription[td], 0);
  533.     }
  534.  
  535.     SASBlackScreen = TextDrawCreate(-20.000000,2.000000,"|");
  536.     TextDrawUseBox(SASBlackScreen,1);
  537.     TextDrawBoxColor(SASBlackScreen,0x000000ff);
  538.     TextDrawTextSize(SASBlackScreen,660.000000,22.000000);
  539.     TextDrawAlignment(SASBlackScreen,0);
  540.     TextDrawBackgroundColor(SASBlackScreen,0x000000ff);
  541.     TextDrawFont(SASBlackScreen,3);
  542.     TextDrawLetterSize(SASBlackScreen,1.000000,52.200000);
  543.     TextDrawColor(SASBlackScreen,0x000000ff);
  544.     TextDrawSetOutline(SASBlackScreen,1);
  545.     TextDrawSetProportional(SASBlackScreen,1);
  546.     TextDrawSetShadow(SASBlackScreen,1);
  547.  
  548.     //LoginObjekte
  549.     CreateObject(3927, 564.86114, -1876.61340, 3.58931, 0.0, 0.0, 303.5, SAS_PLAYER_VW);
  550.     CreateObject(3927, 563.91851, -1874.56140, 3.47884, 0.0, 6.25, 284.49511, SAS_PLAYER_VW);
  551.     CreateObject(3927, 563.31878, -1872.25439, 3.61983, 0.0, 0.5, 271.24133, SAS_PLAYER_VW);
  552.     CreateObject(1610, 566.02752, -1879.38330, 2.90296, 0.0, 0.0, 0.0, SAS_PLAYER_VW);
  553.     CreateObject(1641, 564.93988, -1879.29760, 2.92499, 2.0, 0.0, 357.5, SAS_PLAYER_VW);
  554.     CreateObject(1643, 563.45214, -1879.31005, 2.91633, 2.0, 0.0, 0.0, SAS_PLAYER_VW);
  555.     CreateObject(1461, 556.39477, -1877.28527, 3.83293, 0.0, 0.0, 104.0, SAS_PLAYER_VW);
  556.     CreateObject(1598, 562.46136, -1878.68518, 3.28999, 0.0, 0.0, 0.0, SAS_PLAYER_VW);
  557.    
  558.     return CallLocalFunction("SAS_OnGameModeInit", "");
  559. }
  560.  
  561. public OnGameModeExit()
  562. {
  563.     gSASGameModeRestart = true;
  564.     TextDrawDestroy(SASBlackScreen);
  565.     return CallLocalFunction("SAS_OnGameModeExit", "");
  566. }
  567.  
  568. public OnPlayerConnect(playerid)
  569. {
  570.     if(IsPlayerNPC(playerid)) SAS_PLAYER_LOGGED_IN_SET(playerid, 1);
  571.     else InitilizeDataForPlayer(playerid);
  572.     SendClientMessage(playerid,COLOR_RED,"Umgebung wird initialisiert ... Bitte warten ...");
  573.     // GameTextForPlayer(playerid, "~r~Umgebung wird initialisiert~n~~n~~h~...Bitte warten...", 60000, 3);
  574.     SetPVarInt(playerid, "SAS_LoginStep", 6);
  575.     TextDrawShowForPlayer(playerid, SASBlackScreen);
  576.     SetSpawnInfo( playerid, 0, 0, 564.86114, -1876.61340, 3.58931, 269.15, 0, 0, 0, 0, 0, 0 );
  577.     return CallLocalFunction("SAS_OnPlayerConnect", "d", playerid);
  578. }
  579.  
  580. public OnPlayerDisconnect(playerid, reason)
  581. {
  582.     if(IsPlayerNPC(playerid)) return 1;
  583.     new password[256];
  584.     GetPVarString(playerid, SAS_PLAYER_PASSWORD, password, sizeof(password));
  585.     //if(SAS_PLAYER_LOGGED_IN_GET(playerid) > 0 && !gSASGameModeRestart) SavePlayerData(playerid);
  586.     if(!strlen(password) && !gSASGameModeRestart && SAS_PLAYER_LOGGED_IN_GET(playerid) == 0)
  587.     {
  588.         new string[128], playername[MAX_PLAYER_NAME];
  589.         GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
  590.         format(string, sizeof(string), "DELETE FROM %s WHERE %s = '%s' AND Passwort = 'Nichts';", SAS_SQL_TABLE, SAS_PLAYER_NAME_FIELD, playername);
  591.         mysql_query(string, -1, -1, gSASConnection);
  592.     }
  593.     return CallLocalFunction("SAS_OnPlayerDisconnect", "dd", playerid, reason);
  594. }
  595.  
  596. public OnPlayerSpawn(playerid)
  597. {
  598.     if((GetPVarInt(playerid, "PlayerFilesLoaded") > 0 || GetPVarInt(playerid, "LoadingPlayerData") > 0) && !IsPlayerNPC(playerid))
  599.     {
  600.         InitializeJoinObjects(playerid,true);
  601.         InitializeJoinObjects(playerid);
  602.  
  603.         if(GetPVarInt(playerid, "PlayerHasAccount") == 1)
  604.         {
  605.             DeletePVar(playerid, "PlayerHasAccount");
  606.             return LoadPlayerData(playerid);
  607.         }
  608.         DeletePVar(playerid, "LoadingPlayerData");
  609.         DeletePVar(playerid, "PlayerFilesLoaded");
  610.         SetPVarInt(playerid, "SAS_LoginStep", 998);
  611.         GameTextForPlayer(playerid, " ", 1000, 3);
  612.         TextDrawHideForPlayer(playerid, SASBlackScreen);
  613.         for(new x; x != 30; x++) SendClientMessage(playerid, COLOR_WHITE, " ");
  614.         SendClientMessage(playerid, COLOR_LIGHTBLUE, "|~~> EmP Login <~~|");
  615.         SendClientMessage(playerid, COLOR_WHITE, "* Navigieren Sie mit Ihrer Maus und klicken Sie auf das gewünschte Element.");
  616.         SendClientMessage(playerid, COLOR_WHITE, "* Wir wünschen Ihnen viel Spaß auf unserem Server :)");
  617.         SendClientMessage(playerid, COLOR_WHITE, "* Mäty & Templer!");
  618.         return 1;
  619.     }
  620.    
  621.     return CallLocalFunction("SAS_OnPlayerSpawn", "d", playerid);
  622. }
  623.  
  624. public OnPlayerCommandText(playerid, cmdtext[])
  625. {
  626.    
  627.     return CallLocalFunction("SAS_OnPlayerCommandText", "ds", playerid, cmdtext);
  628. }
  629.  
  630. public OnPlayerRequestClass(playerid, classid)
  631. {
  632.     if(IsPlayerNPC(playerid)) SpawnPlayer(playerid);
  633.     if(GetPVarInt(playerid, "LoadingPlayerData") > 0 && SAS_PLAYER_LOGGED_IN_GET(playerid) == -2 && !IsPlayerNPC(playerid))
  634.     {
  635.         new string[256], playername[MAX_PLAYER_NAME];
  636.        
  637.         GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
  638.         SAS_PLAYER_LOGGED_IN_SET(playerid, -3);
  639.        
  640.         if(SAS_PLAYER_SAVING_GET(playerid) > 0)
  641.         {
  642.             SetPVarInt(playerid, "SAS_LoginStep", 2);
  643.             format(string, sizeof(string), "Einen Moment bitte %s,\n\nEs wird derzeit noch der Spielstand vom vorherigen Spieler gespeichert.\nWir bitten um ein bisschen Geduld...", playername);
  644.             ShowPlayerDialogEx(playerid, SAS_DIALOG, DIALOG_STYLE_MSGBOX, "EmP", string, "Warten..", "");
  645.             return 1;
  646.         }
  647.        
  648.         SetPVarInt(playerid, "SAS_LoginStep", 2);
  649.         //format(string, sizeof(string), "Hallo %s und Herzlich Willkommen auf EmP!\nKlicken Sie mit der linken Maustaste auf 'Go!' bzw. drücken Sie die ENTER-Taste um fortzufahren!\n\nWir wünschen dir ne schöne Spielzeit.\n\nDas EmP Projekt", playername);
  650.         //ShowPlayerDialogEx(playerid, SAS_DIALOG, DIALOG_STYLE_MSGBOX, "EmP", string, "Go!", "");
  651.         SpawnPlayer(playerid);
  652.         return 1;
  653.     }
  654.    
  655.     return CallLocalFunction("SAS_OnPlayerRequestClass", "dd", playerid, classid);
  656. }
  657.  
  658. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  659. {
  660.     new iDialogText[128] = "\0";
  661.     if(dialogid == SAS_DIALOG)
  662.     {
  663.         new playerstep = GetPVarInt(playerid, "SAS_LoginStep"), string[256];
  664.         switch(playerstep)
  665.         {
  666.             case 1: //Laden der Spielstände in den Cache vom MySQL Server
  667.             {
  668.                 format(string, sizeof(string), "Derzeit werden Ihre Spielstände geladen, weshalb wir Sie um ein wenig Geduld bitten!\n\nDer Fortschritt liegt derzeit bei: %.2f Prozent", floatsub(100, floatmul(floatdiv(100, sizeof(PVarSaveSystem)), GetPVarInt(playerid, "LoadingPlayerData"))));
  669.                 ShowPlayerDialogEx(playerid, SAS_DIALOG, DIALOG_STYLE_MSGBOX, "EmP - Spielerdaten", string, "Warten..", "");
  670.             }
  671.             case 2: //1. Dialog beim Connecten
  672.             {
  673.                 DeletePVar(playerid, "SAS_LoginStep");
  674.                 SpawnPlayer(playerid);
  675.             }
  676.             case 3: //Anmelden  (bzw. neues Passwort setzen :-p)
  677.             {
  678.                 if(!response) return SetPVarInt(playerid, "SAS_LoginStep", 998);
  679.                
  680.                 new error[128], password[24];
  681.                
  682.                 SetPVarInt(playerid, "SAS_LoginOldStep", 3);
  683.                 SetPVarInt(playerid, "SAS_LoginStep", 999);
  684.                
  685.                
  686.  
  687.                 if(sscanf(inputtext, "s[24]", password)) format(error, sizeof(error), "* Ihr eingegebenes Passwort enthält ungültige Zeichen.\n\nÜberprüfen Sie Ihre Eingabe.");
  688.                 if(strlen(inputtext) < SAS_MIN_PASSWORD_LENGTH || strlen(inputtext) > SAS_MAX_PASSWORD_LENGTH || !strcmp(inputtext,"Nothing",false)) format(error, sizeof(error), "* Ihr Passwort entspricht nicht entweder der\n\t-> Mindestlänge von %d Zeichen\noder\n\t-> Höchstlänge von %d Zeichen", SAS_MIN_PASSWORD_LENGTH, SAS_MAX_PASSWORD_LENGTH);
  689.                
  690.                 //Verschlüsselung Whirpool
  691.                 new new_password[1024],
  692.                     new_playerPassword[1024];
  693.    
  694.                
  695.                 WP_Hash(new_password,512,password);
  696.                 GetPVarString(playerid, SAS_PLAYER_PASSWORD, new_playerPassword, sizeof(new_playerPassword));
  697.                 WP_Hash(new_playerPassword,512,playerPassword);
  698.  
  699.                 printf("Password for %s |\n\t%s\n\t%s", GetName(playerid), new_password, new_playerPassword);
  700.                 if(!strlen(new_playerPassword) || !strcmp(new_playerPassword,"Nichts",true))
  701.                 {
  702.                     CallLocalFunction(SAS_REGISTER_CONFIGURATION, "d", playerid);
  703.                 }
  704.                 else if(strcmp(new_password, new_playerPassword, false) != 0) format(error, sizeof(error), "* Ihr eingegebes Passwort stimmt nicht mit Ihrem Spielstand überein!\n\nÜberprüfen Sie Ihre Eingabe.");
  705.                
  706.                 if(strlen(error)) return ShowPlayerDialogEx(playerid, SAS_DIALOG, DIALOG_STYLE_MSGBOX, "EmP - Fehler", error, "Zurück", "");
  707.                 SAS_PLAYER_LOGGED_IN_SET(playerid, 1)
  708.                 SetPVarString(playerid, SAS_PLAYER_PASSWORD, new_password);
  709.                 InitializeJoinObjects(playerid, true);
  710.  
  711.                 return CallLocalFunction(SAS_LOG_IN_CONFIGURATION, "d", playerid);
  712.             }
  713.             case 4: //ChangeName
  714.             {
  715.                 if(!response) return SetPVarInt(playerid, "SAS_LoginStep", 998);
  716.                
  717.                 new changename, newname[MAX_PLAYER_NAME], error[256], playername[MAX_PLAYER_NAME], playerPassword[24];
  718.                 GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
  719.                 GetPVarString(playerid, SAS_PLAYER_PASSWORD, playerPassword, sizeof(playerPassword));
  720.  
  721.                 SetPVarInt(playerid, "SAS_LoginOldStep", 4);
  722.                 SetPVarInt(playerid, "SAS_LoginStep", 999);
  723.                
  724.                 if(sscanf(inputtext, "s[20]", newname)) format(error, sizeof(error), "Unzulässige Zeichen in Ihrer Eingabe entdeckt!\n\nBitte überprüfen Sie Ihre Eingabe...");
  725.                 if(strlen(newname) < 3 || strlen(newname) > MAX_PLAYER_NAME - 4) format(error, sizeof(error), "Die Länge Ihres neuen Namens ist nicht zulässig!\n\nBeachten Sie bitte die:\n\t-> Mindestlänge von 3 Zeichen\n\t-> Höchstlänge von %d Zeichen", MAX_PLAYER_NAME - 4);
  726.                
  727.                 if(strlen(error)) return ShowPlayerDialogEx(playerid, SAS_DIALOG, DIALOG_STYLE_MSGBOX, "EmP - Fehler", error, "Zurück", "");
  728.                
  729.                 changename = SetPlayerName(playerid, newname);
  730.                
  731.                 if(changename == -1) format(error, sizeof(error), "Ihr eingegebener Name %s wird bereits von einem anderen Spieler auf dem Server genutzt!\n\nWählen Sie bitte einen anderen...", newname);
  732.                 if(changename == 0) format(error, sizeof(error), "Ihr eingegebener Name %s entspricht dem gleichen Namen, jenen Sie bereits benutzen!\n\nBenützen Sie bitte einen anderen...", newname);
  733.                
  734.                 if(strlen(error)) return ShowPlayerDialogEx(playerid, SAS_DIALOG, DIALOG_STYLE_MSGBOX, "EmP - Fehler", error, "Zurück", "");
  735.                 DeletePVar(playerid, "SAS_LoginOldStep");
  736.                 DeletePVar(playerid, "SAS_LoginStep");
  737.                
  738.                 if(!strlen(playerPassword))
  739.                 {
  740.                     format(string, sizeof(string), "DELETE FROM %s WHERE %s = '%s' LIMIT 1;", SAS_SQL_TABLE, SAS_PLAYER_NAME_FIELD, playername);
  741.                     mysql_query(string, -1, -1, gSASConnection);
  742.                 }
  743.                 InitializePlayerForMindSys(playerid);
  744.                 // format(gPlayerName[playerid], MAX_PLAYER_NAME, newname); // Übernehmen für den Spielernamen
  745.                 InitilizeDataForPlayer(playerid);
  746.                
  747.                 ForceClassSelection(playerid);
  748.                 TogglePlayerSpectating(playerid, 0);
  749.                
  750.                 return 1;
  751.             }
  752.             case 5: //Wenn Spielerstand gespeichert wird und neuer Spieler gerade jetzt kommt
  753.             {
  754.                 new playername[MAX_PLAYER_NAME];
  755.                 GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
  756.                 format(string, sizeof(string), "Einen Moment bitte %s,\n\nEs wird derzeit noch der Spielstand vom vorherigen Spieler gespeichert.\nWir bitten um ein bisschen Geduld...", playername);
  757.                 return ShowPlayerDialogEx(playerid, SAS_DIALOG, DIALOG_STYLE_MSGBOX, "EmP", string, "Warten..", "");
  758.             }
  759.             case 6: //Wenn Spieler derzeit auf den Server verbindet
  760.             {
  761.                 return ShowPlayerDialogEx(playerid, SAS_DIALOG, DIALOG_STYLE_MSGBOX, "EmP", "Einen Moment bitte..\n\nIhre Umgebung wird gerade initialisiert.", "Warten..", "");
  762.             }
  763.             case 7:
  764.             {
  765.                 return SetPVarInt(playerid, "SAS_LoginStep", 998);
  766.             }
  767.             case 999: //Dialog Fehlermeldungen
  768.             {
  769.                 new playername[MAX_PLAYER_NAME], playerPassword[24];
  770.                 GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
  771.                 GetPVarString(playerid, SAS_PLAYER_PASSWORD, playerPassword, sizeof(playerPassword));
  772.  
  773.                 playerstep = GetPVarInt(playerid, "SAS_LoginOldStep");
  774.  
  775.                 SetPVarInt(playerid, "SAS_LoginStep", playerstep);
  776.                 DeletePVar(playerid, "SAS_LoginOldStep");
  777.                
  778.                 switch(playerstep)
  779.                 {
  780.                     case 3:
  781.                     {
  782.                         if(!strlen(playerPassword)) format(string, sizeof(string), "Hallo %s,\n\nSie sind gerade dabei den Server zum ersten mal zu betreteten!\n\nUm eine Sicherheit für Ihre Spielstände zu garantieren, müssen Sie\nnun ein persönliches Passwort setzen.", playername);
  783.                         else format(string, sizeof(string), "Willkommen zurück %s,\n\nBitte gebe nun dein persönliches Passwort ein um dich zu verifizieren.\n\nAchte bitte auf Groß-/Kleinschreibung", playername);
  784.                         ShowPlayerDialogEx(playerid, SAS_DIALOG, DIALOG_STYLE_PASSWORD, "EmP", string, "Login", "Zurück");
  785.                     }
  786.                     case 4:
  787.                     {
  788.                         format(string, sizeof(string), "Sie sind gerade dabei Ihren SpielerNamen %s in einen anderen Namen umzuändern.\n\nBeachten Sie die Mindestlänge von 1 Zeichen oder die Höchstlänge von %d Zeichen.", playername, MAX_PLAYER_NAME - 4);
  789.                         ShowPlayerDialogEx(playerid, SAS_DIALOG, DIALOG_STYLE_INPUT, "EmP", string, "Change", "Zurück");
  790.                     }
  791.                 }
  792.             }
  793.         }
  794.         return 1;
  795.     }
  796.     if(strlen(inputtext)) format(iDialogText,128,inputtext);
  797.     return CallLocalFunction("SAS_OnDialogResponse", "dddds", playerid, dialogid, response, listitem, iDialogText);
  798. }
  799.  
  800. public OnPlayerClickTextDraw(playerid, Text:clickedid)
  801. {
  802.     if(GetPVarInt(playerid, "SAS_LoginStep") == 998) {
  803.         GetPVarString(playerid, SAS_PLAYER_PASSWORD, StockString, StockStringLength);
  804.         ShowPlayerDialogEx(playerid,-1,DIALOG_STYLE_MSGBOX,"Closing","Closing Dialog","Zurück","");
  805.        
  806.         if(clickedid == SAS_TextHeader[0]) //LogIn / Register
  807.         {
  808.             if(!strlen(StockString)) format(FormatString, FormatStringLength, "Hallo %s,\n\nSie sind gerade dabei den Server zum ersten mal zu betreteten!\n\nUm eine Sicherheit für Ihre Spielstände zu garantieren, müssen Sie\nnun ein persönliches Passwort setzen.", GetName(playerid));
  809.             else format(FormatString, FormatStringLength, "Willkommen zurück %s,\n\nBitte gebe nun dein persönliches Passwort ein um dich zu verifizieren.\n\nAchte bitte auf Groß-/Kleinschreibung", GetName(playerid));
  810.             SetPVarInt(playerid, "SAS_LoginStep", 3);
  811.             ShowPlayerDialogEx(playerid, SAS_DIALOG, DIALOG_STYLE_PASSWORD, "EmP", FormatString, "Login", "Zurück");
  812.         }
  813.         else if(clickedid == SAS_TextHeader[1]) //Passwort vergessen
  814.         {
  815.             SetPVarInt(playerid, "PlayerLogged", 1);
  816.             if(GetPVarInt(playerid,"SpielerLostGeheimzahl") != 0)
  817.             {
  818.                 format(FormatString, FormatStringLength, "Sie haben bereits eine Geheimzahl gezogen, bitte eröffnen Sie im Forum unter der Kategorie 'Passwort vergessen'\neinen Post mit Ihrer Geheimzahl und Ihrem Spielernamen.\n\nIhre Geheimzahl lautet:\n\t\t\t\t\t\t\t%d\nINFO: Eventuell würde es den Vorgang beschleunigen, wenn Sie spezifische Daten zu Ihrem Konto nennen.", GetPVarInt(playerid,"SpielerLostGeheimzahl"));
  819.                 ShowPlayerDialogEx(playerid, SAS_DIALOG, DIALOG_STYLE_MSGBOX, "EmP", FormatString, "Zurück", "");
  820.                 SetPVarInt(playerid, "PlayerLogged", 0);
  821.                 return 1;
  822.             }
  823.             SetPVarInt(playerid, "SAS_LoginStep", 7);
  824.             SetPVarInt(playerid, "SpielerLostGeheimzahl", (10000+MRandom(89999)));
  825.             format(FormatString, FormatStringLength, "Ihre Geheimzahl wurde erstellt!\nBitte schreiben Sie im Forum unter der Kategorie 'Passwort vergessen' einen Post und\nschreiben Sie mit Ihrem Benutzernamen folgende Geheimzahl dazu:\n\n\t\t\t\t\t%d\n\nINFO: Eventuell würde es den Vorgang beschleunigen, wenn Sie spezifische Daten zu Ihrem Konto nennen.", GetPVarInt(playerid,"SpielerLostGeheimzahl"));
  826.             ShowPlayerDialogEx(playerid, SAS_DIALOG, DIALOG_STYLE_MSGBOX, "EmP", FormatString, "Dankeschön", "");
  827.             SetPVarInt(playerid, "PlayerLogged", 0);
  828.         }
  829.         else if(clickedid == SAS_TextHeader[2]) //Change Name
  830.         {
  831.             SetPVarInt(playerid, "SAS_LoginStep", 4);
  832.             format(FormatString, FormatStringLength, "Sie sind gerade dabei Ihren SpielerNamen %s in einen anderen Namen umzuändern.\n\nBeachten Sie die Mindestlänge von 1 Zeichen oder die Höchstlänge von %d Zeichen.", GetName(playerid), MAX_PLAYER_NAME - 4);
  833.             ShowPlayerDialogEx(playerid, SAS_DIALOG, DIALOG_STYLE_INPUT, "EmP", FormatString, "Change", "Zurück");
  834.         }
  835.         return 1;
  836.     }
  837.     return CallLocalFunction("SAS_OnPlayerClickTextDraw", "dd", playerid, _:clickedid);
  838. }
  839.  
  840. #if defined _ALS_OnGameModeInit
  841.     #undef OnGameModeInit
  842. #else
  843.     #define _ALS_OnGameModeInit
  844. #endif
  845. #define OnGameModeInit SAS_OnGameModeInit
  846.  
  847. #if defined _ALS_OnGameModeExit
  848.     #undef OnGameModeExit
  849. #else
  850.     #define _ALS_OnGameModeExit
  851. #endif
  852. #define OnGameModeExit SAS_OnGameModeExit
  853.  
  854. #if defined _ALS_OnPlayerConnect
  855.     #undef OnPlayerConnect
  856. #else
  857.     #define _ALS_OnPlayerConnect
  858. #endif
  859. #define OnPlayerConnect SAS_OnPlayerConnect
  860.  
  861. #if defined _ALS_OnPlayerDisconnect
  862.     #undef OnPlayerDisconnect
  863. #else
  864.     #define _ALS_OnPlayerDisconnect
  865. #endif
  866. #define OnPlayerDisconnect SAS_OnPlayerDisconnect
  867.  
  868. #if defined _ALS_OnPlayerSpawn
  869.     #undef OnPlayerSpawn
  870. #else
  871.     #define _ALS_OnPlayerSpawn
  872. #endif
  873. #define OnPlayerSpawn SAS_OnPlayerSpawn
  874.  
  875. #if defined _ALS_OnPlayerRequestClass
  876.     #undef OnPlayerRequestClass
  877. #else
  878.     #define _ALS_OnPlayerRequestClass
  879. #endif
  880. #define OnPlayerRequestClass SAS_OnPlayerRequestClass
  881.  
  882. #if defined _ALS_OnDialogResponse
  883.     #undef OnDialogResponse
  884. #else
  885.     #define _ALS_OnDialogResponse
  886. #endif
  887. #define OnDialogResponse SAS_OnDialogResponse
  888.  
  889. #if defined _ALS_OnPlayerClickTextDraw
  890.     #undef OnPlayerClickTextDraw
  891. #else
  892.     #define _ALS_OnPlayerClickTextDraw
  893. #endif
  894. #define OnPlayerClickTextDraw SAS_OnPlayerClickTextDraw
  895.  
  896. #if defined _ALS_OnPlayerCommandText
  897.     #undef OnPlayerCommandText
  898. #else
  899.     #define _ALS_OnPlayerCommandText
  900. #endif
  901. #define OnPlayerCommandText SAS_OnPlayerCommandText
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement