Beiträge von Goldkiller

    Würde hier für keinen Timer benutzen.

    new tickLastUse[MAX_PLAYERS];


    public OnPlayerCommandText(playerid, cmdtext[])
    {


    if(!strcmp(cmdtext,"/ad",false,3))
    {
    new
    cTick = GetTickCount();
    if(strlen(cmdtext) < 4) return SendClientMessage(playerid,0xFFFFFFFF,"Nutze : /ad [Text]");
    if( (tickLastUse[playerid] + (10*1000)) > cTick) return SendClientMessage(playerid,0xFFFFFFFF,"Bitte warte noch etwas");
    new adtext[128];
    format(adtext,sizeof adtext,"Werbung : %s",cmdtext[4]);
    SendClientMessageToAll(0xFFFFFFFF,adtext);
    tickLastUse[playerid] = cTick;
    return 1;
    }
    return 0;
    }



    (10*1000)) - Bedeutet 10Sekunden bzw 10000ms / ticks.

    Ich hab dir geantwort und die Antworten geben.Du solltest auch mal Eigeninziative zeigen und nicht einfach hoffen,dass dir jeder das Script fertig gibt.
    So lernst du niemals was,aber wozu ist denn das Forum da ... :pinch:


    Ich kann es nicht ändern,dass du zu Faul bist im SA:MP Wiki zu gucken,welche Parameter Delete3DTextLabel brauch.Da frag ich lieber im Forum und warte Stunden,anstatt mich selber 30Sekunden hinzusetzen und selber zu gucken.Super Einstellung :thumbup:

    Dir sollte etwas auffallen:



    Label[playerid] = Create3DTextLabel(string,COLOR_BLUE,pPosX,pPosY,pPosZ,NAMETAG_SHOW_DISTANCE,-1,0);
    Attach3DTextLabelToPlayer(Label[playerid],playerid,0.0,0.0,0.0);
    Update3DTextLabelText(Label[playerid],COLOR_BLUE,string);


    DeletePlayer3DTextLabel(playerid,Deckname[playerid]);

    Falls nicht,schau mal hier unter Related Functions ( unten ).
    Du benutzt eine falsche Funktion,welche solltest du selber herraus finden.

    if(strcmp(cmd, "/deldeckname", true) == 0)


    {
    if(IsPlayerConnected(playerid))

    {
    if (!PlayerInfo[playerid][pAdmin] >= 1337)

    {
    SendClientMessage(playerid, COLOR_GRAD2," Du bist kein Admin!");
    return 1;

    }
    if(Deckname[playerid] == 1)

    {
    DeletePlayer3DTextLabel(playerid,Deckname[playerid]);
    SendClientMessage(playerid, COLOR_GRAD2," Deckname erfolgreich gelöscht!");
    Deckname[playerid] = 0;
    return 1;

    }
    else

    {
    SendClientMessage(playerid, COLOR_GRAD2,"Du hast keinen Decknamen erstellt!");
    return 1;

    }

    }
    return 1;

    }
    Woher willst du denn wissen,dass bei if(Deckname[playerid] == 1) es tatsächlich 1 ist?
    Du solltest mit einer anderen Variable ( bool ) überprüfen ob der Spieler einen Decknamen erstellt hat,nicht mit dem direkten 3DText.


    Möglich,dass es auch geht mit if(Deckname[playerid]) ,dazu müsstest du aber mindestens beim Connecten des Spielers den Decknamen auf 0 setzen.

    Das kommt davon,wenn man Copy & Paste macht.
    new cmd[256];


    if(strcmp(cmd, "/help", true) == 0)

    Erstmal brauchst du cmd überhaupt nicht,schon gar nicht mit einer Größe von 256.
    Die Abfrage wird immer false sein,da cmd ein bisher leerer String ist.Vergleichst du den mit irgendeinem anderem Text wird es immer false zurück geben.Von daher lass cmd gleich ganz weg und nimm cmdtext


    Achja,die Abfrage IsPlayerConnected() ist sowas von überflüssig ... Wie soll jemand einen Text schreiben,wenn er nicht auf dem Server ist?
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp(cmdtext, "/help", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    SendClientMessage(playerid, COLOR_BLAU,"==============[Commands]==============");
    SendClientMessage(playerid, COLOR_GRUEN,"*** ACCOUNT *** | /info /help ");
    SendClientMessage(playerid, COLOR_GRUEN,"*** CAR *** | /parken /carlock /carsell");
    }
    return 1;
    }

    if(strcmp(cmdtext, "/info", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    SendClientMessage(playerid, COLOR_BLAU,"==============[info]==============");
    SendClientMessage(playerid, COLOR_GRUEN,"ComaCrew Rl script 0.01a");
    SendClientMessage(playerid, COLOR_GRUEN,"Forum:");
    SendClientMessage(playerid, COLOR_GRUEN,"Teamspeak:");
    SendClientMessage(playerid, COLOR_GRUEN,"SuperAdmin: [CC]Saki");
    }
    return 1;
    }
    }

    GetPlayerNearestCarID(playerid,Float:radius)
    {
    new Float:vx,Float:vy,Float:vz,carid;
    for(new v = 0; v <= MAX_VEHICLES; v++)
    {
    GetVehiclePos(v,vx,vy,vz);
    if(IsPlayerInRangeOfPoint(playerid,radius,vx,vy,vz))
    {
    carid = v;
    return carid;
    }
    }
    return 1;
    }
    Die Funktion würde generell immer true zurück geben,weshalb sie relativ sinnlos ist.
    GetPlayerNearestCarID(playerid,Float:radius)
    {
    new Float:vx,Float:vy,Float:vz,carid;
    for(new v = 1; v <= MAX_VEHICLES; v++) // VehicleID's starten bei 1
    {
    GetVehiclePos(v,vx,vy,vz);
    if(IsPlayerInRangeOfPoint(playerid,radius,vx,vy,vz))
    {
    carid = v;
    return carid;
    }
    }
    return 0; // Hier muss 0 - false hin
    }

    Learning by Doing.


    Fang nochmal ganz klein an mit relativ einfachen Sachen,wie einem zufälligem Wetter per Timer und steiger dich immer weiter.
    Das funktioniert aber auch nur,wenn du genug Eigeniniziative zeigst und nicht nach 5Minuten aufgibst und hier um Hilfe bittest ;) .

    Bis man die alten,unnötigen Beiträge gelöscht hat,sind wieder 1000 neue enstanden.
    Dafür müsste man das Forum wohl oder übel offline nehmen,was den meisten hier sicherlich nicht gefällt da sie ständig Hilfe brauchen.

    Das geht natürlich auch.


    ShowPlayerDialog(playerid, msg, DIALOG_STYLE_LIST, "Info", "400 - Landstalker\n \
    401 - Bravura\n \
    402 - Buffalo\n \
    403 - Linerunner\n \
    404 - Perenniel\n \
    405 - Bullet", "Spawn Fahrzeug", "Beenden");

    Um das richtig dargestellt zu sehen,kopier dir das mal in dein SourceCode.