Script Problem

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
  • Hey alle zusammen,
    ich habe da mal ein Problem und zwar.
    Ich möchte in meinem Script das es, wenn man jemanden Tötet 500$ und 1 Punkt also 1 Score verdient.
    Aber wenn man stirbt wieder 500$ und 1 Punkt abgezogen werden außer man tötet jemanden aus dem Auto also Drive by egal ob überfahren und schießen, 800$ und 3 Punkte abgezogen wird.
    Und ich komme ab hier dann nicht mehr weiter.
    public OnPlayerDeath(playerid, killerid, reason)
    {
    SendDeathMessage(killerid, playerid, reason);

    if(Gang[playerid]=Gang[killerid])
    {
    GivePlayerMoney(killerid, -800);
    SetPlayerScore(killerid, GetPlayerScore(killerid)-3);
    return 1;
    }


    GivePlayerMoney(killerid,500);
    SetPlayerScore(killerid, GetPlayerScore(killerid)+1);


    return 1;
    }


    public OnVehicleSpawn(vehicleid)
    {
    return 1;
    }


    public OnVehicleDeath(vehicleid, killerid)
    {


    return 1;
    }

    Pls help :thumbup:

  • Also, ich glaube er meint, dass wenn man z.b jemanden mit Drive By killt, dass der Getötete dann 800$ und 3 Score verliert, dass kannst du machen, indem du überprüfst ob die Killerid im Auto ist oder nicht...


    Vielleicht so, aber ich bin mir nicht sicher...
    public OnPlayerDeath(playerid, killerid, reason)
    {
    SendDeathMessage(killerid, playerid, reason);


    if(Gang[playerid]=Gang[killerid])
    {
    {
    GivePlayerMoney(killerid, -800);
    SetPlayerScore(killerid, GetPlayerScore(killerid)-3);
    return 1;
    }
    else
    {
    if IsPlayerInVehicle(killerid,vehicleid);
    GivePlayerMoney(playerid,-800);
    SetPlayerScore(playerid,-3);
    }


    GivePlayerMoney(killerid,500);
    SetPlayerScore(killerid, GetPlayerScore(killerid)+1);



    return 1;
    }


    Edit:/ Ops hab übersehen, das du nur was geändert haben wolltest... einfach anpassen, sry ;)

  • Trotzdem ist es falsch müsste so aussehen wenn schon:
    if(IsPlayerInAnyVehicle(killerid))


    Du darfs KEIN ; hinter einer If Abfrage verwenden und es muss in Klammern stehen was hinter einer if Abfrage ist. Was du gezeigt hattest würde Error geben im Script und 100%tig NICHT Funktionieren. Dazu wird vehicleid NIE definiert.

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

  • Soory hab meine frage garnicht gepostet.
    also bei mir ist das irgend wie genau andersrum ^^
    wenn ich jemanden kille ganz normal krige ich grld abgezogen anstatt das ich etwas kriege und wenn ich sterbe kriege ich was :D
    ich weiß nicht wo das problem ist ^^

  • if(Gang[playerid]=Gang[killerid])


    ist immer erfüllt da immer zuweißbar - vgl = und == (der Compiler gibt da doch normalweise ne Warnung aus, oder?

    GameMode / Filterscript / Plugin Development via
    - PAWN / C/C++
    - Database (mySQL) & Filebased - Systems


    Webdevelopment / Interfaces Webapplications - SA:MP Server via
    - HTML & CSS
    - PHP, JavaScript, Ajax

  • Ja also ich habe 3 Errors vielleicht ist es ja eins davon

    Zitat

    C:\Users\Eddi\Desktop\samp03bsvr_R2_win32\gamemodes\Gta-Gangwars.pwn(504) : warning 217: loose indentation
    C:\Users\Eddi\Desktop\samp03bsvr_R2_win32\gamemodes\Gta-Gangwars.pwn(507) : warning 217: loose indentation
    C:\Users\Eddi\Desktop\samp03bsvr_R2_win32\gamemodes\Gta-Gangwars.pwn(885) : warning 211: possibly unintended assignment
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


    vielleicht wisst ihr ja auch wieso die anderen Fehler auftauchen ^^

  • Das sind drei Warnungen, bei Fehlern würde das Script nicht compiled werden.


    Nochmal


    if(Gang[playerid]=Gang[killerid])


    ist immer erfüllt da immer zuweißbar (außer Gang[killerid]=0). Das selbe gilt höchstwarsch. für die Warnung in Zeile 885 die ich nicht sehen kann, da nicht gegeben.


    "loose indentation" kannst wort-wörtlich übersetzen. In deinem Code verwendest du mal mehr tabs mal weniger. Pro Block immer die gleiche Anzahl von Tabs verwenden (min. jedoch einen).

    GameMode / Filterscript / Plugin Development via
    - PAWN / C/C++
    - Database (mySQL) & Filebased - Systems


    Webdevelopment / Interfaces Webapplications - SA:MP Server via
    - HTML & CSS
    - PHP, JavaScript, Ajax

  • alles klar danke dir :thumbup: :thumbup:
    aber muss ich jetzt nur das if weg machen und dann geht es so wie ich es wollte?

  • Denke nicht, du möchtest ja einen Vergleich anstellen und dafür brauchst den Vergleichsoperator (==) anstelle vom Zuweisungsoperator (=) - also prinzipiell zwei = schreiben anstellen von einem:


    if(Gang[playerid]==Gang[killerid])

    GameMode / Filterscript / Plugin Development via
    - PAWN / C/C++
    - Database (mySQL) & Filebased - Systems


    Webdevelopment / Interfaces Webapplications - SA:MP Server via
    - HTML & CSS
    - PHP, JavaScript, Ajax


  • hoffe das kein fehler drinn ist habs nicht getestet


    wenn teamkill ist standart -3 punkte -800 (wenn der teamkill macht mit auto, usätzlich -800dollar und -3 punkte ergibt -1600 und 6 punkte das opfer bekommt kein abzug.
    bem nach regeln kill läuft es nach vorstellung


    edit queltext korektur

    2 Mal editiert, zuletzt von Der Echte Gott ()