[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
  • public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == REGISTER)
    {
    if(response == 0)
    {
    SendClientMessage(playerid,sonderrot,"ACHTUNG: Registrierung abgebrochen & du wurdest gekickt!"); //; vergessen
    371 -> Kick(playerid);
    return 1;
    }
    if(response == 1)
    {
    if(!strlen(inputtext))
    {
    ShowPlayerDialog(playerid,REGISTER,DIALOG_STYLE_INPUT,"Registerierung","Bitte wähle ein sicheres Passwort:","Registrieren","Abbrechen");
    return 1;
    }
    381 -> Register(playerid,inputtext); // Es heißt inputtext, nicht unputtext
    return 1;
    }
    }
    return 1;
    }


    public OnPlayerClickPlayer(playerid, clickedplayerid, source)
    {
    return 1;
    }


    stock Register(playerid,key[])
    {
    new Accounts[64];
    new Sname[MAX_PLAYER_NAME];
    397 -> GetPlayerName(playerid,Sname,sizeof(Sname)); //Bin mir hier ned sicher, mache nix mit GetPlayerName
    format(Accounts,sizeof(Accounts),"/Accounts/%s.txt",Sname);
    dini_Create(Accounts);
    dini_Set(Accounts,"Passwort",key);
    SendClientMessage(playerid,sonderrot,"Du hast dich erfolgreich auf Night Evolution Roleplay registriert!");
    return 1;
    }

  • Danke sehr :D , aber jetzt habe ich noch ein Problem :/


    C:\Users\ANONYM\Desktop\GTA San Andreas\Selfmade Script\gamemodes\NER.pwn(484) : error 017: undefined symbol "Accounts"
    C:\Users\ANONYM\Desktop\GTA San Andreas\Selfmade Script\gamemodes\NER.pwn(484) : error 017: undefined symbol "Accounts"
    C:\Users\ANONYM\Desktop\GTA San Andreas\Selfmade Script\gamemodes\NER.pwn(484) : error 029: invalid expression, assumed zero
    C:\Users\ANONYM\Desktop\GTA San Andreas\Selfmade Script\gamemodes\NER.pwn(484) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    4 Errors.


    Die PAWN Textquellen:



    stock AccountLaden(playerid)
    {
    new Accunts[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Accounts,sizeof(Accounts),"/Accounts/%s.txt",Sname); <-- 484
    if(dini_Exists(Accounts))
    {
    sSpieler[playerid] [Adminlevel] = dini_Get(Accounts,"Adminlevel");
    sSpieler[playerid] [Level] = dini_Get(Accounts,"Level");
    sSpieler[playerid] [Respektpunkte] = dini_Get(Accounts,"Respektpunkte");
    sSpieler[playerid] [Fraktion] = dini_Get(Accounts,"Fraktion");
    sSpieler[playerid] [Rang] = dini_Get(Accounts,"Rang");
    }
    return 1;
    }


    Ich habe das schon im Register-/ Login- & AccountSpeichern-Stock, aber da funktioniert es.
    Die Enums sind Adminlevel, Level, Respektpunkte, Fraktion & Rang.

    >> I want you <<
    >> We can bring it on the floor <<
    >> You’ve never danced like this before <<
    >> We don’t talk about it <<
    >> Dancin' on doin' the boogie all night long <<
    >> Stoned in paradise <<
    >> Shouldn’t talk about it <<


  • stock AccountLaden(playerid)
    {
    new Accounts[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Accounts,sizeof(Accounts),"/Accounts/%s.txt",Sname); <-- 484
    if(dini_Exists(Accounts))
    {
    sSpieler[playerid] [Adminlevel] = dini_Get(Accounts,"Adminlevel");
    sSpieler[playerid] [Level] = dini_Get(Accounts,"Level");
    sSpieler[playerid] [Respektpunkte] = dini_Get(Accounts,"Respektpunkte");
    sSpieler[playerid] [Fraktion] = dini_Get(Accounts,"Fraktion");
    sSpieler[playerid] [Rang] = dini_Get(Accounts,"Rang");
    }
    return 1;
    }


    Die Variable Accounts hast du falsch geschrieben
    Du solltest versuche Warnings zuverstehen

  • Das kommt auf dein Admin System an.
    Generell sähe das so aus:


    if(PlayerInfo{playerid][Level] == 5) //Geld geben, da Level 5
    else //kein Geld geben


    oder:
    if(PlayerInfo{playerid][Level] != 5) //Spieler ist NICHT Level 5, kann aber Level 215421 sein, oder -1454 oder 4272, oder 24242574, oder sonstwas.

  • Hab mal eine kleine Simple frage,


    und zwar habe ich vor für meinen Busfahrer Job einen Befehl zu machen womit er den fahrgast Preis festlegen kann also,
    sagen wir er macht den Fahrpreis auf 40€ so muss der Gast der einsteigen tut 40€ Zahlen.
    Soweit weiß ich auch wie es geht nur möchte ich es so machen das wenn sich kein Fahrer im Bus befindet der Spieler aus dem Fahrzeug geworfen wird.


    Hier mal mein Code den ich angefangen habe:


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(!ispassenger)
    if(GetVehicleModel(vehicleid) == 431)
    {


    }
    }
    }




    Hoffe ihr könnt mir weiter helfen..



    Grüße

  • public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(ispassenger)
    {
    //Passagier = Ja
    if(GetVehicleModel(vehicleid) == 431)
    {
    //Bus = Ja
    new bool:fahrer = false;
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerInAnyVehicle(i))
    {
    if(GetPlayerState(i) == PLAYER_STATE_DRIVER && GetPlayerVehicleID(i) == vehicleid)
    {
    //Es ist ein Fahrer im Bus
    fahrer = true;
    }
    }
    }
    if(!fahrer)
    {
    //Es ist kein Fahrer im Bus
    TogglePlayerControllable(playerid, false);
    TogglePlayerControllable(playerid, true);
    SendClientMessage(playerid, 0xFF0000FF, "Achtung: Es ist kein Busfahrer vorhanden, du kannst nicht einsteigen.");
    }
    }
    }
    return 1;
    }


    Ist zwar nicht getestet aber sollte eigentlich funktionieren.
    Falls nicht, bitte sagen.

  • Eins funktioniert, man kann nicht als Fahrgast in den Bus einsteigen wenn kein Fahrer vorhanden ist.
    Aber wenn einer vorhanden und man als Fahrgast einsteigen möchte funktioniert es nicht es kommt die Fehlermeldung das kein Busfahrer vorhanden ist.


    Code:



    if(ispassenger)
    {
    //Passagier = Ja
    if(GetVehicleModel(vehicleid) == 431)
    {
    //Bus = Ja
    new bool:fahrer = false;
    {
    if(IsPlayerInAnyVehicle(i))
    {
    if(GetPlayerState(i) == PLAYER_STATE_DRIVER && GetPlayerVehicleID(i) == vehicleid)
    {
    //Es ist ein Fahrer im Bus
    fahrer = true;
    }
    }
    }
    if(!fahrer)
    {
    //Es ist kein Fahrer im Bus
    TogglePlayerControllable(playerid, false);
    TogglePlayerControllable(playerid, true);
    SendClientMessage(playerid, 0xFF0000FF, "Achtung: Es ist kein Busfahrer vorhanden, du kannst nicht einsteigen.");
    return 1; // Hab das return 1; hier rein gepackt da sonst der ganze Chat zugespamt wird..
    }
    }
    }


    Grüße

  • Die schleife nach "new bool:..." fehlt. Wo haste die hin? ^^
    Du musst nur meinen Code kopieren...

    Au stimmt hab diese entfernt weil ich diesen Warning bekommen hab und dann war auch der Warning weg..



    Hier mal der Warning wenn ich es mit der for schleife wieder einfüge:


    warning 219: local variable "i" shadows a variable at a preceding level

  • Das heißt dass die Variable i bereits definiert ist. Ersetze einfach alle i's in meinem Code mit j's dann tut's.


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(ispassenger)
    {
    //Passagier = Ja
    if(GetVehicleModel(vehicleid) == 431)
    {
    //Bus = Ja
    new bool:fahrer = false;
    for(new j=0; j<MAX_PLAYERS; j++)
    {
    if(IsPlayerInAnyVehicle(j))
    {
    if(GetPlayerState(j) == PLAYER_STATE_DRIVER && GetPlayerVehicleID(j) == vehicleid)
    {
    //Es ist ein Fahrer im Bus
    fahrer = true;
    }
    }
    }
    if(!fahrer)
    {
    //Es ist kein Fahrer im Bus
    TogglePlayerControllable(playerid, false);
    TogglePlayerControllable(playerid, true);
    SendClientMessage(playerid, 0xFF0000FF, "Achtung: Es ist kein Busfahrer vorhanden, du kannst nicht einsteigen.");
    }
    }
    }
    return 1;
    }

  • Hallo, ich hätte 2 Fragen.


    1) Kann man "RemoveBuildingForPlayer" auch nur in einer bestimmten Interior-World ID benutzen? Also, sodass das Objekt nur entfernt wird, wenn man in der entsprechenden Interior-World ID ist.
    Falls nicht, gibt es trotzdem irgendeinen Trick dann z.B. das entsprechende Objekt zwar doch überall zu removen, aber dann in der Interior-ID zu erstellen?


    2) Wie kann ich einen "PlayerPlaySound" beenden? Ich habe ihn an bestimmten Koordinaten erstellt und möchte ihn auf Befehl beenden, allerdings ist der Sound an sich eine Endlosschleife.


  • 1) Kann man "RemoveBuildingForPlayer" auch nur in einer bestimmten Interior-World ID benutzen? Also, sodass das Objekt nur entfernt wird, wenn man in der entsprechenden Interior-World ID ist.
    Falls nicht, gibt es trotzdem irgendeinen Trick dann z.B. das entsprechende Objekt zwar doch überall zu removen, aber dann in der Interior-ID zu erstellen?


    Nein, aber den Trick kannst du mit dem Streamer Plugin von Incognito anwenden, indem du ein Objekt in ein Interior definierst. (http://forum.sa-mp.com/showthread.php?t=102865)



    2) Wie kann ich einen "PlayerPlaySound" beenden? Ich habe ihn an bestimmten Koordinaten erstellt und möchte ihn auf Befehl beenden, allerdings ist der Sound an sich eine Endlosschleife.


    PlayerPlaySound mit einer Nummer höher aufrufen, also wenn z.B. 1037 dein Sound ist, dann nimm 1038 um es zu beenden (das geht aber nur bei den endlosen Musik-Teilen (z.B. Bumblebee-Spiel-Musik).

  • Guten Tag,


    Bin grad etwas verpeilt.


    Habe ein Array erstellt



    enum InfoBox
    {
    pName[256],
    pInhalt[256]
    }new Infoboxen[MAX_INFO][InfoBox];


    und nun will ich das in einer InfoBox ausgeben.


    InfoText(playerid,Infoboxen[Zufallszahl][pName],Infoboxen[Zufallszahl][pInhalt],6000);


    So und nun meckert er rum weil ich die Größe des strings nicht angegeben habe.


    array sizes do not match, or destination array is to small