Beiträge von Edgar

    Beim eingeben des Thread-Titels gab es 2 Vorschläge, einmal ein Filterscript und eine Server Vorstellung.
    Bei Google habe ich auch schon einiges eingegeben.


    Das komische ist aber auch das laut der Beschreibung vom Wiki es die aktuelle Position nehmen sollte...

    Das liegt am Streamer - vermutlich.
    Das rendern der Objecte dauert etwas je weiter die Person weg ist.
    Ich würde dir raten einfach ein Object mit CreateObject anstatt
    CreateDynamicObject als Boden hinzu mappen.

    Danke für deine Antwort,
    das Problem ist nur das ich das Object nicht da positioniert habe wo ich es haben will, ich positioniere es ja InGame.
    Es wird ja ein Text auf das Object attached und ich möchte das es perfekt an der Wand positioniert ist, dass kann
    ich - denke ich - nicht mit dem Editor machen, zudem möchte ich es generell inGame möglich haben, es sollte ein
    Dynamisches System werden womit man die Position des Object's verändert und es dann gespeichert wird.
    Wie schon oben erwähnt ist das einzige was nicht geht das mit der aktuellen Position auslesen.

    Hallo zusammen,
    ich habe derzeit ein Problem, und zwar, wenn ich ein Object erstelle
    //Variablen str, font, size und ID sind oben via sscanf angegeben und werden auch abgefragt.
    GetPlayerPos(playerid, X, Y, Z);
    SprayObj[0] = CreateDynamicObject(ID, X+0.5, Y+0.5, Z, 0.0, 0.0, 0.0);
    EditDynamicObject(playerid, SprayObj[0]);
    SetDynamicObjectMaterialText(SprayObj[0], 0, str, OBJECT_MATERIAL_SIZE_256x128, font, size, 1, 0xD70000FF, 0, 0);
    und es dann über
    EditDynamicObject(playerid, SprayObj[0]);
    neu positionieren möchte und danach
    new Float:x, Float:y, Float:z, Float:zx, Float:zy, Float:zz, str[280];
    GetDynamicObjectPos(SprayObj[0], x, y, z);
    GetDynamicObjectRot(SprayObj[0], zx, zy, zz);
    format(str, sizeof str, "X: %f, Y: %f, Z: %f - XR: %f, YR: %f, ZR: %f",x, y, z, zx, zy, zz);
    echo(playerid, cRed, str);
    die Position ausgeben möchte gibt er mir die Position an wo das Object erstellt wurde nicht wo es sich derzeit befindet,
    ist das so gewollt oder mache ich was falsch? Wenn ja, wie kann ich die aktuelle Position herausfinden?


    Edit:
    Ich habe soeben bemerkt das es auch mit CreateObject, EditObject und GetObjectPos auch nicht geht, liegt also nicht am Streamer.


    Mit freundlichen Grüßen

    ocmd:arrest(playerid,params[])
    {
    if(gTeam[playerid] == TEAM_COPS)
    {
    new pID;
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,ROT, "Benutzung: /arrest [ID]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid, ROT, "Der Spieler ist nicht online!");
    new Float:x, Float:y, Float:z;
    GetPlayerPos(pID, x, y, z);
    if(IsPlayerInRangeOfPoint(pID,5.0, x,y,z)) {
    if(GetPlayerWantedLevel(pID) >=5)
    {
    new strg[250];
    new arname[MAX_PLAYER_NAME];
    new copname[MAX_PLAYER_NAME];
    GetPlayerName(pID, arname,sizeof(arname));
    GetPlayerName(playerid,copname, sizeof(copname));
    format(strg, sizeof(strg), "Knast-Info: %s wurde von Officer %s Eingesperrt!", arname,copname);
    SetPlayerInterior(pID, 3);
    SetPlayerPos(pID, 194.0580,175.4876,1003.0234);
    SendClientMessageToAll(ROT, strg);
    SendClientMessage(pID, ROT, "Ein Cop hat dich verhaftet und du wurdest eingesperrt! (( 20 Sekunden ))");
    GivePlayerMoney(playerid, 5000);
    timerkill = SetTimerEx("Knast", 20000, false,"i", pID );
    ResetPlayerWeapons(pID);
    SetPlayerWantedLevel(pID, 0);
    SetPlayerColor(pID, WEISS);
    knasted[pID] = 1;
    return 1;
    }
    else SendClientMessage(playerid, ROT, "Der Spieler hat zu wenig Wanteds! Stelle ihm ein Ticket mit /ticket aus!");
    }
    else SendClientMessage(playerid, ROT, "Spieler ist nicht in der Nähe!");
    }
    else SendClientMessage(playerid, ROT, "Du bist kein Cop!");
    return 1;
    }


    So sollte es wohl besser funktionieren.
    Zur For-Schleife:
    Eine For-Schleife ist eine Schleife die sooft wie du es angibst ausgeführt wirst, Beispiel:
    for(new i = 0; i < MAX_PLAYERS; i++)
    heißt
    for(new Variable ist 0; Variable ist kleiner als MAX_PLAYERS; variable wird um 1 erhöht)
    Damit kannst du z.B alle Spieler, Fahrzeuge oder Erstellten Häuser - je nachdem wie dein System ist - abzählen.

    So wie ich es habe sollte es richtig sein, das "VARIABLE VOM RANGNAME" da musst du deine Funktion What ever einfügen.
    Wie lautet denn dein Adminrank Variable und die einzellnen Adminranknamen?


    new AdutyLabel[MAX_PLAYERS]; // Oben definieren
    //:________________________:
    Aduty[playerid] = 1;
    new LabelStr[180], string[128], alvl[64], name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    format(LabelStr, sizeof LabelStr, "%s OnDuty", VARIABLE VOM RANGNAMEN);
    AdutyLabel[playerid] = Create3DTextLabel(LabelStr, 0x0A00FFFF,0.0,0.0,0.0, 20.0, 0, 0);
    Attach3DTextLabelToPlayer(AdutyLabel[playerid], playerid, 0.0, 0.0, 0.4);
    SetPlayerHealth(playerid, 100);
    SetPlayerArmour(playerid, 100);
    SetPlayerColor(playerid,RED);
    SetPlayerSkin(playerid,217);
    ShowPlayerMarkers(1);


    Ungetestet sollte aber gehen.
    Haupt Fehler war SetPlayerHealth.

    Ich denke das es daran liegt:


    Du sagst ja auch, das dieses Textdraw eine Box ist und keine Schrift
    TextDrawUseBox(Usebox,1);


    Du must für den Text ein extra Textdraw machen.

    Schwachsinn, man kann ein Textdraw erstellen und eine Box in den Hintergrund legen, dafür braucht man kein extra Textdraw.


    b2t:
    Funktioniert es denn jetzt?
    Das Forum meldet mir:
    Achtung! Dieses Thema wurde als erledigt markiert. Bitte erstellen Sie ggf. ein neues Thema.

    Hey,


    mach mal bei allen "if(!strcmp(tmp,"***",true))" das Ausrufezeichen weg. Dann sollte es gehen :)


    MfG StreetFX

    Bitte schau dir doch mal die Grundfunktion von strcmp im SA-MP Wiki an.



    Sein Problem ist:
    Wenn ich zb. /service Medic eingebe zeigt er mir diesen Text an.
    INFO: /service [Taxi/Oamt/ADAC/Medic/SAPD]



    Sprich, es wird hier return:
    if(sscanf(params,"s[128]",tmp))return SendClientMessage(playerid,grau,"INFO: /service [Taxi/Oamt/ADAC/Medic/SAPD]");
    Somit kommen wir wieder zu meinem Post zurück:
    Schau dir diese Zeile an
    if(sscanf(params,"s[128]",tmp))return SendClientMessage(playerid,grau,"INFO: /service [Taxi/Oamt/ADAC/Medic/SAPD]");


    Bei deine, Params brauchst du die String Länge nicht anzugeben.. Sprich


    if(sscanf(params,"s",tmp))return SendClientMessage(playerid,grau,"INFO: /service [Taxi/Oamt/ADAC/Medic/SAPD]");

    Schau dir diese Zeile an
    if(sscanf(params,"s[128]",tmp))return SendClientMessage(playerid,grau,"INFO: /service [Taxi/Oamt/ADAC/Medic/SAPD]");


    Bei deine, Params brauchst du die String Länge nicht anzugeben.. Sprich


    if(sscanf(params,"s",tmp))return SendClientMessage(playerid,grau,"INFO: /service [Taxi/Oamt/ADAC/Medic/SAPD]");

    Ich glaube zwar nicht das du alles gelesen hast was ich geschrieben habe, aber es ist Ja nicht mein System
    das ich beheben muss :whistling:.


    if(clickedid == BlitzerMenu20)
    {
    if(BlitzerInfo[blitzerid[playerid]][Geschwindigkeit] <= 30 || BlitzerInfo[blitzerid[playerid]][Geschwindigkeit] >= 280)
    return SendClientMessage(playerid,WHITE,"Fehler, die Werte sind zu niedrig bzw zu hoch!");
    BlitzerInfo[blitzerid[playerid]][Strafe] -= 10;
    new string[64];
    format(string,sizeof(string),"%d KM/H",BlitzerInfo[blitzerid[playerid]][Strafe]);
    TextDrawHideForPlayer(playerid,BlitzerMenu22);
    TextDrawSetString(BlitzerMenu22,string);
    TextDrawShowForPlayer(playerid,BlitzerMenu22);
    }


    Versuch dies mal so, wenn dies geht ändere deine anderen Abfragen auch so.