[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
  • Funktioniert super, danke! :)


    Nächste Frage: Wie bekomme ich aus dem inputtext eines Dialoges (DIALOG_STYLE_INPUT) eine playerid, bzw wie verwende ich sie weiter wenn sie eingegeben wurde?
    Ich habe hier eine Abfrage, ob es eine Zahl ist, aber mit strlen(inputtext) kann ich nicht weiterarbeiten, was Dialoge angeht bin ich noch nicht so geübt und das war das
    einzige, was mir eingefallen ist, da ich es mal woanders gesehen habe. strlen(inputtext) soll eig die playerid sein, aber nur inputtext nimmt er nicht :(


    Spoiler anzeigen

    if(!response) return SendClientMessage(playerid,-1,"Du hast den Vorgang abgebrochen.");
    if(!IsNumeric(inputtext)) return SendClientMessage(playerid, -1, "Du musst eine playerid eingeben!");
    new string[256];
    TogglePlayerControllable(strlen(inputtext), 0);
    format(string,sizeof(string),"Du hast %s eingefroren.", SpielerInfo[strlen(inputtext)][pName]);
    SendClientMessage(playerid, -1, string);

    • Offizieller Beitrag

    Arbeite mit sscanf, sollte funktionieren.


    if(!response) return SendClientMessage(playerid,-1,"Du hast den Vorgang abgebrochen.");
    new pID, string[256];
    if(sscanf(inputtext, "u", pID)) return SendClientMessage(playerid, -1, "Bitte gebe eine Spieler ID oder Spielernamen ein.");
    TogglePlayerControllable(pID, 0);
    format(string,sizeof(string),"Du hast %s eingefroren.", SpielerInfo[pID][pName]);
    SendClientMessage(playerid, -1, string);

  • public HideVehInfo(playerid)
    {
    TextDrawDestroy(BoxVehInfo[i]);
    TextDrawDestroy(VehInfo[i]);
    return 1;
    }


    new Text:BoxVehInfo[MAX_PLAYERS];
    new Text:VehInfo[MAX_PLAYERS];


    Why ist i undefiniert ?


    Funktionieren tut es, möchte es nur nach 5s zerstören können.

  • Danke für die Schnelle Antwort das geht jetzt außer das ich ein anderes kleines Problem noch habe:
    Wenn ich ins Fahrzeug einsteige kommt der Text mit der Box und verschwindet nach 5s und taucht wieder auf und blinkt dauernd :s



    if(IsPlayerConnected(playerid)) {
    if(IsPlayerInAnyVehicle(playerid)) {
    TextDrawShowForPlayer(playerid, BoxTacho[playerid]);
    TextDrawShowForPlayer(playerid, Tacho[playerid]);
    TextDrawShowForPlayer(playerid, BoxVehInfo[playerid]);
    TextDrawShowForPlayer(playerid, VehInfo[playerid]);
    SetTimerEx("HideVehInfo", 5000, false, "i", playerid);


    forward HideVehInfo(playerid);
    public HideVehInfo(playerid)
    {
    TextDrawHideForPlayer(playerid, BoxVehInfo[playerid]);
    TextDrawHideForPlayer(playerid, VehInfo[playerid]);
    return 1;
    }

  • Hey,
    habe ein Problem mit TextLabels.
    public OnPlayerPause(playerid){
    new Float:p[3]; GetPlayerPos(playerid,p[0],p[1],p[2]);
    Spieler[playerid][AFKLabel] = Create3DTextLabel(playerid,"Desktop seit 1 Sekunde",Rot,p[0],p[1],p[2],10,0,0);
    Spieler[playerid][AFKTime] = SetTimerEx("DeskTime",888,true,"i",playerid);
    new nName[MAX_PLAYER_NAME]; format(nName,MAX_PLAYER_NAME,"%s",PlayerName[playerid]);
    Spieler[playerid][afk] = 1;
    strins(nName,"[AFK]",0);
    return SetPlayerName(playerid,nName);
    }
    Alles wird erfolgreich gemacht, nur das Label wird nicht angezeigt..

  • public OnPlayerPause(playerid){
    new Float:P[3],nName[MAX_PLAYER_NAME];GetPlayerPos(playerid,P[0],P[1],P[2]),format(nName,MAX_PLAYER_NAME,PlayerName[playerid]);
    Spieler[playerid][AFKLabel]=Create3DTextLabel("Desktop seit 1 Sekunde",Rot,P[0],P[1],P[2],10,0,0);
    Spieler[playerid][AFKTime]=SetTimerEx("DeskTime",888,true,"i",playerid);
    Spieler[playerid][afk]=1;
    return strins(nName,"[AFK]",0),SetPlayerName(playerid,nName);
    }
    Schreib das mal so

  • Ich habe beim Registersystem InterpolateCamera verwendet.


    Wenn ich nun den Registervorgang abgeschlossen habe, spawne ich im Hintergrund und kann mich dann auf der Minikarte laufen sehen, während die Interpolate Camera stehen geblieben ist und nicht weggeht bis ich /kill eingebe. Wie lasse ich die Camera verschwinden nach dem letzten Dialog?


    Edit: Habs mit SpawnPlayer(playerid); hinbekommen.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • SetCameraBehindPlayer(playerid);
    Damit sollte es gehen.


    Mit SpawnPlayer geht es ebenfalls.


    Habe nun ein anderes Problem:


    if(killerid != INVALID_PLAYER_ID)
    {
    SetPlayerScore(killerid, GetPlayerScore(killerid) + 1);
    GivePlayerMoney(killerid, GetPlayerMoney (killerid) + 3500);
    }
    return 1;
    }


    Nach dem ersten Kill bekomme ich 3500, dann 9000, dann 24500 ? :s

  • Kann man Textdraws für eine bestimmte Zeit kurz anzeigen lassen ? z.B. wenn man jemanden tötet und das Textdraw für paar Sekunden eingeblendet wird ?


    Ja, wenn der Spieler Stirbt, lässt du die Textdraws einblenden und Startest einen Timer für den Spieler, der Timer sollte sich nicht wiederhohlen, ist der Timer fertig, kannst du die Textdraws wieder ausblenden.

  • Und was muss ich tun, damit er sich nicht wiederholt ?


    SetTimerEx("DestroyTextdraws", 5000, false, "i", playerid);//Timer - Er rufft nach 5 Sekunden bzw. 5000 Millisekunden das Public DestroyTextdraws auf und übergibt die Playerid. False = Das der Timer sich NICHT wiederhohlt | kann auch durch True ersetzt werden um sich zu Wiederhohlen.

  • if(strcmp(cmdtext,"/yellow",true) == 0)
    {
    if (AccInfo[playerid][Registered] == 1)
    {
    SetPlayerColor(playerid, yellow);
    SendClientMessage(playerid, COLOR_GREY,"* Hint: You can view a List of all available colors by typing /colors");
    dUserSetINT(PlayerName2(playerid)).("Color",Color); // : warning 213: tag mismatch
    return 1;
    }
    }


    Möchte die Spielerfarbe abspeichern, so dass wenn sie den Server das nächste mal betreten wieder die selbe Farbe haben. Habe ein Warning und weiß nicht ob ich den Ansatz richtig gemacht habe.
    mfg

  • enum PlayerData
    {
    Color,
    }


    OnPlayerConnect sowie bei Disconnect:
    AccInfo[playerid][Color] = 0;


    Bei dem Registrieren Command:
    dUserSetINT(PlayerName2(playerid)).("Color",0);


    Bei dem forward LoginPlayer sowie bei dem forward SavePlayerStats
    AccInfo[playerid][Color] = (dUserINT(PlayerName2(playerid)).("Color"));


    edit: Keiner ne idee? :S

    Einmal editiert, zuletzt von Salpoe ()