Guest User

gKarts

a guest
May 28th, 2011
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 20.53 KB | None | 0 0
  1. /*
  2.  GGGGGGGGGGGGGGGGGGGGGGG   KKKKKK       KKKKKK
  3.  GGGGGGGGGGGGGGGGGGGGGGG   KKKKKK      KKKKKK
  4.  GGGGGGGGGGGGGGGGGGGGGGG   KKKKKK     KKKKKK
  5.  GGGGGG                    KKKKKK    KKKKKK
  6.  GGGGGG                    KKKKKK   KKKKKK
  7.  GGGGGG                    KKKKKK  KKKKKK
  8.  GGGGGG                    KKKKKKKKKKKK
  9.  GGGGGG          GGGGGGG   KKKKKK  KKKKKK
  10.  GGGGGG          GGGGGGG   KKKKKK   KKKKKK
  11.  GGGGGG          GGGGGGG   KKKKKK    KKKKKK
  12.  GGGGGGGGGGGGGGGGGGGGGGG   KKKKKK     KKKKKK
  13.  GGGGGGGGGGGGGGGGGGGGGGG   KKKKKK      KKKKKK
  14.  GGGGGGGGGGGGGGGGGGGGGGG   KKKKKK       KKKKKK
  15.  Ich arbeite im Auftrag von: All-Web-vServer.de
  16.  
  17.  
  18.  Sie dürfen:
  19.  - Dieses Script nutzen
  20.  - Dieses Script modifizieren
  21.  
  22.  Wenn Sie es nutzen, erwähnen lassen Sie bitte die Credits :]
  23.  Dieses Script ist urheberrechtlich geschützt.
  24.  Sie wollen den Platz für das Business ändern? Passen Sie einfach die unten benannten Koordinaten an!
  25.  Dazu aber auch das Interior nicht vergessen ;), falls im freien, einfach eine "0" eintragen
  26.  
  27.  Befehle:
  28.  - /buycartbiz
  29.  - /configbiz (Nur als Besitzer)
  30.  - /enter
  31.  - /exit
  32.  - /startrace (Nur als Racemaster)
  33.  - /setrounds (Nur als Racemaster)
  34.  - /startrace (Nur als Racemaster)
  35.  - /createnewrace (Spawnt alle Karts neu) (Nur als Racemaster)
  36.  
  37.  
  38.  Sie nutzen es im GF? Sie wollen es nur an bizlose Leute verkaufen? Definieren Sie unten einfach "GODFATHER"
  39. */
  40. #include <a_samp>
  41. #include <dini>
  42. //-----------------------DEFINES--------------------------------
  43. #define BizPrice 250000
  44. #define BizDialog 111
  45. #define BizDialog1 222
  46. #define BizDialog2 333
  47. #define BizDialog3 444
  48. #define BizDialog4 555
  49. #define Interior 7 // Definiere wenn die Rennbahn in einem Interior steckt
  50. #define COLOR_RED 0xAA3333AA
  51. #define COLOR_GREEN 0x33AA33AA
  52. //#define ACCOUNT_POSITION "%s.ini" // Bei SetOwner den Ordner für die Nutzer definieren
  53. #define FILTERSCRIPT
  54. //#define GODFATHER
  55. //-----------------------ENUMS--------------------------------
  56.  
  57. enum bInfo
  58. {
  59.     Owner[16],
  60.     Entrance,
  61.     Locked,
  62.     Price = BizPrice,
  63.     MaxUsers,
  64.     Pickup,
  65.     Money,
  66.     Text3D:Text,
  67.     RaceOn,
  68.     Rounds
  69. };
  70. //-----------------------NEW'S--------------------------------
  71. new ACCOUNT_POSITION[128] = "%s.ini";
  72. new GoKarts[12];
  73. new BizInfo[bInfo];
  74. new Float:CartPoint[12][4] = {
  75. {-1394.4464,-212.2729,1042.6851,4.9767},//Das sind 12 GoKart Spawnplätze
  76. {-1400.4792,-212.7799,1042.6661,8.0124},
  77. {-1397.8254,-212.6496,1042.6678,6.2372},
  78. {-1399.9846,-218.1796,1042.6926,3.9720},
  79. {-1397.1696,-218.0525,1042.7018,6.8583},
  80. {-1393.9576,-217.8968,1042.7069,4.9774},
  81. {-1399.6198,-223.4791,1042.7295,3.9567},
  82. {-1396.5344,-223.3668,1042.7488,6.8180},
  83. {-1393.5200,-222.9295,1042.7529,5.0321},
  84. {-1398.5731,-230.0480,1042.7836,5.2578},
  85. {-1396.1835,-229.7809,1042.7908,2.5036},
  86. {-1392.6436,-229.4054,1042.8064,7.0582}
  87. };
  88.  
  89. new Float:Coordinates[5][3] = {
  90. {1139.3621,-1761.9814,13.5956},//EnterPoint
  91. {-1402.3350,-255.0894,1043.6173},//An der Bahn
  92. {-1397.8254,-212.6496,1042.6678},//Start
  93. {-1400.4890,-223.7525,1050.3505},//Check ob er wirklich eine Runde gefahren ist
  94. {-1297.4510,-266.1281,1048.1409}//Noch ein Check für eine Runde gefahren
  95. };
  96.  
  97.  
  98. public OnFilterScriptInit()
  99. {
  100.     printf("-------------------------------------");
  101.     printf("-------------GoKart Biz--------------");
  102.     printf("----------inizializing...------------");
  103.     SetTimer("SaveBiz",60000,1);
  104.     printf("----------loading........------------");
  105.     LoadBiz();
  106.     printf("-------successfully loaded!-----------");
  107.     return 1;
  108. }
  109. public OnFilterScriptExit()
  110. {
  111.     for(new i=0;i<BizInfo[MaxUsers];i++)
  112.     {
  113.         if(GoKarts[i] > 0)
  114.         DestroyVehicle(GoKarts[i]);
  115.         GoKarts[i] = -1;
  116.     }
  117.     SaveBiz();
  118.     Delete3DTextLabel(BizInfo[Text]);
  119.     DestroyPickup(BizInfo[Pickup]);
  120.     return 1;
  121. }
  122. public OnPlayerCommandText(playerid, cmdtext[])
  123. {
  124.     new idx,cmd[256];
  125.     cmd = strtok(cmdtext, idx);
  126.     if(!strcmp(cmd,"/BuyCartBiz",true))
  127.     {
  128.         if(!IsPlayerInRangeOfPoint(playerid,5.0,Coordinates[0][0],Coordinates[0][1],Coordinates[0][2])) return SendClientMessage(playerid,COLOR_RED,"Du bist nicht in der Nähe dieses Bizes!");
  129.         #if defined GODFATHER
  130.         if(GetPlayerBiz(playerid) !=255) return SendClientMessage(playerid,COLOR_RED,"Du besitzt bereits ein Biz!");
  131.         #endif
  132.         if(!strmatch(BizInfo[Owner],"")) return SendClientMessage(playerid,COLOR_RED,"Dieses Biz gehört bereits jemanden!");
  133.         if(GetPlayerMoney(playerid) < BizInfo[Price]) return SendClientMessage(playerid,COLOR_RED,"Du hast nicht genug Geld bei dir!");
  134.         strmid(BizInfo[Owner],PlayerName(playerid),0,12,12);
  135.         GivePlayerMoney(playerid,-BizInfo[Price]);
  136.         SaveBiz();
  137.         SendClientMessage(playerid,COLOR_GREEN,"Du hast dieses Biz erfolgreich gekauft! Du kannst nun /configbiz nutzen!");
  138.         return 1;
  139.     }
  140.     if(!strcmp(cmd,"/configbiz",true))
  141.     {
  142.         if(!strmatch(BizInfo[Owner],PlayerName(playerid)))return SendClientMessage(playerid,COLOR_RED,"Du kannst diesen Befehl nicht nutzen!");
  143.         ShowPlayerDialog(playerid,BizDialog,DIALOG_STYLE_LIST,"Business Konfiguration","Eintrittspreis\nAb-/Aufschließen\nMaximale Teilnehmer\nBesitzer ändern","Auswählen","Verlassen");
  144.         return 1;
  145.     }
  146.     if(!strcmp(cmd,"/enter",true))
  147.     {
  148.         if(IsPlayerInRangeOfPoint(playerid,10.0,Coordinates[0][0],Coordinates[0][1],Coordinates[0][2]))
  149.         {
  150.             if(BizInfo[Locked] == 1) return SendClientMessage(playerid,COLOR_RED,"Dieses Business ist abgeschlossen!");
  151.             new tmpstring[128];
  152.             format(tmpstring,128,"Dieses Geschäft gehört %s\nUm es zu betreten benötigst du %d$",BizInfo[Owner],BizInfo[Entrance]);
  153.             ShowPlayerDialog(playerid,BizDialog4,DIALOG_STYLE_MSGBOX,"Business betreten",tmpstring,"Betreten","Abbrechen");
  154.         }
  155.     }
  156.     if(!strcmp(cmd,"/exit",true))
  157.     {
  158.         if(IsPlayerInRangeOfPoint(playerid,10.0,Coordinates[1][0],Coordinates[1][1],Coordinates[1][2]))
  159.         {
  160.             SetPlayerInterior(playerid,0);
  161.             SetPlayerPos(playerid,Coordinates[0][0],Coordinates[0][1],Coordinates[0][2]);
  162.             SetPVarInt(playerid,"AtRace",0);
  163.             SetPVarInt(playerid,"InRace",0);
  164.             if(GetPVarInt(playerid,"RaceMaster") == 1)
  165.             {SetNewRaceMaster();}
  166.             SetPVarInt(playerid,"RaceMaster",0);
  167.         }
  168.        
  169.     }
  170.     if(!strcmp(cmd,"/startrace",true))
  171.     {
  172.         if(GetPVarInt(playerid,"RaceMaster")!=1) return SendClientMessage(playerid,COLOR_RED,"Du kannst diesen Befehl nicht nutzen!");
  173.         if(BizInfo[RaceOn] == 1) return SendClientMessage(playerid,COLOR_RED,"Das Rennnen läuft bereits!");
  174.         Countdown();
  175.         BizInfo[RaceOn]=1;
  176.         SendClientMessage(playerid,COLOR_GREEN,"Countdown erfolgreich gestartet!");
  177.         return 1;
  178.     }
  179.     if(!strcmp(cmd,"/createnewrace",true))
  180.     {
  181.         if(GetPVarInt(playerid,"RaceMaster")!=1) return SendClientMessage(playerid,COLOR_RED,"Du kannst diesen Befehl nicht nutzen!");
  182.         ResetCarts();
  183.         BizInfo[RaceOn]= 0;
  184.         SendClientMessage(playerid,COLOR_GREEN,"Erfolgreich erstellt! Nutze nun /setrounds um die Runden zu setzen!");
  185.         SendClientMessage(playerid,COLOR_GREEN,"Danach kannst du das Rennen mit /startrace starten");
  186.         return 1;
  187.     }
  188.     if(!strcmp(cmd,"/SetRounds",true))
  189.     {
  190.         if(GetPVarInt(playerid,"RaceMaster")!=1) return SendClientMessage(playerid,COLOR_RED,"Du kannst diesen Befehl nicht nutzen!");
  191.         if(BizInfo[RaceOn] == 1) return SendClientMessage(playerid,COLOR_RED,"Das Rennnen läuft bereits!");
  192.         cmd = strtok(cmdtext,idx);
  193.         if(!cmd[0])return SendClientMessage(playerid,0xFF0000FF,"Nutze : /SetRounds [Rundenanzahl]");
  194.         new rounds = strval(cmd);
  195.         if(rounds < 0 || rounds > 1203918290319) return SendClientMessage(playerid,COLOR_RED,"Ungültige Rundenanzahl!(0-9999999999)");
  196.         BizInfo[Rounds] = rounds;
  197.         SendClientMessage(playerid,COLOR_GREEN,"Runden erfolgreich gesetzt!");
  198.         return 1;
  199.     }
  200.     return 0;
  201. }
  202.  
  203. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  204. {
  205.     SendClientMessageToAll(COLOR_RED,"!!!WTF");
  206.     if(dialogid == BizDialog)
  207.     {
  208.         switch(listitem)
  209.         {
  210.             case 0:// Eintritt
  211.             {
  212.                 ShowPlayerDialog(playerid,BizDialog2,DIALOG_STYLE_INPUT,"Eintritt ändern","Bitte geben Sie einen neuen\nBetrag ein:","Bestätigen","Zurück");
  213.             }
  214.             case 1:// Lock
  215.             {
  216.                 if(BizInfo[Locked] == 0)return BizInfo[Locked] = 1 & SendClientMessage(playerid,COLOR_GREEN,"Du hast dein Biz erfolgreich abgeschlossen!");
  217.                 else return BizInfo[Locked] = 0 & SendClientMessage(playerid,COLOR_GREEN,"Du hast dein Biz erfolgreich aufgeschlossen!");
  218.             }
  219.             case 2:// Max. Teilnehmer
  220.             {
  221.                 ShowPlayerDialog(playerid,BizDialog3,DIALOG_STYLE_INPUT,"Teilnehmeranzahl ändern","Bitte geben Sie einen neuen\nBetrag ein:","Bestätigen","Zurück");
  222.             }
  223.             case 3:// Owner
  224.                 ShowPlayerDialog(playerid,BizDialog1,DIALOG_STYLE_INPUT,"Besitzer ändern","Bitte geben Sie einen neuen\nBesitzer ein:","Bestätigen","Zurück");
  225.         }
  226.     }
  227.     if(dialogid == BizDialog1)
  228.     {
  229.         new tmpstring[16];
  230.         if(response == 1)
  231.         {
  232.             format(tmpstring,16,ACCOUNT_POSITION,inputtext);
  233.             if(dini_Exists(tmpstring))
  234.             {
  235.                 strmid(tmpstring,inputtext,0,16,16);
  236.                 BizInfo[Owner] = tmpstring;
  237.                 new tmpstring1[128];
  238.                 format(tmpstring1,128,"Du hast dein Biz erfolgreich an %s übergeben!",inputtext);
  239.                 SendClientMessage(playerid,COLOR_GREEN,tmpstring1);
  240.                 SaveBiz();
  241.             }
  242.             else return SendClientMessage(playerid,COLOR_RED,"Dieser Nutzer ist nicht registriert!") & ShowPlayerDialog(playerid,532,DIALOG_STYLE_INPUT,"Besitzer ändern","Bitte geben Sie einen neuen\nBesitzer ein:","Bestätigen","Zurück");
  243.         }
  244.         else return ShowPlayerDialog(playerid,BizDialog,DIALOG_STYLE_LIST,"Business Konfiguration","Eintrittspreis\nAb-/Aufschließen\nMaximale Teilnehmer\nBesitzer ändern","Auswählen","Verlassen");
  245.     }
  246.     if(dialogid == BizDialog2)
  247.     {
  248.         if(response == 1)
  249.         {
  250.             new tmpvar = strval(inputtext);
  251.             if(tmpvar < 0) return SendClientMessage(playerid,COLOR_RED,"Der Eintrittspreis muss größer als 0 sein!");
  252.             BizInfo[Entrance] = tmpvar;
  253.             SendClientMessage(playerid,COLOR_GREEN,"Du hast den Eintrittspreis erfolgreich gesetzt!");
  254.             SaveBiz();
  255.         }
  256.         else return ShowPlayerDialog(playerid,BizDialog,DIALOG_STYLE_LIST,"Business Konfiguration","Eintrittspreis\nAb-/Aufschließen\nMaximale Teilnehmer\nBesitzer ändern","Auswählen","Verlassen");
  257.     }
  258.     if(dialogid == BizDialog4)
  259.     {
  260.         if(response == 1)
  261.         {
  262.             if(GetPlayerMoney(playerid) < BizInfo[Entrance]) return SendClientMessage(playerid,COLOR_RED,"Du hast zuwenig Geld!");
  263.             SetPlayerInterior(playerid,Interior);
  264.             SetPlayerPos(playerid,Coordinates[1][0],Coordinates[1][1],Coordinates[1][2]);
  265.             GivePlayerMoney(playerid,-BizInfo[Entrance]);
  266.             BizInfo[Money]+=BizInfo[Entrance];
  267.             SendClientMessage(playerid,COLOR_GREEN,"Erfolgreich betreten!");
  268.             if(IsAnyPlayerAtRace()==0)
  269.             {
  270.                 SendClientMessage(playerid,COLOR_GREEN,"Da Niemand an der Rennbahn war bist du nun der Rennleiter");
  271.                 SendClientMessage(playerid,COLOR_GREEN,"Du kannst nun mit /startrace den Countdown starten");
  272.                 SetPVarInt(playerid,"RaceMaster",1);
  273.             }
  274.             SetPVarInt(playerid,"AtRace",1);
  275.         }
  276.         else return SendClientMessage(playerid,COLOR_RED,"Abgebrochen");
  277.     }
  278.     if(dialogid == BizDialog3)
  279.     {
  280.         if(response == 1)
  281.         {
  282.             new tmpvar = strval(inputtext);
  283.             if(tmpvar < 0 || tmpvar > 12) return SendClientMessage(playerid,COLOR_RED,"Die Teilnehmeranzahl muss zwischen 0 und 12 liegen!");
  284.             BizInfo[MaxUsers] = tmpvar;
  285.             SendClientMessage(playerid,COLOR_GREEN,"Du hast die Teilnehmeranzahl erfolgreich gesetzt!");
  286.             ResetCarts();
  287.             SaveBiz();
  288.         }
  289.         else return ShowPlayerDialog(playerid,BizDialog,DIALOG_STYLE_LIST,"Business Konfiguration","Eintrittspreis\nAb-/Aufschließen\nMaximale Teilnehmer\nBesitzer ändern","Auswählen","Verlassen");
  290.     }
  291.     return 1;
  292. }
  293. public OnPlayerUpdate(playerid)
  294. {
  295.     if(GetPVarInt(playerid,"InRace") == 1&&BizInfo[RaceOn]==1)
  296.     {
  297.         if(IsPlayerInRangeOfPoint(playerid,10.0,Coordinates[3][0],Coordinates[3][1],Coordinates[3][2])&& GetPVarInt(playerid,"Check") == 0)
  298.         SetPVarInt(playerid,"Check",1);
  299.         if(IsPlayerInRangeOfPoint(playerid,10.0,Coordinates[4][0],Coordinates[4][1],Coordinates[4][2])&& GetPVarInt(playerid,"Check") == 1)
  300.         SetPVarInt(playerid,"Check",2);
  301.         if(IsPlayerInRangeOfPoint(playerid,10.0,Coordinates[2][0],Coordinates[2][1],Coordinates[2][2])&& GetPVarInt(playerid,"Check") == 2)
  302.         {
  303.             new tmpstring[128];
  304.             SetPVarInt(playerid,"Roundsdriven",GetPVarInt(playerid,"Roundsdriven")+1);
  305.             format(tmpstring,128,"Runde %d/%d",GetPVarInt(playerid,"Roundsdriven")+1,BizInfo[Rounds]);
  306.             SetPVarInt(playerid,"Check",0);
  307.             if(GetPVarInt(playerid,"Roundsdriven") >= BizInfo[Rounds] &&BizInfo[RaceOn]==1)
  308.             {
  309.                 BizInfo[RaceOn]=0;
  310.                 SetPVarInt(playerid,"Roundsdriven",0);
  311.                 AnnounceWinner(playerid);
  312.                 return 1;
  313.             }
  314.             SendClientMessage(playerid,COLOR_GREEN,tmpstring);
  315.         }
  316.     }
  317.     return 1;
  318. }
  319. public OnPlayerDisconnect(playerid, reason)
  320. {
  321.     if(GetPVarInt(playerid,"RaceMaster")== 1)
  322.     {
  323.         SetNewRaceMaster();
  324.     }
  325.     return 1;
  326. }
  327. stock PlayerName(playerid)
  328. {
  329.   new name[MAX_PLAYER_NAME];
  330.   GetPlayerName(playerid, name, MAX_PLAYER_NAME);
  331.   return name;
  332. }
  333. #if defined GODFATHER
  334. stock GetPlayerBiz(playerid)
  335. {
  336.     return CallRemoteFunction("GetPlayerBiz","i",playerid);
  337. }
  338. #endif
  339. stock strmatch(const String1[], const String2[])
  340. {
  341.     if ((strcmp(String1, String2, true, strlen(String2)) == 0) && (strlen(String2) == strlen(String1)))
  342.     {
  343.         return true;
  344.     }
  345.     else
  346.     {
  347.         return false;
  348.     }
  349. }
  350. forward LoadBiz();
  351. public LoadBiz()
  352. {
  353.     new formatLD[256];
  354.     format(formatLD,sizeof(formatLD),"GoKartBiz.cfg");
  355.     if(dini_Exists(formatLD))
  356.     {
  357.         strmid(BizInfo[Owner],dini_Get(formatLD, "Owner"),0,12,12);
  358.         BizInfo[Price]=dini_Int(formatLD, "Price");
  359.         BizInfo[Locked]= dini_Int(formatLD, "Locked");
  360.         BizInfo[Entrance]= dini_Int(formatLD, "Entrance");
  361.         BizInfo[MaxUsers]= dini_Int(formatLD, "MaxUsers");
  362.         BizInfo[Money] = dini_Int(formatLD, "Money");
  363.     }
  364.     else
  365.     {
  366.         dini_Create(formatLD);
  367.         dini_Set(formatLD,"Owner",BizInfo[Owner]);
  368.         dini_IntSet(formatLD,"Price",BizInfo[Price]);
  369.         dini_IntSet(formatLD,"Locked",BizInfo[Locked]);
  370.         dini_IntSet(formatLD,"Entrance",BizInfo[Entrance]);
  371.         dini_IntSet(formatLD,"MaxUsers",BizInfo[MaxUsers]);
  372.         dini_IntSet(formatLD,"Money",BizInfo[Money]);
  373.     }
  374.     BizInfo[Price] = BizPrice;
  375.     BizInfo[Pickup] = CreatePickup(1239,1,Coordinates[0][0],Coordinates[0][1],Coordinates[0][2],0);
  376.     new tempstring[256];
  377.     format(tempstring,256,"Besitzer: Niemand\nTippe /buycartbiz um \nes zu kaufen");
  378.     if(!strmatch(BizInfo[Owner],""))
  379.     {
  380.         format(tempstring,256,"Besitzer: %s\nEintritt: %d$",BizInfo[Owner],BizInfo[Entrance]);
  381.     }
  382.     BizInfo[Text]= Create3DTextLabel(tempstring,COLOR_GREEN,Coordinates[0][0],Coordinates[0][1],Coordinates[0][2]+0.20,40.0,0,1);
  383.     for(new i=0;i<BizInfo[MaxUsers];i++)
  384.     {
  385.         GoKarts[i]=CreateVehicle(571,CartPoint[i][0],CartPoint[i][1],CartPoint[i][2],CartPoint[i][3],151,1,30000);
  386.         LinkVehicleToInterior(GoKarts[i],7);
  387.     }
  388. }
  389. forward SaveBiz();
  390. public SaveBiz()
  391. {
  392.     new formatLD[256];
  393.     format(formatLD,sizeof(formatLD),"GoKartBiz.cfg");
  394.     if(dini_Exists(formatLD))
  395.     {
  396.         dini_Set(formatLD,"Owner",BizInfo[Owner]);
  397.         dini_IntSet(formatLD,"Price",BizInfo[Price]);
  398.         dini_IntSet(formatLD,"Locked",BizInfo[Locked]);
  399.         dini_IntSet(formatLD,"Entrance",BizInfo[Entrance]);
  400.         dini_IntSet(formatLD,"MaxUsers",BizInfo[MaxUsers]);
  401.         dini_IntSet(formatLD,"Money",BizInfo[Money]);
  402.     }
  403.     else
  404.     {
  405.         dini_Create(formatLD);
  406.         dini_Set(formatLD,"Owner",BizInfo[Owner]);
  407.         dini_IntSet(formatLD,"Price",BizInfo[Price]);
  408.         dini_IntSet(formatLD,"Locked",BizInfo[Locked]);
  409.         dini_IntSet(formatLD,"Entrance",BizInfo[Entrance]);
  410.         dini_IntSet(formatLD,"MaxUsers",BizInfo[MaxUsers]);
  411.         dini_IntSet(formatLD,"Money",BizInfo[Money]);
  412.     }
  413. }
  414. stock IsAnyPlayerAtRace()
  415. {
  416.     new count = 0;
  417.     for(new i = 0; i<GetMaxPlayers();i++)
  418.     {
  419.         if(IsPlayerConnected(i))
  420.         {
  421.             if(GetPVarInt(i,"AtRace") == 1||GetPVarInt(i,"InRace") == 1)
  422.             count++;
  423.         }
  424.     }
  425.     return count;
  426. }
  427. new countdown=0;
  428. forward Countdown();
  429. public Countdown()
  430. {
  431.     if(countdown == 0)
  432.     {
  433.         for(new i=0;i<GetMaxPlayers();i++)
  434.         {
  435.             if(GetPVarInt(i,"AtRace") == 1||GetPVarInt(i,"InRace") == 1)
  436.             {
  437.                  PlayerPlaySound(i,1056,0,0,0);
  438.                  if(GetPVarInt(i,"InRace") == 1){ TogglePlayerControllable(i,0);GameTextForPlayer(i, "3", 1000, 3);}
  439.             }
  440.         }
  441.         countdown++;
  442.         SetTimer("Countdown",1500,0);
  443.         return 1;
  444.     }
  445.     if(countdown == 1)
  446.     {
  447.         for(new i=0;i<GetMaxPlayers();i++)
  448.         {
  449.             if(GetPVarInt(i,"AtRace") == 1||GetPVarInt(i,"InRace") == 1)
  450.             {
  451.                  if(GetPVarInt(i,"InRace") == 1){GameTextForPlayer(i, "2", 1000, 3);}
  452.                  PlayerPlaySound(i,1056,0,0,0);
  453.             }
  454.         }
  455.         countdown++;
  456.         SetTimer("Countdown",1500,0);
  457.         return 1;
  458.     }
  459.     if(countdown == 2)
  460.     {
  461.         for(new i=0;i<GetMaxPlayers();i++)
  462.         {
  463.             if(GetPVarInt(i,"AtRace") == 1||GetPVarInt(i,"InRace") == 1)
  464.             {
  465.                  if(GetPVarInt(i,"InRace") == 1){GameTextForPlayer(i, "1", 1000, 3);}
  466.                  PlayerPlaySound(i,1056,0,0,0);
  467.             }
  468.         }
  469.         countdown++;
  470.         SetTimer("Countdown",1500,0);
  471.         return 1;
  472.     }
  473.     if(countdown == 3)
  474.     {
  475.         for(new i=0;i<GetMaxPlayers();i++)
  476.         {
  477.             if(GetPVarInt(i,"AtRace") == 1||GetPVarInt(i,"InRace") == 1)
  478.             {
  479.                  if(GetPVarInt(i,"InRace") == 1){GameTextForPlayer(i, "GO!!", 1000, 3);}
  480.                  PlayerPlaySound(i,1057,0,0,0);
  481.                  if(GetPVarInt(i,"InRace") == 1){ TogglePlayerControllable(i,1);}
  482.                  countdown=0;
  483.             }
  484.         }
  485.         return 1;
  486.     }
  487.     return 0;
  488. }
  489. public OnPlayerEnterVehicle(playerid, vehicleid)
  490. {
  491.     if(IsACart(vehicleid)&&GetPVarInt(playerid,"AtRace")==1)
  492.     {
  493.         if(BizInfo[RaceOn] == 1)
  494.             SendClientMessage(playerid,COLOR_RED,"Das Rennen hat bereits begonnen, beeile dich ;)");
  495.         SetPVarInt(playerid,"InRace",1)&&SendClientMessage(playerid,COLOR_GREEN,"Du hast erfolgreich am Rennen teilgenommen!");
  496.         SendJoinMessageToAllUsers(playerid);
  497.         SetPVarInt(playerid,"Check",0);
  498.         SetPVarInt(playerid,"Roundsdriven",0);
  499.     }
  500.     return 1;
  501. }
  502. public OnPlayerExitVehicle(playerid, vehicleid)
  503. {
  504.     if(GetPVarInt(playerid,"InRace")==1)
  505.     {
  506.         if(BizInfo[RaceOn] == 1&&IsACart(vehicleid))
  507.         {
  508.             SendClientMessage(playerid,COLOR_RED,"Du hast das Rennen verlassen");
  509.         }
  510.         SendLeaveMessageToAllUsers(playerid);
  511.         SetPVarInt(playerid,"InRace",0);
  512.     }
  513.     return 1;
  514. }
  515. stock AnnounceWinner(playerid)
  516. {
  517.     for(new i=0;i<GetMaxPlayers();i++)
  518.     {
  519.         if(IsPlayerConnected(i))
  520.         {
  521.             new string[128];
  522.             format(string,128,"%s hat das Rennen gewonnen!",PlayerName(playerid));
  523.             if(GetPVarInt(i,"AtRace")==1||GetPVarInt(i,"InRace")==1)
  524.             SendClientMessage(i,COLOR_GREEN,string);
  525.         }
  526.     }
  527. }
  528. stock SendJoinMessageToAllUsers(playerid)
  529. {
  530.     for(new i=0;i<GetMaxPlayers();i++)
  531.     {
  532.         if(IsPlayerConnected(i))
  533.         {
  534.             new string[128];
  535.             format(string,128,"%s nimmt am Rennen teil!",PlayerName(playerid));
  536.             if(GetPVarInt(i,"AtRace")==1||GetPVarInt(i,"InRace")==1)
  537.             SendClientMessage(i,COLOR_GREEN,string);
  538.         }
  539.     }
  540.     return 1;
  541. }
  542. stock SendLeaveMessageToAllUsers(playerid)
  543. {
  544.     for(new i=0;i<GetMaxPlayers();i++)
  545.     {
  546.         if(IsPlayerConnected(i))
  547.         {
  548.             new string[128];
  549.             format(string,128,"%s hat das Rennen verlassen!",PlayerName(playerid));
  550.             if(GetPVarInt(i,"AtRace")==1||GetPVarInt(i,"InRace")==1)
  551.             SendClientMessage(i,COLOR_RED,string);
  552.         }
  553.     }
  554.     return 1;
  555. }
  556. stock IsACart(vehicleid)
  557. {
  558.     for(new i=0;i<BizInfo[MaxUsers];i++)
  559.     {
  560.         if(vehicleid == GoKarts[i]) return 1;
  561.     }
  562.     return 0;
  563. }
  564. stock ResetCarts()
  565. {
  566.     for(new i=0;i<12;i++)
  567.     {
  568.         if(GoKarts[i] > 0)
  569.         DestroyVehicle(GoKarts[i]);
  570.         GoKarts[i] = -1;
  571.     }
  572.     for(new i=0;i<BizInfo[MaxUsers];i++)
  573.     {
  574.         GoKarts[i]=CreateVehicle(571,CartPoint[i][0],CartPoint[i][1],CartPoint[i][2],CartPoint[i][3],151,1,30000);
  575.         LinkVehicleToInterior(GoKarts[i],7);
  576.     }
  577.     return 1;
  578. }
  579. stock SetNewRaceMaster()
  580. {
  581.     for(new i = 0; i<GetMaxPlayers();i++)
  582.     {
  583.         if(IsPlayerConnected(i))
  584.         {
  585.             if(GetPVarInt(i,"AtRace") == 1||GetPVarInt(i,"InRace") == 1) return SetPVarInt(i,"RaceMaster",1)&SendClientMessage(i,COLOR_GREEN,"Da der alte Rennleiter das Spiel verlassen hat bist du nun der neue Rennleiter");
  586.         }
  587.     }
  588.     return 0;
  589. }
  590. strtok(const string[], &index)
  591. {
  592.     new length = strlen(string);
  593.     while ((index < length) && (string[index] <= ' '))
  594.     {
  595.         index++;
  596.     }
  597.  
  598.     new offset = index;
  599.     new result[20];
  600.     while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  601.     {
  602.         result[index - offset] = string[index];
  603.         index++;
  604.     }
  605.     result[index - offset] = EOS;
  606.     return result;
  607. }
Advertisement
Add Comment
Please, Sign In to add comment