Beiträge von Sry4pwn

    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/kaufen", cmdtext, true, 10) == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_KAUFEN,DIALOG_STYLE_MSGBOX,"Notebook kaufen:","Möchtest du ein Notebook für 250$ kaufen?","Kaufen","Abbrechen");
    return 1;
    }


    bei strcmp darfst du den "/" nicht weglassen ;)

    das frage ich mcih acuh öfters, keine ahnung woher die leute das haben,
    anscheinend hat irgend so n schlauer typ der tutorials macht, sich den scheis einfallen lassn xD


    ... oder sie wollen damit abfragen ob er eingeloggt ist und haben voll gefailt

    naya bei kaliber fehlt noch GetPlayerPos(playerid, x, y, z); wenn ich mich nicht irre ?


    //edit: achja und nochwas, das X+1 nützt in dieser variante eher weniger, erstens wird er selbst auch geportet, und zweitens werden eh mehrere spieler dorthin gerportet, die dann wieder ineinanderstehen.


    Folgendes müsste aber funktionieren, schaus dir einfach mal genau an


    if(!strcmp(cmdtext, "/gethereall", true))
    {
    if(PlayerInfo[playerid][pAdmin] < 6) return SendClientMessage(playerid,rot,"Du benötigst ein Adminlevel > 6 !");
    new Float:X, Float:Y, Float: Z, name[24], string[128];
    GetPlayerName(playerid, name, 24);
    format(string, 128,"Admin %s hat alle Spieler zu sich geportet !",name);
    SendClientMessageToAll(rot, string);
    GetPlayerPos(playerid, x, y, z);
    for(new i; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    if(i==playerid) continue;
    SetPlayerPos(i, X+1,Y,Z);
    }
    return 1;
    }

    also wenn ein spieler eine von samp erfasste taste aufrufr (draufdrückt) dann wird dieser callback aufgerufen.
    mit newkeys und oldkeys kannst du eben die änderung bestimmen. man kann nämlich auch mehrere tasten gleichzeitig drücken.


    in oldkeys werden die tasten die er vorhin gedrückt hatte (bevor er auf die taste drückt) angegeben
    in newkeys eben die danach.


    die tasten haben nciht sowas wie id's, deswegen können eben auch mehr tasten auf einmal übermittelt werden
    wenn du jetz eine bestimmte taste abfragen willst, ob sie gedrückt wird, fragst du ab if(newkeys & KEY_...) ...


    dieses & fragt ab ob die zahl in der anderen zahl enthalten ist.

    aber mal voll falsch, erstenes ein return in der for-schleife, d.h. nur einer kriegt den text zu lesen, zweitens wird bei dir die methode getplayerpos 500 mal ausgeführt ... sinnlos oder ?


    new string[128];
    format(string,128,"%s sagt: %s",SpielerName(playerid),text);
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    for(new i = 0;i<MAX_PLAYERS;i ++)
    {
    if(IsPlayerInRangeOfPoint(i,15.0,X,Y,Z))
    {
    SendClientMessage(i,White,string);
    }
    }
    return 0;

    lösch mal aus dein command die ganzen return 1 außer das am ende


    Unter OnPlayerCommandText dann return 1 machen wo return 0 steht und dann kommt die message nicht mehr



    yes,
    das ist optimiertes scripting....
    ich liebe server, auf denen kein hinweis auf einen nicht existierenden cmd kommt,
    ganz ehrlich, am besten garnicht scripten anfangen, dann hat man garkeine fehler.

    naya ich finde es sinnlos zu machen
    new busl1[MAX_PLAYERS];
    new busl2[MAX_PLAYERS];
    new busl3[MAX_PLAYERS];


    da man ja immer nur eine buslinie fährt und nie mehrere gleichzeitig, ist folgendes um einiges sinnvoller.


    new tempLine[MAX_PLAYERS];
    new tempCP[MAX_PLAYERS];


    wenn der spieler also den checkpoint betritt frägst du erst ab welche linie er fährt bei der ersten linie zB:
    if(tempLine[playerid]==1) switch(tempCP[playerid]) {
    case 0 : SetCp;
    case 1 : SetCp;
    }


    verstanden ?

    dummheit ?



    if(strcmp(cmdtext, "/afklist", true) == 0)
    {
    new aname[256], string[64];
    for(new i =0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(Player[i][AFK] == 1)
    {
    GetPlayerName(i, aname, sizeof(aname));
    format(string, 256, "%s\n%s", string, aname);
    }
    }
    }
    ShowPlayerDialog(playerid, DIALOG_AFKLIST, DIALOG_STYLE_MSGBOX, "AFK Spieler",string,"Schließen", ""); // und hier ist die Farbe (habe es Rot gemacht :))

    return 1;
    }

    vewende ein array ... also new busl1[MAX_PLAYERS];
    und dann eben busl1[playerid];


    da du aber sicher mehrere jobs machst, ist es besser, jeder buslinie, bzw jedem job eine id zu geben.
    dann erstellst du 2 arrays, einmal eines, dass die id des bisherigen jobs angibt, das andere den derzeitigen checkpoint...
    dann sparst du dir am ende viele nutzlose arrays

    suche nach "new format" und nenne die variable überall wo du sie benutzt um.


    die variable nummer wo du die nummer reinspeicherst, wird nie benutzt, d.h. du musst sie ja auch irwo speichern oda so.


    außerdem solltest du mit do while arbeiten, sonst könnte es sein, dass mehrere leute die selbe nummer haben.