Beiträge von Johnny

    So wie jeden anderen Befehl auch, nur mit den entsprechenden Funktionsaufrufen.
    Hast du jetzt gedacht, jemand macht dir den Befehl? ^^

    In dem zweiten SQL-Statement-Block, das du gepostet hast, sind zwei SQL Anweisungen (die letzten zwei Zeilen) einfach an das vorige Statement angehangen. Entweder da fehlt ein Semikolon in deinem Format, oder der String wird einfach weiter benutzt (im Sinne von: Weitere Inhalte anfügen)

    Dein Fehler besteht nur noch darin, dass die Spieler einen falschen Namen angeheftet bekommen?


    Das liegt an der Position von GetPlayerName, die eigentlich in die Schleife mit der Spieler-ID 'i' muss.
    [...]
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,0x6FFFFFFF,"The Player is not online");
    new str[32];
    for(new i=0; i < 20; i++)
    {
    if(!IsPlayerConnected(i) || IsPlayerNPC(i))continue;
    GetPlayerName(i, name, sizeof(name));
    format(str, sizeof(str), "{%06x} %s",GetPlayerColor(i) >>> 8,name);
    playertextid = CreatePlayer3DTextLabel(playerid,str,0xFF0000FF,0,0,0.2,400.0, i, INVALID_VEHICLE_ID, 0);
    }
    return 1;
    }


    Nur muss ich ehrlich gestehen, verstehe ich den Sinn des Befehls noch nicht zu 100%.
    Du möchtest alle Spieler per Befehl mit TextLabels versehen - Verstanden.
    Wessen Name soll denn dort stehen? Der von dem Spieler, dem die Spieler-ID "pID" zugewiesen wurde? Oder der Name des Spielers, der letztendlich markiert wurde?

    Das liegt daran das kein Ergebnis zurück geliefert wird und daher an deinem MySQL Befehl.


    Du kannst mal dein SQL -Befehl über phpmyadmin ausführen und schauen ob du ein Ergebnis bekommst, aber so wie ich sehe verwendest du die einfachen Anführungszeichen, welche falsch sind um Spaltennamen zu maskieren.



    SQL
    SELECT * FROM häuser WHERE `ID` < 18

    Ja genau. Die hochgestellten Kommata sind zum Eingrenzen von String-Konstanten und nicht für Spaltennamen.
    Eigentlich kannst du die Spaltennamen auch ohne irgendwelche einführenden und schließenden Zeichen nutzen, dein SQL-Resultat sollte gleich sein.
    SELECT * FROM häuser WHERE ID < 18;

    @timm462f


    Das liegt daran, dass in dem letzten Beispiels des Themenerstellers die Variable i immer den Wert 0 hat.
    Frag vorher ab, ob es unter dieser ID schon einen Clan gibt:

    [...]
    for(new i = 0; i < max_clan; i++){
    if(clanInfo[i][clanExists] == 1)continue; //Wie auch immer du kennzeichnest, dass es den Clan gibt.
    [...]


    Außerdem ist der Code generell nicht ordentlich, da nirgendwo definiert ist, ob es einen Clan gibt oder nicht.
    Generell werden keine Clan-Variablen gespeichert.

    Ohne den Rest jetzt aufmerksam durchgegangen zu sein fällt eins direkt ins Auge:
    [...]
    if(PlayerInfo[playerid][pJob] == 7)
    {
    SendClientMessage(playerid, rot, "Du bist kein kfz Mechatroniker!");
    return 1;
    }


    Dort muss stehen:
    if(PlayerInfo[playerid][pJob] != 7)

    Ja klar, da warst du mit GetPlayerWeapon(playerid) schon auf der richtigen Fährte ;)
    Wenn du alle Waffen außer die Faust zulässt, kannst du ja simplerweise alle anderen Wafen einschließen:
    [...]
    if(GetPlayerWeapon(playerid) > 0){
    [...]


    Da musst du aber schauen welche Waffen wirklich einbezogen werden sollen: http://wiki.sa-mp.com/wiki/Weapons

    Nein das stimmt so nicht ^^
    Ich dachte du wolltest deine Aktion nur an bestimmten Positionen ausführen lassen (Ich denke mal, das kommt bei dir noch)


    GetPlayerWeapon(playerid) hat nur einen Parameter. Dieser bezieht sich auf die Spieler-ID. Als Rückgabewert liefert die Funktion die Waffen-ID:
    [...]
    if(GetPlayerWeapon(playerid) == 24){
    [...]


    Und ein Hinweis aus dem SA:MP Wiki:



    Zitat von Wiki

    [KEY_AIM] not defined in SA:MP includes. You must define this yourself or use KEY_HANDBRAKE. fixes.inc includes this definition.

    Du kannst die Taste unter OnPlayerKeyStateChange abfragen. Dort fragst du ab, ob er sich auch in der richtigen Situation befindet (wahrscheinlich außerhalb von Fahrzeugen, ob er eine spezielle Waffe hat [die du evtl. verlangst], ob er an der richtigen Position ist und alles andere was du brauchst).

    Benutze es folgendermaßen:
    format(str[0],sizeof(str[]),"{CD0000}%s",topic);


    format(str[1],sizeof(str[]),"{CD0000}%s",button1);


    format(str[2],sizeof(str[]),"{CD0000}%s",button2);

    Aber ich kann das ja nicht xD.


    ich habe es selber mal versucht aber es geht einfach nicht


    Kannst du das ganz schnell für mich machen bitte :)

    Du willst es doch selber verstehen oder?
    Klingt zwar plump, aber es gilt schon immer "Learning by doing." ;)
    Die nötigen Seiten wurden dir ja bereits verlinkt.
    Falls du dann genaue Probleme hast kannst du sie ja jederzeit posten und man kann dir dann direkt helfen.

    Wo wird der Variable hitid ein Wert zugewiesen?
    Ist jetzt das erste was mir so auffällt, dass du im Befehl urplötzlich die Variable verwendest: if(IsPlayerConnected(hitid))

    Wenn der zu vergleichende String leer ist, wird ebenfalls das Ergebnis 0 geliefert.
    Mach vorher einfach eine Abfrage rein, ob der String etwas beinhaltet:
    if(!strlen(inputtext))return [Fehlermeldung o.ä.]


    oder:


    if(dialogid == DIALOG_DIALOG_MANAGE_ADMINRANG_EDIT){
    if(response==1 && strlen(inputtext)){
    if(strcmp(inputtext,"Umbenennen", true) == 0)return ShowPlayerDialog(playerid,DIALOG_MANAGE_ADMINRANG_EDIT2,DIALOG_STYLE_INPUT,titel,""#weiss_html"Gib einen neuen Namen für den Adminrang ein:","Ändern","Zurück");
    }
    }
    ShowPlayerDialog(playerid,DIALOG_BLABLA,DIALOG_STYLE_MSGBOX,"TITEL","Geheim","Ok","Zurück");
    }

    Zitat von Streamer Include

    native SetDynamicObjectMaterialText(STREAMER_TAG_OBJECT objectid, materialindex, const text[], materialsize = OBJECT_MATERIAL_SIZE_256x128, const fontface[] = "Arial", fontsize = 24, bold = 1, fontcolor = 0xFFFFFFFF, backcolor = 0, textalignment = 0);

    Und auf was für eine Distanz bist du nun aus?