Beiträge von Splash

    public OnPlayerText(playerid, text[])
    {
    if(GetPVarInt(playerid, "Level") < 5)
    {
    SendClientMessage(playerid,FARBE,Text[]);
    return 0;
    }
    return 1;
    }


    Es wird hier kein else benötigt, da ja wie du sagtest nur unter LVL 5 nicht schreiben dürfen sollen.

    Sorry aber jetzt mal an alle die hier so übelste RP/RL Junkies sind. Gibt es für euch nichts anderes? Hallo ist RL/RP das einizige was ihr kennt in SA:MP? Wenn ja sorry muss ich sagen habt ihr nen mächtiges Problem... Es gibt soviele Gamemode Arten und ich lese hier nur RP/RL hier RP/RL da. Er hat EINDEUTIG geschrieben das DIES für einen DayZ Server ist. Also braucht ihr nicht nach RL/RP Tauglichkeit zu bewerten!


    Back to Topic: Ich kann mir relativ gut vorstellen, dass dies auf nem Server mit der richtigen Tageszeit und dem richtigem Wetter (Nebel) sehr gut ankommt. Zudem muss ich sagen, dass es schön ist Leute hier noch zu sehen, die nicht auf den RP/RL Trip hängen bleiben und auch andere Arten von SA:MP kennen und dafür etwas erstellen.


    10/10 Punkten, da wie gesagt mit dem richtigem Wetter und Tageszeit es zu 100% mega rüberkommt.


    PS: BTW an alle RP/RL Liebhaber, wenn man RL/RP haben möchte, dann schaltet einmal den PC aus und geht nach draussen, da habt ihr es zu genüge.

    Warum soll man alles mit einem Beispiel erklären willste mich rollen? Es gibt so etwas schönnes das nennt sich Wiki, wo zudem Meta auch noch sehr stark am deutschen Teil arbeitet. Also dezent Brain starting sollte jeder haben. Und dies sind die Grundkenntnisse, wenn man nichtmal das kann sollte man nochmals von 0 Anfangen!

    Ihr bekommt es wirklich nicht mit oder? 2 Moderative Personen haben schon längst gesagt dass dies nicht erlaubt ist. Man darf LAUT Regeln keinen Projektnamen, etc als Benutzernamen haben. Wenn ihr soetwas seht, könnt ihr die Person ja simple bei nem Moderator bzw Administrator via PN melden and done.

    PullDown und Stallone fals man alles einmal richtig durchliest habe ich dies schon längst gesagt, dass er dafür einfach nur den Respawn Delay nutzen soll. D.h. Ihr braucht nicht alles tausendmal wiederholen.


    PS: Aber das ist ja normal, dass man nur die Hälfte eines Topics liest und dann nicht weiss was schon gepostet wurde.... :thumbdown:

    #else Es gibt mehrere Möglichkeiten dies zu Regeln. Eine weitere für den string wäre:


    format(string,sizeof(string),"%s===Name: %d===\n",string,SpielerName(playerid));
    format(string,sizeof(string),"%s===Geld: %d===\n",string,GetPlayerMoney(playerid));


    ^Ist belliebig erweiterbar (Natürlich muss limit der Strings in Dialogen beachtet werden).


    Andere Möglichkeit wäre mit strcat.


    Mit beiden Möglichkeiten umgeht man das Problem mit Pawno, dass wenn es zuviel wird in einer Zeile das Pawno den unbeliebten Error ausgbit.


    SetPlayerVirtualWorld(playerid,48);
    SetPlayerSkin(playerid,480);


    Macht keinen Unterschied. Meine Güte bevor man so einen Müll postet, sollte man es einmal selber testen. ._.


    Auch wenn du jetzt noch die virtuelle Welt änderst werden alle in der range von GetPlayerPos mit crashen!


    ^Habe es selber ausprobiert so versuche nicht irgendetwas anderes zu schreiben BEVOR du es nicht selber getestet hattest.

    Würden beide nicht den Clienten zum Crashen bringen.


    Simple wäre es mit einem GameText der Spieler bezogen ist:


    GameTextForPlayer(SpielerIdWelcheCrasht, "•¤¶§!$$%&'()*+,-./01~!@#$^&*()_-+={[}]:;'<,>.?/", 1000, 0);
    GameTextForPlayer(SpielerIdWelcheCrasht, "•¤¶§!$$%&'()*+,-./01~!@#$^&*()_-+={[}]:;'<,>.?/", 2000, 1);
    GameTextForPlayer(SpielerIdWelcheCrasht, "•¤¶§!$$%&'()*+,-./01~!@#$^&*()_-+={[}]:;'<,>.?/", 3000, 2);
    GameTextForPlayer(SpielerIdWelcheCrasht, "•¤¶§!$$%&'()*+,-./01~!@#$^&*()_-+={[}]:;'<,>.?/", 4000, 3);
    GameTextForPlayer(SpielerIdWelcheCrasht, "•¤¶§!$$%&'()*+,-./01~!@#$^&*()_-+={[}]:;'<,>.?/", 5000, 4);
    GameTextForPlayer(SpielerIdWelcheCrasht, "•¤¶§!$$%&'()*+,-./01~!@#$^&*()_-+={[}]:;'<,>.?/", 6000, 5);
    GameTextForPlayer(SpielerIdWelcheCrasht, "•¤¶§!$$%&'()*+,-./01~!@#$^&*()_-+={[}]:;'<,>.?/", 7000, 6);

    Yup jetzt kann ich auch auf Fehlersuche gehen und würde auch gerne gleich einmal Anfangen.


    Erstens, sagtest du nicht, dass das Objekt etwas später wieder erstellt werden soll?
    Wenn ja solltest du hier mit einer simplen Variable arbeiten welche abfragt welchen Status es derzeitig hat und bei Status 0 den Timer erneut ausführt und die Variable +1 setzt.


    Dann würde ich es ungefähr so machen (alles zusammen).


    new obj, ObjName[MAX_PLAYERS],RespawnStatus;


    forward Respawn(playerid);
    public Respawn(playerid)
    {
    if(RespawnStatus==0)
    {
    if(var{playerid} == 1)return SendClientMessageToAll(ROT, "Objekt abgegeben!"), Obj+=1,RespawnStatus=1,DestroyObject(ObjName[playerid]);
    }
    else if(RespawnStatus == 1
    {
    ObjName[playerid]=CreateObject(2993,-384.2000122,-4133.7001953,23.2999992,0.0000000,0.0000000,0.0000000);
    SendClientMessageToAll(GRÜN, "Das Objekt wurde respawnt!");
    }
    return 1;
    }


    PS: Ist jetzt mehr oder weniger nur Pseudocode, jedoch würde ich dir raten für ObjName noch, da es ja an Spieler attached ist, die playerid zu returnen.

    ulbi, ich glaube die Variable sollte in seinem Fall global, nicht lokal, erstellt werden.
    Außerdem gibt Create3DTextLabel keinen reinen Integer zurück, sondern eine 3DText-Variable.


    Ich habe extra dies geschrieben:


    Zitat

    D.h. am besten über OnGameModeInit() dies:


    Ich betone über.


    Was bedeuten würde, dass ich gemeint habe das er es Global erstellen soll, zudem ist es ja im Endefekt egal, dass die Variable nicht ein Integer ist, da es dann trotz alledem Größer als 0 ist und auch mit der Variable ganz normal aufgerufen werden kann. Nehme dazu als Beispiel die Checkpoints.^^


    @Slime


    Mach es doch bitte einfach so:


    new discon[MAX_PLAYERS],discon3D[MAX_PLAYERS];


    public OnGameModeInit()
    {
    discon[playerid]=//Dein CreatePickup
    discon3D[playerid]=//Dein 3DTextLabel
    return 1;
    }

    Gut jetzt habe ich in etwa verstanden was du meinst. dann solltest du erstens mit einer Schleife zum ablegen nutzen (Zerstören des Objektes).


    Zudem wie du es derzeitig hast wird es nur für eine playerid ausgeführt, also wäre auch hier eine Schleife angebracht um es für alle auszuführen.
    Jedoch kann ich mir immer noch nicht sehr viel vorstellen unter den 10 Zeilen die du jetzt insgesamt gepostet hast. Also ich verstehe was du machen willst, aber ich sehe derzeitig nicht warum es nicht funktioniert (der Timer nicht startet).

    Soll der Timer Spielergebunden sein? Wenn ja würde ich dir raten mit SetTimerEx zu arbeiten.


    Und btw, du zeigst nur wie du den Timer erstellst, aber nicht wo. :P xD


    Also ich kann mir mit der Funktion alleine nicht wirklich einen Einblick machen warum es nicht funktioniert.


    EDIT: Vorschlag


    OnPlayerSpawn(playerid)
    {
    SetTimerEx("Respawn",RESPAWNZEIT,0,"i",playerid);
    return 1;
    }


    forward Respawn(playerid);
    public Respawn(playerid)
    {
    //Dein Code
    return 1;
    }

    GhostRider wegen den Textdraws nein es ist nicht das selbe.


    PlayerTextDraws sind wie es der Name schon sagt Spieler gebunden und TextDraws sind Global. D.h. wenn man viele Sachen hat die nur bestimmte Spieler sehen wie z.B. ein Speedo ist es ratsam PlayerTextDraws zu nutzen und bei Dingen wie eine Domain etc. ist es ratsam TextDraws zu nutzen.


    BOMBER einfach das Objekt destroyen und wieder ganz normal erstellen.

    Erstens würde ich niemals bei OnGameModeExit() Spieler abspeichern, da es bei einem Servercrash NICHT aufgerufen wird.


    Damit es bei einem Serverrestart speichert (also ein gewollter restart), würde ich dir empfehlen bei deinem restart Befehl eine for-Schleife zu nutzen, welche durch alle Spieler geht und diese wie wenn sie disconnecten abspeichert, dann einen Timer starten welchen den Server restartet.


    Beispiel:


    //Dein Befehl zum restarten
    {
    for(new i;i<MAX_PLAYERS;i++)
    {
    //Spieler abspeichern
    }
    //Hier kann man eine Nachricht an alle schicken das der Server in 1 Sekunde restartet wird.
    StartTimer("RestartTimer",1000,0);
    return 1;
    }


    forward RestartTimer();
    public RestartTimer()
    {
    SendRconCommand("gmx");
    return 1;
    }