Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define FILTERSCRIPT
- #include <ocmd>
- #include <a_samp>
- #if defined FILTERSCRIPT
- #define dialog_help 1
- #define PRESSED(%0) \
- (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
- #define RELEASED(%0) \
- (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
- #define START_TIME 5000 // Wie lange soll man die Taste gedrückt halten, um den Motor zu starten? (in MS)
- #define STOP_TIME 1000 // Wie lange soll man die Taste gedrückt halten, um den Motor zu stoppen? (in MS)
- #define LIGHT_KEY KEY_CROUCH // Welche Taste für Licht?
- #define START_KEY KEY_ACTION // Welche Taste zum starten und stoppen?
- new bool:licht[MAX_VEHICLES],
- bool:motor[MAX_VEHICLES],
- motortimer[MAX_VEHICLES],
- bool:sirenean[MAX_VEHICLES],
- sirene[MAX_VEHICLES],
- bool:spawn[MAX_VEHICLES],
- Float:lastpos[MAX_VEHICLES][3];
- forward StartEngine(playerid,vehicleid);
- forward StopEngine(playerid,vehicleid);
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print("Vehiclecontrol by Haxler");
- print("--------------------------------------\n");
- return 1;
- }
- #else
- main()
- {
- }
- #endif
- public OnVehicleSpawn(vehicleid)
- {
- if(spawn[vehicleid] == true)
- {
- SetVehiclePos(vehicleid,lastpos[vehicleid][0],lastpos[vehicleid][1],lastpos[vehicleid][2]);
- spawn[vehicleid] = false;
- }
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- SendClientMessage(playerid,0xFF0000,"Vehiclecontrol: Gebe /hilfe ein, um eine Liste aller Befehle zu erhalten.");
- return 1;
- }
- ocmd:hilfe(playerid,params[])
- {
- ShowPlayerDialog(playerid,dialog_help,DIALOG_STYLE_MSGBOX,"Hilfe - Vehiclecontrol","{FF0000}Fahrzeug-Befehle:\n{FFFFFF}\
- /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]\
- \n{FF0000}Tasten:\n{FFFFFF}Hupe(h) - Licht an-/ausschalten\nAction(STRG) - Motor an-/ausschalten","Ok","Ok");
- return 1;
- }
- ocmd:licht(playerid,params[])
- {
- new status[4];
- if(sscanf(params,"s",status))return SendClientMessage(playerid,0xFF0000,"Info: /licht [an/aus]");
- new engine,lights,alarm,doors,bonnet,boot,objective;
- if(IsPlayerInAnyVehicle(playerid))
- {
- new vid = GetPlayerVehicleID(playerid);
- if(strcmp(status,"an",true) == 0)
- {
- GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
- SetVehicleParamsEx(vid,engine,VEHICLE_PARAMS_ON,alarm,doors,bonnet,boot,objective);
- licht[vid] = true;
- SendClientMessage(playerid,0xFF0000,"Du hast das Licht angeschaltet!");
- }
- else
- if(strcmp(status,"aus",true) == 0)
- {
- GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
- SetVehicleParamsEx(vid,engine,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);
- licht[vid] = false;
- SendClientMessage(playerid,0xFF0000,"Du hast das Lich ausgeschaltet!");
- }
- }
- return 1;
- }
- ocmd:motor(playerid,params[])
- {
- new status[4];
- if(sscanf(params,"s",status))return SendClientMessage(playerid,0xFF0000,"Info: /motor [an/aus]");
- new engine,lights,alarm,doors,bonnet,boot,objective;
- if(IsPlayerInAnyVehicle(playerid))
- {
- new vid = GetPlayerVehicleID(playerid);
- if(strcmp(status,"an",true) == 0)
- {
- GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
- SetVehicleParamsEx(vid,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
- motor[vid] = true;
- SendClientMessage(playerid,0xFF0000,"Du hast den Motor gestartet!");
- }
- else
- if(strcmp(status,"aus",true) == 0)
- {
- GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
- SetVehicleParamsEx(vid,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
- motor[vid] = false;
- SendClientMessage(playerid,0xFF0000,"Du hast den Motor abgewürgt!");
- }
- }
- return 1;
- }
- ocmd:schild(playerid,params[])
- {
- if(IsPlayerInAnyVehicle(playerid))
- {
- new text[15];
- if(sscanf(params,"s",text))return SendClientMessage(playerid,0xFF0000,"Info: /schild [text]");
- new vid = GetPlayerVehicleID(playerid);
- SetVehicleNumberPlate(vid,text);
- GetVehiclePos(vid,lastpos[vid][0],lastpos[vid][1],lastpos[vid][2]);
- spawn[vid] = true;
- SetVehicleToRespawn(vid);
- }
- return 1;
- }
- ocmd:fahrzeug(playerid,params[])
- {
- new modelid;
- if(sscanf(params,"d",modelid))return SendClientMessage(playerid,0xFF0000,"Info: /fahrzeug [model]");
- if(modelid < 400 || modelid > 611)return SendClientMessage(playerid,0xFF0000,"Ungültige Model-ID!");
- new Float:pos[3];
- GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
- CreateVehicle(modelid,pos[0]+1,pos[1]+1,pos[2],0,0,0,-1);
- return 1;
- }
- ocmd:motorhaube(playerid,params[])
- {
- new status[4];
- if(sscanf(params,"s",status))return SendClientMessage(playerid,0xFF0000,"Info: /motorhaube [auf/zu]");
- new engine,lights,alarm,doors,bonnet,boot,objective;
- if(IsPlayerInAnyVehicle(playerid))
- {
- new vid = GetPlayerVehicleID(playerid);
- if(strcmp(status,"auf",true) == 0)
- {
- GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
- SetVehicleParamsEx(vid,engine,lights,alarm,doors,VEHICLE_PARAMS_ON,boot,objective);
- SendClientMessage(playerid,0xFF0000,"Du hast die Motorhaube geöffnet!");
- }
- else
- if(strcmp(status,"zu",true) == 0)
- {
- GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
- SetVehicleParamsEx(vid,engine,lights,alarm,doors,VEHICLE_PARAMS_OFF,boot,objective);
- SendClientMessage(playerid,0xFF0000,"Du hast die Motorhaube geschlossen!");
- }
- }
- return 1;
- }
- ocmd:kofferraum(playerid,params[])
- {
- new status[4];
- if(sscanf(params,"s",status))return SendClientMessage(playerid,0xFF0000,"Info: /kofferraum [auf/azu]");
- new engine,lights,alarm,doors,bonnet,boot,objective;
- if(IsPlayerInAnyVehicle(playerid))
- {
- new vid = GetPlayerVehicleID(playerid);
- if(strcmp(status,"auf",true) == 0)
- {
- GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
- SetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,VEHICLE_PARAMS_ON,objective);
- SendClientMessage(playerid,0xFF0000,"Du hast den Kofferraum geöffnet!");
- }
- else
- if(strcmp(status,"zu",true) == 0)
- {
- GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
- SetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,VEHICLE_PARAMS_OFF,objective);
- SendClientMessage(playerid,0xFF0000,"Du hast den Kofferraum geschlossen!");
- }
- }
- return 1;
- }
- ocmd:alarm(playerid,params[])
- {
- new status[4];
- if(sscanf(params,"s",status))return SendClientMessage(playerid,0xFF0000,"Info: /alarm [an/aus]");
- new engine,lights,alarm,doors,bonnet,boot,objective;
- if(IsPlayerInAnyVehicle(playerid))
- {
- new vid = GetPlayerVehicleID(playerid);
- if(strcmp(status,"an",true) == 0)
- {
- GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
- SetVehicleParamsEx(vid,engine,lights,VEHICLE_PARAMS_ON,doors,bonnet,boot,objective);
- SendClientMessage(playerid,0xFF0000,"Du hast den Alarm gestartet!");
- }
- else
- if(strcmp(status,"aus",true) == 0)
- {
- GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
- SetVehicleParamsEx(vid,engine,lights,VEHICLE_PARAMS_OFF,doors,bonnet,boot,objective);
- motor[vid] = false;
- SendClientMessage(playerid,0xFF0000,"Du hast den Alarm beendet!");
- }
- }
- return 1;
- }
- ocmd:sirene(playerid,params[])
- {
- new status[4];
- if(sscanf(params,"s",status))return SendClientMessage(playerid,0xFF0000,"Info: /sirene [an/aus]");
- if(IsPlayerInAnyVehicle(playerid))
- {
- new vid = GetPlayerVehicleID(playerid);
- if(strcmp(status,"an",true) == 0)
- {
- if(sirenean[vid] == true)return SendClientMessage(playerid,0xFF0000,"Dieses Fahrzeug hat bereits eine Sirene!");
- new Float:x,Float:y,Float:z;
- GetPlayerPos(playerid,x,y,z);
- sirene[vid] = CreateObject(18646,x,y,z,0,0,0,100);
- AttachObjectToVehicle(sirene[vid],vid,0.2,0,0.71,0,0,0);
- sirenean[vid] = true;
- SendClientMessage(playerid,0xFF0000,"Du hast die Sirene angeschaltet!");
- }
- else
- if(strcmp(status,"aus",true) == 0)
- {
- if(sirenean[vid] == false)return SendClientMessage(playerid,0xFF0000,"Dieses Fahrzeug hat keine Sirene");
- DestroyObject(sirene[vid]);
- sirenean[vid] =false;
- SendClientMessage(playerid,0xFF0000,"Du hast die Sirene ausgeschaltet!");
- }
- }
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if(newkeys & LIGHT_KEY)
- {
- if(IsPlayerInAnyVehicle(playerid))
- {
- new engine,lights,alarm,doors,bonnet,boot,objective;
- new vid = GetPlayerVehicleID(playerid);
- if(licht[vid] == false)
- {
- GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
- SetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,VEHICLE_PARAMS_ON,alarm,doors,bonnet,boot,objective);
- licht[vid] = true;
- }
- else if(licht[vid] == true)
- {
- GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
- SetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);
- licht[vid] = false;
- }
- }
- }
- else
- if(PRESSED(START_KEY))
- {
- if(IsPlayerInAnyVehicle(playerid))
- {
- new vid = GetPlayerVehicleID(playerid);
- if(motor[vid] == false)
- {
- SendClientMessage(playerid,0xFF0000,"Der Motor wird gestartet...");
- KillTimer(motortimer[vid]);
- motortimer[vid] = SetTimerEx("StartEngine",START_TIME,0,"dd",playerid,vid);
- }
- else
- {
- KillTimer(motortimer[vid]);
- motortimer[vid] = SetTimerEx("StopEngine",STOP_TIME,0,"dd",playerid,GetPlayerVehicleID(playerid));
- }
- }
- }
- else if (RELEASED(START_KEY))
- {
- if(IsPlayerInAnyVehicle(playerid))
- {
- new vid = GetPlayerVehicleID(playerid);
- if(motor[vid] == false)SendClientMessage(playerid,0x000000,"{FFFFFF}Du musst die Taste {FF0000}gedrückt {FFFFFF}halten um den Motor zu starten!");
- KillTimer(motortimer[vid]);
- }
- }
- return 1;
- }
- public StartEngine(playerid,vehicleid)
- {
- new engine,lights,alarm,doors,bonnet,boot,objective;
- GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
- SetVehicleParamsEx(vehicleid,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
- motor[vehicleid] = true;
- SendClientMessage(playerid,0xFF0000,"Du hast den Motor gestartet!");
- return 1;
- }
- public StopEngine(playerid,vehicleid)
- {
- new engine,lights,alarm,doors,bonnet,boot,objective;
- GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
- SetVehicleParamsEx(vehicleid,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
- motor[vehicleid] = false;
- SendClientMessage(playerid,0xFF0000,"Du hast den Motor abgewürgt!");
- return 1;
- }
- stock sscanf(string[], format[], {Float,_}:...)
- {
- #if defined isnull
- if (isnull(string))
- #else
- if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
- #endif
- {
- return format[0];
- }
- #pragma tabsize 4
- new
- formatPos = 0,
- stringPos = 0,
- paramPos = 2,
- paramCount = numargs(),
- delim = ' ';
- while (string[stringPos] && string[stringPos] <= ' ')
- {
- stringPos++;
- }
- while (paramPos < paramCount && string[stringPos])
- {
- switch (format[formatPos++])
- {
- case '\0':
- {
- return 0;
- }
- case 'i', 'd':
- {
- new
- neg = 1,
- num = 0,
- ch = string[stringPos];
- if (ch == '-')
- {
- neg = -1;
- ch = string[++stringPos];
- }
- do
- {
- stringPos++;
- if ('0' <= ch <= '9')
- {
- num = (num * 10) + (ch - '0');
- }
- else
- {
- return -1;
- }
- }
- while ((ch = string[stringPos]) > ' ' && ch != delim);
- setarg(paramPos, 0, num * neg);
- }
- case 'h', 'x':
- {
- new
- num = 0,
- ch = string[stringPos];
- do
- {
- stringPos++;
- switch (ch)
- {
- case 'x', 'X':
- {
- num = 0;
- continue;
- }
- case '0' .. '9':
- {
- num = (num << 4) | (ch - '0');
- }
- case 'a' .. 'f':
- {
- num = (num << 4) | (ch - ('a' - 10));
- }
- case 'A' .. 'F':
- {
- num = (num << 4) | (ch - ('A' - 10));
- }
- default:
- {
- return -1;
- }
- }
- }
- while ((ch = string[stringPos]) > ' ' && ch != delim);
- setarg(paramPos, 0, num);
- }
- case 'c':
- {
- setarg(paramPos, 0, string[stringPos++]);
- }
- case 'f':
- {
- new changestr[16], changepos = 0, strpos = stringPos;
- while(changepos < 16 && string[strpos] && string[strpos] != delim)
- {
- changestr[changepos++] = string[strpos++];
- }
- changestr[changepos] = '\0';
- setarg(paramPos,0,_:floatstr(changestr));
- }
- case 'p':
- {
- delim = format[formatPos++];
- continue;
- }
- case '\'':
- {
- new
- end = formatPos - 1,
- ch;
- while ((ch = format[++end]) && ch != '\'') {}
- if (!ch)
- {
- return -1;
- }
- format[end] = '\0';
- if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
- {
- if (format[end + 1])
- {
- return -1;
- }
- return 0;
- }
- format[end] = '\'';
- stringPos = ch + (end - formatPos);
- formatPos = end + 1;
- }
- case 'u':
- {
- new
- end = stringPos - 1,
- id = 0,
- bool:num = true,
- ch;
- while ((ch = string[++end]) && ch != delim)
- {
- if (num)
- {
- if ('0' <= ch <= '9')
- {
- id = (id * 10) + (ch - '0');
- }
- else
- {
- num = false;
- }
- }
- }
- if (num && IsPlayerConnected(id))
- {
- setarg(paramPos, 0, id);
- }
- else
- {
- #if !defined foreach
- #define foreach(%1,%2) for (new %2 = 0; %2 < GetMaxPlayers(); %2++) if (IsPlayerConnected(%2))
- #define __SSCANF_FOREACH__
- #endif
- string[end] = '\0';
- num = false;
- new
- name[MAX_PLAYER_NAME];
- id = end - stringPos;
- foreach (Player, playerid)
- {
- GetPlayerName(playerid, name, sizeof (name));
- if (!strcmp(name, string[stringPos], true, id))
- {
- setarg(paramPos, 0, playerid);
- num = true;
- break;
- }
- }
- if (!num)
- {
- setarg(paramPos, 0, INVALID_PLAYER_ID);
- }
- string[end] = ch;
- #if defined __SSCANF_FOREACH__
- #undef foreach
- #undef __SSCANF_FOREACH__
- #endif
- }
- stringPos = end;
- }
- case 's', 'z':
- {
- new
- i = 0,
- ch;
- if (format[formatPos])
- {
- while ((ch = string[stringPos++]) && ch != delim)
- {
- setarg(paramPos, i++, ch);
- }
- if (!i)
- {
- return -1;
- }
- }
- else
- {
- while ((ch = string[stringPos++]))
- {
- setarg(paramPos, i++, ch);
- }
- }
- stringPos--;
- setarg(paramPos, i, '\0');
- }
- default:
- {
- continue;
- }
- }
- while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
- {
- stringPos++;
- }
- while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
- {
- stringPos++;
- }
- paramPos++;
- }
- do
- {
- if ((delim = format[formatPos++]) > ' ')
- {
- if (delim == '\'')
- {
- while ((delim = format[formatPos++]) && delim != '\'') {}
- }
- else if (delim != 'z')
- {
- return delim;
- }
- }
- }
- while (delim > ' ');
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment