Beiträge von Modder

    2 Warnings und es funktioniert nicht... :D


    #define FILTERSCRIPT


    #include <a_samp>


    #if defined FILTERSCRIPT


    forward level1(playerid); // muss anders als level heißen :D



    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print(" Blank Filterscript by your name here");
    print("--------------------------------------\n");
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    level1(playerid); // Lässt das Level erscheinen.
    /* Du möchtest ja das level von dem angegeben spiler verwenden, also geben wir den parameter "playerid" mit dazu. */
    return 1;
    }



    public level1(playerid)
    /* nach dem Public kommt direkt die klammer, und erst dann kannst du variablen mit new erstellen */
    {
    new level = GetPlayerScore(playerid);
    new string[10];
    /* ein string mit der länge von 2 ist mit sicherheit zu klein, dur brauch ja allein schon für das wort "Level" 5 zeichen. Also:
    Level = 5 zeichen
    : = 1 Zeichen
    Die zahl (ich geh jetzt mal davon aus dass das level nicht höher als 999 sein wird) also nochmal 3 zeichen.
    Macht 5+1+3+1 = 10*/
    format(string, sizeof string, "Level:%d", level);
    /* die variable "level" ist ein integer, also eine zahl. Und für zahlen wird %d oder %i benutzt. %s ist für strings, also zeichenketten.*/
    new Text:leveltext;
    /* du hast der variable "level" schon den Score zugewiesen, also musst du für den/das Textdraw eine andere bzw neue variable nehmen. Und bei textDraw muss der
    Text: -tag davon sein.*/
    // TextDrawHideForAll(leveltext);
    TextDrawHideForPlayer(leveltext);
    leveltext = TextDrawCreate(498,110,string);
    TextDrawLetterSize(leveltext, 0.6, 1.8);
    TextDrawFont(leveltext, 3);
    TextDrawSetOutline(leveltext, 2);
    return 1;
    }


    public OnFilterScriptExit()
    {
    return 1;
    }



    #endif



    C:\Users\xxx\Desktop\samp03csvr_R2-2_win32\filterscripts\Level1.pwn(42) : warning 213: tag mismatch
    C:\Users\xxx\Desktop\samp03csvr_R2-2_win32\filterscripts\Level1.pwn(42) : warning 202: number of arguments does not match definition
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Warnings.

    Hab ich gemacht, bleibt immernoch weg. Keine Ahnung ob das auch damit was zu tun hat, dass mein Uhr-script nichtmehr angezeigt wird, obwohl er eingefügt ist und eben noch ging .



    //EDIT: Die Uhr wird wieder angezeigt!

    Entweder stell ich mich gerade dumm an oder da stimmt immernoch was nicht, das gibt mir nen fehler in zeile 20 und 29 an und meint level ist undefined...:


    #define FILTERSCRIPT


    #include <a_samp>


    #if defined FILTERSCRIPT


    forward level1(playerid); // muss anders als level heißen :D



    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print(" Blank Filterscript by your name here");
    print("--------------------------------------\n");
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    level(playerid); // Lässt das Level erscheinen.
    /* Du möchtest ja das level von dem angegeben spiler verwenden, also geben wir den parameter "playerid" mit dazu. */
    return 1;
    }



    public level1(playerid)
    /* nach dem Public kommt direkt die klammer, und erst dann kannst du variablen mit new erstellen */
    {
    new level = GetPlayerScore(playerid);
    new string[10];
    /* ein string mit der länge von 2 ist mit sicherheit zu klein, dur brauch ja allein schon für das wort "Level" 5 zeichen. Also:
    Level = 5 zeichen
    : = 1 Zeichen
    Die zahl (ich geh jetzt mal davon aus dass das level nicht höher als 999 sein wird) also nochmal 3 zeichen.
    Macht 5+1+3+1 = 10*/
    format(string, sizeof string, "Level:%d", level);
    /* die variable "level" ist ein integer, also eine zahl. Und für zahlen wird %d oder %i benutzt. %s ist für strings, also zeichenketten.*/
    new Text:leveltext;
    /* du hast der variable "level" schon den Score zugewiesen, also musst du für den/das Textdraw eine andere bzw neue variable nehmen. Und bei textDraw muss der
    Text: -tag davon sein.*/
    TextDrawHideForAll(leveltext);
    leveltext = TextDrawCreate(498,110,string);
    TextDrawLetterSize(leveltext, 0.6, 1.8);
    TextDrawFont(leveltext, 3);
    TextDrawSetOutline(leveltext, 2);
    return 1;
    }


    public OnFilterScriptExit()
    {
    return 1;
    }

    Danke für die Erklärungen...Funktions und Variablendefinition werd ich mir nochmal ansehen.


    maddin: Beim compilen haut er mir das warning raus und das Level wird auch nicht angezeigt:
    C:\Users\xxx\Desktop\samp03csvr_R2-2_win32\filterscripts\Level1.pwn(28) : warning 219: local variable "level" shadows a variable at a preceding level
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Warning.

    Könnt ihr mir sagen was dadran falsch ist?


    #define FILTERSCRIPT


    #include <a_samp>


    #if defined FILTERSCRIPT


    forward level();


    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print(" Blank Filterscript by your name here");
    print("--------------------------------------\n");
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    level(); // Lässt das Level erscheinen.
    return 1;
    }



    public level()
    new level = GetPlayerScore(playerid);
    new string[2];
    {
    format(string, sizeof string, "Level:%s", level);
    TextDrawHideForAll(level);
    level = TextDrawCreate(20,110,string);
    TextDrawLetterSize(level, 0.6, 1.8);
    TextDrawFont(level, 3);
    TextDrawSetOutline(level, 2);
    return 1;
    }


    public OnFilterScriptExit()
    {
    return 1;
    }



    #endif


    C:\Users\xxx\Desktop\samp03csvr_R2-2_win32\filterscripts\Level.pwn(25) : error 003: declaration of a local variable must appear in a compound block
    C:\Users\xxx\Desktop\samp03csvr_R2-2_win32\filterscripts\Level.pwn(27) : error 055: start of function body without function header
    C:\Users\xxx\Desktop\samp03csvr_R2-2_win32\filterscripts\Level.pwn(34) : error 010: invalid function or declaration
    C:\Users\xxx\Desktop\samp03csvr_R2-2_win32\filterscripts\Level.pwn(44) : warning 203: symbol is never used: "string"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    3 Errors.

    SBIKA:


    Die Funktion mit der ModelID funktioniert bei Abfrage, ob der Spieler im Sentinel sitzt aber auch, d.h. wenn ich einsteige haut er mir auch die Message raus:
    public OnPlayerEnterVehicle(playerid, vehicleid)
    {
    new model = GetVehicleModel(vehicleid);
    if(model == 405)
    if(Tmission[playerid] == 0)
    {
    SendClientMessage(playerid,dunkelgrau,"|--Dies ist das Fahrzeug für die Transporter-Mission(benutze es mit /Transporter).");
    SendClientMessage(playerid,rot,"**Du hast 10 Sekunden die Mission zu starten, sonst wirst du aus dem Fahrzeug entfernt.");
    SetTimerEx("RemovePlayer",10000,0,"i",playerid);
    }
    return 1;
    }


    und jetzt sagt mir aber mal, wieso der hierbei nichts macht(nichtmal die Nachricht schickt, dass ich nicht an der richtigen Position stehe):


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    new model = GetVehicleModel(vehicleid);


    if (strcmp("/Transporter", cmdtext, true, 10) == 0)
    if(IsPlayerInRangeOfPoint(playerid,10.0,1183.7532,-1229.4167,18.4297))
    {
    if(model == 405)
    {
    SendClientMessage(playerid,dunkelgrau, "|--Du hast den Auftrag angenommen.");
    SendClientMessage(playerid, weiß, "|--Begib dich zu der Garage deines Komplizen.");
    SendClientMessage(playerid, weiß, "|--Er wird deinen Wagen für den Auftrag modifizieren.");
    SetPlayerCheckpoint(playerid,2505.6121,-1695.0114,13.5581,5.0);
    Checkpoint[playerid] = 1;
    Tmission[playerid] = 1;
    return 1;
    }
    else
    {
    SendClientMessage(playerid,rot,"**Du sitzt nicht im Fahrzeug für die Transporter-Mission.");
    }
    }
    else
    {
    SendClientMessage(playerid,rot,"**Du befindest dich nicht am richtigen Ort.");
    }
    return 1;


    Wie gesagt, es passiert einfach NICHTS! 8|

    Hab mal wieder nen Problem:


    Hab einen Befehl erstellt, bei dem in einem Auto mit ID 405 bei Eingabe von "/Transporter" ein Auftrag gestartet wird. Sitze ich in dem Auto und gebe den Befehl ein passiert jedoch nichts. Die anderen Aktionen aus dem FS funktionieren, zB. beim Eintritt in das Auto kommt ne Message mit dem Auftrag und startet man den nicht, wird man nach 10s rausgeworfen, etc. also der FS funktioniert, nur beim "/Transporter"-Befehl sitzt der Wurm, aber wo?


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    new model = GetVehicleModel(vehicleid);


    if (strcmp("/Transporter", cmdtext, true, 10) == 0)
    if(IsPlayerInRangeOfPoint(playerid,20.0,1183.7532,-1229.4167,18.4297))
    {
    if(model == 405)
    {
    SendClientMessage(playerid,dunkelgrau, "|--Du hast den Auftrag angenommen.");
    SendClientMessage(playerid, weiß, "|--Begib dich zu der Garage deines Komplizen.");
    SendClientMessage(playerid, weiß, "|--Er wird deinen Wagen für den Auftrag modifizieren.");
    SetPlayerCheckpoint(playerid,2505.6121,-1695.0114,13.5581,5.0);
    Checkpoint[playerid] = 1;
    Tmission[playerid] = 1;
    return 1;
    }
    else
    {
    SendClientMessage(playerid,rot,"**Du sitzt nicht im Fahrzeug für die Transporter-Mission.");
    }
    }
    return 1;
    }

    danfai:
    Die beiden Scripts an sich sind auch fehlerfrei und machen keine Probleme beim compilen. Mein Problem besteht weiterhin dadrin, dass der Server die 2 Filterscripts verwechselt. Der Zeitungsjungenjob geht einwandfrei, aber starte ich den Paketbotenjob, geht erst alles richtig, also Nachrichten,etc. und wenn ich den 1.CP erreiche dann kommt quasi das Ende vom Paketbotenjob, sprich er schmeißt mich aus dem Fahrzeug, gibt mir Geld und sagt, ich hätte den Job des Zeitungsjungen erfolgreich beendet.

    Hier die wichtigen Ausschnitte aus dem Script:



    new CheckpointZj[MAX_PLAYERS];
    new Zjmission[MAX_PLAYERS];


    forward Zjmissionfail(playerid);
    forward RemovePlayerZj(playerid);



    AddStaticVehicle(481,2148.2803,-1761.2505,13.0660,315.7883,46,46); // Zjbike 1



    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    new model = GetVehicleModel(vehicleid);


    if (strcmp("/Zeitungsjunge", cmdtext, true, 10) == 0)
    if(IsPlayerInRangeOfPoint(playerid,10.0,2146.4231,-1759.4010,13.5488))
    {
    if(model == 481)
    {
    SendClientMessage(playerid, gruen, "|--Du bist nun Zeitungsjunge in Ganton.");
    SendClientMessage(playerid, gruen, "|--Fahr entlang der angezeigten Route");
    SendClientMessage(playerid, gruen, "|--und liefer dort deine Zeitungen ab.");
    SetPlayerCheckpoint(playerid,2154.3518,-1789.3604,13.0862,5.0);
    CheckpointZj[playerid] = 11;
    Zjmission[playerid] = 1;
    return 1;
    }
    else
    {
    SendClientMessage(playerid, 0xCC7733FF, "**Du sitzt auf keinem Fahrrad für Zeitungsjungen!");
    }
    }
    else if(model == 481)
    {
    SendClientMessage(playerid, 0xCC7733FF, "**Du befindest dich nicht an der Startposition.");
    }
    return 1;
    }



    public OnPlayerEnterCheckpoint(playerid)
    {
    new randomtrinkgeld = random(2)-1;
    new Trinkgeld = random(15);
    new string[256];



    if(CheckpointZj[playerid] == 11)
    {
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,2153.5623,-1807.8582,13.1118,5.0); //CP1
    CheckpointZj[playerid] = 12;


    if(randomtrinkgeld != 0)
    {
    }
    else if(randomtrinkgeld != 1)
    {
    GivePlayerMoney(playerid,Trinkgeld);
    format(string, sizeof(string), "|--Du hast %d$ Trinkgeld erhalten.",Trinkgeld);
    SendClientMessage(playerid,geldgruen,string);
    }
    }

    else if(CheckpointZj[playerid] == 12)
    {
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,2142.9766,-1761.1207,13.5508,5.0); //CP1
    CheckpointZj[playerid] = 13;


    if(randomtrinkgeld != 0)
    {
    }
    else if(randomtrinkgeld != 1)
    {
    GivePlayerMoney(playerid,Trinkgeld);
    format(string, sizeof(string), "|--Du hast %d$ Trinkgeld erhalten.",Trinkgeld);
    SendClientMessage(playerid,geldgruen,string);
    }
    SendClientMessage(playerid, gruen, "Fahr´ zurück und stell dein Fahrrad in der Markierung ab.");
    }

    else if(CheckpointZj[playerid] == 13)
    {
    DisablePlayerCheckpoint(playerid); //CP10
    SendClientMessage(playerid,gruen,"|--Du hast deine Arbeit als Zeitungsjunge erfolgreich beendet!");
    GivePlayerMoney(playerid,500);
    SendClientMessage(playerid,geldgruen, "|--Dir wurden 500$ Gehalt gutgeschrieben.");
    Zjmission[playerid] = 0;
    RemovePlayerFromVehicle(playerid);
    }
    return 1;
    }



    public Zjmissionfail(playerid)
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    new model = GetVehicleModel(vehicleid);


    if(model == 481)
    {
    }
    else
    {
    SendClientMessage(playerid,rot,"**Job als Zeitungsjunge gescheitert!");
    DisablePlayerCheckpoint(playerid);
    Zjmission[playerid] = 0;
    }
    return 1;
    }


    public RemovePlayerZj(playerid)
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    new model = GetVehicleModel(vehicleid);


    if(model == 481)
    if(Zjmission[playerid] == 0)
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,rot,"**Du hast keinen Job als Zeitungsjungen gestartet!");
    }
    return 1;
    }




    EDIT: Der Paketboten-Script ist genau so aufgebaut wie dieser hier, nur ohne die Trinkgeldfunktion.

    danfai:
    Ich weiß, das ist auch so gedacht, dass der Spieler bei Erreichen der Parkposition das Auto automatisch verlässt... Mein Problem ist aber, dass der Server mir erlaubt den Paketbotenjob anzunehmen, mir den ERSTEN CP anzeigt, ich hinfahre und der Server dann quasi das gesamte Ende vom Zeitungsjungenjob anwendet, also mich aus dem Auto rausschmeißen, mir Gehalt überweisen und die Nachricht des erfolgreichen Beendens, schickt.


    maddin: Ein paar Posts weiter oben(bzw auch hier in diesem) findest du eine detaillierte Beschreibung.

    Ich fahre auf den CP zu, werd rausgeschmissen und das Auto rollt weiter, nach gewisser Zeit respawnt es dann wieder an der angedachten Position.


    Hier der letzte Checkpoint vom Paketboten:



    public OnPlayerEnterCheckpoint(playerid)
    {
    new Lohn = random(500)+500;
    new string[256];



    (... hier sind die vorigen Checkpoints! )

    else if(Checkpointp[playerid] == 10)
    {
    DisablePlayerCheckpoint(playerid); //FCP10
    SendClientMessage(playerid,gruen,"|--Du hast den Job als Paketbote erfolgreich beendet!");
    GivePlayerMoney(playerid,Lohn);
    format(string, sizeof(string), "|--Dir wurden %d$ gutgeschrieben.",Lohn);
    SendClientMessage(playerid,geldgruen,string);
    Pmission[playerid] = 0;
    RemovePlayerFromVehicle(playerid);
    }
    return 1;
    }

    Und schon folgt die nächste Frage:


    Habe 2 Filterscripts erstellt, Paketbote und Zeitungsjunge.
    Beide nach gleichem System mit dem Abfahren von Checkpoints und bei Erreichen der Parkposition wird der Spieler aus dem Fahrzeug entfernt.


    Mein Problem liegt jetzt darin, dass ich den Job als Zeitungsjunge einwandfrei abfahren kann, aber bei dem Paketboten schmeißt er mich, bei Erreichen des ersten Checkpoints, sofort aus dem Auto und zeigt die Nachricht an, die am Ende vom Zeitungsjungenjob eintritt.


    Gibts da irgendein globales Problem, dass er die Checkpoints der beiden Fliterscripts verwechselt oder braucht ihr unbedingt die beiden, fehlerfreien Scripts ums euch anzusehen?

    Hab mal wieder ne Frage:
    Wie kann man festsetzen, dass ein bestimmter Lohn für eine Arbeit ZWISCHEN 2 Werten liegt? Sagen wir mal 500$ und 1000$.


    Mein Scriptschnipsel:
    new Lohn = random(1000);


    Hier legt er den Lohn ja nur zufällig fest zwischen 1$ und 1000$.

    Hab ich eben gemacht und jetzt funktioniert es! Danke euch. :)
    Aber eine Frage bleibt noch und zwar, wie man die rechte Leiste bei Pawno mit Befehlen füllen kann. Hab keine Ahnung wie man das macht und bei jedem Start von Pawno haut er mir raus:


    Failed Set Data for "


    Hat das was damit zu tun?