[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
  • Mal ein paar Verständnis fragen.


    In Pawn ist so richtig vie im Dokument "new" definiert. Darf ich das alles rausschmeißen?


    Und zweitens -> Gibt es eine Abfrage womit ich abfragen kann ob der Player in einer Fraktion ist? Und wenn ja Wie.?


  • Gibt es eine Abfrage womit ich abfragen kann ob der Player in einer Fraktion ist? Und wenn ja Wie.?

    Das hängt von deinem Script ab mit welchem Code du das Abfragen musst.
    Ich frage das zum Bespiel so ab (Achtung: Kann bei dir komplett anders sein!):



    if (isPlayerInFrakt(playerid,1)); //Die 1 steht für die Fraktion die zu mit der 1 definiert hast.
    {
    ...//Hier muss rein was geschehen soll
    return 1;
    }

  • public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys == 16)
    {
    new HausID = GetNearHausID(playerid);
    if(HausID > 0 && strlen(Haus[HausID][hBesitzer]) == (SpielerInfo[playerid][pName])
    {
    SendClientMessageToAll(COLOR_YELLOW, "-> Es FUNZT.");
    }

    /////SHOP AMMUNATION
    if(IsPlayerInRangeOfPoint(playerid,2,295.9164,-38.1450,1001.5156))
    {
    ShowPlayerDialog(playerid,DIALOG_AMMUNATION,DIALOG_STYLE_LIST,"{ffffff}Ammunation Los Santos","Pistole 200$\nMP5 500$","Kaufen","Abbrechen");
    }
    }
    return 1;
    }


    G:\GTA San Andreas\SAMP-Server\mode.pwn(4) : error 001: expected token: "}", but found ";"
    G:\GTA San Andreas\SAMP-Server\mode.pwn(4) : error 036: empty statement
    G:\GTA San Andreas\SAMP-Server\mode.pwn(15) : error 010: invalid function or declaration


    Nehme ich den ganzen Teil mit HausID raus funktioniert es einwandfrei ich bin mir fast sicher das ich einen Klammerfehler habe bzw. was vergessen habe aber was?

    Einmal editiert, zuletzt von Zyankali ()

  • 2 Fragen:


    Ich habe einen /jetpack Spawn Command. Aber die Jetpacks verschwinden nicht automatisch. Muss ich dafür wirklich Destroy und einen timer benutzen? :(


    Du kannst diese auch nach einer Zeit zerstören lassen, dafür musst du nur für jedes erstellte Jackpack Object einen SetTimerEx starten und die objektid übermitteln.

    KleineHilfe 2.0

  • Ich möchte einen Wert erstellen der gesetzt wird wenn sich ein Spieler in seinem Haus befindet bzw. wenn er es betritt und wieder gelöscht wird wenn er es verlässt und ich frage mich grade welches wohl die sinnvollste art wäre diesen anzulegen?


    MYSQL wäre eine Möglichkeit nur frag ich mich ob das wirklich nötig ist, Pvars könnte ich wohl nutzen nur wurde mir im laufe meiner Zeit hier bis her immer eingeprägt das Pvars böse ist und eigentlich auch nie genutzt werden muss daher es immer andere Möglichkeiten gibt.

  • Ich möchte einen Wert erstellen der gesetzt wird wenn sich ein Spieler in seinem Haus befindet bzw. wenn er es betritt und wieder gelöscht wird wenn er es verlässt und ich frage mich grade welches wohl die sinnvollste art wäre diesen anzulegen?


    MYSQL wäre eine Möglichkeit nur frag ich mich ob das wirklich nötig ist, Pvars könnte ich wohl nutzen nur wurde mir im laufe meiner Zeit hier bis her immer eingeprägt das Pvars böse ist und eigentlich auch nie genutzt werden muss daher es immer andere Möglichkeiten gibt.


    MySQL hier einzubringen ist wohl sinnlos es kommt drauf an was du damit genau machen willst beziehungsweise was du speichern temporär speichern willst.


    Sind es nur zwei werte kannst du auch umschwenken in die binärerichtung


    enum 1Bit:(<<= 1) {
    House,
    };
    new 1Bit:EnterHouse[MAX_PLAYERS];

    setzen :
    EnterHouse[playerid] |= House; //an true
    EnterHouse[playerid] &= ~House; //aus false
    ausgeben:
    if(EnterHouse[playerid] & House) //soll der wert true sein
    oder
    if(!(EnterHouse[playerid] & House)) // soll der wert alles außer true sein


    soll es ein wert sein zwischen 0 -255 gehen auch char-arrays das bedeutet pro zelle 4 bits


    new EnterHouse[MAX_PLAYERS char];
    EnterHouse{MAX_PLAYERS} = 10;


    Oder was auch möglich ist , ist eine normale array
    new EnterHouse[MAX_PLAYERS];

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Hat jemand ne Funktion, mit der ich mit Hilfe von 2 Punkten die Angle raus bekomme?
    Also wenn ich X1,Y1,X2,Y2 angebe, will ich wissen was die angle wäre um von (x1/y1) zu (x2/y2) zu schauen.


    im Endeffkt kann man das berehnen, will aber die Funktion nicht neuschreiben wenn es die schon gibt.

  • Hat jemand ne Funktion, mit der ich mit Hilfe von 2 Punkten die Angle raus bekomme?
    Also wenn ich X1,Y1,X2,Y2 angebe, will ich wissen was die angle wäre um von (x1/y1) zu (x2/y2) zu schauen.


    im Endeffkt kann man das berehnen, will aber die Funktion nicht neuschreiben wenn es die schon gibt.


    ZAngle, so dass Punkt1 richtung Punkt2 gedreht ist ?


    Float:GetZAngle(Float:fX,Float:fY,Float:tX,Float:tY)// f = From, t = To
    {
    return atan2( floatsub(fX, tX), floatsub(fY, tY) ) + 180.0;
    }


  • ZAngle, so dass Punkt1 richtung Punkt2 gedreht ist ?


    Float:GetZAngle(Float:fX,Float:fY,Float:tX,Float:tY)// f = From, t = To
    {
    return atan2( floatsub(fX, tX), floatsub(fY, tY) ) + 180.0;
    }


    Correkt. danke dir.

  • Ich habe ein Carspawn Script von Black aus "Nützliche Codeschnipsel".


    ocmd:v(playerid,params[])
    {
    new Float:vehx,Float:vehy,Float:vehz;
    new vehid,cc1,cc2,string[128];
    if(sscanf(params,"iii",vehid,cc1,cc2))return SendClientMessage(playerid, Rot,"Nutzung: /v [Vehicle ID] [Farbe 1] [Farbe 2]");
    GetPlayerPos(playerid,vehx,vehy,vehz);
    new carid = CreateVehicle(vehid,vehx,vehy,vehz,3,cc1,cc2,0);
    SetVehicleNumberPlate(carid,"~>gg<~");
    PutPlayerInVehicle(playerid, carid, 0);
    format(string,sizeof(string),"FahrzeugID: %d",GetVehicleModel(GetPlayerVehicleID(playerid)));
    SendClientMessage(playerid,Rot,string);
    return 1;
    }

    Und die Grundfunktion ist so: CreateVehicle(Integer, Farbe, x,y,z,color1,color2,-1)


    Jetzt möchte ich, dass aber das Car Despawnt wird, wenn der Player aussteigt. Wie kann ich abfragen ob der Player noch im Auto sitzt?




    Andere Frage noch:
    Wie kann ich bestimmte Vehicle IDs nur für Admins zugänglich machen?

  • Du könntest das ganze so verändern:


    new bool:spawnedcar[MAX_VEHICLES];
    ocmd:v(playerid,params[])
    {
    new Float:vehx,Float:vehy,Float:vehz;
    new vehid,cc1,cc2,string[128];
    if(sscanf(params,"iii",vehid,cc1,cc2))return SendClientMessage(playerid, Rot,"Nutzung: /v [Vehicle ID] [Farbe 1] [Farbe 2]");
    GetPlayerPos(playerid,vehx,vehy,vehz);
    new carid = CreateVehicle(vehid,vehx,vehy,vehz,3,cc1,cc2,0);
    SetVehicleNumberPlate(carid,"~>gg<~");
    PutPlayerInVehicle(playerid, carid, 0);
    format(string,sizeof(string),"FahrzeugID: %d",GetVehicleModel(GetPlayerVehicleID(playerid)));
    SendClientMessage(playerid,Rot,string);
    spawnedcar[carid] = true;
    SetPVarInt(playerid,"latestcar",carid);
    return 1;
    }


    Bei OnPlayerStateChange


    if(newstate == PLAYER_STATE_ONFOOT && oldstate == PLAYER_STATE_DRIVER)
    {
    if(spawnedcar[GetPVarInt(playerid,"latestcar")] == true)
    {
    DestroyVehicle(GetPVarInt(playerid,"latestcar"));
    spawnedcar[GetPVarInt(playerid,"latestcar")] = false;
    }
    }

  • Ich habe folgende stocks und muss diese nun in einem Filterscript anwenden allerdings stehen die stocks im Gamemode selbst und ich weiß leider nicht wie genau es auszusehen hat ich hatte es bereits früher mal versucht gehabt allerdings mit keinem Erfolg und nur massig Fehlermeldungen ich nutze sonst keine Filterscripts aber bei Snipers DT_DynamicCar lässt es sich kaum vermeiden.


    stock XGivePlayerMoney(playerid,menge)
    {
    SpielerInfo[playerid][pGeld] += menge;
    GivePlayerMoney(playerid, menge);
    }
    stock XSetPlayerMoney(playerid,menge)
    {
    SpielerInfo[playerid][pGeld] = menge;
    ResetPlayerMoney(playerid);
    }


    Danke bereits im voraus.

    2 Mal editiert, zuletzt von Zyankali ()

  • return GivePlayerMoney(playerid, menge);
    Beim 2. Stock musst du sein Guthaben zuerst resetten und dann geben lassen.
    Probier es so


    stock XGivePlayerMoney(playerid,menge)
    {
    SpielerInfo[playerid][pGeld] += menge;
    return GivePlayerMoney(playerid, menge);
    }
    stock XSetPlayerMoney(playerid,menge)
    {
    ResetPlayerMoney(playerid);
    SpielerInfo[playerid][pGeld] = menge;
    return GivePlayerMoney(playerid, menge);
    }

    KleineHilfe 2.0

  • Die Stocks funktionieren so wie sie sind ich habe bloß das problem das ich sie nicht im filterscript unter kriege da ich ich sie ja doppelt habe wenn ich sie ins filterscript schreiben würde und ich nicht weiß wie ich mich vom filterscript aus auf stocks beziehen kann die im gamemode stehen.


    Ich glaube das was ich brauche nennt sich CallRemoteFunction aber ich weiß einfach nicht wie ich das anwenden soll.


    Hab mal ein wenig gebastelt ist das richtig so?


    CallRemoteFunction("XGivePlayerMoney", "d", "d", playerid, menge);


    CallRemoteFunction("XSetPlayerMoney", "d", "d", playerid, menge);

    Einmal editiert, zuletzt von Zyankali ()