Beiträge von deadman1717

    Bin nun schon etwas weiter gekommen, mit dem Operator "<<=1" verdopple ich vom Ausgangswert ausgehend.


    enum E_MY_TAG (<<= 1)
    {
    E_MY_TAG_NONE,
    E_MY_TAG_MASK = 0xFF,
    E_MY_TAG_VAL_1 = 0x100,
    E_MY_TAG_VAL_2,
    E_MY_TAG_VAL_3,
    E_MY_TAG_VAL_4
    }

    new
    E_MY_TAG:gMyTagVar = E_MY_TAG_VAL_2 | E_MY_TAG_VAL_3 | (E_MY_TAG:7 & E_MY_TAG_MASK);

    Könnt mir jetzt vllt noch jemand das hier erklären? Wie genau setzt sich hier die Variable gMyTagVar zusammen? Werden einfach alle Werte addiert? Und speziell dieser Teil hier (E_MY_TAG:7 & E_MY_TAG_MASK)Was geschieht hier?
    gMyTagVar beträgt am Schluss übrigens 1543 (0x0607).

    Hallo miteinander,
    nach längerer Pause wollt ich mal wieder ein wenig scripten. Nun bin ich im Wiki über verschiedene Dinge gestolpert, die ich noch nie gesehen habe und auch nicht verstehe.
    enum E_EXAMPLE (>>>= 1)
    {
    E_EXAMPLE_0 = 31,
    E_EXAMPLE_1,
    E_EXAMPLE_2
    }

    Was bedeutet das ">>>="?


    Ein weiterer Punkt: Was bringt mir eine native function?


    Und zum Schluss:
    stock BigEndian:operator=(b)
    {
    return BigEndian:(((b >>> 24) & 0x000000FF) | ((b >>> 8) & 0x0000FF00) | ((b << 8) & 0x00FF0000) | ((b << 24) & 0xFF000000));
    }

    main()
    {
    new
    BigEndian:a = 7;
    printf("%d", _:a);
    }

    stock BigEndian:operator+(BigEndian:a, BigEndian:b)
    {
    return BigEndian:42;
    }

    main()
    {
    new
    BigEndian:a = 7,
    BigEndian:b = 199;
    printf("%d", _:(a + b));
    }

    Da gings ums "overloaden" von Operatoren. Was bringt mir das?
    Hier der Link im Wiki: http://wiki.sa-mp.com/wiki/Keywords:Initialisers
    Danke schon mal im Vorraus für Hilfe und Bemühungen :)

    Gut, das mit den Textdraws werd ich versuchen. Beim Tank würd ich lieber ein System verwenden, dass nicht auf Zeit arbeitet, sondern auf gefahrene Strecke.

    Hallo Leute,


    ich wollt mal Fragen wie man so einen Tacho hinbekommt. Eine Funktion die die Geschwindigkeit bestimmt hab ich schon. Verwendet man dazu einen Textdraw? Wäre nett wenn ihr mir ein Tutorial posten könntet oder es mir einer erklären könnte. Und wie stehts mit einer Tankanzeige? Ist das schwer zu scripten?
    Vielen Dank für eure Hilfe

    Hallo an alle,


    ich habe ein Problem und finde keine Lösung.
    Und zwar brauch ich eine Funktion, welche den Namen einens Spielers mit einer Reihe von Namen aus einer INI Datei abgleicht. Im Grunde hab ich die Funktion auch schon, doch sie funktioniert nicht.
    new abc=0; //eine globale variable
    stock CheckHouse(playerid)
    {
    new pname[24]; GetPlayerName(playerid,pname,24);
    for(new i;i<MAX_HOUSES;i++)
    {
    if(strcmp(dini_Get("House.ini",hInfo[i][Besitzer]),pname,false)==0) abc = 1;
    else abc = 0;
    }
    }


    Die Funktion soll also ablaufen bevor geprüft wird ob ein Spieler schon eines der Objekte besitzt. In der Abfrage möchte ich dann einfach mit einer if Abfrage rausfinden ob er ein Objekt hat oder nicht.
    Ich hoffe ihr versteht mein Anliegen. Solltet ihr was nich verstehn solltet, aber mir trotzem helfen wollt, fragt einfach nach :)
    mfg


    //Edit


    Um es noch etwas besser auszudrücken häng ich noch den /buy befehl an, mit welchem man ein haus kaufen kann udn für welchen die funktion sein soll.
    if (strcmp("/buy", cmdtext, true, 10) == 0)
    {
    for(new i; i<MAX_HOUSES; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 3, hInfo[i][iconx], hInfo[i][icony], hInfo[i][iconz]))
    {
    new Pname[24]; GetPlayerName(playerid,Pname,24);
    for(new S;S<MAX_HOUSES;S++)//Sollte eigentlich checken, ob schon ein Haus vorhanden ist bei diesem Spieler, geht aber nicht
    {
    if(strcmp(dini_Get("Besitzer.ini",hInfo[S][Hausname]), Pname))
    {
    SendClientMessage(playerid,weis,"Du besitzt schon ein Haus");
    break;
    }
    }
    if(hInfo[i][Gekauft] == 1) return SendClientMessage(playerid,weis,"Dieses Haus ist schon verkauft");
    if(GetPlayerMoney(playerid) < hInfo[i][Preis]) return SendClientMessage(playerid,weis,"Du hast nicht genug Geld");
    GivePlayerMoney(playerid, - hInfo[i][Preis]);
    GameTextForPlayer(playerid, "~r~Haus gekauft!", 2000, 3);
    hInfo[i][Gekauft] = 1;
    GetPlayerName(playerid,Pname,24);
    format(hInfo[i][Besitzer], 24, "%s", Pname);
    dini_Set("Besitzer.ini", hInfo[i][Hausname], Pname);
    DestroyPickup(PickupID[i]);
    PickupID[i] = CreatePickup(1272,1,hInfo[i][iconx],hInfo[i][icony],hInfo[i][iconz],-1);
    return 1;
    }
    }
    SendClientMessage(playerid,weis,"Du bist nicht in der Nähe von einem Haus");
    return 1;
    }

    Hallo,


    ich habe hier meinen Code. Ich habe nun folgende Probleme:
    -wenn ich mehrere Häuser drinnen hab, dann kann ich nur beim zuerst erstellten den /buy befehl machen, bei den anderen erscheint die Meldung "Du bist nicht in der Nähe von einem Haus".
    -es gibt auch Komplikationen bei der Abfrage, ob der Spieler schon ein Haus besitzt, also in dieser Zeile
    for(new j=0;j<MAX_HOUSES;j++)
    {
    if(strcmp(dini_Get("/Besitzsystem/Besitzer.ini",hInfo[j][Hausname]),pname)) return SendClientMessage(playerid,weis,"Du besitzt schon ein Haus");
    }
    Ich hoffe ihr habt eine Idee wie ich die Fehler beheben kann. Ich danke euch schon im Vorraus.
    mfg

    mit vehicleid gehts, aber wenn ich
    if(IsACopCar(vehicleid))
    {
    SendClientMessage(playerid,white,"ABC");
    RemovePlayerFromVehicle(playerid);
    }
    schreibe, dann erscheint zwar der Text aber ich werde nicht aus dem auto geworfen

    ich hab schon SpielerInfo. Ich post euch mal meinen code bis jetzt, der NICHT funktioniert
    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(IsABike(vehicleid) && ScheinInfo[playerid][bikeschein] == 0 && !ispassenger)
    {
    SendClientMessage(playerid,white,"Du hast keinen Motoradführerschein");
    TogglePlayerControllable(playerid,0);
    TogglePlayerControllable(playerid,1);
    }
    else if(IsACar(vehicleid) && ScheinInfo[playerid][autoschein] == 0 && !ispassenger)
    {
    SendClientMessage(playerid,white,"Du hast keinen Autoführerschein");
    TogglePlayerControllable(playerid,0);
    TogglePlayerControllable(playerid,1);
    }
    else if(IsAPlane(vehicleid) && ScheinInfo[playerid][flugschein] == 0 && !ispassenger)
    {
    SendClientMessage(playerid,white,"Du hast keinen Flugschein");
    TogglePlayerControllable(playerid,0);
    TogglePlayerControllable(playerid,1);
    }
    else if(IsABoat(vehicleid) && ScheinInfo[playerid][bootschein] == 0 && !ispassenger)
    {
    SendClientMessage(playerid,white,"Du hast keinen Bootfuehrerschein");
    TogglePlayerControllable(playerid,0);
    TogglePlayerControllable(playerid,1);
    }
    else if(IsAMofa(vehicleid) && ScheinInfo[playerid][mofaschein] == 0 && !ispassenger)
    {
    SendClientMessage(playerid,white,"Du hast keinen Mofafuehrerschein");
    TogglePlayerControllable(playerid,0);
    TogglePlayerControllable(playerid,1);
    }
    else
    {
    new carid = GetPlayerVehicleID(playerid);
    if(carid == 2)
    {
    SendClientMessage(playerid,white,"ABC");
    }
    else{}


    }
    return 1;
    }

    ich hab in meiner ini ein Team stehen, welches beim login und update in SpielerInfo[playerid][Team] geschrieben wird. Hab halt 1 für cops und oben dann
    #define TEAM_COPS 1

    Hallo liebe Community,


    ich habe folgendes Problem: Ich will verhindern dass jeder Spieler mit den Polizeiwagen fahren kann. Ich hab eine ini Datei und dort wird auch das Team des Spielers gespeichert. So siehts jetzt aus:
    //ganz oben (globale variable)
    new POLICE_CAR_1;
    //
    //dann bei OnGameModInit
    POLICE_CAR_1 = CreateVehicle(....);
    //dann hab ich eine public erstellt
    public IsAPoliceCar(playerid)
    {
    new egal = GetPlayerVehicleID(playerid);
    if(egal == POLICE_CAR_1)
    {
    if(SpielerInfo[playerid][Team] != TEAM_COPS)
    {
    TogglePlayerControllable(playerid,0);
    SendClientMessage(playerid,white,"Du bist kein Cop");
    TogglePlayerControllable(playerid,1);
    }
    }
    return 1;
    }
    //so geht es auch bei der abfrage, welche prüft ob ein Führerschein vorhanden ist(die ist zwar ein "stock",aber hab statt public auch schon mit stock versucht.
    //weiter gehts mit der abfrage bei OnPlayerEnterVehicle
    //dort wird in der Führerscheinabfrage auch noch die Funktion eingeschoben
    OnPlayerEnterVehicle(playerid,vehicleid,ispassenger)//oder so ähnlich, weiß nich auswendig
    {
    //...
    IsAPoliceCar(playerid);
    //...
    }//ging au nich mit einer stock und if abfrage


    weiß einer wie ich das machen kann? und vllt noch statt dem playercontrollable ein removeplayerfromvehicle? damit hab ichs auch schon versucht, ging nivh.
    danke im vorraus

    Hallo Leute,


    ich hab folgenden Code geschrieben, der Compiler gibt weder Warnings noch Errors aus. Im Spiel funktioniert der Command immer falsch, wenn ich zb versuche /givelicence 0 mofa (ich versuche mir selbst einen mofa schein zu geben, es kommt aber "du hast keine 1350$".
    Hier der Code
    dcmd_givelicence(playerid,params[])
    {
    if(SpielerInfo[playerid][Team] == TEAM_FAHRLEHRER || SpielerInfo[playerid][Leader] == TEAM_FAHRLEHRER)
    {
    new id,schein[16],fahrlehrer[20],lehrling[20],string1[64],string2[64];
    if(sscanf(params,"us",id,schein))
    {
    SendClientMessage(playerid,white,"Benutzung: /givelicence [ID] [LIZENZ] (/teamhelp für mehr Infos)");
    }
    else if(id == INVALID_PLAYER_ID) SendClientMessage(playerid,white,"Spieler nicht gefunden");
    else
    {
    new geld = GetPlayerMoney(id);
    GetPlayerName(playerid,fahrlehrer,sizeof(fahrlehrer));
    GetPlayerName(id,lehrling,sizeof(lehrling));
    if(strcmp("auto",schein,true))
    {
    if(SpielerInfo[id][Alter] < 18)
    {
    SendClientMessage(playerid,white,"Dieser Spieler ist noch nicht alt genug, um den Autoschein zu machen");
    SendClientMessage(id,white,"Du bist noch nicht alt genug, komm wieder mit 18");
    }
    else
    {
    if(geld < 1350) {SendClientMessage(playerid,white,"Dieser Spieler hat keine 1350$");}
    else
    {
    ScheinInfo[id][autoschein] = 1;
    format(string1,sizeof(string1),"Du hast von %s einen Autofuehrerschein erhalten",fahrlehrer);
    format(string2,sizeof(string2),"Du hast %s einen Autofuehrerschein gegeben",lehrling);
    SendClientMessage(playerid,white,string2);
    SendClientMessage(id,white,string1);
    }
    }
    }
    else if(strcmp("motorad",schein,true))
    {
    if(ScheinInfo[id][autoschein] == 0)
    {
    SendClientMessage(playerid,white,"Dieser Spieler benötigt zuerst einen Autoschein");
    SendClientMessage(playerid,white,"Du benötigst den Autoschein, um den Motoradschein zu machen");
    }
    else
    {
    if(geld < 800) {SendClientMessage(playerid,white,"Dieser Spieler hat keine 800$");}
    else
    {
    ScheinInfo[id][bikeschein] = 1;
    format(string1,sizeof(string1),"Du hast von %s einen Motoradfuehrerschein erhalten",fahrlehrer);
    format(string2,sizeof(string2),"Du hast %s einen Motoradfuehrerschein gegeben",lehrling);
    SendClientMessage(playerid,white,string2);
    SendClientMessage(id,white,string1);
    }
    }
    }
    else if(strcmp("boot",schein,true))
    {
    if(SpielerInfo[id][Alter] < 18)
    {
    SendClientMessage(playerid,white,"Dieser Spieler ist noch nicht alt genug, um den Bootschein zu machen");
    SendClientMessage(id,white,"Du bist noch nicht alt genug, komm wieder mit 18");
    }
    else
    {
    if(geld < 5000) {SendClientMessage(playerid,white,"Dieser Spieler hat keine 5000$");}
    else
    {
    ScheinInfo[id][bootschein] = 1;
    format(string1,sizeof(string1),"Du hast von %s einen Bootfuehrerschein erhalten",fahrlehrer);
    format(string2,sizeof(string2),"Du hast %s einen Bootfuehrerschein gegeben",lehrling);
    SendClientMessage(playerid,white,string2);
    SendClientMessage(id,white,string1);
    }
    }
    }
    else if(strcmp("flug",schein,true))
    {
    if(SpielerInfo[id][Alter] < 18)
    {
    SendClientMessage(playerid,white,"Dieser Spieler ist noch nicht alt genug, um den Flugschein zu machen");
    SendClientMessage(id,white,"Du bist noch nicht alt genug, komm wieder mit 18");
    }
    else
    {
    if(geld < 11000) {SendClientMessage(playerid,white,"Dieser Spieler hat keine 11000$");}
    else
    {
    ScheinInfo[id][flugschein] = 1;
    format(string1,sizeof(string1),"Du hast von %s einen Flugschein erhalten",fahrlehrer);
    format(string2,sizeof(string2),"Du hast %s einen Flugschein gegeben",lehrling);
    SendClientMessage(playerid,white,string2);
    SendClientMessage(id,white,string1);
    }
    }
    }
    else if(strcmp("mofa",schein,true))
    {
    if(SpielerInfo[id][Alter] < 16)
    {
    SendClientMessage(playerid,white,"Dieser Spieler ist noch nicht alt genug, um den Mofaschein zu machen");
    SendClientMessage(id,white,"Du bist noch nicht alt genug, komm wieder mit 16");
    }
    else
    {
    if(geld < 400) {SendClientMessage(playerid,white,"Dieser Spieler hat keine 400$");}
    else
    {
    ScheinInfo[id][mofaschein] = 1;
    format(string1,sizeof(string1),"Du hast von %s einen Mofafuehrerschein erhalten",fahrlehrer);
    format(string2,sizeof(string2),"Du hast %s einen Mofafuehrerschein gegeben",lehrling);
    SendClientMessage(playerid,white,string2);
    SendClientMessage(id,white,string1);
    }
    }
    }
    else
    {
    format(string1,sizeof(string1),"%s ist kein gültiger Schein");
    SendClientMessage(playerid,white,string1);
    }
    }
    }
    else {SendClientMessage(playerid,white,"Du bist kein Fahrlehrer");}
    return 1;
    }