Guest User

Handysystem

a guest
Dec 21st, 2013
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 20.96 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. #include <dini>
  4. //Enums und Variablen
  5. #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
  6. enum spielerdaten
  7. {
  8.     pname[MAX_PLAYER_NAME],
  9.     psms,
  10.     phandy,
  11.     panruf,
  12.     pmodus,
  13.     handyname
  14. }
  15. new SInfo[MAX_PLAYERS][spielerdaten];
  16. new str[128],
  17. pName[MAX_PLAYER_NAME],
  18. Datei[64],
  19. Spielersp[MAX_PLAYERS],
  20. HAngenommen[MAX_PLAYERS],
  21. Telefonat[MAX_PLAYERS];
  22. new Text: HBOX[MAX_PLAYERS];
  23. new Text: HAnrufe[MAX_PLAYERS];
  24. new Text: HSMS[MAX_PLAYERS];
  25. new Text: HSTATUS[MAX_PLAYERS];
  26. new Text: HNAME[MAX_PLAYERS];
  27.  
  28. new Telefonat2[MAX_PLAYERS];
  29.  
  30. //Dialog
  31.  
  32. #define DIALOG_HANDY    4851
  33. #define DIALOG_HANDY1   4852
  34. #define DIALOG_HANDY2   4853
  35. #define DIALOG_HANDY3   4854
  36. #define DIALOG_HANDY4   4855
  37.  
  38. public OnFilterScriptInit()
  39. {
  40.     print("\n--------------------------------------");
  41.     print(" Handysystem by Danno");
  42.     print("--------------------------------------\n");
  43.     return 1;
  44. }
  45.  
  46. public OnFilterScriptExit()
  47. {
  48.     for(new i = 0; i < MAX_PLAYERS; i++){
  49.         SaveHandy(i);
  50.     }
  51.     return 1;
  52. }
  53.  
  54.  
  55. public OnPlayerRequestClass(playerid, classid)
  56. {
  57.     return 1;
  58. }
  59.  
  60. public OnPlayerConnect(playerid)
  61. {
  62.     GetPlayerName(playerid,pName,sizeof(pName));
  63.     format(Datei,sizeof(Datei),"/Handy/%s.ini",pName);
  64.     if(!fexist(Datei))
  65.     {
  66.         CreateHandy(playerid);
  67.     }
  68.     else
  69.     {
  70.         Telefonat[playerid] = -1;
  71.         Spielersp[playerid] = -1;
  72.         HAngenommen[playerid] = -1;
  73.         Telefonat2[playerid] = 0;
  74.  
  75.         Createwar(playerid);
  76.     }
  77.     return 1;
  78. }
  79.  
  80. public OnPlayerDisconnect(playerid, reason)
  81. {
  82.     SaveHandy(playerid);
  83.     return 1;
  84. }
  85.  
  86. public OnPlayerSpawn(playerid)
  87. {
  88.     Handyladen(playerid);
  89.     TextDrawShowForPlayer(playerid,HBOX[playerid]);
  90.     TextDrawShowForPlayer(playerid,HAnrufe[playerid]);
  91.     TextDrawShowForPlayer(playerid,HSMS[playerid]);
  92.     TextDrawShowForPlayer(playerid,HSTATUS[playerid]);
  93.     TextDrawShowForPlayer(playerid,HNAME[playerid]);
  94.     Handyt(playerid);
  95.     return 1;
  96. }
  97.  
  98.  
  99. public OnPlayerText(playerid, text[])
  100. {
  101.     if( HAngenommen[playerid] > -1)
  102.     {
  103.         GetPlayerName(playerid,pName,sizeof(pName));
  104.         format(str,sizeof(str),"{F50000}[Handy- %s]: {BEBEBE}%s",pName,text);
  105.         SendClientMessage(HAngenommen[playerid],-1,str);
  106.        
  107.         format(str,sizeof(str),"{F50000}[Handy- Du]: {BEBEBE}%s",text);
  108.         SendClientMessage(playerid,-1,str);
  109.     }
  110.     return 1;
  111. }
  112.  
  113. public OnPlayerCommandText(playerid, cmdtext[])
  114. {
  115.     dcmd(annehmen,8,cmdtext);
  116.     dcmd(handy,5,cmdtext);
  117.     dcmd(auflegen,8,cmdtext);
  118.     dcmd(ablehnen,8,cmdtext);
  119.     return 0;
  120. }
  121.  
  122.  
  123. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  124. {
  125.     if(dialogid == DIALOG_HANDY)
  126.     {
  127.         if(response)
  128.         {
  129.             if(listitem == 0)
  130.             {
  131.                 if(SInfo[playerid][pmodus] == 0)
  132.                 {
  133.                     SInfo[playerid][pmodus] = 1;
  134.                     SendClientMessage(playerid,-1,"{F50000}[Handy]:{BEBEBE} Du hast dein Handy hochgefahren.");
  135.                     Handyt(playerid);
  136.                 }
  137.                 else
  138.                 {
  139.                     SInfo[playerid][pmodus] = 0;
  140.                     SendClientMessage(playerid,-1,"{F50000}[Handy]:{BEBEBE} Du hast dein Handy heruntergefahren.");
  141.                     Handyt(playerid);
  142.                 }
  143.             }
  144.             if(listitem == 1)
  145.             {
  146.                 if(SInfo[playerid][pmodus] == 1)
  147.                 {
  148.                     ShowPlayerDialog(playerid,DIALOG_HANDY2,DIALOG_STYLE_INPUT,"Handy","{BEBEBE}Gebe eine SpielerID an, den du gerne anrufen möchtest:","Anrufen","Abbrechen");
  149.                 }else{ SendClientMessage(playerid,-1,"{F50000}[Handy]:{BEBEBE} Dein Handy ist aus.");}
  150.             }
  151.             if(listitem == 2)
  152.             {
  153.                 if(SInfo[playerid][pmodus] == 1)
  154.                 {
  155.                     ShowPlayerDialog(playerid,DIALOG_HANDY1,DIALOG_STYLE_INPUT,"Handy","{BEBEBE}Gebe eine SpielerID an, an den du eine SMS verschicken möchtest:","Weiter","Abbrechen");
  156.                 }else{ SendClientMessage(playerid,-1,"{F50000}[Handy]:{BEBEBE} Dein Handy ist aus.");}
  157.             }
  158.             if(listitem == 3)
  159.             {
  160.                 if(SInfo[playerid][pmodus] == 1)
  161.                 {
  162.                     SInfo[Spielersp[playerid]][psms] = 0;
  163.                     SendClientMessage(playerid,-1,"{F50000}[Handy]:{BEBEBE} Du hast deine SMS- Liste geleert.");
  164.                     Handyt(playerid);
  165.                 }else{ SendClientMessage(playerid,-1,"{F50000}[Handy]:{BEBEBE} Dein Handy ist aus.");}
  166.             }
  167.             if(listitem == 4)
  168.             {
  169.                 if(SInfo[playerid][pmodus] == 1)
  170.                 {
  171.                     SInfo[Spielersp[playerid]][panruf] = 0;
  172.                     SendClientMessage(playerid,-1,"{F50000}[Handy]:{BEBEBE} Du hast deine Anrufs- Liste geleert.");
  173.                     Handyt(playerid);
  174.                 }else{ SendClientMessage(playerid,-1,"{F50000}[Handy]:{BEBEBE} Dein Handy ist aus.");}
  175.             }
  176.             if(listitem == 5)
  177.             {
  178.                 ShowPlayerDialog(playerid,DIALOG_HANDY4,DIALOG_STYLE_LIST,"Handy","XPeria -260€\nSamsung Galaxy -250€\nIphone 4 -440€\nIphone 4S -490€\nIphone 5 -700€\nIphone 5S -790€","Kaufen","Abbrechen");
  179.             }
  180.         }
  181.     }
  182.     if(dialogid == DIALOG_HANDY4)
  183.     {
  184.         if(response)
  185.         {
  186.             if(listitem == 0)
  187.             {
  188.                 SendClientMessage(playerid,-1,"{F50000}[Handy]:{BEBEBE} Du hast dir das XPeria Handy gekauft!");
  189.                 GivePlayerMoney(playerid,-260);
  190.                 SInfo[playerid][handyname] = 1;
  191.                 Handyt(playerid);
  192.             }
  193.             if(listitem == 1)
  194.             {
  195.                 SendClientMessage(playerid,-1,"{F50000}[Handy]:{BEBEBE} Du hast dir das Samsung Galaxy Handy gekauft!");
  196.                 GivePlayerMoney(playerid,-250);
  197.                 SInfo[playerid][handyname] = 2;
  198.                 Handyt(playerid);
  199.             }
  200.             if(listitem == 2)
  201.             {
  202.                 SendClientMessage(playerid,-1,"{F50000}[Handy]:{BEBEBE} Du hast dir das Iphone 4 Handy gekauft!");
  203.                 GivePlayerMoney(playerid,-440);
  204.                 SInfo[playerid][handyname] = 3;
  205.                
  206.                 Handyt(playerid);
  207.             }
  208.             if(listitem == 3)
  209.             {
  210.                 SendClientMessage(playerid,-1,"{F50000}[Handy]:{BEBEBE} Du hast dir das Iphone 4S Handy gekauft!");
  211.                 GivePlayerMoney(playerid,-490);
  212.                 SInfo[playerid][handyname] = 4;
  213.                 Handyt(playerid);
  214.             }
  215.             if(listitem == 4)
  216.             {
  217.                 SendClientMessage(playerid,-1,"{F50000}[Handy]:{BEBEBE} Du hast dir das Iphone 5 Handy gekauft!");
  218.                 GivePlayerMoney(playerid,-700);
  219.                 SInfo[playerid][handyname] = 5;
  220.                 Handyt(playerid);
  221.             }
  222.             if(listitem == 5)
  223.             {
  224.                 SendClientMessage(playerid,-1,"{F50000}[Handy]:{BEBEBE} Du hast dir das Iphone 5S Handy gekauft!");
  225.                 GivePlayerMoney(playerid,-790);
  226.                 SInfo[playerid][handyname] = 6;
  227.                 Handyt(playerid);
  228.             }
  229.         }
  230.     }
  231.     if(dialogid == DIALOG_HANDY1)
  232.     {
  233.         if(response)
  234.         {
  235.             new i = strval(inputtext);
  236.             if(IsPlayerConnected(i))
  237.             {
  238.                 Spielersp[playerid] = i;
  239.                 ShowPlayerDialog(playerid,DIALOG_HANDY3,DIALOG_STYLE_INPUT,"Handy","{BEBEBE}Gebe nun deinen Text an den Spieler an:","Senden","Abbrechen");
  240.             }
  241.             else{SendClientMessage(playerid,-1,"{F50000}Diesen Spieler gibt es nicht!");}
  242.         }
  243.     }
  244.     if(dialogid == DIALOG_HANDY3)
  245.     {
  246.         if(response)
  247.         {
  248.             //new i = inputtext;
  249.             GetPlayerName(Spielersp[playerid],pName,sizeof(pName));
  250.             format(str,sizeof(str),"{F50000}[Handy- Geschrieben]:{BEBEBE} An: %s Text: %s",pName,inputtext);
  251.             SendClientMessage(playerid,-1,str);
  252.  
  253.             GetPlayerName(playerid,pName,sizeof(pName));
  254.             format(str,sizeof(str),"{F50000}[Handy- SMS erhalten]:{BEBEBE} Von: %s Text: %s",pName,inputtext);
  255.             SendClientMessage(Spielersp[playerid],-1,str);
  256.             SInfo[Spielersp[playerid]][psms] ++;
  257.             GivePlayerMoney(playerid,-9);
  258.             Handyt(playerid);
  259.         }
  260.     }
  261.     if(dialogid == DIALOG_HANDY2)
  262.     {
  263.         if(response)
  264.         {
  265.             new i = strval(inputtext);
  266.             if(IsPlayerConnected(i))
  267.             {
  268.                 Telefonat[playerid] = i;
  269.                 Telefonat[i] = playerid;
  270.                 GetPlayerName(i,pName,sizeof(pName));
  271.                 format(str,sizeof(str),"{F50000}[Handy- Anruf]:{BEBEBE} Du rufst %s an...",pName);
  272.                 SendClientMessage(playerid,-1,str);
  273.                 SendClientMessage(playerid,-1,"{F50000}[Handy- Anruf]:{BEBEBE} Lege mit /auflegen auf.");
  274.                 GetPlayerName(playerid,pName,sizeof(pName));
  275.                 format(str,sizeof(str),"{F50000}[Handy- Anruf]:{BEBEBE} %s ruft dich an...",pName);
  276.                 SendClientMessage(i,-1,str);
  277.                 SendClientMessage(i,-1,"{F50000}[Handy- Anruf]:{BEBEBE} Verwende /annehmen oder /ablehnen.");
  278.                 SInfo[i][panruf] ++;
  279.                 Handyt(playerid);
  280.             }
  281.             else{SendClientMessage(playerid,-1,"{F50000}Diesen Spieler gibt es nicht!");}
  282.         }
  283.     }
  284.     return 1;
  285. }
  286.  
  287. dcmd_annehmen(playerid,params[])
  288. {
  289.     #pragma unused params
  290.     if(Telefonat[playerid] > -1 )
  291.     {
  292.         GetPlayerName(Telefonat[playerid],pName,sizeof(pName));
  293.         format(str,sizeof(str),"{F50000}[Handy- Anruf]:{BEBEBE} Du hast den Anruf von %s angenommen.",pName);
  294.         SendClientMessage(playerid,-1,str);
  295.         GetPlayerName(playerid,pName,sizeof(pName));
  296.         format(str,sizeof(str),"{F50000}[Handy- Anruf]:{BEBEBE} %s hat den Anruf angenommen.",pName);
  297.         SendClientMessage(Telefonat[playerid],-1,str);
  298.         HAngenommen[Telefonat[playerid]] = playerid;
  299.         HAngenommen[playerid] = Telefonat[playerid];
  300.         return 1;
  301.     }
  302.     else
  303.     {
  304.         SendClientMessage(playerid,-1,"{F50000}Du hast keinen Anruf erhalten.");
  305.     }
  306.     return 1;
  307. }
  308.  
  309. dcmd_ablehnen(playerid,params[])
  310. {
  311.     #pragma unused params
  312.     if(Telefonat[playerid] > -1 )
  313.     {
  314.         GetPlayerName(Telefonat[playerid],pName,sizeof(pName));
  315.         format(str,sizeof(str),"{F50000}[Handy- Anruf]:{BEBEBE} Du hast den Anruf von %s abgelehnt.",pName);
  316.         SendClientMessage(playerid,-1,str);
  317.         GetPlayerName(playerid,pName,sizeof(pName));
  318.         format(str,sizeof(str),"{F50000}[Handy- Anruf]:{BEBEBE} %s hat den Anruf abgelehnt.",pName);
  319.         SendClientMessage(Telefonat[playerid],-1,str);
  320.         HAngenommen[Telefonat[playerid]] = -1;
  321.         HAngenommen[playerid] = -1;
  322.         Telefonat[Telefonat[playerid]] = -1;
  323.         Telefonat[playerid] = -1;
  324.         return 1;
  325.     }
  326.     else{
  327.         SendClientMessage(playerid,-1,"{F50000}Du hast keinen Anruf erhalten.");
  328.     }
  329.     return 1;
  330. }
  331. dcmd_auflegen(playerid,params[])
  332. {
  333.     #pragma unused params
  334.     if(Telefonat[playerid] > -1 || HAngenommen[playerid] > -1){
  335.         GetPlayerName(Telefonat[playerid],pName,sizeof(pName));
  336.         format(str,sizeof(str),"{F50000}[Handy- Anruf]:{BEBEBE} Du hast den Anruf mit %s abgebrochen.",pName);
  337.         SendClientMessage(playerid,-1,str);
  338.         GetPlayerName(playerid,pName,sizeof(pName));
  339.         format(str,sizeof(str),"{F50000}[Handy- Anruf]:{BEBEBE} %s hat aufgelegt.",pName);
  340.         SendClientMessage(Telefonat[playerid],-1,str);
  341.         HAngenommen[Telefonat[playerid]] = -1;
  342.         HAngenommen[playerid] = -1;
  343.         Telefonat[Telefonat[playerid]] = -1;
  344.         Telefonat[playerid] = -1;
  345.         return 1;
  346.     }
  347.     else{
  348.         SendClientMessage(playerid,-1,"{F50000}Du hast keinen Anruf erhalten.");
  349.     }
  350.     return 1;
  351. }
  352. dcmd_handy(playerid,params[])
  353. {
  354.     #pragma unused params
  355.     ShowPlayerDialog(playerid,DIALOG_HANDY,DIALOG_STYLE_LIST,"Handy","Handy an/ausschalten\nPerson anrufen\nSMS schreiben\nSMS- Liste leeren\nAnrufs- Liste leeren\nHandy kaufen","Weiter","Abbrechen");
  356.     return 1;
  357. }
  358. stock CreateHandy(playerid)
  359. {
  360.     GetPlayerName(playerid,pName,sizeof(pName));
  361.     format(Datei,sizeof(Datei),"/Handy/%s.ini",pName);
  362.     dini_Create(Datei);
  363.     dini_IntSet(Datei,"psms",0);
  364.     dini_IntSet(Datei,"panruf",0);
  365.     dini_IntSet(Datei,"phandy",0);
  366.     dini_IntSet(Datei,"pmodus",0);
  367.     dini_IntSet(Datei,"handyname",0);
  368.     Handyladen(playerid);
  369.     Handyt(playerid);
  370.     Createwar(playerid);
  371.     return 1;
  372. }
  373. stock SaveHandy(playerid)
  374. {
  375.     if(IsPlayerConnected(playerid)) //wir überprüfen ob der Spieler überhaupt noch Connected ist und ob er nicht ein NPC ist.
  376.     {
  377.         GetPlayerName(playerid,pName,sizeof(pName));
  378.         format(Datei,sizeof(Datei),"/Handy/%s.ini",pName);
  379.         dini_IntSet(Datei,"psms",SInfo[playerid][psms]);
  380.         dini_IntSet(Datei,"panruf",SInfo[playerid][panruf]);
  381.         dini_IntSet(Datei,"phandy",SInfo[playerid][phandy]);
  382.         dini_IntSet(Datei,"pmodus",SInfo[playerid][pmodus]);
  383.         dini_IntSet(Datei,"handyname",SInfo[playerid][handyname]);
  384.     }
  385.     return 1;
  386. }
  387. stock Handyladen(playerid)
  388. {
  389.     GetPlayerName(playerid,pName,sizeof(pName));
  390.     format(Datei,sizeof(Datei),"/Handy/%s.ini",pName);
  391.     SInfo[playerid][psms] = dini_Int(Datei,"psms");
  392.     SInfo[playerid][panruf] = dini_Int(Datei,"panruf");
  393.     SInfo[playerid][phandy] = dini_Int(Datei,"phandy");
  394.     SInfo[playerid][pmodus] = dini_Int(Datei,"pmodus");
  395.     SInfo[playerid][handyname] = dini_Int(Datei,"handyname");
  396.     return 1;
  397. }
  398. forward Createwar(playerid);
  399. public Createwar(playerid)
  400. {
  401.         HBOX[playerid] = TextDrawCreate(500.000000, 120.000000,"_");
  402.         TextDrawUseBox(HBOX[playerid],1);
  403.         TextDrawBoxColor(HBOX[playerid],68);
  404.         TextDrawTextSize(HBOX[playerid],622.000000, 0.000000);
  405.         TextDrawAlignment(HBOX[playerid],0);
  406.         TextDrawBackgroundColor(HBOX[playerid],255);
  407.         TextDrawFont(HBOX[playerid],1);
  408.         TextDrawLetterSize(HBOX[playerid],1.360000, 7.099999);
  409.         TextDrawSetOutline(HBOX[playerid],1);
  410.         TextDrawSetProportional(HBOX[playerid],1);
  411.         TextDrawSetShadow(HBOX[playerid],1);
  412.  
  413.         HAnrufe[playerid] = TextDrawCreate(501.000000,137.000000," ");
  414.         TextDrawAlignment(HAnrufe[playerid],0);
  415.         TextDrawBackgroundColor(HAnrufe[playerid],0x000000ff);
  416.         TextDrawFont(HAnrufe[playerid],1);
  417.         TextDrawLetterSize(HAnrufe[playerid],0.380000,1.400000);
  418.         TextDrawColor(HAnrufe[playerid],0xffffffff);
  419.         TextDrawSetOutline(HAnrufe[playerid],1);
  420.         TextDrawSetProportional(HAnrufe[playerid],1);
  421.         TextDrawSetShadow(HAnrufe[playerid],1);
  422.  
  423.         HSMS[playerid] = TextDrawCreate(501.000000,153.000000," ");
  424.         TextDrawAlignment(HSMS[playerid],0);
  425.         TextDrawBackgroundColor(HSMS[playerid],0x000000ff);
  426.         TextDrawFont(HSMS[playerid],1);
  427.         TextDrawLetterSize(HSMS[playerid],0.38,1.4);
  428.         TextDrawColor(HSMS[playerid],0xffffffff);
  429.         TextDrawSetOutline(HSMS[playerid],1);
  430.         TextDrawSetProportional(HSMS[playerid],1);
  431.         TextDrawSetShadow(HSMS[playerid],1);
  432.  
  433.         HNAME[playerid] = TextDrawCreate(501.000000,169.000000," ");
  434.         TextDrawAlignment(HNAME[playerid],0);
  435.         TextDrawBackgroundColor(HNAME[playerid],0x000000ff);
  436.         TextDrawFont(HNAME[playerid],1);
  437.         TextDrawLetterSize(HNAME[playerid],0.38,1.4);
  438.         TextDrawColor(HNAME[playerid],0xffffffff);
  439.         TextDrawSetOutline(HNAME[playerid],1);
  440.         TextDrawSetProportional(HNAME[playerid],1);
  441.         TextDrawSetShadow(HNAME[playerid],1);
  442.  
  443.         HSTATUS[playerid] = TextDrawCreate(501.000000,121.000000," ");
  444.         TextDrawAlignment(HSTATUS[playerid],1);
  445.         TextDrawBackgroundColor(HSTATUS[playerid],0x000000ff);
  446.         TextDrawFont(HSTATUS[playerid],1);
  447.         TextDrawLetterSize(HSTATUS[playerid],0.38,1.4);
  448.         TextDrawColor(HSTATUS[playerid],0xffffffff);
  449.         TextDrawSetOutline(HSTATUS[playerid],1);
  450.         TextDrawSetProportional(HSTATUS[playerid],1);
  451.         TextDrawSetShadow(HSTATUS[playerid],1);
  452.         return 1;
  453. }
  454. forward Handyt(playerid);
  455. public Handyt(playerid)
  456. {
  457.     new Anrufeh[64], SMSH[64], STATUSH[64], handynn[64];
  458.     format(Anrufeh,sizeof(Anrufeh),    "~w~Anrufe:~g~ %d",SInfo[playerid][panruf]);
  459.     format(SMSH,sizeof(SMSH),          "~w~SMS:~g~ %d",SInfo[playerid][psms]);
  460.     if(SInfo[playerid][handyname] == 0)
  461.     {
  462.         format(handynn,sizeof(handynn),  "~w~HName: ~g~Keins");
  463.     }
  464.     else if(SInfo[playerid][handyname] == 1)
  465.     {
  466.         format(handynn,sizeof(handynn),  "~w~HName: ~g~XPeria");
  467.     }
  468.     else if(SInfo[playerid][handyname] == 2)
  469.     {
  470.         format(handynn,sizeof(handynn),  "~w~HName: ~g~Sam. G.");
  471.     }
  472.     else if(SInfo[playerid][handyname] == 3)
  473.     {
  474.         format(handynn,sizeof(handynn),  "~w~HName: ~g~Iphone 4");
  475.     }
  476.     else if(SInfo[playerid][handyname] == 4)
  477.     {
  478.         format(handynn,sizeof(handynn),  "~w~HName: ~g~Iphone 4S");
  479.     }
  480.     else if(SInfo[playerid][handyname] == 5)
  481.     {
  482.         format(handynn,sizeof(handynn),  "~w~HName: ~g~Iphone 5");
  483.     }
  484.     else if(SInfo[playerid][handyname] == 6)
  485.     {
  486.         format(handynn,sizeof(handynn),  "~w~HName: ~g~Iphone 5S");
  487.     }
  488.     if(SInfo[playerid][pmodus] == 0)
  489.     {
  490.         format(STATUSH,sizeof(STATUSH),  "~w~Status: ~r~Aus");
  491.     }
  492.     else
  493.     {
  494.         format(STATUSH,sizeof(STATUSH),  "~w~Status: ~g~An");
  495.     }
  496.     TextDrawSetString(HAnrufe[playerid], Anrufeh);
  497.     TextDrawSetString(HSTATUS[playerid], STATUSH);
  498.     TextDrawSetString(HSMS[playerid], SMSH);
  499.     TextDrawSetString(HNAME[playerid], handynn);
  500.    
  501.     return 1;
  502. }
  503. stock sscanf(string[], format[], {Float,_}:...)
  504. {
  505.     #if defined isnull
  506.         if (isnull(string))
  507.     #else
  508.         if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  509.     #endif
  510.         {
  511.             return format[0];
  512.         }
  513.     #pragma tabsize 4
  514.     new
  515.         formatPos = 0,
  516.         stringPos = 0,
  517.         paramPos = 2,
  518.         paramCount = numargs(),
  519.         delim = ' ';
  520.     while (string[stringPos] && string[stringPos] <= ' ')
  521.     {
  522.         stringPos++;
  523.     }
  524.     while (paramPos < paramCount && string[stringPos])
  525.     {
  526.         switch (format[formatPos++])
  527.         {
  528.             case '\0':
  529.             {
  530.                 return 0;
  531.             }
  532.             case 'i', 'd':
  533.             {
  534.                 new
  535.                     neg = 1,
  536.                     num = 0,
  537.                     ch = string[stringPos];
  538.                 if (ch == '-')
  539.                 {
  540.                     neg = -1;
  541.                     ch = string[++stringPos];
  542.                 }
  543.                 do
  544.                 {
  545.                     stringPos++;
  546.                     if ('0' <= ch <= '9')
  547.                     {
  548.                         num = (num * 10) + (ch - '0');
  549.                     }
  550.                     else
  551.                     {
  552.                         return -1;
  553.                     }
  554.                 }
  555.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  556.                 setarg(paramPos, 0, num * neg);
  557.             }
  558.             case 'h', 'x':
  559.             {
  560.                 new
  561.                     num = 0,
  562.                     ch = string[stringPos];
  563.                 do
  564.                 {
  565.                     stringPos++;
  566.                     switch (ch)
  567.                     {
  568.                         case 'x', 'X':
  569.                         {
  570.                             num = 0;
  571.                             continue;
  572.                         }
  573.                         case '0' .. '9':
  574.                         {
  575.                             num = (num << 4) | (ch - '0');
  576.                         }
  577.                         case 'a' .. 'f':
  578.                         {
  579.                             num = (num << 4) | (ch - ('a' - 10));
  580.                         }
  581.                         case 'A' .. 'F':
  582.                         {
  583.                             num = (num << 4) | (ch - ('A' - 10));
  584.                         }
  585.                         default:
  586.                         {
  587.                             return -1;
  588.                         }
  589.                     }
  590.                 }
  591.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  592.                 setarg(paramPos, 0, num);
  593.             }
  594.             case 'c':
  595.             {
  596.                 setarg(paramPos, 0, string[stringPos++]);
  597.             }
  598.             case 'f':
  599.             {
  600.  
  601.                 new changestr[16], changepos = 0, strpos = stringPos;
  602.                 while(changepos < 16 && string[strpos] && string[strpos] != delim)
  603.                 {
  604.                     changestr[changepos++] = string[strpos++];
  605.                     }
  606.                 changestr[changepos] = '\0';
  607.                 setarg(paramPos,0,_:floatstr(changestr));
  608.             }
  609.             case 'p':
  610.             {
  611.                 delim = format[formatPos++];
  612.                 continue;
  613.             }
  614.             case '\'':
  615.             {
  616.                 new
  617.                     end = formatPos - 1,
  618.                     ch;
  619.                 while ((ch = format[++end]) && ch != '\'') {}
  620.                 if (!ch)
  621.                 {
  622.                     return -1;
  623.                 }
  624.                 format[end] = '\0';
  625.                 if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  626.                 {
  627.                     if (format[end + 1])
  628.                     {
  629.                         return -1;
  630.                     }
  631.                     return 0;
  632.                 }
  633.                 format[end] = '\'';
  634.                 stringPos = ch + (end - formatPos);
  635.                 formatPos = end + 1;
  636.             }
  637.             case 'u':
  638.             {
  639.                 new
  640.                     end = stringPos - 1,
  641.                     id = 0,
  642.                     bool:num = true,
  643.                     ch;
  644.                 while ((ch = string[++end]) && ch != delim)
  645.                 {
  646.                     if (num)
  647.                     {
  648.                         if ('0' <= ch <= '9')
  649.                         {
  650.                             id = (id * 10) + (ch - '0');
  651.                         }
  652.                         else
  653.                         {
  654.                             num = false;
  655.                         }
  656.                     }
  657.                 }
  658.                 if (num && IsPlayerConnected(id))
  659.                 {
  660.                     setarg(paramPos, 0, id);
  661.                 }
  662.                 else
  663.                 {
  664.                     #if !defined foreach
  665.                         #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  666.                         #define __SSCANF_FOREACH__
  667.                     #endif
  668.                     string[end] = '\0';
  669.                     num = false;
  670.                     new
  671.                         name[MAX_PLAYER_NAME];
  672.                     id = end - stringPos;
  673.                     foreach (Player, playerid)
  674.                     {
  675.                         GetPlayerName(playerid, name, sizeof (name));
  676.                         if (!strcmp(name, string[stringPos], true, id))
  677.                         {
  678.                             setarg(paramPos, 0, playerid);
  679.                             num = true;
  680.                             break;
  681.                         }
  682.                     }
  683.                     if (!num)
  684.                     {
  685.                         setarg(paramPos, 0, INVALID_PLAYER_ID);
  686.                     }
  687.                     string[end] = ch;
  688.                     #if defined __SSCANF_FOREACH__
  689.                         #undef foreach
  690.                         #undef __SSCANF_FOREACH__
  691.                     #endif
  692.                 }
  693.                 stringPos = end;
  694.             }
  695.             case 's', 'z':
  696.             {
  697.                 new
  698.                     i = 0,
  699.                     ch;
  700.                 if (format[formatPos])
  701.                 {
  702.                     while ((ch = string[stringPos++]) && ch != delim)
  703.                     {
  704.                         setarg(paramPos, i++, ch);
  705.                     }
  706.                     if (!i)
  707.                     {
  708.                         return -1;
  709.                     }
  710.                 }
  711.                 else
  712.                 {
  713.                     while ((ch = string[stringPos++]))
  714.                     {
  715.                         setarg(paramPos, i++, ch);
  716.                     }
  717.                 }
  718.                 stringPos--;
  719.                 setarg(paramPos, i, '\0');
  720.             }
  721.             default:
  722.             {
  723.                 continue;
  724.             }
  725.         }
  726.         while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  727.         {
  728.             stringPos++;
  729.         }
  730.         while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  731.         {
  732.             stringPos++;
  733.         }
  734.         paramPos++;
  735.     }
  736.     do
  737.     {
  738.         if ((delim = format[formatPos++]) > ' ')
  739.         {
  740.             if (delim == '\'')
  741.             {
  742.                 while ((delim = format[formatPos++]) && delim != '\'') {}
  743.             }
  744.             else if (delim != 'z')
  745.             {
  746.                 return delim;
  747.             }
  748.         }
  749.     }
  750.     while (delim > ' ');
  751.     return 0;
  752. }
Advertisement
Add Comment
Please, Sign In to add comment