[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
  • stock SpielerSpeichern(playerid)
    {
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
    if(dini_Exists(Spieler))
    {
    dini_IntSet(Spieler,"Adminlevel",sSpieler[playerid][Adminlevel]);
    dini_IntSet(Spieler,"Level",sSpieler[playerid][Level]);
    dini_IntSet(Spieler,"Fraktion",sSpieler[playerid][Fraktion]);
    dini_IntSet(Spieler,"Team",sSpieler[playerid][Team]);
    }
    return 1;
    }


    stock SpielerLaden(playerid)
    {
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
    if(dini_Exists(Spieler))
    {
    sSpieler[playerid][Adminlevel] = dini_Int(Spieler,"Adminlevel");
    sSpieler[playerid][Level] = dini_Int(Spieler,"Level");
    sSpieler[playerid][Fraktion] = dini_Int(Spieler,"Fraktion");
    sSpieler[playerid][Team] = dini_Int(Spieler,"Team");
    sSpieler[playerid][sLogin] = 1;
    SpawnPlayer(playerid);
    }
    return 1;
    }


    stock SpielerReset(playerid)
    {
    sSpieler[playerid][Adminlevel] = 0;
    sSpieler[playerid][Level] = 0;
    sSpieler[playerid][Fraktion] = 0;
    sSpieler[playerid][Team] = 0;
    return 1;
    }


    //Fraktion
    stock IstSpielerInFraktion(playerid, fraktionsid)
    {
    if(sSpieler[playerid][sFraktion] == fraktionsid) return 1;
    return 0;
    }


    //Login
    stock IstSpielerLogged(playerid)
    {
    if(sSpieler[playerid][sLogin] == 1) return 1;
    return 0;
    }

  • Wieso wird mir das Geschlecht hier nicht angezeigt? Es wird gezeigt, aber nur, wenn ich auch Bearbeiten klicke, und ich mich "Neu Registriere" dann wird mir dort das Geschlecht, welches ich bei der Registrierung davor angegeben habe angezeigt.


    case Dialog_Geschlecht:
    {
    new string[128],string1[856],Geschlecht[16];
    switch(Spieler[playerid][pGeschlecht])
    {
    case 1:{Geschlecht="Männlich";}
    case 2:{Geschlecht="Weiblich";}
    }
    if(response == 0)
    {
    format(string,sizeof(string),"{23A7F5}%s, {E5E5E5}Sie sind also Weiblich, und {23A7F5}%i {E5E5E5}Jahre alt.",Spielername(playerid),AgeOfPlayer(playerid));
    SendClientMessage(playerid,0x00D2D2FF,string);
    Spieler[playerid][pGeschlecht] = 2;
    format(string1,sizeof(string1),"{E5E5E5}Sie können nun Ihre Daten noch einmal Kontrollieren, die Sie bei der Registrierung angegeben haben. \nSollten Daten nicht Stimmen, dann können Sie die Registrierung mit Bearbeiten nochmals Wiederholen. \nIhre Registrierungsdaten: \n\nPasswort: %s \nGeburtsdatum: %s \nGeschlecht: %s",Spieler[playerid][pPasswort],Spieler[playerid][pGeburtsdatum],Geschlecht);
    ShowPlayerDialog(playerid,Dialog_RegAccCheck,DIALOG_STYLE_MSGBOX,"{FFFFFF}SmR: {308EAD}Registrierungsüberprüfung",string1,"Annehmen","Bearbeiten");
    return 1;
    }
    if(response == 1)
    {
    format(string,sizeof(string),"{23A7F5}%s, {E5E5E5}Sie sind also Männlich, und {23A7F5}%i {E5E5E5}Jahre alt.",Spielername(playerid),AgeOfPlayer(playerid));
    SendClientMessage(playerid,0x00D2D2FF,string);
    Spieler[playerid][pGeschlecht] = 1;
    format(string1,sizeof(string1),"{E5E5E5}Sie können nun Ihre Daten noch einmal Kontrollieren, die Sie bei der Registrierung angegeben haben. \nSollten Daten nicht Stimmen, dann können Sie die Registrierung mit Bearbeiten nochmals Wiederholen. \nIhre Registrierungsdaten: \n\nPasswort: %s \nGeburtsdatum: %s \nGeschlecht: %s",Spieler[playerid][pPasswort],Spieler[playerid][pGeburtsdatum],Geschlecht);
    ShowPlayerDialog(playerid,Dialog_RegAccCheck,DIALOG_STYLE_MSGBOX,"{FFFFFF}SmR: {308EAD}Registrierungsüberprüfung",string1,"Annehmen","Bearbeiten");
    return 1;
    }
    return 1;
    }

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • Meinst du etwa das es hier nicht angezeigt wird ?

    Dialog_RegAccCheck


    Falls ja musst du die Geschlechter bei den Response abfragen definieren .

    if(response) {
    Geschlecht ="Weiblich";
    }
    else Geschlecht ="Männlich";

    Indemfall einfach jeweils unter Spieler[playerid][Gechlecht] einfügen, denn du definierst die Variable Geschlecht schon wo pGeschlecht noch nicht angegeben wurde .


    - Handy

    Einmal editiert, zuletzt von _AyKut ()

  • Hey leute hab ne Kurze frage. Und zwar habe ich gemerkt das ich zu viele RemoveBuildingsForPlayer habe.


    Und meine Frage ist nun klappt es irgendwie das zu umgehen ?


    Also ich habe es mit einem Filterscript versucht.


    Aber dort werden die RemoveBuildings nicht geladen.


    Den ich wollte gerne Alle Ampeln Entfernen und dachte jemand weiss vielleicht rat.

  • Also ich habe es mit einem Filterscript versucht.


    Aber dort werden die RemoveBuildings nicht geladen.


    Doch auch in einem Filterscript werden removeBuildings geladen. (wenn man es richtig macht)


    Und zwar habe ich gemerkt das ich zu viele RemoveBuildingsForPlayer habe.


    Man kann nicht zu viele RemoveBuildings haben :)


    Den ich wollte gerne Alle Ampeln Entfernen und dachte jemand weiss vielleicht rat.


    Füge diesen Code ein:


    RemoveBuildingForPlayer(playerid, 1315, 2228.0859, -2506.7734, 15.8125, 60000.25);
    RemoveBuildingForPlayer(playerid, 1315, 2213.9297, -2498.3984, 15.8125, 60000.25);
    RemoveBuildingForPlayer(playerid, 3855, -2534.5781, 330.8672, 18.8203, 60000.25);
    RemoveBuildingForPlayer(playerid, 3855, -2549.3047, 336.2109, 18.6172, 60000.25);
    RemoveBuildingForPlayer(playerid, 1350, -2365.4609, 513.1719, 28.2109, 60000.25);
    RemoveBuildingForPlayer(playerid, 1350, -2363.9063, 496.9844, 29.3594, 60000.25);
    RemoveBuildingForPlayer(playerid, 1284, -1886.6250, 931.7031, 37.3047, 60000.25);
    RemoveBuildingForPlayer(playerid, 1284, -1912.0625, 932.0156, 37.3047, 60000.25);
    RemoveBuildingForPlayer(playerid, 1283, -1902.8828, 906.5313, 37.2422, 60000.25);
    RemoveBuildingForPlayer(playerid, 1283, -1902.8516, 945.3125, 37.2422, 60000.25);
    RemoveBuildingForPlayer(playerid, 1350, 1717.7813, 1265.4766, 9.7891, 60000.25);
    RemoveBuildingForPlayer(playerid, 1350, 1737.2969, 1282.8281, 9.9688, 60000.25);


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Also zu deinem Mann kann nicht zu viel haben. Bei mir war es so das ich alle Ampeln entfernt hatte und diese eingefügt habe. Dann konnte ich mich nicht mehr anmelden also beim Login.


    Zu dem mit den Filterscript habe alle Removes in OnplayerConnect eingefügt.


    Und zum 3ten Danke dafür.

  • Zu dem mit den Filterscript habe alle Removes in OnplayerConnect eingefügt.


    Dann musst du auch das Filterscript laden, bevor du auf den Server joinst ;)


    Also zu deinem Mann kann nicht zu viel haben. Bei mir war es so das ich alle Ampeln entfernt hatte und diese eingefügt habe. Dann konnte ich mich nicht mehr anmelden also beim Login.


    Dann hast du da irgendeinen Fehler gemacht mit klammern oder returns oder was weiß ich...


    Aufjedenfall funktioniert das auch wenn du da 1000 Zeilen davon reinpackst :D


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Is ja auch egal :D FUnktioniert aufjedenfall.


    Ich habe hier noch ne Frage. Und zwar wie genau schreibe ich es jetzt hoierzu das der Medic eine Anim macht.


    Und das er sie so 3 sek macht also das er kniet drückt und wieder aufsteht :D


    Und vllt kann mir dabei einer helfen. Es ist zurzeit so das wenn man tot is eine Crack anim macht. Diese hebt sich aber nicht auf erst bei einmal springen. Obwohl ich doch Clearanims habe.


    if (strcmp(cmd, "/wiederbeleben", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if (PlayerInfo[playerid][pMember] == 4 || PlayerInfo[playerid][pLeader] == 4)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && PlayerInfo[i][pTot] == 1 && PlayerToPoint(5.0,playerid,PlayerInfo[i][pTx],PlayerInfo[i][pTy],PlayerInfo[i][pTz]))
    {
    new pname[256];
    GetPlayerName(i, pname, 256);
    format(string, 256, "Du hast %s, wiederbelebt! Du bekommst 150$",pname);
    SendClientMessage(playerid, COLOR_GREEN, string);
    GivePlayerMoney(playerid,150);
    GetPlayerName(playerid, pname, 256);
    format(string, 256, "Arzt %s hat dich wiederbelebt! Du zahlst 150$",pname);
    SendClientMessage(i, COLOR_RED, string);
    GivePlayerMoney(i,-150);
    PlayerInfo[i][pTot] = 0;
    pIstTot[i] = 0;
    SetPlayerPos(i,PlayerInfo[i][pTx],PlayerInfo[i][pTy],PlayerInfo[i][pTz]);
    SetCameraBehindPlayer(i);
    DestroyPickup(TotenKopf[i]);
    TogglePlayerControllable(i,1);
    UnFreezePlayer(i);
    ClearAnimations(playerid);
    PlayerInfo[i][pTx] = 0.0;
    PlayerInfo[i][pTy] = 0.0;
    PlayerInfo[i][pTz] = 0.0;
    new Float:tempheal;
    GetPlayerHealth(i,tempheal);
    SetPlayerHealth(i,15.0);
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Du bist kein Arzt!");
    }
    }
    return 1;
    }


  • Nein leider nicht, hab's ersetzt, doch immer noch Errors:



    public OnPlayerConnect(playerid)
    {
    new pname[MAX_PLAYER_NAME], string[39 + MAX_PLAYER_NAME];
    if(fexist(UserPath(playerid)))
    {
    INI_ParseFile(UserPath(playerid), "LoadUser_%s");
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"Login Menu",""ROT"Type your password below to login.","Login","Kick");
    }
    else
    {
    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,"Register Menu","Type your password below to register a new account.","Register","Kick");
    }
    GetPlayerName(playerid, pname, sizeof(pname));
    format(string, sizeof(string), "%s has Joined the server.", pname);
    SendClientMessageToAll(0xFF8000FF, string);
    return 1;
    }




    C:\Users\Dave\Desktop\Texture-Studio-master\gamemodes\LnD.pwn(40) : error 001: expected token: "-string end-", but found "-identifier-"
    C:\Users\Dave\Desktop\Texture-Studio-master\gamemodes\LnD.pwn(40) : warning 215: expression has no effect
    C:\Users\Dave\Desktop\Texture-Studio-master\gamemodes\LnD.pwn(40) : error 001: expected token: ";", but found "-string-"
    C:\Users\Dave\Desktop\Texture-Studio-master\gamemodes\LnD.pwn(40) : warning 215: expression has no effect
    C:\Users\Dave\Desktop\Texture-Studio-master\gamemodes\LnD.pwn(40) : warning 215: expression has no effect
    C:\Users\Dave\Desktop\Texture-Studio-master\gamemodes\LnD.pwn(40) : warning 215: expression has no effect
    C:\Users\Dave\Desktop\Texture-Studio-master\gamemodes\LnD.pwn(40) : error 001: expected token: ";", but found ")"
    C:\Users\Dave\Desktop\Texture-Studio-master\gamemodes\LnD.pwn(40) : 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.


    Mit freundlichen Grüßen
    JustMe.77 8)

  • INI_ParseFile(UserPath(playerid), "LoadUser_%s");
    Musst du für %s nicht noch was angeben?


  • Zeile 40 ist folgender Code:



    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"Login Menu",""ROT"Type your password below to login.","Login","Kick");


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Indemfall einfach jeweils unter Spieler[playerid][Gechlecht] einfügen, denn du definierst die Variable Geschlecht schon wo pGeschlecht noch nicht angegeben wurde .


    Das Geschlecht wird doch bei case Dialog_Geschlecht: gesetzt?




    case Dialog_Geschlecht:
    {
    new string[128],string1[356],Geschlecht[16];
    switch(Spieler[playerid][pGeschlecht])
    {
    case 1:{Geschlecht="Männlich";}
    case 2:{Geschlecht="Weiblich";}
    }
    if(response == 0)
    {
    format(string,sizeof(string),"{23A7F5}%s, {E5E5E5}Sie sind also Weiblich, und {23A7F5}%i {E5E5E5}Jahre alt.",Spielername(playerid),AgeOfPlayer(playerid));
    SendClientMessage(playerid,0x00D2D2FF,string);
    Spieler[playerid][pGeschlecht] = 2;
    format(string1,sizeof(string1),"{E5E5E5}Sie können nun Ihre Daten noch einmal Kontrollieren, die Sie bei der Registrierung angegeben haben. \nSollten Daten nicht Stimmen, dann können Sie die Registrierung mit Bearbeiten nochmals Wiederholen. \nIhre Registrierungsdaten: \n\nPasswort: %s \nGeburtsdatum: %s \nGeschlecht: %s",Spieler[playerid][pPasswort],Spieler[playerid][pGeburtsdatum],Geschlecht);
    ShowPlayerDialog(playerid,Dialog_RegAccCheck,DIALOG_STYLE_MSGBOX,"{FFFFFF}SmR: {308EAD}Registrierungsüberprüfung",string1,"Annehmen","Bearbeiten");
    return 1;
    }
    if(response == 1)
    {
    format(string,sizeof(string),"{23A7F5}%s, {E5E5E5}Sie sind also Männlich, und {23A7F5}%i {E5E5E5}Jahre alt.",Spielername(playerid),AgeOfPlayer(playerid));
    SendClientMessage(playerid,0x00D2D2FF,string);
    Spieler[playerid][pGeschlecht] = 1;
    format(string1,sizeof(string1),"{E5E5E5}Sie können nun Ihre Daten noch einmal Kontrollieren, die Sie bei der Registrierung angegeben haben. \nSollten Daten nicht Stimmen, dann können Sie die Registrierung mit Bearbeiten nochmals Wiederholen. \nIhre Registrierungsdaten: \n\nPasswort: %s \nGeburtsdatum: %s \nGeschlecht: %s",Spieler[playerid][pPasswort],Spieler[playerid][pGeburtsdatum],Geschlecht);
    ShowPlayerDialog(playerid,Dialog_RegAccCheck,DIALOG_STYLE_MSGBOX,"{FFFFFF}SmR: {308EAD}Registrierungsüberprüfung",string1,"Annehmen","Bearbeiten");
    return 1;
    }
    return 1;
    }

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • Damit geht es nicht. Schreibe es so:
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"Login Menu","{FF0000}Type your password below to login.","Login","Kick");


    Dann geht's.


    Zwecks dem Platzhalter im Ini Teil, da musst du format verwenden, aber das bekommst du sicher hin.

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