[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
  • Diese hier
    else if(Spieler[playerid][pFraktion] == 1 || Spieler[playerid][pFraktion] == 0 || Spieler[playerid][pFraktion] == 3 || Spieler[playerid][pFraktion] == 5 || Spieler[playerid][pFraktion] == 9 || Spieler[playerid][pFraktion] == 10 || Spieler[playerid][pFraktion] == 11))


    Nein TVPikachu, so wäre die Funktion die ich erlangen will nicht gegeben.

  • So dürfte es passen:
    for(new i=0;i<sizeof(fVehicleShop);i++)
    {
    if(vehicleid == fShopVehicles[i])
    {
    if(Spieler[playerid][pFraktion] == 1 || Spieler[playerid][pFraktion] == 0 || Spieler[playerid][pFraktion] == 3 || Spieler[playerid][pFraktion] == 5 || Spieler[playerid][pFraktion] == 9 || Spieler[playerid][pFraktion] == 10 || Spieler[playerid][pFraktion] == 11)
    {
    if(Spieler[playerid][pRank] == RANG_LEADER)
    {
    new Float:Pos[3];
    GetVehicleModelInfo(fVehicleShop[i][fVmodelid], VEHICLE_MODEL_INFO_SIZE, Pos[0], Pos[1], Pos[2]);
    InterpolateCameraPos(playerid,fVehicleShop[i][fVposX],fVehicleShop[i][fVposY],fVehicleShop[i][fVposZ],fVehicleShop[i][fVposX]+Pos[0],fVehicleShop[i][fVposY]-Pos[1],fVehicleShop[i][fVposZ],2500,CAMERA_MOVE);
    InterpolateCameraLookAt(playerid,fVehicleShop[i][fVposX]+Pos[0],fVehicleShop[i][fVposY]-Pos[1],fVehicleShop[i][fVposZ],fVehicleShop[i][fVposX],fVehicleShop[i][fVposY],fVehicleShop[i][fVposZ],2500,CAMERA_MOVE);
    FreezePlayer(playerid);
    strdel(DialogString, 0, sizeof(DialogString));
    format(DialogString, sizeof(DialogString), COLOR_HEX_BLUE"Wang Cars - Fraktionsfahrzeuge\n\n");
    format(DialogString, sizeof(DialogString), "%s"COLOR_HEX_BLUE"Fahrzeug: "COLOR_HEX_WHITE"%s\n"COLOR_HEX_BLUE"Preis: "COLOR_HEX_WHITE"$%d\n"COLOR_HEX_BLUE"Tankverbrauch: "COLOR_HEX_WHITE"%.2fL/KM\n", DialogString, fVehicleShop[i][fVName], fVehicleShop[i][fVPreis], VehicleData[fVehicleShop[i][fVmodelid]-400][vehTankVerbrauch]);
    format(DialogString, sizeof(DialogString), "%s"COLOR_HEX_BLUE"Tankgröße: "COLOR_HEX_WHITE"%.2fL\n\nWenn du dieses Fahrzeug kaufen möchtest, klicke auf den entsprechenden Button.\n", DialogString, VehicleData[fVehicleShop[i][fVmodelid]-400][vehMaxTank]);
    strcat(DialogString, COLOR_HEX_WHITE"Das Geld wird von deiner Hand abgehoben, und das Fahrzeug gehört dann automatisch zur Fraktion an!\nDieses lässt sich nicht auf die privaten Fahrzeuge übertragen, und lässt sich nur durch die Hälfte des Kaufpreises verkaufen!\nÜberleg gut, ob es dir Wert ist!");
    ShowPlayerDialog(playerid, DIALOG_BUYFRAKVEHICLE, DIALOG_STYLE_MSGBOX, "Fraktions Fahrzeug - Kaufen", DialogString, "Kaufen", "Abbrechen");
    return 1;
    }
    }
    else
    {
    FreezePlayer(playerid);
    RemovePlayerFromVehicle(playerid);
    UnfreezePlayer(playerid);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"** Diese Fahrzeuge können nur Gangs und Mafien kaufen.");
    }
    }
    }
    (Im Code von TVPikachu war noch ein Klammerfehler)


    Du musst eben bedenken, dass der Dialog nur angezeigt wird, wenn der Spieler pRank == RANG_LEADER hat. Hat er das nicht, ist aber trotzdem in einer Gang, dann kommt einfach gar nichts.
    Wenn das so gewollt ist passt es.


    Teste es mal.
    Wenn es nicht so ist wie du willst, wie soll die Funktion denn sein, die du erlangen willst?

  • Dann schreibe es so rum:
    for(new i=0;i<sizeof(fVehicleShop);i++)
    {
    if(vehicleid == fShopVehicles[i])
    {
    if(Spieler[playerid][pFraktion] == 1 || Spieler[playerid][pFraktion] == 0 || Spieler[playerid][pFraktion] == 3 || Spieler[playerid][pFraktion] == 5 || Spieler[playerid][pFraktion] == 9 || Spieler[playerid][pFraktion] == 10 || Spieler[playerid][pFraktion] == 11)
    {
    FreezePlayer(playerid);
    RemovePlayerFromVehicle(playerid);
    UnfreezePlayer(playerid);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"** Diese Fahrzeuge können nur Gangs und Mafien kaufen.");
    }
    else
    {
    if(Spieler[playerid][pRank] == RANG_LEADER)
    {
    new Float:Pos[3];
    GetVehicleModelInfo(fVehicleShop[i][fVmodelid], VEHICLE_MODEL_INFO_SIZE, Pos[0], Pos[1], Pos[2]);
    InterpolateCameraPos(playerid,fVehicleShop[i][fVposX],fVehicleShop[i][fVposY],fVehicleShop[i][fVposZ],fVehicleShop[i][fVposX]+Pos[0],fVehicleShop[i][fVposY]-Pos[1],fVehicleShop[i][fVposZ],2500,CAMERA_MOVE);
    InterpolateCameraLookAt(playerid,fVehicleShop[i][fVposX]+Pos[0],fVehicleShop[i][fVposY]-Pos[1],fVehicleShop[i][fVposZ],fVehicleShop[i][fVposX],fVehicleShop[i][fVposY],fVehicleShop[i][fVposZ],2500,CAMERA_MOVE);
    FreezePlayer(playerid);
    strdel(DialogString, 0, sizeof(DialogString));
    format(DialogString, sizeof(DialogString), COLOR_HEX_BLUE"Wang Cars - Fraktionsfahrzeuge\n\n");
    format(DialogString, sizeof(DialogString), "%s"COLOR_HEX_BLUE"Fahrzeug: "COLOR_HEX_WHITE"%s\n"COLOR_HEX_BLUE"Preis: "COLOR_HEX_WHITE"$%d\n"COLOR_HEX_BLUE"Tankverbrauch: "COLOR_HEX_WHITE"%.2fL/KM\n", DialogString, fVehicleShop[i][fVName], fVehicleShop[i][fVPreis], VehicleData[fVehicleShop[i][fVmodelid]-400][vehTankVerbrauch]);
    format(DialogString, sizeof(DialogString), "%s"COLOR_HEX_BLUE"Tankgröße: "COLOR_HEX_WHITE"%.2fL\n\nWenn du dieses Fahrzeug kaufen möchtest, klicke auf den entsprechenden Button.\n", DialogString, VehicleData[fVehicleShop[i][fVmodelid]-400][vehMaxTank]);
    strcat(DialogString, COLOR_HEX_WHITE"Das Geld wird von deiner Hand abgehoben, und das Fahrzeug gehört dann automatisch zur Fraktion an!\nDieses lässt sich nicht auf die privaten Fahrzeuge übertragen, und lässt sich nur durch die Hälfte des Kaufpreises verkaufen!\nÜberleg gut, ob es dir Wert ist!");
    ShowPlayerDialog(playerid, DIALOG_BUYFRAKVEHICLE, DIALOG_STYLE_MSGBOX, "Fraktions Fahrzeug - Kaufen", DialogString, "Kaufen", "Abbrechen");
    return 1;
    }
    }
    }
    }

  • Ich krieg die doofen Errors bei dem Simplen befehl nicht raus ^^


    wenn ich das else bei if weg lasse geht es, aber wenn ich dann als Cop oder Medic oder Fahrlehrer Duty gehe bekomme ich immer 3 Nachrichten: Du bist als Cop Duty, Du bist als Medic Duty, Du bist als Fahrlehrer Duty :/


    Spoiler anzeigen
    ocmd:duty(playerid,params[])
    {
    if(SpielerInfo[playerid][pTeam] == 1 || SpielerInfo[playerid][pTeam] == 2 || SpielerInfo[playerid][pTeam] == 3 || SpielerInfo[playerid][pTeam] == 4 || SpielerInfo[playerid][pTeam] == 5 || SpielerInfo[playerid][pTeam] == 6) {
    if(SpielerInfo[playerid][pDuty] != 1) {//Hier
    SpielerInfo[playerid][pDuty] = 1;
    SendClientMessage(playerid, Color_Red,"Du bist nun Duty als Cop"); }
    else {
    SpielerInfo[playerid][pDuty] = 0;
    SendClientMessage(playerid, Color_Red,"Du bist nun offDuty als Cop");
    }
    else if(SpielerInfo[playerid][pDuty] != 2) {//hier
    SpielerInfo[playerid][pDuty] = 2;
    SendClientMessage(playerid, Color_Red,"Du bist nun Duty als Medic"); }
    else {
    SpielerInfo[playerid][pDuty] = 0;
    SendClientMessage(playerid, Color_Red,"Du bist nun offDuty als Medic");
    }
    else if(SpielerInfo[playerid][pDuty] != 3) {//hier
    SpielerInfo[playerid][pDuty] = 3;
    SendClientMessage(playerid, Color_Red,"Du bist nun Duty als Fahrlehrer"); }
    else {
    SpielerInfo[playerid][pDuty] = 0;
    SendClientMessage(playerid, Color_Red,"Du bist nun offDuty als Fahrlehrer"); }
    }
    return 1;
    }


    C:\Users\Tobi\Desktop\SAMP\samp037_svr_RC1_win32\gamemodes\newrlll.pwn(1571) : error 029: invalid expression, assumed zero
    C:\Users\Tobi\Desktop\SAMP\samp037_svr_RC1_win32\gamemodes\newrlll.pwn(1571) : warning 215: expression has no effect
    C:\Users\Tobi\Desktop\SAMP\samp037_svr_RC1_win32\gamemodes\newrlll.pwn(1571) : error 001: expected token: ";", but found "if"
    C:\Users\Tobi\Desktop\SAMP\samp037_svr_RC1_win32\gamemodes\newrlll.pwn(1578) : error 029: invalid expression, assumed zero
    C:\Users\Tobi\Desktop\SAMP\samp037_svr_RC1_win32\gamemodes\newrlll.pwn(1578) : warning 215: expression has no effect
    C:\Users\Tobi\Desktop\SAMP\samp037_svr_RC1_win32\gamemodes\newrlll.pwn(1578) : error 001: expected token: ";", but found "if"
    C:\Users\Tobi\Desktop\SAMP\samp037_svr_RC1_win32\gamemodes\newrlll.pwn(2228) : warning 203: symbol is never used: "SaveVehicles"
    C:\Users\Tobi\Desktop\SAMP\samp037_svr_RC1_win32\gamemodes\newrlll.pwn(2228) : warning 203: symbol is never used: "adacoffen"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    4 Errors.



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • @TVPikachu: Bitte schön
    Hab übrigend noch die Fehlermeldung reingetahen

    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ja, klar. Laut der Nachricht soll das beides mal das Modell sein.
    Dann so:
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 488 && GetVehicleModel(GetPlayerVehicleID(playerid)) != 582)return SendClientMessage(playerid,COLOR_GREY,"** Du musst in einem News Van oder News Chopper sitzen.");

  • Kann man per Timer Explosionen erstellen mit einem eigenen Public?


    Natürlich :)


    //z.B. unter OnPlayerSpawn
    SetTimerEx("explode",1000,0,"i",playerid);


    forward explode(playerid);
    public explode(playerid) {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    return CreateExplosion(x, y, z, 12, 10.0); //würde den Spieler zum explodieren bringen xD
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Wie macht man das wenn man ein Tresor hat und da /rob eingibt und da dynamit kommt weiß ich CreateDynamicObject or CreateObject
    Aber wie mach ich das das es explodierte auch mit CreateExplosion ? Und fliegt die Tür das raus oder muss ich das object löschen ? Und aufm Boden neu erstellen ?

  • Wenn du den Streamer verwendest am besten CreateDynamicObject.
    CreateExplosion machst du per Timer einfach an der Position an der das Dynamit erstellt wird (wird ja immer die gleiche Position sein).
    Also per Timer:
    SetTimer("ExplodeDoor", 10000, false);


    forward ExplodeDoor();
    public ExplodeDoor()
    {
    //Eben entsprechend ausfüllen, wie du es haben willst:
    return CreateExplosion(xKoordinate, yKoordinate, zKoordinate, explosionsID, radius);
    }


    Die Türe fliegt normalerweise nicht weg. Lösche die Türe und erstelle sie am Boden wieder, oder setze Sie mit MoveDynamicObject dort hin.

  • Warum geht das Tor bitte nicht auf? Die Server Log printet richtig.
    CMD:auf(playerid)
    {
    if(IsPlayerInRangeOfPoint(playerid, 10.0, 244.11, 72.45, 1002.00))
    {
    if(Spieler[playerid][pFraktion] != 1)return
    MoveDynamicObject(LSPDObj[1], 247.5598, 72.4479, 1002.0016, 3);
    SetTimer("LSPDTor2",5000,0);
    printf("Tor 2-2");
    }
    return 1;
    }


    public LSPDTor2()
    {
    MoveDynamicObject(LSPDObj[1], 244.11, 72.45, 1002.00, 3);
    printf("Tor 2");
    return 1;
    }


    Gruß,
    Cheevy

  • arum geht das Tor bitte nicht auf?


    Achte auf die returns!


    Schreib es so:


    CMD:auf(playerid)
    {
    if(IsPlayerInRangeOfPoint(playerid, 10.0, 244.11, 72.45, 1002.00))
    {
    if(Spieler[playerid][pFraktion] != 1)return SendClientMessage(playerid,-1,"Sie dürfen das Tor nicht öffnen!");
    MoveDynamicObject(LSPDObj[1], 247.5598, 72.4479, 1002.0016, 3);
    SetTimer("LSPDTor2",5000,0);
    printf("Tor 2-2");
    }
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen