Beiträge von UncleSub

    Wie auf der Seite, die du oben genannt hast, erwähnt, ist KEY_LOOK_RIGHT nur als Key im Fahrzeug definiert.
    Such dir eine andere Taste aus.


    Mfg,
    UncleSub

    Das geht eigentlich mit R7 ganz einfach:


    Bei OnPlayerConnect ein Query mit einer x beliebigen Spalte senden (Bsp.: id)



    format(string, 128, "SELECT id FROM accounts WHERE Name='%s'", SpielerName(playerid));
    mysql_function_query(handle, string, true, "OnCheckAccount", "i", playerid);


    Dann im neuem Thread (Callback):



    forward OnCheckAccount(playerid);
    public OnCheckAccount(playerid)
    {
    new felder, zeilen;
    cache_get_data(zeilen, felder);
    if(!zeilen)
    {
    //Account existiert nicht
    }
    else
    {
    //Account existiert
    }
    return 1;
    }


    Mfg,
    UncleSub

    Zum ersten:
    Du willst ja, dass das Pickup da bleibt und dass andere Spieler auch die Waffe ausrüsten können. Damit jeder Spieler dies aber nur einmal kann, musst du eine globale Variable, oder eine PVar setzen, dass der Spieler die Waffe bereits ausgerüstet hat. Bei OnPlayerDeath musst du diese dann wieder löschen.


    Bsp.:

    //OnPlayerPickupPickup
    SetPVarInt(playerid, "mp5gerüstet", 1);
    //OnPlayerDeath
    DeletePVar(playerid, "mp5gerüstet");


    Zum zweiten:
    Du musst als pickup spawn type 1 nehmen.
    Bsp:

    CreatePickup(model, 1, Float:X, Float:Y, Float:Z, Virtualworld)


    Mfg,
    UncleSub


    Ohne das break und es müsste gehen.


    Mfg


    Mach bei OnPlayerConnect einmal TogglePlayerSpectating(playerid, 1); und wenn er erfolgreich eingeloggt ist machst du dann TogglePlayerSpectating(playerid, 0);



    Mfg

    Ja aber ich will das sie alle nicht Blau odersowas anzeigen auf der minimap sondern in ihrer Frakions farbe @ UncleSub:


    Ich bastel dir jetzt ganz bestimmt nicht etwas dazu. Probier doch mal sachen alleine, nur so kann man was lernen.


    Denkanstoß:



    stock GetFraktColor(fraktid)
    {
    new color;
    switch(fraktid)
    {
    case 0: color = 0xblabla;
    //Alle Fraktionen
    }
    return color;
    }


    //OnPlayerConnect
    SetPlayerColor(playerid, GetFraktColor(/*Fraktionsvariable*/));

    Das else ändert auch nichts daran, dass die Schleife durch das return abgebrochen wird. Wenn du es nach Methode 1 machst, darfst du natürlich keine Nachrichten senden, sonst kommt es zu Spam.


    So würde ich es machen:



    ocmd:takecorpse(playerid,params[])
    {
    new text[36], id = -1;
    if(PlayerInfo[playerid][pJob] != 36)
    {
    return SendClientMessage(playerid,WHITE,"Du bist kein Bestatter");
    }
    if(IsPlayerInAnyVehicle(playerid))
    {
    return SendClientMessage(playerid,WHITE,"Du darfst nicht in einem Fahrzeug sein!");
    }
    if(sscanf(params,"s",text)) //Ich weiß nicht wie du es haben willst, aber für ID's gibt es ja auch "u", das gibt dir ja die userid aus.
    {
    return SendClientMessage(playerid,WHITE,"Nutzung: /takecorpse [Name der Leiche]");
    }
    for(new i; i < MAX_BESTATTER; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(!strcmp(text,BestatterInfo[i][Opfer],true))
    {
    id = i;
    break;
    }
    }
    }
    if(id == -1)
    {
    return SendClientMessage(playerid,WHITE,"Falscher Name, bitte schreibe vollständig den Namen!");
    }
    if(!IsPlayerInRangeOfPoint(playerid,5.0,BestatterInfo[id][Todx],BestatterInfo[id][Tody],BestatterInfo[id][Todz]))
    {
    return SendClientMessage(playerid,WHITE,"Du bist nicht bei der Leiche");
    }
    if(BestatterInfo[id][Bestatterid] == playerid)
    {
    return SendClientMessage(playerid,WHITE,"Dieser Auftrag gehört dir nicht");
    }
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"** Du hast eine Leiche aufgesammelt!");
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"** Gehe nun zum Kofferraum und gebe ein /laycorpse!");
    DestroyPickup(TotenKopf[bestattervar[playerid]]);
    Delete3DTextLabel(TotenLabeli[bestattervar[playerid]]);
    KillTimer(totentimer[BestatterInfo[id][Spielerid]]);
    hatleiche[playerid] = 1;
    bestatterpoint[playerid] = 1;
    return 1;
    }


    Ich weiß aber natürlich nicht, wie du den Befehl genau haben willst. Als Denkanstoß sollte es aber reichen. :)

    Aber in meinen anderen gehts auch soll ich da dann else schreiben?


    Ist ja schön und gut, aber die return's müssen raus. Überleg dir doch einfach mal logisch, was passiert, wenn du den Befehl eingibst. Wenn ein return auftaucht, bricht die Schleife ab, ob du es glaubst oder nicht.
    Wie du es machen kannst:
    1. Alles "positiv" Scripten. Sprich, du machst, dass er den Code ausführt, wenn die Umstände gegeben sind. (Bsp.: Statt !IsPlayerInRangeOfPoint machst du IsPlayerInRangeOfPoint)
    2. In einer Schleife die Id des nächstgelegenen Toten in einer Variable schreiben und danach den Code in der Schleife ausführen.


    Mfg

    Nein die return's raus. Damit brichst du die gesamte Schleife ab, wie beim break. Das break kannst du aber drin lassen. Musst den Code umschreiben, dass du alles ohne return's hast, außer du willst, dass die Schleife abbricht.


    Mfg

    Mal ein kleiner Denkanstoß: Klick mich.
    Damit lässt du den Spieler wieder zur Class Selection. Dann musst du noch unter OnPlayerRequestClass die Camera setzen, etc.


    Mfg

    if(!IsPlayerInRangeOfPoint(playerid,5.0,BestatterInfo[i][Todx],BestatterInfo[i][Tody],BestatterInfo[i][Todz])) return SendClientMessage(playerid,WHITE,"Du bist bei keiner Leiche!");


    Kann auch nicht gehen. Wenn du bei diesem Code nicht bei der ersten Person (Id 0) stehst, bricht er die gesamte Schleife ab und gibt dir die Nachricht heraus.


    Mfg


    Das nach oben.


    Und bei deinem Command musst du das machen:



    ocmd:pbenter(playerid, params[])
    {
    if(IsPlayerInRangeOfPoint(playerid,2.0,1421.74, -1179.36, 25.32))
    {
    Spieler[playerid][Paintball] = 1;
    new rand = random(sizeof(pbSpawns));
    SetPlayerPos(playerid, pbSpawns[rand][0], pbSpawns[rand][1], pbSpawns[rand][2]);
    SetPlayerInterior(playerid,10);
    PayPlayerMoney(playerid,-500);
    ResetPlayerWeapons(playerid);
    GivePlayerWeapon(playerid,24,150);
    GivePlayerWeapon(playerid,27,80);
    GivePlayerWeapon(playerid,34,50);
    SCM(playerid,BAIGE,"Du befindest Dich in der Paintball Arena. [-500]");
    new pID, n1[128], grund[128];
    format(n1,sizeof(n1),"%s hat die Paintball Arena betretet.",SpielerName(playerid),SpielerName(pID),grund);
    SendClientMessageToAll(GRUEN,n1);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,BAIGE,"Du bist nicht an der Paintball Arena!");
    return 1;
    }
    }

    Alles klar, also bevor das er durcheinander kommt soll er einfach das Tut von Neosc ansehen.


    Ist ganz gut und siehst fuer Neulinge sowie Fortgeschrittene leicht aus.


    MfG

    Ich würde es nicht nutzen. Hab es mir gerade angeschaut und naja ist jetzt nicht das Gelbe vom Ei. z.B. wird nirgendwo eine Vriable gesetzt, dass der Spieler Onduty ist..


    Dafuq, was ist das für ein Befehl? Nur Fehler drin.


    Zu deinem Problem:



    //Oben
    new copduty[MAX_PLAYERS];


    ocmd:duty(playerid, params[])
    {
    //Abfragen, ob Spieler in der Fraktion ist.
    if(copduty[playerid] == 0)
    {
    copduty[playerid] = 1;
    SendClientMessage(playerid, -1, "Du bist nun Copduty!");
    //Waffen geben etc.
    }
    else if(copduty[playerid] == 1)
    {
    copduty[playerid] = 0;
    SendClientMessage(playerid, -1, "Du bist nun Copoffduty!");
    //Waffen wegnehmen etc. Je nach dem was du oben gemacht hast.
    }
    return 1;
    }


    Mfg,
    UncleSub