[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
  • 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.

  • 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.");

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • 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


  • Ich will ja net den Spieler Explodieren lassen 8| , sondern sowas wie in einem Apokalypsen Film, da wo andauernd etwas hoch geht, und das will ich in samp realisieren.
    Also das ein Paar Explosionen automatisch Hochgehen, ohne das der Spieler betroffen ist. :D

  • Also das ein Paar Explosionen automatisch Hochgehen, ohne das der Spieler betroffen ist


    Dann mach einfach sowas:


    //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+random(75)+25, y+random(75)+25, z, 12, 10.0); //würde den Spieler zum explodieren bringen xD
    }


    Dann finde zufällig um den Spieler herum Explosionen statt ;)

    ast2ufdyxkb1.png


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



  • Also wenn der Spieler irgendwo ist, findet in der Nähe eine Explosion statt?
    Wenn Ja: Sowas hab ich gebraucht. :D Děkuju

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