[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
  • Wenn du das so machen möchtest:
    nstring = strval(inputtext);
    Dann darf nstring kein String sein.


    Ansonsten musst du das so machen:
    format(nstring,sizeof nstring,inputtext);

  • Hey, weiß jemand mit welcher Funktion man die Checkpoints in der Luft erstellt, also damit meine ich diese Ringe die man gut für eine Flugschule nutzen kann etc.
    Komm gerade nicht drauf wie die Funktion heißt ^^ Oder ist das einfach SetPlayerCheckpoint?


    MfG

    Nexus Reallife: ts1.gta4.me:4014
    Schaut vorbei!



  • Jeffry: So sieht die impl.inc aus (ein Teil davon)


    Spoiler anzeigen

    public OnPlayerClickPlayer(playerid, clickedplayerid, source)
    {
    P:2("Hooks_OnPlayerClickPlayer called: %d, %d, %d", playerid, clickedplayerid, source);
    new
    end = _:YSI_g_sCallbackEnd[ALS_OnPlayerClickPlayer],
    start = _:YSI_g_sCallbackStart[ALS_OnPlayerClickPlayer],
    ret = ALS_R_PlayerClickPlayer;
    while (start++ != end)
    {
    #emit PUSH.S source
    #emit PUSH.S clickedplayerid
    #emit PUSH.S playerid
    #emit PUSH.C 12
    #emit CONST.alt YSI_g_sCallbackAddresses
    #emit LOAD.S.pri start
    //#emit INC.pri
    //#emit STOR.S.pri start
    #emit LIDX
    #emit MOVE.alt
    #emit LCTRL 6
    #emit ADD.C 24
    #emit PUSH.pri
    #emit MOVE.pri
    #emit SCTRL 6
    #emit MOVE.alt
    #emit CONST.pri 0xFFFFFFFE
    #emit AND
    #emit PUSH.pri
    #emit LOAD.S.pri ret
    #emit AND
    #emit POP.alt
    #emit OR
    #emit STOR.S.pri ret
    if (ret < 0) return ret + 1;
    }
    return ret;
    }
    #if defined _ALS_OnPlayerClickPlayer
    #undef OnPlayerClickPlayer
    #else
    #define _ALS_OnPlayerClickPlayer
    #endif
    #define OnPlayerClickPlayer S@@_OnPlayerClickPlayer
    HOOK_FORWARD<PlayerClickPlayer>

    Spoiler anzeigen
    public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid)
    {
    P:2("Hooks_OnPlayerTakeDamage called: %d, %d, %f, %d, %d", playerid, issuerid, Float:amount, weaponid);
    new
    end = _:YSI_g_sCallbackEnd[ALS_OnPlayerTakeDamage],
    start = _:YSI_g_sCallbackStart[ALS_OnPlayerTakeDamage],
    ret = ALS_R_PlayerTakeDamage;
    while (start++ != end)
    {
    #emit PUSH.S weaponid
    #emit PUSH.S amount
    #emit PUSH.S issuerid
    #emit PUSH.S playerid
    #emit PUSH.C 20
    #emit CONST.alt YSI_g_sCallbackAddresses
    #emit LOAD.S.pri start
    //#emit INC.pri
    //#emit STOR.S.pri start
    #emit LIDX
    #emit MOVE.alt
    #emit LCTRL 6
    #emit ADD.C 24
    #emit PUSH.pri
    #emit MOVE.pri
    #emit SCTRL 6
    #emit MOVE.alt
    #emit CONST.pri 0xFFFFFFFE
    #emit AND
    #emit PUSH.pri
    #emit LOAD.S.pri ret
    #emit AND
    #emit POP.alt
    #emit OR
    #emit STOR.S.pri ret
    if (ret < 0) return ret + 1;
    }
    return ret;
    }
    #if defined _ALS_OnPlayerTakeDamage
    #undef OnPlayerTakeDamage
    #else
    #define _ALS_OnPlayerTakeDamage
    #endif
    #define OnPlayerTakeDamage S@@_OnPlayerTakeDamage
    HOOK_FORWARD<PlayerTakeDamage>

    Spoiler anzeigen
    public OnPlayerDamage(&playerid, &Float:amount, &issuerid, &weapon, &bodypart)
    {
    P:2("Hooks_OnPlayerGiveDamage called: %d, %d, %f, %d, %d", playerid, damagedid, Float:amount, weaponid);
    new
    end = _:YSI_g_sCallbackEnd[ALS_OnPlayerGiveDamage],
    start = _:YSI_g_sCallbackStart[ALS_OnPlayerGiveDamage],
    ret = ALS_R_PlayerGiveDamage;
    while (start++ != end)
    {
    #emit PUSH.S weaponid
    #emit PUSH.S amount
    #emit PUSH.S damagedid
    #emit PUSH.S playerid
    #emit PUSH.C 20
    #emit CONST.alt YSI_g_sCallbackAddresses
    #emit LOAD.S.pri start
    //#emit INC.pri
    //#emit STOR.S.pri start
    #emit LIDX
    #emit MOVE.alt
    #emit LCTRL 6
    #emit ADD.C 24
    #emit PUSH.pri
    #emit MOVE.pri
    #emit SCTRL 6
    #emit MOVE.alt
    #emit CONST.pri 0xFFFFFFFE
    #emit AND
    #emit PUSH.pri
    #emit LOAD.S.pri ret
    #emit AND
    #emit POP.alt
    #emit OR
    #emit STOR.S.pri ret
    if (ret < 0) return ret + 1;
    }
    return ret;
    }
    #if defined _ALS_OnPlayerGiveDamage
    #undef OnPlayerGiveDamage
    #else
    #define _ALS_OnPlayerGiveDamage
    #endif
    #define OnPlayerGiveDamage S@@_OnPlayerGiveDamage
    HOOK_FORWARD<PlayerGiveDamage>

    Spoiler anzeigen
    #if !defined _ALS_OnPlayerLogin
    forward OnPlayerLogin(playerid, uid);
    #endif


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Das Callback OnPlayerTakeDamage das du eingefügt hast wird wohl über einen Hook schon definiert sein. Die Variablen die als undefined angezeigt werden scheinen dazuzugehören.
    Da ich weder die Include kenne noch habe ist es am sinnvollsten wenn du dich mit Slice in Verbindung setzt, der wird dir sagen können, was du machen musst, damit es klappt.


    Alternativ musst du eben mal suchen, ob du das irgendwo über einen Hook definiert findest, dann kannst du den entsprechenden Code ja dort einfügen.

  • Ich bin mir nicht sicher ob das funktionieren wird, aber warum sollte man das nicht ausprobieren.
    Füge vor SetPlayerSpecialAction mal folgendes ein:
    ClearAnimations(playerid);


    Funktioniert die Animation dann?

  • Leider nein.


    Nimm anstatt der Special Action eine der 2 Animation, entweder:


    //1. Chair sit:
    ApplyAnimation(playerid,"BAR","dnk_stndF_loop",4.0,1,0,0,0,0);


    //2. Ground sit
    ApplyAnimation(playerid,"BEACH", "ParkSit_M_loop", 4.0, 1, 0, 0, 0, 0);

    ast2ufdyxkb1.png


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

  • Ich möchte dass das "Willkommen auf" nur einmal auf dem Objekt steht doch bisher steht es 100 mal drauf
    new tutob = CreateObject(18981, -2682.01831, 1594.34729, 122.65980, 0.00000, 0.00000, 90.00000); SetObjectMaterialText(tutob, "Willkommen {FFFFFF}auf", 0, OBJECT_MATERIAL_SIZE_512x512 , "Arial", 255, 1, 0xFFFF8200,0, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);

  • Nutze diese unsichtbaren Objekte, die haben keine sich wiederholende Textur:

    Code
    19475	Plane001
    19476	Plane002
    19477	Plane003
    19478	Plane004
    19479	Plane005
    19480	Plane006
    19481	Plane007
    19482	Plane008
    19483	Plane009

    Bei deinem Objekt ist das Problem, dass die Textur sich alle paar Zentimeter wiederholt, und somit x mal ersetzt wird.

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