[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
  • Jeffry:


    Ich habe es nicht benutzt da ich das alles dann selber erstellt habe, wie jetzt.


    Nur wie baue ich jetzt die Funktionen dafür ein? Das sich das alles updatet und nicht nur auf 100 bleibt.



    #include <a_samp>


    new PlayerText:Textdraw0[MAX_PLAYERS];
    new PlayerText:Textdraw1[MAX_PLAYERS];




    public OnPlayerConnect(playerid)
    {


    Textdraw0[playerid] = CreatePlayerTextDraw(playerid,568.000000, 43.000000, "100");
    PlayerTextDrawBackgroundColor(playerid,Textdraw0[playerid], 255);
    PlayerTextDrawFont(playerid,Textdraw0[playerid], 2);
    PlayerTextDrawLetterSize(playerid,Textdraw0[playerid], 0.239999, 1.000000);
    PlayerTextDrawColor(playerid,Textdraw0[playerid], 16711935);
    PlayerTextDrawSetOutline(playerid,Textdraw0[playerid], 0);
    PlayerTextDrawSetProportional(playerid,Textdraw0[playerid], 1);
    PlayerTextDrawSetShadow(playerid,Textdraw0[playerid], 1);
    PlayerTextDrawSetSelectable(playerid,Textdraw0[playerid], 0);


    Textdraw1[playerid] = CreatePlayerTextDraw(playerid,568.000000, 65.000000, "100");
    PlayerTextDrawBackgroundColor(playerid,Textdraw1[playerid], 255);
    PlayerTextDrawFont(playerid,Textdraw1[playerid], 2);
    PlayerTextDrawLetterSize(playerid,Textdraw1[playerid], 0.239999, 1.000000);
    PlayerTextDrawColor(playerid,Textdraw1[playerid], 16711935);
    PlayerTextDrawSetOutline(playerid,Textdraw1[playerid], 0);
    PlayerTextDrawSetProportional(playerid,Textdraw1[playerid], 1);
    PlayerTextDrawSetShadow(playerid,Textdraw1[playerid], 1);
    PlayerTextDrawSetSelectable(playerid,Textdraw1[playerid], 0);


    return 1;


    }


    public OnPlayerDisconnect(playerid)
    {
    PlayerTextDrawDestroy(playerid, Textdraw0[playerid]);
    PlayerTextDrawDestroy(playerid, Textdraw1[playerid]);
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    PlayerTextDrawShow(playerid, Textdraw0[playerid]);
    PlayerTextDrawShow(playerid, Textdraw1[playerid]);
    return 1;
    }



    Mit freundlichen Grüßen
    JustMe.77 8)

  • Mit einem Timer:


    OnGameModeInit:
    SetTimer("UpdateHealth", 500, true);


    Ganz unten im Gamemode:
    forward UpdateHealth();
    public UpdateHealth()
    {
    new Float:health, Float:armour, str[10];
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    GetPlayerHealth(i, health);
    format(str, sizeof(str), "%0.0f", health);
    PlayerTextDrawSetString(i, Textdraw0[i], str);
    GetPlayerArmour(i, armour);
    format(str, sizeof(str), "%0.0f", armour);
    PlayerTextDrawSetString(i, Textdraw1[i], str);
    }
    }
    return 1;
    }

  • Jeffry:


    Geht das nicht in einem FilterScript (zum testen) oder warum erhalte ich ein Error:


    hbar.pwn(6) : error 025: function heading differs from prototype
    1 Error.




    public OnFilterScriptInit(playerid)
    {
    SetTimer("UpdateHealth", 500, true);
    return 1;
    }


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Jeffry:


    Manchmal passieren mir solche "dummen" Fehler, danke :D


    Funktioniert perfekt nur ein kleines Problem. Ich habe da wohl ein Fehler eingebaut und da Sachen vertauscht und wenn ich Health verliere, updatet sich das Armor Textdraw.


    Hatte einmal die ID's vertauscht doch das hat nix gebracht..


    Code nach wie vor:


    Spoiler anzeigen

    #include <a_samp>

    Spoiler anzeigen
    new PlayerText:Textdraw0[MAX_PLAYERS];
    new PlayerText:Textdraw1[MAX_PLAYERS];

    Spoiler anzeigen
    public OnFilterScriptInit()
    {
    SetTimer("UpdateHealth", 500, true);
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerConnect(playerid)
    {

    Spoiler anzeigen
    Textdraw0[playerid] = CreatePlayerTextDraw(playerid,568.000000, 43.000000, "100");
    PlayerTextDrawBackgroundColor(playerid,Textdraw0[playerid], 255);
    PlayerTextDrawFont(playerid,Textdraw0[playerid], 2);
    PlayerTextDrawLetterSize(playerid,Textdraw0[playerid], 0.239999, 1.000000);
    PlayerTextDrawColor(playerid,Textdraw0[playerid], 16711935);
    PlayerTextDrawSetOutline(playerid,Textdraw0[playerid], 0);
    PlayerTextDrawSetProportional(playerid,Textdraw0[playerid], 1);
    PlayerTextDrawSetShadow(playerid,Textdraw0[playerid], 1);
    PlayerTextDrawSetSelectable(playerid,Textdraw0[playerid], 0);

    Spoiler anzeigen
    Textdraw1[playerid] = CreatePlayerTextDraw(playerid,568.000000, 65.000000, "100");
    PlayerTextDrawBackgroundColor(playerid,Textdraw1[playerid], 255);
    PlayerTextDrawFont(playerid,Textdraw1[playerid], 2);
    PlayerTextDrawLetterSize(playerid,Textdraw1[playerid], 0.239999, 1.000000);
    PlayerTextDrawColor(playerid,Textdraw1[playerid], 16711935);
    PlayerTextDrawSetOutline(playerid,Textdraw1[playerid], 0);
    PlayerTextDrawSetProportional(playerid,Textdraw1[playerid], 1);
    PlayerTextDrawSetShadow(playerid,Textdraw1[playerid], 1);
    PlayerTextDrawSetSelectable(playerid,Textdraw1[playerid], 0);

    Spoiler anzeigen
    return 1;

    Spoiler anzeigen
    public OnPlayerDisconnect(playerid)
    {
    PlayerTextDrawDestroy(playerid, Textdraw0[playerid]);
    PlayerTextDrawDestroy(playerid, Textdraw1[playerid]);
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerSpawn(playerid)
    {
    PlayerTextDrawShow(playerid, Textdraw0[playerid]);
    PlayerTextDrawShow(playerid, Textdraw1[playerid]);
    return 1;
    }

    Spoiler anzeigen
    forward UpdateHealth();
    public UpdateHealth()
    {
    new Float:health, Float:armour, str[10];
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    GetPlayerHealth(i, health);
    format(str, sizeof(str), "%0.0f", health);
    PlayerTextDrawSetString(i, Textdraw0[i], str);
    GetPlayerArmour(i, armour);
    format(str, sizeof(str), "%0.0f", armour);
    PlayerTextDrawSetString(i, Textdraw1[i], str);
    }
    }
    return 1;
    }


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Jeffry:


    Das war mein Fehler das nicht notiert zu haben, normalerweise mache ich sowas.


    Aber wenn ich jetzt wüsste welches es wäre, was müsste ich alles umändern bzw. umtauschen?


    //Edit: Glaube 0 Steht für Armor da ich das als erstes erstellt habe.


    Mit freundlichen Grüßen
    JustMe.77 8)

  • forward UpdateHealth();
    public UpdateHealth()
    {
    new Float:health, Float:armour, str[10];
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    GetPlayerHealth(i, health);
    format(str, sizeof(str), "%0.0f", health);
    PlayerTextDrawSetString(i, Textdraw0[i], str);
    GetPlayerArmour(i, armour);
    format(str, sizeof(str), "%0.0f", armour);
    PlayerTextDrawSetString(i, Textdraw1[i], str);
    }
    }
    return 1;
    }
    Oder so
    forward UpdateHealth();
    public UpdateHealth()
    {
    new Float:health, Float:armour, str[10];
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    GetPlayerHealth(i, health);
    format(str, sizeof(str), "%0.0f", health);
    PlayerTextDrawSetString(i, Textdraw1[i], str);
    GetPlayerArmour(i, armour);
    format(str, sizeof(str), "%0.0f", armour);
    PlayerTextDrawSetString(i, Textdraw0[i], str);
    }
    }
    return 1;
    }


    Eines der beiden stimmt dann.

  • Das zweite war meine Wahl und auch die richtige, danke dir sehr Jeffry: :)! Werde das bald in mein Gamemode einbinden.


    Doch ich hätte da noch eine Frage:


    Ich habe mir da ein Teleport Befehl gebastelt welcher wunderbar funktioniert, doch ich würde gerne wissen wie ich die Funktion einbinde das auch mein Auto mit Teleportiert wird (auch das ich mit drin sitze). Habe das zurzeit noch nicht drinne.


    Schaut so aus:


    Befehl:



    ocmd:teleport(playerid,params[])
    {
    ShowPlayerDialog(playerid,DIALOG_TELEPORTS, DIALOG_STYLE_LIST, "Teleports", "LS Airport\nSF Airport\nLV Airport\nLnD-GH\nArea51\nAiport Ambadone\nChicken\nLSPD\nAll Saints Hospital\nGlen Park\nHighway\nWhitehouse", "Teleport", "Close");
    return 1;
    }


    OnPlayerDialogResponse



    //LOGIN ....


    if(dialogid == DIALOG_TELEPORTS)
    {
    if(response)
    {


    switch(listitem)
    {
    case 0: SetPlayerPos(playerid,1922.3157,-2540.7034,13.5469); //LS Airport
    case 1: SetPlayerPos(playerid,-1335.9342,-83.0129,14.1484); //SF Airport
    case 2: SetPlayerPos(playerid,1433.3839,1726.0897,10.8203); //LV Airport
    case 3: SetPlayerPos(playerid,280.9747,1400.6044,10.5796); //LnD Ganghouse
    case 4: SetPlayerPos(playerid,91.0602,1920.2573,17.9696); //Area51
    case 5: SetPlayerPos(playerid,413.4735,2502.2424,16.4844); //Airportambadone
    case 6: SetPlayerPos(playerid,-238.5612,2636.4333,62.6777); //Chicken
    case 7: SetPlayerPos(playerid,1546.7340,-1675.7531,13.5629); //LSPD
    case 8: SetPlayerPos(playerid,1185.3138,-1325.1349,13.5727); //All Saints Hospital
    case 9: SetPlayerPos(playerid,1929.7325,-1408.0227,13.5703); //Glen Park
    case 10: SetPlayerPos(playerid,1709.3668,-695.9572,46.1803); //Highway
    case 11: SetPlayerPos(playerid,1139.6428,-2037.8634,69.0078); //White House

    }
    }
    return 1;
    }


    return 0;
    }


    Mit freundlichen Grüßen
    JustMe.77 8)

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


    Wo definiere ich "new vehicleid = GetPlayerVehicleID(playerid);" ?


    Ganz oben im Script oder unter OnDialogResponse ? Wenn ich es ganz oben macht stürzt mein PAWN ab.
    Und wenn ich es bei OnDialogResponse mache kriege ich Errors.


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Bekomme leider es nicht hin die Tür so langsam nach links zu bewegen.. :S


    tor[78]=CreateDynamicObject(19302,1490.7266800,-1690.6906700,282.9035900,0.0000000,0.0000000,90.3600000);//Knast Gate Zelle 1


    if(IsPlayerInRangeOfPoint(playerid,5,1490.7266800,-1690.6906700,282.9035900))
    {
    if(isPlayerInFrakt(playerid,1) || isPlayerInFrakt(playerid,2) || isPlayerInFrakt(playerid,6) || isPlayerInFrakt(playerid,16) || isPlayerAnAdmin(playerid,6) && Spieler[playerid][pAdminOnduty] == true)
    {
    if(torstatus[78] == 0)
    {
    MoveDynamicObject(tor[78],1490.7266800 + 1,-1690.6906700,282.9035900);
    torstatus[78] = 1;
    PlayerHearMusicInRange(x,y,z,1035,5,1,500);//x,y,z,soundid,radius,timer an = 1 wenn aus = 0,zeit wann timer music/sound beendet
    return 1;
    }
    else
    {
    MoveDynamicObject(tor[78],1490.7266800,-1690.6906700,282.9035900,3);
    torstatus[78] = 0;
    PlayerHearMusicInRange(x,y,z,1035,5,1,500);//x,y,z,soundid,radius,timer an = 1 wenn aus = 0,zeit wann timer music/sound beendet
    return 1;
    }
    }
    return SendClientMessage(playerid,GRAU,"Du bist nicht in der jeweiligen Fraktion.");
    }

  • Eigentlich solltest du da eine Warnung erhalten, denn bei deinem ersten MoveDynamicObject fehlt hinten der Speed, den musst du noch hinzuzufügen.
    Beim zweiten MoveDynamicObject ist der Speed auf 3, das kannst du gegebenenfalls kleiner machen.

  • if(!strcmp(VehicleName[vModel-400][carinfo_tankart],"SUPER"))


    Schreib es evtl mal so:


    if(!strcmp(VehicleName[vModel-400][carinfo_tankart],"SUPER",true))


    Damit die Groß und Kleinschreibung egal ist :)

    ast2ufdyxkb1.png


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

  • Beitrag von IceWave ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Habe hier noch ein kleines Problem jetzt was ich nicht verstehe..
    if(!strcmp(VehicleName[vModel-400][carinfo_tankart],"Super"))
    {
    SetPVarInt(vID,"Test",1);
    SendClientMessage(playerid,GRUEN,"Test");
    }


    if(engine==1)
    {
    engine = 0;
    GameTextForPlayer(playerid,"Motor ~r~ausgeschaltet",600,5);
    }
    else
    {
    if(GetPVarInt(vID,"Test")==1)return SendClientMessage(playerid,ROT,"Abgesoffen");
    engine = 1;
    GameTextForPlayer(playerid,"Motor ~g~eingeschaltet",600,5);
    }


    Ich bekomme die Nachricht Test, aber der Motor springt dann trotzdem an.. Wie kann das sein


    Die VehicleID ändert sich doch nicht oder ?

    Einmal editiert, zuletzt von IceWave () aus folgendem Grund: Frage angehängt