Beiträge von Hagi

    Ähm entweder die teleport Sache oder


    Pain Spray mappen und ein bewegliches Tor machen.
    Dann ne Abfrage auf Position machen und wenn der Spieler im Pain Spray drin ist (der gemappt wurde) Tor für 5 Sek schließen und dann wieder öffnen lassen und das hier benutzen


    new cid = GetPlayerVehicleID(playerid);
    RepairVehicle(cid);
    SetVehicleHealth(vid,1000.0);

    Dadurch, dass es mit anderen Gm funktioniert, muss es am GF liegen.


    Check mal wirklich das Script durch welche Dateien am Start (OnGameModeInit) geladen werden und ob diese wirklich im entsprechenden Ordner sind.

    Nunja ich fang mal an:


    Generell ist es ja schön wenn Leute ihre Maps zeigen, aber grade die ersten Maps sollte man nicht umbedingt veröffentlichen. Diese Maps waren und sind eigentlich immer nur durch ausprobieren und nicht zielgerichtetes Mappen entstanden, dementsprechen "anspruchsvoll" sind sie dann meistens auch.


    In deinem Fall wurden ein paar Autos und eine Treppe erstellt. Nunja das kann somit fast jeder. Was jedoch nicht heißen soll dass nicht irgentwann mal was draus werden kann, wenn dir Mappen Spaß macht, solltest du auf jeden Fall dran bleiben.

    die Nummer wird ja in einer Variablen gespeichert.


    Nehmen wir z.B.


    new nummer[MAX_PLAYERS];


    Dort wird dann z.B.

    nummer[playerid] = 12345;


    Dann kannst du doch einfach mit einer for Schleife alle Spieler durchgehn und wenn die Nummer gleich ist gehts weiter, dadurch erhälst du automatisch die playerid.


    Beispiel:


    new nummereingegeben = 12345;
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(nummereingegeben == nummer[i])
    {
    //was passiert, i ist in diesem Fall dann die playerid
    }
    }
    }

    GivePlayerMoney(playerid, 1000);
    SendClientMessage(playerid, ORANGE, "(!) ==============[Info Symbole]=============== (!)");
    SendClientMessage(playerid, ORANGE, "-");
    SendClientMessage(playerid, ORANGE, "Information Icons always will...");
    SendClientMessage(playerid, ORANGE, "- Tell you What or What NOT to do.");
    SendClientMessage(playerid, ORANGE, "- Display Rules and how to go by it.");
    SendClientMessage(playerid, ORANGE, "- They Give you Money :D.");
    SendClientMessage(playerid, ORANGE, "- And, I guess that is it, Bye and Have fun :).");


    GivePlayerMoney(playerid, 1000);
    SendClientMessage(playerid, ORANGE, "(!) ==============[Info Symbole]=============== (!)");
    SendClientMessage(playerid, ORANGE, "-");
    SendClientMessage(playerid, ORANGE, "Informationssymbole werden dir immer....");
    SendClientMessage(playerid, ORANGE, "- Zeigen was du tun darfst und was nicht.");
    SendClientMessage(playerid, ORANGE, "- Regeln zeigen und wie man mit ihnen umgeht.");
    SendClientMessage(playerid, ORANGE, "- Geld geben");
    SendClientMessage(playerid, ORANGE, "- Ich denke damit ist alles gesagt. Viel Spaß");

    Es sollte funktionieren, denn das sagt:




    SetPlayerHealth(i,phealth+10);




    Nehme die alten Leben des Spielers (phealth) und addiere 10. Da ist also kein Fehler drin. Hast du es genau so übernommen ?




    PS: Deine Leben steigen dadurch aber kontinuirlich um 10 HP, wodurch du irgentwann mehr als 100 HP hast.




    Um dem vorzubeugen einfach das so ändern:





    public oamtheal()
    {
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    new Float:phealth;
    GetPlayerHealth(i,phealth);
    if(phealth < 100.0)
    {
    if(phealth <= 90.0)
    {
    SetPlayerHealth(i,phealth+10.0);
    }
    else
    {
    SetPlayerHealth(i,100.0);
    }
    new Float:newphealth;
    GetPlayerHealth(i,newphealth);
    new string[128];
    format(string,sizeof(string),"Du wurdest von der O-Amt Base geheilt! Du hast nun %f Leben",newphealth));
    SendClientMessage(i,0xFF0000FF,string);
    }
    }
    return 1;
    }




    Für die ohne Komma ausgabe probier das mal, bin mir aber nicht sicher, da dort ein Integer genommen wird aber eine Float gegeben wird.


    Einfach mal testen ^^



    format(string,sizeof(string),"Du wurdest von der O-Amt Base geheilt! Du hast nun %i Leben",newphealth));

    Ansonsten kannst du auch über einen ganz normalen Timer und eine for Schleife das Problem lösen:




    forward oamtheal();




    SetTimer("oamtheal",2000,1);





    public oamtheal()
    {
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    new Float:phealth;
    GetPlayerHealth(i,phealth);
    if(phealth < 100.0)
    {
    SetPlayerHealth(i,phealth+10);
    new Float:newphealth;
    GetPlayerHealth(i,newphealth);
    new string[128];
    format(string,sizeof(string),"Du wurdest von der O-Amt Base geheilt! Du hast nun %f Leben",newphealth));
    SendClientMessage(i,0xFF0000FF,string);
    }
    }
    return 1;
    }




    Ich habs jetzt als Float gemacht, da GetPlayerHealth eine Float und keinen Integer ausgiebt.



    @dit: Wie Rotten schneller war. Aber meins noch Text ausgiebt.

    Du fragst ab ob der Skin zu einer Fraktion gehört und wenn der Spieler nicht in der Fraktion ist returnst du 0 also


    return 0;


    Das verweigert dem Spieler dann das Spawnen mit dem Skin.



    Für das direkte Spawnen probier einfach mal


    SpawnPlayer(playerid);
    return 1;


    aber obs funktioniert weiß ich nicht, wenn ist es aber die einzige Möglichkeit den sofort spwnen zu lassen.


    @dit: 700 Beiträge

    Änder die Floats, die noch Integer sind in Floats und füge "skin" hinzu.
    enum pInfo
    {
    pAdmin,
    pMember,
    Geld,
    Wanted,
    Float:lastx,
    Float:lasty,
    Float:lastz,
    eingeloggt,
    skin
    };
    new Spieler[MAX_PLAYERS][pInfo];
    #


    In das Abspeichern dann



    //Der Tag Missmatch Fehler löst dich durch die Ändernung im enum direkt in Luft auf.


    new skinid;
    GetPlayerSkin(playerid,skinid);
    Spieler[playerid][skin] = skinid;