Nützliche Codeschnipsel

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • RandomPlayerScreen(playerid)
    Habe ich von meinem Selfmade-Script genommen, den ich teilweise gemacht aber dann aufgehört hab, da es eh zuviele RL Server geben.
    RandomPlayerScreen gibt dem Spieler einen schönen Screen nach Zufall, könnt ihr z.B. als LoginScreen benutzen!


    http://pastebin.com/xt0Ge1yR


    stock RandomPlayerScreen(playerid) {
    new screen = random(10);
    SetPlayerInterior(playerid, 0);
    switch(screen) {
    case 0: {
    SetPlayerPos(playerid,-346.083618,1599.942139,164.472366);
    SetPlayerCameraPos(playerid,-345.877228,1601.342896,164.518951);
    SetPlayerCameraLookAt(playerid,-340.641968,1938.658447,83.722984); }
    case 1: {
    SetPlayerPos(playerid,1485.0194,-892.1475,74.4098);
    SetPlayerCameraPos(playerid,1479.7717,-886.2401,73.9461);
    SetPlayerCameraLookAt(playerid,1415.3817,-807.9097,85.0613); }
    case 2: {
    SetPlayerPos(playerid,589.1550,373.1002,15.7948);
    SetPlayerCameraPos(playerid,543.9864,349.3647,14.9968);
    SetPlayerCameraLookAt(playerid,422.1727,599.0107,19.1812); }
    case 3: {
    SetPlayerPos(playerid,2155.0137,1129.7897,18.6397);
    SetPlayerCameraPos(playerid,2149.3992,1132.6051,24.3125);
    SetPlayerCameraLookAt(playerid,2105.0222,1156.5306,11.6470); }
    case 4: {
    SetPlayerPos(playerid,-2818.1499,1144.0898,19.2409);
    SetPlayerCameraPos(playerid,-2808.0366,1161.1864,20.3125);
    SetPlayerCameraLookAt(playerid,-2817.9348,1143.5291,19.3762); }
    case 5: {
    SetPlayerPos(playerid,2144.2822,1279.8054,7.9840);
    SetPlayerCameraPos(playerid,2154.24,1306.50,41.46);
    SetPlayerCameraLookAt(playerid,2273.45,1262.09,33.78); }
    case 6: {
    SetPlayerPos(playerid,-1771.7858,-565.5638,-0.5834);
    SetPlayerCameraPos(playerid,-1771.4641,-566.3715,16.4844);
    SetPlayerCameraLookAt(playerid,2105.0222,1156.5306,11.6470); }
    case 7: {
    SetPlayerPos(playerid,-1254.7159,953.9262,139.2734);
    SetPlayerCameraPos(playerid,-1256.6115,953.2058,139.2734);
    SetPlayerCameraLookAt(playerid,-1529.6639,689.2731,45.3311); }
    case 8: {
    SetPlayerPos(playerid,-2295.7979,712.2764,69.7422);
    SetPlayerCameraPos(playerid,-2265.6101,730.9575,49.2969);
    SetPlayerCameraLookAt(playerid,-2243.5103,731.5889,62.7217); }
    case 9: {
    SetPlayerPos(playerid,50.0000,50.0000,70.0000);
    SetPlayerCameraPos(playerid,50.0000,50.0000,70.2203);
    SetPlayerCameraLookAt(playerid,499.8851,504.5435,7.6593); } } }

    Einmal editiert, zuletzt von FoxHound ()

  • Die Idee ist gut :thumbup: , wo hast du das aufgeschnappt oder selber ausgedacht ?

  • Hatte ein wenig Langeweile und hab ein /setskin Befehl mit OCDM geschrieben.

    ocmd:setskin(playerid,params[])
    {
    new pID, level;
    new string[128];
    new oname[MAX_PLAYER_NAME],aname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,aname,sizeof aname);
    GetPlayerName(pID,oname,sizeof oname);
    if(IsPlayerAdmin(playerid))
    {
    if(sscanf(params,"ud",pID,level))
    return SendClientMessage(playerid,COLOR_WHITE,"Nutze: /setskin [playerid] [SkinID]");
    if(!IsPlayerConnected(pID))
    return SendClientMessage(playerid,COLOR_WHITE,"ID nicht vergeben");
    if(sscanf(params,"ud",pID,level)) {
    SendClientMessage(playerid,COLOR_WHITE,"Nutze: /setskin [playerid] [SkinID]"); }
    if(level < 0 || level > 300) { return SendClientMessage(playerid,COLOR_WHITE,"Die Skin ID muss zwischen 0 und 300 liegen!"); }
    SetPlayerSkin(pID, level);
    format(string,sizeof string,"Du hast %s sein Skin zur ID %d gewechselt.",oname,level);
    SendClientMessage(playerid,COLOR_WHITE,string);
    format(string,sizeof string,"Admin %s hat dein Skin zur ID %d gewechselt.",aname,level);
    SendClientMessage(pID,COLOR_WHITE,string);
    }
    else { return SendClientMessage(playerid,COLOR_WHITE,"Du bist nicht befugt diesen Befehl zu benutzen!"); }
    return 1;
    }

    //edit: Command bearbeitet

    20€ geschenkt - bei Fragen gerne PN an mich


    Mehr über reCyclix
    reCyclix - more than recycling
    reyCyclix ist ein polnisches Recyclingunternehmen, welches jedem die Möglichkeit bietet, sich an ihrem Geschäftsmodell gewinnbringend zu beteiligen. Normalerweise passiert das, in dem man eine beliebige Summe in Kunststoffmüll investiert, allerdings schenkt reCyclix zur Zeit noch jedem neuem Nutzer 20€, die zur Investition genutzt werden können.

    Einmal editiert, zuletzt von Key ()

  • stock Float:GetDistancePointToLinear(Float:fPoint[3],Float:fStart[3],Float:fDVector[3]) {
    new
    Float:fCrossProduct[3],
    Float:fDistance;
    fCrossProduct[0] = ( ( fDVector[1] * (fPoint[2] - fStart[2]) ) - ( fDVector[2] * (fPoint[1] - fStart[1]) ) );
    fCrossProduct[1] = ( ( fDVector[2] * (fPoint[0] - fStart[0]) ) - ( fDVector[0] * (fPoint[2] - fStart[2]) ) );
    fCrossProduct[2] = ( ( fDVector[0] * (fPoint[1] - fStart[1]) ) - ( fDVector[1] * (fPoint[0] - fStart[0]) ) );
    fDistance = floatsqroot( (fCrossProduct[0] * fCrossProduct[0]) + (fCrossProduct[1] * fCrossProduct[1]) + (fCrossProduct[2] * fCrossProduct[2]));
    fDistance = ( fDistance / floatsqroot( (fDVector[0] * fDVector[0]) + (fDVector[1] * fDVector[1]) + (fDVector[2] * fDVector[2]) ) );
    return fDistance;
    }
    Ganz nützlich um zu überprüfen ob ein Spieler in eine bestimmte Richtung zielt.Damit kann man leicht ein Feuerwehr Script erstellen um zu schauen,ob man wirklich mit dem Strahl irgendwo hin zielt.


    //Edit:


    {fPoint} - Der Punkt der überprüft werden soll auf die Distanz
    {fStart} - Der Aufpunkt für die Gerade
    {fDVector} - Der Richtungsvektor ( GetPlayerCameraFrontVector }

    Einmal editiert, zuletzt von Goldkiller ()

  • Kleines Reportsystem mit SSCANF und DCMD:
    #include <a_samp>
    #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
    #define COLOR_RED 0xFF6365FF
    #define COLOR_YELLOW 0xF1FE01FF
    public OnFilterScriptInit()
    {
    print("\n--------------------------------------------------");
    print(" Simple Report Filterscript");
    print("--------------------------------------------------\n");
    return 1;
    }
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    dcmd(report,6,cmdtext);
    dcmd(whisper,7,cmdtext);
    return 0;
    }
    dcmd_report(playerid,params[])
    {
    new text[286];
    if(sscanf(params, "s",text))
    {
    return SendClientMessage(playerid,COLOR_RED,"Benutzung: /report [text]");
    }
    if(IsPlayerAdmin(playerid))
    {
    return SendClientMessage(playerid,COLOR_RED,"Dieser Chatt kann nicht von Admins gentuzt werden!");
    }
    else
    {
    new name[MAX_PLAYER_NAME],string[368];
    GetPlayerName(playerid,name,sizeof(name));
    format(string, sizeof(string), "** Report von %s: %s **",name,text);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(IsPlayerAdmin(i))
    {
    SendClientMessage(i, COLOR_YELLOW,string);
    }
    }
    }
    }
    return 1;
    }
    dcmd_whisper(playerid,params[])
    {
    new pID,text[286];
    if(sscanf(params, "us",pID,text))
    {
    return SendClientMessage(playerid,COLOR_RED,"Benutzung: /whisper [playerid] [text]");
    }
    if(!IsPlayerConnected(pID))
    {
    return SendClientMessage(playerid,COLOR_RED,"Dieser Spieler ist nicht Online!");
    }
    if(!IsPlayerAdmin(playerid))
    {
    return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin!");
    }
    else
    {
    new name[MAX_PLAYER_NAME],aname[MAX_PLAYER_NAME],string[368];
    GetPlayerName(playerid,name,sizeof(name));
    GetPlayerName(playerid,aname,sizeof(aname));
    format(string, sizeof(string), "** %s: %s **",name,text);
    SendClientMessage(pID,COLOR_YELLOW,string);
    format(string, sizeof(string), "** an %s: %s **",aname,text);
    SendClientMessage(playerid,COLOR_YELLOW,string);
    }
    return 1;
    }

    //---------------[SSCANF]
    #pragma tabsize 0
    stock sscanf(string[],format[],{Float,_}:...){if(string[0]==0||(string[0]==1&&string[1]==0)){return format[0];}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<MAX_PLAYERS; %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__
    #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;}
    //---------------[SSCANF]


    Das ganze läuft über RCON-Admin und besitzt direkt einen /whisper CMD zum antworten.

  • So mal ein paar Sachen von mir^^

    CountDB


    Eine kleine Funktion, um die anzahl der Zeilen in einer DB auszulesen. Kann man benutzen um z.b auszugeben wie viele Accounts auf dem Server registriert sind (MySQL-Account System vorrausgesetzt^^)
    public CountDB(Tabelle[])
    {
    new string[128],Rows;
    format(string, sizeof(string), "SELECT * FROM `%s`",Tabelle);
    mysql_query(string);
    mysql_store_result();
    Rows = mysql_num_rows();
    mysql_free_result();
    return Rows;
    }
    Anwendungsbeispiel:
    main()
    {
    printf("[SERVER] %d Ban(s)", CountDB("bans"));
    printf("[SERVER] %d Account(s)", CountDB("accounts"));
    printf("[SERVER] %d Häuser", CountDB("buildings"));
    printf("[SERVER] %d Fraktionen", CountDB("fraktionen"));
    printf("[SERVER] %d Fraktions Fahrzeuge", CountDB("FraktionsFahrzeuge"));
    //Die entsprechenden Tabellen sollten natürlich auch existieren, sonst machts wenig sinn^^
    print("\n");
    }

    GetMaxInt


    Eine Funktion, um den Größten wert aus einer Spalte auszulesen in einer Bestimmten Tabelle auszulesen.
    stock mysql_GetMaxInt(Field[], Table[])
    {
    new query[128], Get[128],Get2;
    format(query, 128, "SELECT MAX(%s) FROM %s", Field, Table);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(Get);
    Get2=strval(Get);
    return Get2;
    }
    Anwendungsbeispiel:

    mysql_GetMaxInt("Geld", "spieler");//Gibt den Betrag des Spielers mit dem meisten Geld zurück
    //Geld = Spalte
    //spieler = Tabelle

    Server_Kick


    Kickt den Angegebenen Spieler mit Grund + Nachricht an Alle Spieler das er gekickt wurde, von wem und warum. Spieler und "Geber" (also der, der den Spieler gekickt hat) werden als playerid angeeben. Wird als "geber" der wert "-1" angeeben, wir der Gebername automatisch durch "System" ersetzt. Beispielsweise bei AFK-Kick oder anderen aktionen die vom script ausgeführt werden.
    public Server_Kick(playerid,geberid,reason[])
    {
    if(!IsPlayerConnected(playerid)) return 0;
    new GeberName[MAX_PLAYER_NAME];
    if(geberid == -1) { GeberName="System";}
    else {GeberName = SpielerName[geberid];}
    if(IsPlayerNPC(playerid)) return SendClientMessage(geberid, FARBE_ROT, "Dieser Spieler ist ein NPC und kann nicht Gekickt werden!");
    TogglePlayerControllable(playerid,false);
    SendFormatedMessageToAll(FARBE_ROT, "AdmCMD: Spieler '%s' wurde von %s gekickt. Grund: %s",SpielerName[playerid],GeberName,reason);
    Kick(playerid);
    return 1;
    }
    Anwendungsbeispiel:
    Server_Kick(playerid,-1,"Falsches Passwort beim Login");
    //Sendet eine nachricht an alle Spieler mit folgendem Inhalt:
    //AdmCMD: Spieler 'Maddin' wurde von System gekickt. Grund: Falsches Passwort beim Login
    Falls ihr SendFormatedMessageToAll nicht habt:
    #define SendFormatedMessageToAll(%0,%1,%2) do{new _string[128]; format(_string,sizeof(_string),%1,%2); SendClientMessageToAll(%0,_string);} while(FALSE)
    new FALSE=false;


    Mfg.^^

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • #define COLOR_DARKRED 0xC90032FF#define COLOR_DARKBLUE 0x6212E3FF#define COLOR_RED 0xFF0000FF#define COLOR_BLUE 0x5100FFFF#define COLOR_DARKORANGE 0xE86F05FF#define COLOR_ORANGE 0xFF7A05FF#define COLOR_GREY 0xC9C9C9FF


    Mal ein paar Farben definiert :D.


    //Edit:


    Irgendwie möchte das nicht in mehreren Reihen unterteil werden...


    //Edit²:


    Hier nochmal ein System, das wenn (killerid) (playerid) tötet 5000$ bekommt, und das (playerid) -5000$ abgezogen bekommt.



    public OnPlayerDeath(playerid, killerid, reason)
    {
    GivePlayerMoney(killerid, 5000);
    GivePlayerMoney(playerid, -5000);
    SendClientMessage(playerid, COLOR_RED, "Du wurdest von %d getötet!");
    SendClientMessage(playerid, COLOR_BLUE, "Du hast %s getötet !");


    return 1;
    }

    Einmal editiert, zuletzt von aEiOu$! ()

  • So sollte es gehen^^
    public OnPlayerDeath(playerid, killerid, reason)
    {
    new string[128],playername[MAX_PLAYER_NAME],killername[MAX_PLAYER_NAME]:
    GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
    GetPlayerName(killerid, killername, MAX_PLAYER_NAME);
    GivePlayerMoney(killerid, 5000);
    GivePlayerMoney(playerid, -5000);
    format(string,sizeof(string),"Du wurdest von %d getötet!",killername);
    SendClientMessage(playerid, COLOR_RED, string);
    format(string,sizeof(string),"Du hast %s getötet !",playername);
    SendClientMessage(killerid, COLOR_BLUE, string);
    return 1;
    }

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Dann eben so xD
    public OnPlayerDeath(playerid, killerid, reason)
    {
    new pName[2][MAX_PLAYER_NAME],string[2][49];
    GetPlayerName(playerid, pName[0], MAX_PLAYER_NAME);
    GetPlayerName(killerid, pName[1], MAX_PLAYER_NAME);
    GivePlayerMoney(killerid, 5000);
    GivePlayerMoney(playerid, -5000);
    if(killerid == playerid || killerid == INVALID_PLAYER_ID) {
    SendClientMessage(playerid, COLOR_BLUE, "Du hast Selbstmord begangen!");
    }
    else {
    format(string[0],sizeof(string[0]),"Du wurdest von %s getötet!",pName[1]);
    SendClientMessage(playerid, COLOR_RED, string[0]);
    format(string[1],sizeof(string[1]),"Du hast %s getötet !",pName[0]);
    SendClientMessage(killerid, COLOR_BLUE, string[1]);
    }
    return 1;
    }

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Ne,eher so.

    public OnPlayerDeath(playerid, killerid, reason)
    {
    GivePlayerMoney(playerid, -5000);
    if(killerid == INVALID_PLAYER_ID) {
    SendClientMessage(playerid, COLOR_BLUE, "Du hast Selbstmord begangen!");
    }
    else {
    new
    pName[MAX_PLAYER_NAME],
    string[15 + MAX_PLAYER_NAME 9 + 1];
    GivePlayerMoney(killerid, 5000);


    GetPlayerName(killerid, pName, sizeof(pName) );
    format(string,sizeof(string),"Du wurdest von %s getötet!",pName);
    SendClientMessage(playerid, COLOR_RED, string);


    GetPlayerName(playerid, pName, sizeof(pName) );
    format(string,sizeof(string),"Du hast %s getötet !",pName);
    SendClientMessage(killerid, COLOR_BLUE, string);
    }
    return 1;
    }
    pName & string braucht man nicht zu erstellen,falls Selbstmord begannen wurde ( killerid == INVALID_PLAYER_ID ).
    Hab ich auch noch nie erlebt, dass die playerid Gleichzeitig die killerid ist.
    Du brauchst auch kein Array von pName bzw string.
    Da die Nachrichten sowieso Nacheinander versendet werden, brauch Ich dafür keine zwei Strings.Ich nutze einfach einen.
    GivePlayerMoney für die killerid ist auch ein unnötiger Aufruf, falls der Spieler Selbstmord begannen hat.
    Das Gleiche gilt auch für GetPlayerName.


    Man könnte natürlich noch auf pName verzichten, halte Ich aber für überflüssig.


    Konnte ziemlich viel verbessern, meinst du nicht :p ?

  • Ich wollte damit auch eigentlich nur sagen das der Code von aEiOu$! nicht geht und wie es richtig währe. Ich persönlich würde es sowieso anders machen, aber dass könnte dann nicht jeder einfach benutzen.
    public OnPlayerDeath(playerid, killerid, reason)
    {
    Server_TakePlayerMoney(playerid, 5000);
    if(killerid == INVALID_PLAYER_ID) {
    SendClientMessage(playerid, COLOR_BLUE, "Du hast Selbstmord begangen!");
    }
    else {
    Server_GivePlayerMoney(killerid, 5000);
    SendFormatedMessage(playerid, FARBE_BLAU,"Du wurdest von %s getötet!",SpielerName[killerid]);
    SendFormatedMessage(killerid, FARBE_BLAU,"Du hast %s getötet !",SpielerName[playerid])
    }
    return 1;
    }

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Überprüfung ob [Motor|Licht|Kofferaum|Motorhaube] an/auf ist oder aus/zu.


    Unter OnPlayerCommandText(playerid, cmdtext[]) :



    if(strcmp(cmd, "/check",true) == 0)
    {
    tmp = strtok(cmdtext,idx);
    if(!tmp[0]) return SendClientMessage(playerid,0xAAAAAAAA,"Nutze: /check [Motor|Kofferaum|Motorhaube|Licht]");
    if(strcmp(tmp,"Motor",true) == 0)
    {
    new fahrzeug = GetPlayerVehicleID(playerid);
    if(CheckVehicle(1,fahrzeug)) return SendClientMessage(playerid,0x00CC00FF,"Ihr Motor ist an");
    else if(!CheckVehicle(1,fahrzeug)) return SendClientMessage(playerid,0xFF0000FF,"Ihr Motor ist aus");
    }
    if(strcmp(tmp,"Kofferaum",true) == 0)
    {
    new fahrzeug = GetPlayerVehicleID(playerid);
    if(CheckVehicle(2,fahrzeug)) return SendClientMessage(playerid,0x00CC00FF,"Ihr Kofferaum ist auf");
    else if(!CheckVehicle(2,fahrzeug)) return SendClientMessage(playerid,0xFF0000FF,"Ihr Kofferaum ist zu");
    }
    if(strcmp(tmp,"Motorhaube",true) == 0)
    {
    new fahrzeug = GetPlayerVehicleID(playerid);
    if(CheckVehicle(3,fahrzeug)) return SendClientMessage(playerid,0x00CC00FF,"Ihre Moterhaube ist auf");
    else if(!CheckVehicle(3,fahrzeug)) return SendClientMessage(playerid,0xFF0000FF,"Ihre Motorhaube ist zu");
    }
    if(strcmp(tmp,"Licht",true) == 0)
    {
    new fahrzeug = GetPlayerVehicleID(playerid);
    if(CheckVehicle(4,fahrzeug)) return SendClientMessage(playerid,0x00CC00FF,"Ihr Licht ist an");
    else if(!CheckVehicle(4,fahrzeug)) return SendClientMessage(playerid,0xFF0000FF,"Ihr Licht ist aus");
    }
    }


    Iwo im GM :



    forward CheckVehicle(ziffer,id);
    public CheckVehicle(ziffer,id)
    {
    if(ziffer == 1) // Motor
    {
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(id,engine,lights,alarm,doors,bonnet,boot,objective);
    if(engine == 1){return 1;}
    else{return 0;}
    }
    else if(ziffer == 2) // Kofferaum
    {
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(id,engine,lights,alarm,doors,bonnet,boot,objective);
    if(boot == 1){return 1;}
    else{return 0;}
    }
    else if(ziffer == 3) // Motorhaube
    {
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(id,engine,lights,alarm,doors,bonnet,boot,objective);
    if(bonnet == 1){return 1;}
    else{return 0;}
    }
    else if(ziffer == 4) // Licht
    {
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(id,engine,lights,alarm,doors,bonnet,boot,objective);
    if(lights == 1){return 1;}
    else{return 0;}
    }
    return 1;
    }


    Fertig absofort könnt ihr mit /check [XYZ] überprüfen ob bei den Fahrzeug iwas an ist oder nicht.


    Eignet sich zum beispiel für benzin system die überprüfen können mit CheckVehicle(1,GetPlayerVehicleID(playerid)) ob der Motor an ist oder nicht.
    Oder wenn man ein Kofferaum system drinne hat zum überprüfen ob auch der Kofferaum auf ist( CheckVehicle(2,GetPlayerVehicleID(playerid)) ), um was rauszunehmen/reinzulegen.


    Das Ganze kann natürlich auch noch erweitert werden.. falls einer überprüfen will ob der Alarm an ist oderso einfach bei CheckVehicle neue variable und dort einfach abfragen.
    mfg DZ.

    „Auge um Auge - und die ganze Welt wird blind sein.“
    - Mahatma Gandhi

  • enum vehicle_params
    {
    p_engine = 1,
    p_lights,
    p_alarm,
    p_lock,
    p_bonnet,
    p_boot,
    p_objective,
    };


    public getPlayerVehicleParamState(playerid, vehicle_params: param_id)
    {
    new e, l, a, d, bnn, boo, o, vehicleid;
    if((vehicleid = GetPlayerVehicleID(playerid)) == INVALID_VEHICLE_ID) return -1;
    GetVehicleParamsEx(vehicleid, e, l, a, d, bnn, boo, o);
    switch(param_id)
    {
    case (vehicle_params: p_engine): return ((e) ? (1) : (0));
    case (vehicle_params: p_lights): return ((l) ? (1) : (0));
    case (vehicle_params: p_alarm): return ((a) ? (1) : (0));
    case (vehicle_params: p_lock): return ((d) ? (1) : (0));
    case (vehicle_params: p_bonnet): return ((bnn) ? (1) : (0));
    case (vehicle_params: p_boot): return ((boo) ? (1) : (0));
    case (vehicle_params: p_objective): return ((o) ? (1) : (0));
    }
    return -1;
    }


    Benutzung:


    if(!strcmp("/motorstatus", cmdtext))
    {
    if( getPlayerVehicleParamState(playerid, p_engine) == 1 ) return SendClientMessage(playerid, 0xFFFFFFAA, "* Motor läuft.");
    else return SendClientMessage(playerid, 0xFFFFFFAA, "* Motor ist ausgeschaltet.");
    }