[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


  • Habs so gemacht bekomme die erros


    C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(208) : error 004: function "UpdateTimeAndWeather" is not implemented
    C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(216) : error 017: undefined symbol "sscanf"
    C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(227) : error 017: undefined symbol "sscanf"
    C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(236) : error 017: undefined symbol "sscanf"
    C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(547) : warning 217: loose indentation
    C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(550) : warning 217: loose indentation
    C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(550) : error 029: invalid expression, assumed zero
    C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(550) : error 004: function "OnPlayerClickPlayer" is not implemented
    C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(555) : warning 225: unreachable code
    C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(555) : error 029: invalid expression, assumed zero
    C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(555) : error 017: undefined symbol "PlayerToPoint"
    C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(562) : error 017: undefined symbol "x"
    C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(563) : error 017: undefined symbol "y"
    C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(564) : error 017: undefined symbol "z"
    C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(566) : error 017: undefined symbol "radi"
    C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(571) : warning 217: loose indentation
    C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(574) : warning 225: unreachable code
    C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(574) : error 029: invalid expression, assumed zero
    C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(574) : error 017: undefined symbol "sscanf"
    C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(574) : error 029: invalid expression, assumed zero
    C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(574) : fatal error 107: too many error messages on one line


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



    16 Errors.



    Text
    if (strcmp("/teleport",cmdtext))
    {


    ShowPlayerDialog(playerid,DIALOG_TELE,DIALOG_STYLE_LIST,"Teleporter.","BaseJump1","Abbrechen","Weiter");
    return 1;
    }


    if(dialogid==DIALOG_TELE)
    {
    if(response==1)
    {
    if(listitem==0)
    {
    SetPlayerPos(playerid,1543.7886,-1353.6300,329.4738);
    return 1;
    }
    }
    }

  • sieht nachm Klammerfehler aus poste ma au die 5 zeilen darüber :D

  • Norm eig. 26 errors


    Aber brauche Hilfe


    /e


    Hier hasse mein Public


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid==DIALOG_DS)
    {
    if(response==1)
    {
    DMLER[playerid] = 0;
    new Text3D:DM = Create3DTextLabel("DM'ler!", 0xFF2800FF, 30.0, 40.0, 50.0, 40.0, 0);
    Attach3DTextLabelToPlayer(DM, playerid, 0.0, 0.0, 0.7);
    }
    if(response==0)
    {
    STUNTLER[playerid] = 1;
    new Text3D:Stunt = Create3DTextLabel("Stunt'ler!", BLAU, 30.0, 40.0, 50.0, 40.0, 0);
    Attach3DTextLabelToPlayer(Stunt, playerid, 0.0, 0.0, 0.7);
    }
    if(dialogid==DIALOG_TELE)
    {
    if(response==1)
    {
    if(listitem==0)
    {
    SetPlayerPos(playerid,1543.7886,-1353.6300,329.4738);
    }
    }
    }
    return 1;
    }

  • Hallo


    Du hast falsch eingerückt, der zweite DialogID Vergleich war im !response. Zum Thema response. Du kannst das durch ein if(response) {} else {} ersetzen. Nimm mal das und sag obs geht:



    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid==DIALOG_DS)
    {
    if(response==1)
    {
    DMLER[playerid] = 0;
    new Text3D:DM = Create3DTextLabel("DM'ler!", 0xFF2800FF, 30.0, 40.0, 50.0, 40.0, 0);
    Attach3DTextLabelToPlayer(DM, playerid, 0.0, 0.0, 0.7);
    else
    {
    STUNTLER[playerid] = 1;
    new Text3D:Stunt = Create3DTextLabel("Stunt'ler!", BLAU, 30.0, 40.0, 50.0, 40.0, 0);
    Attach3DTextLabelToPlayer(Stunt, playerid, 0.0, 0.0, 0.7);
    }
    }
    if(dialogid==DIALOG_TELE)
    {
    if(response==1)
    {
    if(listitem==0)
    {
    SetPlayerPos(playerid,1543.7886,-1353.6300,329.4738);
    }
    }
    }
    return 1;
    }


    Gruss


    Edit: Dumme Tabs


  • Funktioniert wunderbar, Danke!


    Mhm, versuche gerade einen Umgebungschat zu erstellen der mit /uc eingeschaltet werden soll und wenn man nochmal /uc eingibt wieder ausgeschaltet werden soll.
    Wie immer bekomme Ich auch dies nicht ohne eure Hilfe hin :(


    Denn sobald ich Ingame /uc eingebe und dann etwas schreibe sieht der Chat nämlich so aus wenn ich ein simples "hallo" eingebe:


    (([UC]: Mostey: ))
    Mostey: hallo



    new uc[MAX_PLAYERS]; // variable is oben im script


    public OnPlayerText(playerid, text[])
    {
    if(uc[playerid] == 1)
    {
    new string[256];
    new Float:x, Float:y, Float:z;
    new text1[256];
    GetPlayerPos(playerid,x,y,z);
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerInRangeOfPoint(i,25,x,y,z))
    {
    format(string,sizeof string,"(( [UC]: %s: %s {FFFFFF}))",SpielerName(playerid),text1);
    SendClientMessage(i,weiss,string);
    }
    }
    }
    }
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/uc", cmdtext, true, 10) ==0)
    {
    if (uc[playerid] == 0)
    {
    uc[playerid] = 1;
    SendClientMessage(playerid,gelb,"Du hast den Umgebungschat eingeschaltet");
    }
    else if (uc[playerid] == 1)
    {
    uc[playerid] = 0;
    SendClientMessage(playerid,gelb,"Du hast den Umgebungschat ausgeschaltet");
    }
    return 1;
    }




    EDIT: Variante 2, Ergebnis is das selbe:

    Spoiler anzeigen
    if (strcmp("/uc", cmdtext, true, 10) ==0)
    {
    if (uc[playerid] == 0)
    {
    SendClientMessage(playerid,gelb,"Du hast den Umgebungschat eingeschaltet");
    new string[256];
    new Float:x, Float:y, Float:z;
    new text1[256];
    GetPlayerPos(playerid,x,y,z);
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerInRangeOfPoint(i,25,x,y,z))
    {
    format(string,sizeof string,"(( [UC]: %s: %s {FFFFFF}))",SpielerName(playerid),text1);
    SendClientMessage(i,weiss,string);
    uc[playerid] = 1;
    }
    }
    }
    }
    else if (uc[playerid] == 1)
    {
    uc[playerid] = 0;
    SendClientMessage(playerid,gelb,"Du hast den Umgebungschat ausgeschaltet");
    }
    return 1;
    }

    @Travelga
    Return vergessen?

    2 Mal editiert, zuletzt von Mostey ()

  • Hallo


    Ich würde aus der Spielervariable einen Boolean machen. Dann sähe es so aus (Habe es ein wenig abgeändert). Andere Spieler bekommen die Nachricht nur, wenn auch ihr Umgebungschat an ist.



    new bool:uc[MAX_PLAYERS]; // variable is oben im script


    public OnPlayerText(playerid, text[])
    {
    if(uc[playerid]) // 1
    {
    new string[128]; // Die Messagebox in SA-MP kann maximal 128 Zeichen darstellen
    new Float:pos[3]; // Floatarray
    GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
    for(new i = 0; i <MAX_PLAYERS; i++)
    {
    if(IsPlayerInRangeOfPoint(i, 25.0, pos[0], pos[1], pos[2]))
    {
    format(string,sizeof string,"(( [UC]: %s: %s {FFFFFF}))",SpielerName(playerid),text1);
    SendClientMessage(i,weiss,string);
    }
    }
    }
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp("/uc", cmdtext, true, 10) ==0)
    {
    if(!uc[playerid]) // Anmachen
    {
    uc[playerid] = true;
    SendClientMessage(playerid,gelb,"Du hast den Umgebungschat eingeschaltet");
    }
    else
    {
    uc[playerid] = false;
    SendClientMessage(playerid,gelb,"Du hast den Umgebungschat ausgeschaltet");
    }
    }
    return 1;
    }


    Gruss

  • Nabend, ich arbeite gerade an meinem eigenen kleinen Pay'n'Spray.
    Klappt alles super, nur die Tastenbelegung spinnt irgendwie..
    Was habe ich vor?
    Sobald der User in einem Fahrzeug ist, und an einem bestimmten Punkt, soll ein Tor nach oben gehen und sich auf "Alt links" Druck ein Dialog öffnen.
    Was tut es?
    Es öffnet bei Enter, W, A, S, D ..usw. den Dialog.


    Spoiler anzeigen
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys && KEY_WALK)
    {
    if(IsPlayerInRangeOfPoint(playerid,0.5,1003.0399,-1352.2534,13.0096))
    {
    if(!IsPlayerInAnyVehicle(playerid))return SCM(playerid,ROT,"Du bist in keinem Fahrzeug.");
    {
    MoveObject(pnstor, 0, 0, 10, 2.00);
    ShowPlayerDialog(playerid,DIALOG_PNS,DIALOG_STYLE_LIST,"Pay'n'Spray - Nutzeroberfläche","Fahrzeug reparieren\nFarbe wählen","Ok","Abbrechen");
    return 1;
    }
    }
    }
    }

    Ich wüsste gern warum sich der Dialog einfach öffnet.. :huh:


    //e:
    Joa, habe das Tor nun hinbekommen, nun soll aber wenn man nicht "IsPlayerInRangeOfPoint" ist, das Tor wieder geöffnet werden.
    Ich habe den Code so erstellt:
    if(!IsPlayerInRangeOfPoint(playerid,0.5,1003.0399,-1352.2534,13.0096))
    {
    MoveObject(pnstor,1003.40002441,-1341.59997559,9.10000038,2.00);
    return 1;
    }
    Unter OnGameModeInit kann ich das nicht packen, weil er playerid nicht erkennt..

    [tabmenu][tab=Signatur,'http://bit.ly/1i4RY3v']

    Wie poste ich richtig?
    Nachdem du Google, die FAQ und die Suchfunktion erfolgreich ignoriert hast, erstellst du 2 bis 5 neue Themen in den falschen Unterforen mit lustigem Titel,
    zu vielen Ausrufezeichen und undeutlichem Text, unter dem sich jeder etwas anders vorstellen kann.



    Mr.Dubstep | GFX | Scripting | Hackerplace
    If Mr.DubStep don't have it, you don't need it.

    [tab=Spieler bei,'http://bit.ly/1db2jaf'][subtab=Hackerplace,'http://bit.ly/1bswN2T']


    Welch wunderschöner Hack ist heute vollzogen worden, könntest Du mir es denn sagen? Ein wunderschönes Browsergame, auch für Kleinigkeiten unterwegs. Erschaffe deinen eigenen Computer, nutze ihn um anderen das Geld zu rauben, schließe dich einem Clan an oder gründe selbst einen. Bleibe allein oder mit vielen Freunden.

    Einmal editiert, zuletzt von Mr.DubStep ()


  • Danke für deine schnelle Antwort, der Fehler besteht aber weiterhin :S



  • public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys == KEY_WALK) //überprüfen ob newkeys dem define KEY_WALK entspricht
    {
    if(IsPlayerInRangeOfPoint(playerid,0.5,1003.0399,-1352.2534,13.0096))
    {
    if(!IsPlayerInAnyVehicle(playerid))return SCM(playerid,ROT,"Du bist in keinem Fahrzeug.");
    else //das auch noch hinzufügen, nur um auf Nummer sicher zu gehen.
    {
    MoveObject(pnstor, 0, 0, 10, 2.00);
    ShowPlayerDialog(playerid,DIALOG_PNS,DIALOG_STYLE_LIST,"Pay'n'Spray - Nutzeroberfläche","Fahrzeug reparieren\nFarbe wählen","Ok","Abbrechen");
    return 1;
    }
    }
    }
    }

    Ich hoffe, ich konnte dir helfen

  • Jetzt geht's garnicht mehr. :|

    [tabmenu][tab=Signatur,'http://bit.ly/1i4RY3v']

    Wie poste ich richtig?
    Nachdem du Google, die FAQ und die Suchfunktion erfolgreich ignoriert hast, erstellst du 2 bis 5 neue Themen in den falschen Unterforen mit lustigem Titel,
    zu vielen Ausrufezeichen und undeutlichem Text, unter dem sich jeder etwas anders vorstellen kann.



    Mr.Dubstep | GFX | Scripting | Hackerplace
    If Mr.DubStep don't have it, you don't need it.

    [tab=Spieler bei,'http://bit.ly/1db2jaf'][subtab=Hackerplace,'http://bit.ly/1bswN2T']


    Welch wunderschöner Hack ist heute vollzogen worden, könntest Du mir es denn sagen? Ein wunderschönes Browsergame, auch für Kleinigkeiten unterwegs. Erschaffe deinen eigenen Computer, nutze ihn um anderen das Geld zu rauben, schließe dich einem Clan an oder gründe selbst einen. Bleibe allein oder mit vielen Freunden.


  • public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys & KEY_WALK) //überprüfen ob newkeys dem define KEY_WALK entspricht
    {
    if(!IsPlayerInAnyVehicle(playerid))return SCM(playerid,ROT,"Du bist in keinem Fahrzeug.");
    if(IsPlayerInRangeOfPoint(playerid,0.5,1003.0399,-1352.2534,13.0096))
    {
    MoveObject(pnstor, 0, 0, 10, 2.00);
    ShowPlayerDialog(playerid,DIALOG_PNS,DIALOG_STYLE_LIST,"Pay'n'Spray - Nutzeroberfläche","Fahrzeug reparieren\nFarbe wählen","Ok","Abbrechen");
    return 1;
    }
    }
    }

  • Geht auch nicht.

    [tabmenu][tab=Signatur,'http://bit.ly/1i4RY3v']

    Wie poste ich richtig?
    Nachdem du Google, die FAQ und die Suchfunktion erfolgreich ignoriert hast, erstellst du 2 bis 5 neue Themen in den falschen Unterforen mit lustigem Titel,
    zu vielen Ausrufezeichen und undeutlichem Text, unter dem sich jeder etwas anders vorstellen kann.



    Mr.Dubstep | GFX | Scripting | Hackerplace
    If Mr.DubStep don't have it, you don't need it.

    [tab=Spieler bei,'http://bit.ly/1db2jaf'][subtab=Hackerplace,'http://bit.ly/1bswN2T']


    Welch wunderschöner Hack ist heute vollzogen worden, könntest Du mir es denn sagen? Ein wunderschönes Browsergame, auch für Kleinigkeiten unterwegs. Erschaffe deinen eigenen Computer, nutze ihn um anderen das Geld zu rauben, schließe dich einem Clan an oder gründe selbst einen. Bleibe allein oder mit vielen Freunden.

  • Guten Abend,
    =============================================================================
    Bei mir wird das Alter nicht Gespeichert was ich bei der Registration Angegeben habe.
    Ich zeige euch mal die sachen. (Der Enum nicht oder?)

    public OnPlayerDisconnect(playerid, reason)
    {
    if(INI_Open(getINI(playerid)))
    {
    INI_WriteInt("Level",GetPlayerScore(playerid));
    INI_WriteInt("Geldboerse",GetPlayerMoney(playerid));
    INI_WriteInt("Admin",SpielerInfo[playerid][sAdmin]);
    INI_WriteInt("Gebannt",SpielerInfo[playerid][sGebannt]);
    INI_WriteInt("Alter",SpielerInfo[playerid][sAlter]);
    INI_Save();
    INI_Close();
    }
    return 1;
    }

    Hier wird alles Gespeichert.



    case DIALOG_ALTER:
    {
    if(!response)return 0;
    if(response)
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid,Gruen,"Du musst dein Alter Angeben!");
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{FF8B00}*SENSIERT*","{FFFFFF}Nun sind wir beim Zweiten Schritt der Registration! Hier musst du dein Alter angeben!\n z.B. {FF0000}24","Bestätiegen","Abbruch");
    }
    if(INI_Open(getINI(playerid)))
    {
    INI_WriteInt("Alter",strval(inputtext));
    INI_Save();
    INI_Close();
    }
    }
    }

    Hier ist der DIALOG Wo er es eigentlich Speichern soll.. Was er aber nicht tuht.

  • mach es mal so und probier es aus:

    case DIALOG_ALTER:
    {
    if(!response)return 0;
    else if(response)
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid,Gruen,"Du musst dein Alter Angeben!");
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{FF8B00}*SENSIERT*","{FFFFFF}Nun sind wir beim Zweiten Schritt der Registration! Hier musst du dein Alter angeben!\n z.B. {FF0000}24","Bestätiegen","Abbruch");
    return 1; //Damit unten das Alter nicht überschrieben wird.
    }
    if(INI_Open(getINI(playerid)))
    {
    INI_WriteInt("Alter",strval(inputtext));
    INI_Save();
    INI_Close();
    SpielerInfo[playerid][sAlter] = strval(inputtext);
    }
    }
    }


    //EDIT:
    Jetzt habe ich den richtigen Fehler gesehen.
    Er liegt darin, dass du die Variable "SpielerInfo[playerid][sAlter]" bei OnDialogResponse nicht setzt und sie beim Logout durch 0 ersetzt wird. siehe oben

  • Hab's mit "return 1;" gemacht. In die SpielerDatei steht immer noch "Alter=0"


    //e Habe es mit SpielerInfo[playerid][sAlter]=strval(inputtext);
    Hinbekommen. :)

  • Setz mal die Range von 0.5 auf 5.0 bitte ^^


    Funktioniert auch nicht... 8|

    [tabmenu][tab=Signatur,'http://bit.ly/1i4RY3v']

    Wie poste ich richtig?
    Nachdem du Google, die FAQ und die Suchfunktion erfolgreich ignoriert hast, erstellst du 2 bis 5 neue Themen in den falschen Unterforen mit lustigem Titel,
    zu vielen Ausrufezeichen und undeutlichem Text, unter dem sich jeder etwas anders vorstellen kann.



    Mr.Dubstep | GFX | Scripting | Hackerplace
    If Mr.DubStep don't have it, you don't need it.

    [tab=Spieler bei,'http://bit.ly/1db2jaf'][subtab=Hackerplace,'http://bit.ly/1bswN2T']


    Welch wunderschöner Hack ist heute vollzogen worden, könntest Du mir es denn sagen? Ein wunderschönes Browsergame, auch für Kleinigkeiten unterwegs. Erschaffe deinen eigenen Computer, nutze ihn um anderen das Geld zu rauben, schließe dich einem Clan an oder gründe selbst einen. Bleibe allein oder mit vielen Freunden.