[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
  • Nochmal Danke, sie sind jetzt totgelegt, ganz wegmachen geht wohl nicht? konnte mit googlen nichtmal den return 0 trick rausfinden :(
    Du hast mir jetzt schon ne Meeeenge Zeit gespaart ^^
    Noch ne kleinigkeit, in meinem tutorial wird die kamera irgendwohin gesetzt, damit die textur auch gescheit läd muss der spieler ja i nder nähe sein.
    Den part hab ich einfach aus meinem alten script gezogen, damals blieb cj einfach i nder luft bzw unter der map hängen wegen togglecontrolable, jetzt fällt er immer auf die strasse(udn stirbt teilweise sogar^^)
    Wie kann ich am elegantesten verhindern dass verwahrloste cj's sonstwo auf der strasse stehen wenn jemand im tut ist?

  • Nein, leider nicht :)


    //Edit:
    Aber kannst ja z.B. einen Callback für mehrere Dinge nehmen:


    ast2ufdyxkb1.png


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

  • Jap, so hab ich es jetzt auch gemacht, wundert mich nur dass es so eine funktion nicht gibt, würde ne menge zeilen sparen^^


    wo genau ist eig der vorteil bei ocmd commands? bei tutorial video wird das oft benutzt, welche vorteil hat es zu den "alten" if(strcmp("/..." ? und wie muss das aussehen wenn ich bei ocmd mehrere cmds einer funktion zuweise möchte?


    Gibt es bessere alternativen? Oder ist es performance mässig wayne wie ich die commands erstelle?

  • ocmd 2.1.1 [ Update 3.11.2013 ]
    Im ersten Abschnitt findest du schon einige Vorteile ;)


    Mehrere Befehle in "einem" Befehl:

    C
    ocmd@2:help,hilfe(playerid,params[])
    {
       SendClientMessage(playerid,0xffffffff,"Du hast /help oder /hilfe eingegeben");
       return 1;
    }





    Gibt es bessere alternativen? Oder ist es performance mässig wayne wie ich die commands erstelle?

    Ob es bessere, also von der Performance her, Alternativen gibt, weiß ich nicht, aber es gibt auch noch DCMD (DCMD Tutorial), ZCMD (http://forum.sa-mp.com/showthread.php?t=91354) und viel mehr. ;)

  • Danke!


    Bilde ich mir das ein, oder erscheinen objekte deutlich später als in samp vor 2,3 jahren? Meine Speedbumbs haben keine wirkung wenn man zu schnell ist. hat das was mit streamdistance zutun?

  • hat das was mit streamdistance zutun?

    Das kommt darauf an, es gibt Objekte von denen man die streamdistance nicht verändern kann.


    Allerdings kannst du es durchaus mal mit der streamdistance versuchen :)


    Oder du hast zuviele Objekte erstellt, mit F5 kannste ja mal schauen wie viele ObjektSoltsInUse sind :)

    ast2ufdyxkb1.png


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

  • Ich schau gleich mal wieiele es sind.


    Wie kann ich das Alter dem inputtext zuordnen?



    if(dialogid == SET_CHAR_AGE)
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid, 0xFFFFFFFF, "Your Age Cannot be Blank");
    ShowPlayerDialog(playerid,SET_CHAR_AGE,DIALOG_STYLE_INPUT,"Age","How old are you?\nType in your charachters age.","Continue","Cancel");
    return 1;
    }
    if(!response)
    {
    Kick(playerid);
    return 1;
    }
    if (strval(inputtext) <= 15)
    {
    SendClientMessage(playerid, 0xFFFFFFFF, "Invalid Age.");
    SendClientMessage(playerid, 0xFFFFFFFF, "Your Charachter must be at least 16 years old.");
    ShowPlayerDialog(playerid,SET_CHAR_AGE,DIALOG_STYLE_INPUT,"Age","How old are you?\nType in your charachters age.","Continue","Cancel");
    return 1;
    }
    //pInfo[playerid][pAge] = inputtext; // ??????


    Wie muss das pInfo aussehen?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Was muss ich abfragen, wenn ich bei einer listen infobox den rechten Button zuweisen will? also ich hab on response und on die listimen. wenn ich else ans ende mache, kann ich nichts mehr anklicken.
    Ich will dass es eins zurück geht, also einen alten dialog "verlinken" nur was frag ich dazu ab?

  • Function OnPlayerCommandText(playerid, cmdtext[])
    {
    M_OnPlayerCommandText(playerid,cmdtext);
    new string[256];
    new playermoney;
    new sendername[MAX_PLAYER_NAME];
    new giveplayer[MAX_PLAYER_NAME];
    new playername[MAX_PLAYER_NAME];
    new cmd[256];
    new tmp[256];
    new giveplayerid, moneys, idx;
    new dancestyle;
    cmd = strtok(cmdtext, idx);
    GetPlayerName(playerid,sendername,sizeof(sendername));
    dcmd(gocords,7,cmdtext);
    dcmd(zollcontrol,11,cmdtext);
    dcmd(givedonator,11,cmdtext);
    dcmd(arbobjid,8,cmdtext);
    dcmd(arb,3,cmdtext);
    dcmd(deletearb,9,cmdtext);
    dcmd(deletearbfor,12,cmdtext);
    dcmd(arball,6,cmdtext);
    dcmd(arbforall,9,cmdtext);
    dcmd(arbobj,6,cmdtext);
    else
    {
    SendClientMessage(playerid, COLOR_WITHE, "Der Befehl wurde nicht gefunden. Bitte verwende /help");
    }



    Passt so oder :>

  • Zum else gehört immer ein if.
    ich arbeite mit ocmd und habe das so gelöst:
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(!strcmp("/befehl", cmdtext, true, 7) || strcmp("/befehl", cmdtext, true, 7)) // muss nicht "/befehl" sein, kann alles mögliche sein
    {
    SendClientMessageEx(playerid, COLOR_WHITE, "Der befehl '%s' existiert nicht.", cmdtext);
    return 1;
    }
    return 0;
    }

  • Warum so kompliziert, wenn es auch einfach geht? :)


    Einfach das return 0; zu return SendClientMessage(playerid,-1,"Dieser Befehl existiert nicht!"); umwandeln.

    C
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    	return SendClientMessage(playerid,-1,"Dieser Befehl existiert nicht!");
    }
  • Kann ich in einer SendClientMessage mit string die Farbe Wechseln? (mitten im text!)


    Denn bei " format(string, sizeof(string), "[PLAYER INFO]:{0xFF4500AA} Gender - %d | Native Orig..... " wird die Farbe durch { und } nicht gewechselt, er zeigt die klammern als text :(


    Wie kann man das lösen?

  • Bei so etwas einfach die ersten zwei und die letzten zwei Zeichen wegnehmen, dann sieht das so aus und funktioniert auch in den Klammern:
    {FF4500}
    Das heißt: RGBA (0xFF4500AA) zu RGB (FF4500).

  • Hi, habe ein Befehl erstellt womit ich ein Spieler spectate, der funktioniert auch nur wenn ich aus dem Spec rausmöchte, per Tastendrück, funktioniert das nicht.


    Der Befehl



    CMD:sspec(playerid,params[])
    {
    if(!CheckAdminName(playerid)) return 0;
    new pID, tmp[20], idx;
    tmp = strtok(params, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid,0x6FFFFFFF,"ERROR:: /sspec [ID]");
    if(IsNumeric(tmp)) pID = strval(tmp);
    else pID = ReturnPlayerID(tmp);
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,0x6FFFFFFF,"The Player is not online");
    SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(pID));
    SetPlayerInterior(playerid, GetPlayerInterior(pID));
    TogglePlayerSpectating(playerid, 1);
    PlayerSpectatePlayer(playerid, pID);
    return 1;
    }


    OnPlayerKeyStateChance (wird keine der Funktionen aufgerufen)



    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {



    if (PRESSED(KEY_ANALOG_RIGHT))
    {
    if(!CheckAdminName(playerid)) return 0;
    TogglePlayerSpectating(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);
    SetPlayerInterior(playerid, 0);
    SendClientMessage(playerid,-1,"Taste gedrückt");
    }
    return 1;
    }


    Mit freundlichen Grüßen
    JustMe.77 8)

    Einmal editiert, zuletzt von JustMe.77 ()