Beiträge von Simon

    Guten Tag.


    Ich bin dabei die Statistiken eines Spieles mit Hilfe von Textdraws anzeigen zu lassen.
    Es läuft alles ganz normal und wie geplant. Nur bei dem Geld auf der Bank stimmt was nicht. Solange sich der Betrag unter 100000 befindet, wird dieser wie gewollt angezeigt. alles ab 100000 endet mit einem crash sobald das Textdraw angezeigt werden soll.
    Komisch ist das die Variable immer den richtigen Wert hat, das habe ich mit Hilfe von print ausgaben herausgefunden.
    Also habe ich mal versucht das ein wenig zu formatieren sobald der über 100000 kommt lasse ich das im format 100 Tausend oder 105.54 Tausend angeben. ab 1000000 würde er dann 1 Millionen anzeigen. so würde der Wert niemals über 100000 kommen.
    Jedoch crasht es dann auch. 1000ende wege um die Zahl zu formatieren ob mit
    new float:var = wert/100000;
    oder new Float:var = floatdiv(wert, 100000);
    Es crasht immer, wärend die Werte richtig sind laut Print ausgabe.


    Verblüffend und das nur ab einem Wert von 100000 und höher ?(?(

    Das glaub ich kaum


    enum pTDInfo
    {
    PlayerText:TachoInfo1,
    PlayerText:TachoInfo2,
    PlayerText:TachoInfo3,
    PlayerText:InfoBoxHeader,
    PlayerText:InfoBoxInfo,
    PlayerText:TaxameterDraw,
    PlayerText:Stats[4],
    }
    new pTextDraw[MAX_PLAYERS][pTDInfo];


    pTextDraw[playerid][Stats][0] = CreatePlayerTextDraw(playerid, 182.000000, 132.000000, astr);
    PlayerTextDrawAlignment(playerid, pTextDraw[playerid][Stats][0], 3);
    PlayerTextDrawBackgroundColor(playerid, pTextDraw[playerid][Stats][0], 255);
    PlayerTextDrawFont(playerid, pTextDraw[playerid][Stats][0], 1);
    PlayerTextDrawLetterSize(playerid, pTextDraw[playerid][Stats][0], 0.189998, 1.000000);
    PlayerTextDrawColor(playerid, pTextDraw[playerid][Stats][0], -1);
    PlayerTextDrawSetOutline(playerid, pTextDraw[playerid][Stats][0], 0);
    PlayerTextDrawSetProportional(playerid, pTextDraw[playerid][Stats][0], 1);
    PlayerTextDrawSetShadow(playerid, pTextDraw[playerid][Stats][0], 1);
    PlayerTextDrawSetSelectable(playerid, pTextDraw[playerid][Stats][0], 0);

    pTextDraw[playerid][Stats][1] = CreatePlayerTextDraw(playerid, 311.500000, 132.000000, kstr);
    PlayerTextDrawAlignment(playerid, pTextDraw[playerid][Stats][1], 3);
    PlayerTextDrawBackgroundColor(playerid, pTextDraw[playerid][Stats][1], 255);
    PlayerTextDrawFont(playerid, pTextDraw[playerid][Stats][1], 1);
    PlayerTextDrawLetterSize(playerid, pTextDraw[playerid][Stats][1], 0.189998, 1.000000);
    PlayerTextDrawColor(playerid, pTextDraw[playerid][Stats][1], -1);
    PlayerTextDrawSetOutline(playerid, pTextDraw[playerid][Stats][1], 0);
    PlayerTextDrawSetProportional(playerid, pTextDraw[playerid][Stats][1], 1);
    PlayerTextDrawSetShadow(playerid, pTextDraw[playerid][Stats][1], 1);
    PlayerTextDrawSetSelectable(playerid, pTextDraw[playerid][Stats][1], 0);

    pTextDraw[playerid][Stats][2] = CreatePlayerTextDraw(playerid, 440.000000, 132.000000, istr);
    PlayerTextDrawAlignment(playerid, pTextDraw[playerid][Stats][2], 3);
    PlayerTextDrawBackgroundColor(playerid, pTextDraw[playerid][Stats][2], 255);
    PlayerTextDrawFont(playerid, pTextDraw[playerid][Stats][2], 1);
    PlayerTextDrawLetterSize(playerid, pTextDraw[playerid][Stats][2], 0.189998, 1.000000);
    PlayerTextDrawColor(playerid, pTextDraw[playerid][Stats][2], -1);
    PlayerTextDrawSetOutline(playerid, pTextDraw[playerid][Stats][2], 0);
    PlayerTextDrawSetProportional(playerid, pTextDraw[playerid][Stats][2], 1);
    PlayerTextDrawSetShadow(playerid, pTextDraw[playerid][Stats][2], 1);
    PlayerTextDrawSetSelectable(playerid, pTextDraw[playerid][Stats][2], 0);

    pTextDraw[playerid][Stats][3] = CreatePlayerTextDraw(playerid, 569.000000, 132.000000, sstr);
    PlayerTextDrawAlignment(playerid, pTextDraw[playerid][Stats][3], 3);
    PlayerTextDrawBackgroundColor(playerid, pTextDraw[playerid][Stats][3], 255);
    PlayerTextDrawFont(playerid, pTextDraw[playerid][Stats][3], 1);
    PlayerTextDrawLetterSize(playerid, pTextDraw[playerid][Stats][3], 0.189998, 1.000000);
    PlayerTextDrawColor(playerid, pTextDraw[playerid][Stats][3], -1);
    PlayerTextDrawSetOutline(playerid, pTextDraw[playerid][Stats][3], 0);
    PlayerTextDrawSetProportional(playerid, pTextDraw[playerid][Stats][3], 1);
    PlayerTextDrawSetShadow(playerid, pTextDraw[playerid][Stats][3], 1);
    PlayerTextDrawSetSelectable(playerid, pTextDraw[playerid][Stats][3], 0);


    Zu dem Zeitpunkt wo die 4 erstellt werden nur für mich also 4x1 = 4 Textdraws sind maximal 1-3 Textdraws offen.

    Bin mir da nicht ganz sicher aber du solltest folgendes Probieren:


    Da die Distanzen zwischen den Punkten unterschiedlich sind und es einen Parameter für die Zeit gibt, musst du die Zeit so anpassen das die Geschwindigkeit immer die selbe bleibt.
    Das heißt bei einer entfernung von 100m und eine gewünschte zeit von 3 Sekunden, muss bei eine entfernung von 50m die Zeit auf 1,5 Sekunden gestellt werden, damit die Geschwindigkeit von Punkt A zu Punkt B gleich bleibt.


    Also rechnest du die Distanz zwischen den beiden Punkten und setzt dir einen festen Wert und passt den dann immer auf die Entfernung an wie in meinem Beispiel oben.

    Hat mal wer ein Array mit den Weapons (ID und SLOT) + Namen für mich?
    Ich finde gerade nichts über die Sufu


    Habe das hier:

    Spoiler anzeigen
    new Waffen[55][50] = {
    "Faust",
    "Schlagring",
    "Golfschläger",
    "Polizeistock",
    "Messer",
    "Baseballschläger",
    "Schaufel",
    "Billard Queue",
    "Katana",
    "Kettensäge",
    "Dildo",
    "Vibrator",
    "Vibrator",
    "Vibrator",
    "Blume",
    "Rohrstock",
    "Granate",
    "Tränengas",
    "Molotov Cocktail",
    "Unbekannt",
    "Unbekannt",
    "Unbekannt",
    "9mm",
    "SD Pistol",
    "Desert Eagle",
    "Shotgun",
    "abgesägte Shotgun",
    "Combat Shotgun",
    "Micro SMG",
    "MP5",
    "AK47",
    "M4",
    "Tec9",
    "Country Rifle",
    "Sniper Rifle",
    "Raketenwerfer",
    "HS Raketenwerfer",
    "Flammenwerfer",
    "Minigun",
    "Rucksackbombe",
    "Zünder",
    "Spraydose",
    "Feuerlöscher",
    "Kamera",
    "Nachtsichtgerät",
    "Infrarotsichtgerät",
    "Fallschirm",
    "Fake Pistol",
    "Unbekannt",
    "Fahrzeug",
    "Helicopterrotor",
    "Explosion",
    "Unbekannt",
    "Wasser",
    "gefallen"
    };

    OnPlayerUpdate nutze ich nicht


    habe 3 timer:

    • 1 Sekunde
    • 1 Minute
    • 300ms


    der Jede Sekunde checkt einige sachen und alles was irgentwie in Sekunden gezählt wird, wird dort gezählt
    Der Jede Minute Updatet einiges ab einer bestimten zeit und zählt das was in Minuten gezählt wird
    Der 300ms Updatet die Geschwindigkeitsanzeige bei Autos und ähnliches.

    Guten Tag


    Ich suche eine Funktion, mit der man eine zufällige Position zwischen 2 festgelegten Position bekommt.


    Ein Code-Beispiel:
    new Float:minX = 1000.0, Float:maxX = 2000.0, Float:minY = 1000.0,Float: maxY 2000.0, Float:newX, Float:newY, Float:z = 1500.0;
    newX = GetRandomPosition(minX, maxX);
    newY = GetRandomPosition(minY, maxY);
    SetPlayerPos(playerid, newX, newY, z);


    Quasi eine zufällige Positions innerhalb eines festgelegtem Bereiches bzw einer festgelegten Zone.

    sFloat: ergibt keinen Sinn.


    Float:NAME


    Und das Float: kannst du dann beim benutzen der Variable weglassen, das ist nur beim erstellen das Variable, damit er weiß das diese Variable ein Float ist.

    ocmd:respawnallcars(playerid,params[])
    {
    new string[128];
    if(!IstSpielerAdmin(playerid,3))return SendClientMessage(playerid,DUNKELGRAU," Du bist kein Admin!");
    {
    for(new c=0;c<MAX_VEHICLES;c++)
    {
    if(!IsValidVehicle(c)) continue;
    SetVehicleToRespawn(c);
    }
    format(string,sizeof(string),"AdmCmd: Administrator %s hat alle Fahrzeuge respawnt!",SpielerName(playerid));
    SendClientMessageToAll(HELLROT,string);
    }
    return 1;
    }

    SafeBoxx[playerid][XSafe] = dini_Float(SafeBocks,"sFloat:X");


    Ich glaube so sollte es richtig sein. Zeig mir mal die Enum für SafeBoxx.

    mysql_num_rows() gibt immer die Anzahl der Zeilen wieder, die zu der Query passen. Also musst du einfach eine Query nehmen die irgentwas von allen Zeilen wiedergibt zum Beispiel: SELECT * FROM Tabelle.
    Mehr ist das nicht.

    Zunächst zu meinem Fehler:


    Wenn ich da ein return ein setze ergibt die Funktion doch gar keinen Sinn mehr.


    bei folgendem code:
    new Variable = 5;
    Funktion(Variable);


    stock Funktion(&Parameter)
    {
    Parameter = 3;
    }
    Wird durch die Funktion Variable auf 3 gesetzt, da durch das & der Wert des parameters direkt für die eingesetze Variable gesetzt wird. Das ist der Sinn solcher Funktionen, genauso wie bei gettime, getdate, GetPlayerHealth, etc.


    Deine Art eine ID verschiebung zu verhindern ist aber sehr mühsam


    Und wie soll man das denn anders lösen?
    Mein beispiel der Id Verschiebung:


    new car[2];
    new bike{2];
    Angenommen ich habe jeweils car[0] und bike[0] erstellt. nun zerstöre ich bike[0] und erstelle car[1]. nun haben die variablen bike[0] und car[1] den selben Wert, da ich zwar das Fahrzeug zerstört habe, die Variable dabei aber unverändert bleibt.
    Dies wird durch die Funktionen halt gemacht. Was ist denn noch besser?

    Guten Tag


    Da ich häufig das Problem der ID Verschiebung hatte, erstelle ich für jede funktion die etwas zerstört ein eigenen stock, um die ID wieder auf -1 zu setzen.


    Beispiel:
    stock j_DestroyDynamicMapIcon(&mapconid)
    {
    DestroyDynamicMapIcon(mapconid);
    mapconid = -1;
    }


    stock j_PlayerTextDrawDestroy(playerid, &PlayerText:text)
    {
    PlayerTextDrawDestroy(playerid, text);
    text = PlayerText:INVALID_TEXT_DRAW;
    }


    stock j_TextDrawDestroy(&Text:text)
    {
    TextDrawDestroy(text);
    text = Text:INVALID_TEXT_DRAW;
    }


    Klappt super :)
    Das selbe versuche ich nun mit 3DTextLables:
    stock j_DestroyDynamic3DTextLabel(&Text3D:textid)
    {
    DestroyDynamic3DTextLabel(textid);
    textid = Text3D:INVALID_3DTEXT_ID;
    }
    Hier bekomme ich aber das Warning, das diese Funktion einen Wert zurückgeben sollte:

    Zitat

    C:\Program Files (x86)\Pawno\gamemodes\Server.pwn(22321) : warning 209: function "j_DestroyDynamic3DTextLabel" should return a value
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Warning.


    Ist aber vom Aufbau genauso wie die anderen und durch das '&' soll ja automatisch der Wert INVALID_3DTEXT_ID zurückgegeben werden.