Advertisement
Guest User

Untitled

a guest
Nov 30th, 2010
1,511
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 18.54 KB | None | 0 0
  1. #define FILTERSCRIPT
  2.  
  3. #include <ocmd>
  4. #include <a_samp>
  5. #if defined FILTERSCRIPT
  6. #define dialog_help 1
  7.  
  8. #define PRESSED(%0) \
  9.     (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
  10.  
  11. #define RELEASED(%0) \
  12.     (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
  13.  
  14.  
  15. #define START_TIME 5000 // Wie lange soll man die Taste gedrückt halten, um den Motor zu starten? (in MS)
  16. #define STOP_TIME 1000 // Wie lange soll man die Taste gedrückt halten, um den Motor zu stoppen? (in MS)
  17. #define LIGHT_KEY KEY_CROUCH // Welche Taste für Licht?
  18. #define START_KEY KEY_ACTION // Welche Taste zum starten und stoppen?
  19.  
  20.  
  21. new bool:licht[MAX_VEHICLES],
  22.     bool:motor[MAX_VEHICLES],
  23.     motortimer[MAX_VEHICLES],
  24.     bool:sirenean[MAX_VEHICLES],
  25.     sirene[MAX_VEHICLES],
  26.     bool:spawn[MAX_VEHICLES],
  27.     Float:lastpos[MAX_VEHICLES][3];
  28.    
  29.    
  30. forward StartEngine(playerid,vehicleid);
  31. forward StopEngine(playerid,vehicleid);
  32.  
  33. public OnFilterScriptInit()
  34. {
  35.     print("\n--------------------------------------");
  36.     print("Vehiclecontrol by Haxler");
  37.     print("--------------------------------------\n");
  38.     return 1;
  39. }
  40.  
  41.  
  42. #else
  43.  
  44. main()
  45. {
  46.  
  47. }
  48.  
  49. #endif
  50.  
  51. public OnVehicleSpawn(vehicleid)
  52. {
  53.     if(spawn[vehicleid] == true)
  54.     {
  55.         SetVehiclePos(vehicleid,lastpos[vehicleid][0],lastpos[vehicleid][1],lastpos[vehicleid][2]);
  56.         spawn[vehicleid] = false;
  57.     }
  58.     return 1;
  59. }
  60.  
  61. public OnPlayerConnect(playerid)
  62. {
  63.     SendClientMessage(playerid,0xFF0000,"Vehiclecontrol: Gebe /hilfe ein, um eine Liste aller Befehle zu erhalten.");
  64.     return 1;
  65. }
  66. ocmd:hilfe(playerid,params[])
  67. {
  68.     ShowPlayerDialog(playerid,dialog_help,DIALOG_STYLE_MSGBOX,"Hilfe - Vehiclecontrol","{FF0000}Fahrzeug-Befehle:\n{FFFFFF}\
  69.     /licht [an/aus]\n/motorhaube [auf/zu]\n/kofferraum [auf/zu]\n/motor [an/aus]\n/sirene [an/aus]\n/alarm [an/aus]\n/fahrzeug [model]\
  70.     \n{FF0000}Tasten:\n{FFFFFF}Hupe(h) - Licht an-/ausschalten\nAction(STRG) - Motor an-/ausschalten","Ok","Ok");
  71.     return 1;
  72. }
  73.  
  74. ocmd:licht(playerid,params[])
  75. {
  76.     new status[4];
  77.     if(sscanf(params,"s",status))return SendClientMessage(playerid,0xFF0000,"Info: /licht [an/aus]");
  78.     new engine,lights,alarm,doors,bonnet,boot,objective;
  79.     if(IsPlayerInAnyVehicle(playerid))
  80.     {
  81.         new vid = GetPlayerVehicleID(playerid);
  82.         if(strcmp(status,"an",true) == 0)
  83.         {
  84.             GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
  85.             SetVehicleParamsEx(vid,engine,VEHICLE_PARAMS_ON,alarm,doors,bonnet,boot,objective);
  86.             licht[vid] = true;
  87.             SendClientMessage(playerid,0xFF0000,"Du hast das Licht angeschaltet!");
  88.         }
  89.         else
  90.         if(strcmp(status,"aus",true) == 0)
  91.         {
  92.             GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
  93.             SetVehicleParamsEx(vid,engine,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);
  94.             licht[vid] = false;
  95.             SendClientMessage(playerid,0xFF0000,"Du hast das Lich ausgeschaltet!");
  96.         }
  97.     }
  98.     return 1;
  99. }
  100.  
  101.  
  102. ocmd:motor(playerid,params[])
  103. {
  104.     new status[4];
  105.     if(sscanf(params,"s",status))return SendClientMessage(playerid,0xFF0000,"Info: /motor [an/aus]");
  106.     new engine,lights,alarm,doors,bonnet,boot,objective;
  107.     if(IsPlayerInAnyVehicle(playerid))
  108.     {
  109.         new vid = GetPlayerVehicleID(playerid);
  110.         if(strcmp(status,"an",true) == 0)
  111.         {
  112.             GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
  113.             SetVehicleParamsEx(vid,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
  114.             motor[vid] = true;
  115.             SendClientMessage(playerid,0xFF0000,"Du hast den Motor gestartet!");
  116.         }
  117.         else
  118.         if(strcmp(status,"aus",true) == 0)
  119.         {
  120.             GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
  121.             SetVehicleParamsEx(vid,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
  122.             motor[vid] = false;
  123.             SendClientMessage(playerid,0xFF0000,"Du hast den Motor abgewürgt!");
  124.         }
  125.     }
  126.     return 1;
  127. }
  128.  
  129. ocmd:schild(playerid,params[])
  130. {
  131.     if(IsPlayerInAnyVehicle(playerid))
  132.     {
  133.         new text[15];
  134.         if(sscanf(params,"s",text))return SendClientMessage(playerid,0xFF0000,"Info: /schild [text]");
  135.         new vid = GetPlayerVehicleID(playerid);
  136.         SetVehicleNumberPlate(vid,text);
  137.         GetVehiclePos(vid,lastpos[vid][0],lastpos[vid][1],lastpos[vid][2]);
  138.         spawn[vid] = true;
  139.         SetVehicleToRespawn(vid);
  140.     }
  141.     return 1;
  142. }
  143. ocmd:fahrzeug(playerid,params[])
  144. {
  145.     new modelid;
  146.     if(sscanf(params,"d",modelid))return SendClientMessage(playerid,0xFF0000,"Info: /fahrzeug [model]");
  147.     if(modelid < 400 || modelid > 611)return SendClientMessage(playerid,0xFF0000,"Ungültige Model-ID!");
  148.     new Float:pos[3];
  149.     GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
  150.     CreateVehicle(modelid,pos[0]+1,pos[1]+1,pos[2],0,0,0,-1);
  151.     return 1;
  152. }
  153.  
  154.  
  155.  
  156. ocmd:motorhaube(playerid,params[])
  157. {
  158.     new status[4];
  159.     if(sscanf(params,"s",status))return SendClientMessage(playerid,0xFF0000,"Info: /motorhaube [auf/zu]");
  160.     new engine,lights,alarm,doors,bonnet,boot,objective;
  161.     if(IsPlayerInAnyVehicle(playerid))
  162.     {
  163.         new vid = GetPlayerVehicleID(playerid);
  164.         if(strcmp(status,"auf",true) == 0)
  165.         {
  166.             GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
  167.             SetVehicleParamsEx(vid,engine,lights,alarm,doors,VEHICLE_PARAMS_ON,boot,objective);
  168.             SendClientMessage(playerid,0xFF0000,"Du hast die Motorhaube geöffnet!");
  169.         }
  170.         else
  171.         if(strcmp(status,"zu",true) == 0)
  172.         {
  173.             GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
  174.             SetVehicleParamsEx(vid,engine,lights,alarm,doors,VEHICLE_PARAMS_OFF,boot,objective);
  175.             SendClientMessage(playerid,0xFF0000,"Du hast die Motorhaube geschlossen!");
  176.         }
  177.     }
  178.     return 1;
  179. }
  180. ocmd:kofferraum(playerid,params[])
  181. {
  182.     new status[4];
  183.     if(sscanf(params,"s",status))return SendClientMessage(playerid,0xFF0000,"Info: /kofferraum [auf/azu]");
  184.     new engine,lights,alarm,doors,bonnet,boot,objective;
  185.     if(IsPlayerInAnyVehicle(playerid))
  186.     {
  187.         new vid = GetPlayerVehicleID(playerid);
  188.         if(strcmp(status,"auf",true) == 0)
  189.         {
  190.             GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
  191.             SetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,VEHICLE_PARAMS_ON,objective);
  192.             SendClientMessage(playerid,0xFF0000,"Du hast den Kofferraum geöffnet!");
  193.         }
  194.         else
  195.         if(strcmp(status,"zu",true) == 0)
  196.         {
  197.             GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
  198.             SetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,VEHICLE_PARAMS_OFF,objective);
  199.             SendClientMessage(playerid,0xFF0000,"Du hast den Kofferraum geschlossen!");
  200.         }
  201.     }
  202.     return 1;
  203. }
  204.  
  205. ocmd:alarm(playerid,params[])
  206. {
  207.     new status[4];
  208.     if(sscanf(params,"s",status))return SendClientMessage(playerid,0xFF0000,"Info: /alarm [an/aus]");
  209.     new engine,lights,alarm,doors,bonnet,boot,objective;
  210.     if(IsPlayerInAnyVehicle(playerid))
  211.     {
  212.         new vid = GetPlayerVehicleID(playerid);
  213.         if(strcmp(status,"an",true) == 0)
  214.         {
  215.             GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
  216.             SetVehicleParamsEx(vid,engine,lights,VEHICLE_PARAMS_ON,doors,bonnet,boot,objective);
  217.             SendClientMessage(playerid,0xFF0000,"Du hast den Alarm gestartet!");
  218.         }
  219.         else
  220.         if(strcmp(status,"aus",true) == 0)
  221.         {
  222.             GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
  223.             SetVehicleParamsEx(vid,engine,lights,VEHICLE_PARAMS_OFF,doors,bonnet,boot,objective);
  224.             motor[vid] = false;
  225.             SendClientMessage(playerid,0xFF0000,"Du hast den Alarm beendet!");
  226.         }
  227.     }
  228.     return 1;
  229. }
  230.  
  231. ocmd:sirene(playerid,params[])
  232. {
  233.     new status[4];
  234.     if(sscanf(params,"s",status))return SendClientMessage(playerid,0xFF0000,"Info: /sirene [an/aus]");
  235.     if(IsPlayerInAnyVehicle(playerid))
  236.     {
  237.         new vid = GetPlayerVehicleID(playerid);
  238.         if(strcmp(status,"an",true) == 0)
  239.         {
  240.             if(sirenean[vid] == true)return SendClientMessage(playerid,0xFF0000,"Dieses Fahrzeug hat bereits eine Sirene!");
  241.             new Float:x,Float:y,Float:z;
  242.             GetPlayerPos(playerid,x,y,z);
  243.             sirene[vid] = CreateObject(18646,x,y,z,0,0,0,100);
  244.             AttachObjectToVehicle(sirene[vid],vid,0.2,0,0.71,0,0,0);
  245.             sirenean[vid] = true;
  246.             SendClientMessage(playerid,0xFF0000,"Du hast die Sirene angeschaltet!");
  247.         }
  248.         else
  249.         if(strcmp(status,"aus",true) == 0)
  250.         {
  251.         if(sirenean[vid] == false)return SendClientMessage(playerid,0xFF0000,"Dieses Fahrzeug hat keine Sirene");
  252.         DestroyObject(sirene[vid]);
  253.         sirenean[vid] =false;
  254.         SendClientMessage(playerid,0xFF0000,"Du hast die Sirene ausgeschaltet!");
  255.         }
  256.     }
  257.     return 1;
  258. }
  259.  
  260.  
  261. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  262. {
  263.     if(newkeys & LIGHT_KEY)
  264.     {
  265.         if(IsPlayerInAnyVehicle(playerid))
  266.         {
  267.             new engine,lights,alarm,doors,bonnet,boot,objective;
  268.             new vid = GetPlayerVehicleID(playerid);
  269.             if(licht[vid] == false)
  270.             {
  271.                 GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
  272.                 SetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,VEHICLE_PARAMS_ON,alarm,doors,bonnet,boot,objective);
  273.                 licht[vid] = true;
  274.             }
  275.             else if(licht[vid] == true)
  276.             {
  277.                 GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
  278.                 SetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);
  279.                 licht[vid] = false;
  280.             }
  281.         }
  282.     }
  283.     else
  284.     if(PRESSED(START_KEY))
  285.     {
  286.         if(IsPlayerInAnyVehicle(playerid))
  287.         {
  288.             new vid = GetPlayerVehicleID(playerid);
  289.             if(motor[vid] == false)
  290.             {
  291.                 SendClientMessage(playerid,0xFF0000,"Der Motor wird gestartet...");
  292.                 KillTimer(motortimer[vid]);
  293.                 motortimer[vid] = SetTimerEx("StartEngine",START_TIME,0,"dd",playerid,vid);
  294.             }
  295.             else
  296.             {
  297.                 KillTimer(motortimer[vid]);
  298.                 motortimer[vid] = SetTimerEx("StopEngine",STOP_TIME,0,"dd",playerid,GetPlayerVehicleID(playerid));
  299.             }
  300.         }
  301.     }
  302.    
  303.     else if (RELEASED(START_KEY))
  304.     {
  305.  
  306.         if(IsPlayerInAnyVehicle(playerid))
  307.         {
  308.             new vid = GetPlayerVehicleID(playerid);
  309.             if(motor[vid] == false)SendClientMessage(playerid,0x000000,"{FFFFFF}Du musst die Taste {FF0000}gedrückt {FFFFFF}halten um den Motor zu starten!");
  310.             KillTimer(motortimer[vid]);
  311.         }
  312.     }
  313.     return 1;
  314. }
  315.  
  316.  
  317. public StartEngine(playerid,vehicleid)
  318. {
  319.     new engine,lights,alarm,doors,bonnet,boot,objective;
  320.     GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
  321.     SetVehicleParamsEx(vehicleid,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
  322.     motor[vehicleid] = true;
  323.     SendClientMessage(playerid,0xFF0000,"Du hast den Motor gestartet!");
  324.     return 1;
  325. }
  326.  
  327. public StopEngine(playerid,vehicleid)
  328. {
  329.     new engine,lights,alarm,doors,bonnet,boot,objective;
  330.     GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
  331.     SetVehicleParamsEx(vehicleid,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
  332.     motor[vehicleid] = false;
  333.     SendClientMessage(playerid,0xFF0000,"Du hast den Motor abgewürgt!");
  334.     return 1;
  335. }
  336.  
  337.  
  338. stock sscanf(string[], format[], {Float,_}:...)
  339. {
  340.     #if defined isnull
  341.         if (isnull(string))
  342.     #else
  343.         if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  344.     #endif
  345.         {
  346.             return format[0];
  347.         }
  348.     #pragma tabsize 4
  349.     new
  350.         formatPos = 0,
  351.         stringPos = 0,
  352.         paramPos = 2,
  353.         paramCount = numargs(),
  354.         delim = ' ';
  355.     while (string[stringPos] && string[stringPos] <= ' ')
  356.     {
  357.         stringPos++;
  358.     }
  359.     while (paramPos < paramCount && string[stringPos])
  360.     {
  361.         switch (format[formatPos++])
  362.         {
  363.             case '\0':
  364.             {
  365.                 return 0;
  366.             }
  367.             case 'i', 'd':
  368.             {
  369.                 new
  370.                     neg = 1,
  371.                     num = 0,
  372.                     ch = string[stringPos];
  373.                 if (ch == '-')
  374.                 {
  375.                     neg = -1;
  376.                     ch = string[++stringPos];
  377.                 }
  378.                 do
  379.                 {
  380.                     stringPos++;
  381.                     if ('0' <= ch <= '9')
  382.                     {
  383.                         num = (num * 10) + (ch - '0');
  384.                     }
  385.                     else
  386.                     {
  387.                         return -1;
  388.                     }
  389.                 }
  390.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  391.                 setarg(paramPos, 0, num * neg);
  392.             }
  393.             case 'h', 'x':
  394.             {
  395.                 new
  396.                     num = 0,
  397.                     ch = string[stringPos];
  398.                 do
  399.                 {
  400.                     stringPos++;
  401.                     switch (ch)
  402.                     {
  403.                         case 'x', 'X':
  404.                         {
  405.                             num = 0;
  406.                             continue;
  407.                         }
  408.                         case '0' .. '9':
  409.                         {
  410.                             num = (num << 4) | (ch - '0');
  411.                         }
  412.                         case 'a' .. 'f':
  413.                         {
  414.                             num = (num << 4) | (ch - ('a' - 10));
  415.                         }
  416.                         case 'A' .. 'F':
  417.                         {
  418.                             num = (num << 4) | (ch - ('A' - 10));
  419.                         }
  420.                         default:
  421.                         {
  422.                             return -1;
  423.                         }
  424.                     }
  425.                 }
  426.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  427.                 setarg(paramPos, 0, num);
  428.             }
  429.             case 'c':
  430.             {
  431.                 setarg(paramPos, 0, string[stringPos++]);
  432.             }
  433.             case 'f':
  434.             {
  435.  
  436.                 new changestr[16], changepos = 0, strpos = stringPos;
  437.                 while(changepos < 16 && string[strpos] && string[strpos] != delim)
  438.                 {
  439.                     changestr[changepos++] = string[strpos++];
  440.                     }
  441.                 changestr[changepos] = '\0';
  442.                 setarg(paramPos,0,_:floatstr(changestr));
  443.             }
  444.             case 'p':
  445.             {
  446.                 delim = format[formatPos++];
  447.                 continue;
  448.             }
  449.             case '\'':
  450.             {
  451.                 new
  452.                     end = formatPos - 1,
  453.                     ch;
  454.                 while ((ch = format[++end]) && ch != '\'') {}
  455.                 if (!ch)
  456.                 {
  457.                     return -1;
  458.                 }
  459.                 format[end] = '\0';
  460.                 if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  461.                 {
  462.                     if (format[end + 1])
  463.                     {
  464.                         return -1;
  465.                     }
  466.                     return 0;
  467.                 }
  468.                 format[end] = '\'';
  469.                 stringPos = ch + (end - formatPos);
  470.                 formatPos = end + 1;
  471.             }
  472.             case 'u':
  473.             {
  474.                 new
  475.                     end = stringPos - 1,
  476.                     id = 0,
  477.                     bool:num = true,
  478.                     ch;
  479.                 while ((ch = string[++end]) && ch != delim)
  480.                 {
  481.                     if (num)
  482.                     {
  483.                         if ('0' <= ch <= '9')
  484.                         {
  485.                             id = (id * 10) + (ch - '0');
  486.                         }
  487.                         else
  488.                         {
  489.                             num = false;
  490.                         }
  491.                     }
  492.                 }
  493.                 if (num && IsPlayerConnected(id))
  494.                 {
  495.                     setarg(paramPos, 0, id);
  496.                 }
  497.                 else
  498.                 {
  499.                     #if !defined foreach
  500.                         #define foreach(%1,%2) for (new %2 = 0; %2 < GetMaxPlayers(); %2++) if (IsPlayerConnected(%2))
  501.                         #define __SSCANF_FOREACH__
  502.                     #endif
  503.                     string[end] = '\0';
  504.                     num = false;
  505.                     new
  506.                         name[MAX_PLAYER_NAME];
  507.                     id = end - stringPos;
  508.                     foreach (Player, playerid)
  509.                     {
  510.                         GetPlayerName(playerid, name, sizeof (name));
  511.                         if (!strcmp(name, string[stringPos], true, id))
  512.                         {
  513.                             setarg(paramPos, 0, playerid);
  514.                             num = true;
  515.                             break;
  516.                         }
  517.                     }
  518.                     if (!num)
  519.                     {
  520.                         setarg(paramPos, 0, INVALID_PLAYER_ID);
  521.                     }
  522.                     string[end] = ch;
  523.                     #if defined __SSCANF_FOREACH__
  524.                         #undef foreach
  525.                         #undef __SSCANF_FOREACH__
  526.                     #endif
  527.                 }
  528.                 stringPos = end;
  529.             }
  530.             case 's', 'z':
  531.             {
  532.                 new
  533.                     i = 0,
  534.                     ch;
  535.                 if (format[formatPos])
  536.                 {
  537.                     while ((ch = string[stringPos++]) && ch != delim)
  538.                     {
  539.                         setarg(paramPos, i++, ch);
  540.                     }
  541.                     if (!i)
  542.                     {
  543.                         return -1;
  544.                     }
  545.                 }
  546.                 else
  547.                 {
  548.                     while ((ch = string[stringPos++]))
  549.                     {
  550.                         setarg(paramPos, i++, ch);
  551.                     }
  552.                 }
  553.                 stringPos--;
  554.                 setarg(paramPos, i, '\0');
  555.             }
  556.             default:
  557.             {
  558.                 continue;
  559.             }
  560.         }
  561.         while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  562.         {
  563.             stringPos++;
  564.         }
  565.         while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  566.         {
  567.             stringPos++;
  568.         }
  569.         paramPos++;
  570.     }
  571.     do
  572.     {
  573.         if ((delim = format[formatPos++]) > ' ')
  574.         {
  575.             if (delim == '\'')
  576.             {
  577.                 while ((delim = format[formatPos++]) && delim != '\'') {}
  578.             }
  579.             else if (delim != 'z')
  580.             {
  581.                 return delim;
  582.             }
  583.         }
  584.     }
  585.     while (delim > ' ');
  586.     return 0;
  587. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement