Beiträge von Kaliber

    @Schwabbel ist es nun auch überflüssig abzufragen ob der Spieler connected ist?


    Leider ja, da es sein kann, dass die höchste spielerid 5 ist, aber der Spieler mit id 4 nicht connected ist ;)


    //Edit:
    Haxler:
    BlackAce hat mir jetzt gesagt was du meintest, habs geändert :D


    Aus diesem Grund neue Downloadlinks zum letzten mal :rolleyes:


    mfg. :thumbup:

    ist sinnlos, da du Defines nicht zur Laufzeit ändern kannst.

    #define m_players HighestID
    würde reichen.


    Nein, das ist notwendig, da der Callback ja immer wieder aufgerufen wird und somit das Makro wieder undefined werden muss...


    PS:


    Mir ist ein kleiner Logikfehler unterlaufen...


    Jetzt hab ich das alles getestet und so wie es jetzt ist funktioniert es perfekt, davor war ein kleiner Fehler drinnen ^^


    mfg. :thumbup:

    Danke schön. Gleichmal gedownloadet ^^. Aber eine Frage also ist das wie MAX_PLAYERS nur schneller oder?


    (( Sorry für diese Frage aber will das ja richtig verstehen :D ))


    Nun im Prinzip ist es wie MAX_PLAYERS nur kleiner ;)


    MAX_PLAYERS hat einen konstanten Wert von 500 (eigentlich) und mein Makro ändert sich jenachdem wie viele Spieler auf dem Server sind ;)


    Deshalb wichtig: Nur für Spieler Schleifen einsetzen, nicht für Arrays (strings)!


    mfg. :thumbup:

    Hier mal kurz aus dem Kopf geschrieben:


    ocmd:gethere(playerid, params[]) {
    if(!isPlayerAnAdmin(playerid,3)) return SendClientMessage(playerid,HELLROT,"AdmCmd: Du besitzt keine Rechte, um diesen Befehl zu benutzen!");
    new pID,Float:Q[3];
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,rot,"Verwendung: /gethere [spielerid]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,rot,"Dieser Spieler ist nicht online!");
    GetPlayerPos(playerid,Q[0],Q[1],Q[2]);
    if(IsPlayerInAnyVehicle(pID)) SetVehiclePos(GetPlayerVehicleID(pID),Q[0],Q[1]+3,Q[2]),LinkVehicleToInterior(GetPlayerVehicleID(pID),GetPlayerInterior(playerid)),SetVehicleVirtualWorld(GetPlayerVehicleID(pID), GetPlayerVirtualWorld(playerid));
    else SetPlayerPos(pID,Q[0],Q[1]+1,Q[2]);
    SetPlayerInterior(pID,GetPlayerInterior(playerid));
    SetPlayerVirtualWorld(pID,GetPlayerVirtualWorld(playerid));
    return 1;
    }


    mfg. :thumbup:


    //Edited Code

    Wenn man wirklich mit einer zu intensiven Schleife zu kämpfen hat: Kann auch das unterhalb probiert werden.


    Das ist auch eine gute Idee, vielleicht hilft das einigen Usern :)


    Nicht du schon wieder.. Such dir mal nen Hobby oder sowas.
    Aber schaut ganz nett aus. Ich kenn mich damit zwar nicht so aus, aber es schon für mich schon um einiges komplizierter aus


    Danke :love:


    mfg. :thumbup:

    So guten Morgen euch allen,


    ja ich bin es mal wieder, die Langeweile hat mich überrumpelt und aus diesem Grund kam diese Include ans Licht.
    Es geht um ein Thema was ich schonmal versucht hatte zu machen aber gefailt habe...jetzt habe ich mir einen neuen Alogrithmus ausgedacht und dieser sollte funktionieren :)
    Also hier nun einige Informationen über die Include:


    Wozu dient die Include?
    Also jeder von euch kennt das Problem MAX_PLAYERS ist eine Konstante die entweder einen Wert von 500 hat oder ihr euch einen anderen Wert definiert habt, aber sie hat nie den Wert der höchsten playerid+1 ;)
    So und nun kommt meine Include ins spiel, sie sorgt dafür, dass MAX_PLAYERS immer diesen Wert hat und sind Schleifen viel Schneller, da sie nicht mehr 500x durchlaufen sondern vielleicht nur noch 10x, jenachdem wie viele Spieler auf dem Server sind :)


    Wie funktioniert das jetzt genau?
    Also, da ich leider nicht direkt das Makro MAX_PLAYERS verändern sollte (da dies oft für Arrays genutzt wird) gibt es nun dieses Makro:
    m_players
    eine Spieler Schleife sähe also z.B. einfach so aus:


    for(new i; i<m_players; i++) {
    //Restcode
    }


    Download:
    Source-Code: Pastebin
    Direkter-Download: Mediafire


    Würde mich über ein kleines Feedback freuen :)


    mfg. :thumbup:


    • Edits

      Downloadlinks

    • Edits

      Downloadlinks²

    • Edits

      Downlaoad³

    • Edits

      Jetzt aber zum letzten mal...

    • Edits

      So, noch eine Verschönerung dank BlackAce

    Bitte, schreibe das so und verwende nicht in einem Array ^ ! X(
    PS: Du vertauschst hier astring und string!


    if(strcmp(x_s,"adac",true) == 0)
    {
    if(sSpieler[playerid][Fraktion] != 11) return SendClientMessage(playerid, Rot, "Sie sind kein Mitglied des ADACs.");
    new counter = 0,pName[ MAX_PLAYER_NAME+1], astring[128];
    for (new aplayer; aplayer < MAX_PLAYERS; aplayer++ ) {
    if( ADACGerufen[aplayer] > 0) {
    if ( !IsPlayerConnected ( aplayer ) ) continue;
    PlayerDialogSelectBox[playerid][counter] = aplayer;
    GetPlayerName ( aplayer , pName , MAX_PLAYER_NAME + 1);
    format ( astring , sizeof astring , "%s\n%s" , astring , pName );
    }
    }
    ShowPlayerDialog ( playerid , ADACDialog , DIALOG_STYLE_LIST , "Folgende Spieler benötigen einen ADAC" , astring, "Ok", "Abbruch");
    }


    mfg. :thumbup:


    Entschuldigung wenn ich diskret werde, aber bist du dumm :huh:


    Ich habe doch folgendes geschrieben:


    new str2[128];
    #define formatEx(%0,%1,%2,%3) format(str2,128,%2,%3) && SendClientMessage(%0,%1,str2)


    Zudem ist das da oben keine Funktion, sondern ein Makro !


    mfg. :thumbup: