Beiträge von Jeffry

    lolcooper: Ich habe mir den Code nochmal angeschaut, kann es sein, dass du die "pName" Funktion nicht hast, die ich in ReturnPlayerID genutzt habe? Falls das der Fall ist:


    stock pName(playerid)
    {
    new _name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, _name, MAX_PLAYER_NAME);
    return _name;
    }


    Kommen die Fehler dann noch immer wenn du meinen Teil vom Code einfügst?
    Wenn ja, poste doch bitte den Befehl nochmal, aber diesmal in den [.pwn] [./pwn] Klammern (ohne die .)

    Wenn ich die posts über mir sehe muss ich mir einfach zehn mal ins Gesicht schlagen.


    public OnPlayerCommandPerformed(playerid, cmdtext[], success)
    {
    if(!success)
    {
    //dein Code hier.
    }
    return 1;
    }



    @DjKiller: Das ist keine Beleidigung, das ist Verzweiflung.

    Dann versuche das mal über einen Timer zu lösen. Kicke die NPCs bei OnGameModeExit, und setze bei OnGameModeInit, anstatt die NPCs direkt zu connecten, einen Timer, der die NPCs nach 5 Sekunden connected.


    SetTimer("ConnectBots", 5000, 0);


    forward ConnectBots();
    public ConnectBots()
    {
    //Connect...
    return 1;
    }

    Bei Timern musst du forward und public nehmen, so wie es @duengonalex geschrieben hat.


    Falls das auch nicht tut, poste den Code mit dem du dem Tor sagst, dass es sich wieder schließen soll.

    Was für ein Problem hast du denn mit LAdmin? Welches Passwort fehlt dir da? Bzw. was genau willst du überhaupt machen?


    Version 4v2 nehme ich an.

    Dachte das geht mit dini_Get? :D


    dini_Get gibt einen String zurück.
    dini_Int gibt einen Integer zurück.


    Je nach dem was du benötigst, musst du das Eine oder das Andere nutzen.


    String: "Bla Bla Blub"
    Integer: 12345
    Float: 123.412454152424
    Boolean: true/false
    Char: Ein Buchstabe, z.B. 'a'

    Deklaration, nicht Deklination. ;)


    stock FGehalt(playerid)
    {
    new pfad[20],rank[20];
    format(rank,sizeof(rank),"%d",GetPlayerRank(playerid));
    switch(PlayerInfo[playerid][pMember])
    {
    case 1: return format(pfad, 20, "/Gehalt/LSPD.ini");
    case 2: return format(pfad, 20, "/Gehalt/ADAC.ini");
    case 3: return format(pfad, 20, "/Gehalt/ARMY.ini");
    case 4: return format(pfad, 20, "/Gehalt/RETTUNGSIENST.ini");
    case 5: return format(pfad, 20, "/Gehalt/LCN.ini");
    case 6: return format(pfad, 20, "/Gehalt/YAKUZA.ini");
    case 7: return format(pfad, 20, "/Gehalt/REGIERUNG.ini");
    case 8: return format(pfad, 20, "/Gehalt/HITMAN.ini");
    case 9: return format(pfad, 20, "/Gehalt/CNN.ini");
    case 10: return format(pfad, 20, "/Gehalt/TAXI.ini");
    case 11: return format(pfad, 20, "/Gehalt/FAHRSCHULE.ini");
    case 12: return format(pfad, 20, "/Gehalt/GROVESTREET.ini");
    case 13: return format(pfad, 20, "/Gehalt/BALLAS.ini");
    case 14: return format(pfad, 20, "/Gehalt/BIKER.ini");
    case 15: return format(pfad, 20, "/Gehalt/AZTECAS.ini");
    case 16: return format(pfad, 20, "/Gehalt/TERROR.ini");
    }
    return dini_Int(pfad,rank); // Erster Error
    }
    stock Steuern(playerid)
    {
    if(PlayerInfo[playerid][pDonateRank] == 1)
    {
    format(steuer,sizeof(steuer),"1");
    return dini_Int("/Steuern.ini",steuer); //zweiter Error
    }
    else
    {
    format(steuer,sizeof(steuer),"2"); // 2?
    return dini_Int("/Steuern.ini",steuer); //dritter Error
    }
    }


    Es heißt dini_Int.


    Oder du fügst das unten im GM dazu:
    stock dini_GetInt(path[], key[]) return strval(dini_Get(path, key));

    ocmd:setsteuern(playerid,params[])
    {
    if(PlayerInfo[playerid][pLeader] == 7 || PlayerInfo[playerid][pLeader] == 4)
    {
    new pfad[20],str[128],steuern, steuer[20];
    if(sscanf(params,"i",steuern)) return SendClientMessage(playerid,COLOR_LIGHTBLUE,"Benutzung: /setsteuern [Steuern in %]");
    format(pfad,20,"/Steuern.ini");
    if(!fexist(pfad)) return dini_Create(pfad);
    format(steuer,sizeof(steuer),"1");
    dini_IntSet(pfad,steuer,steuern);
    format(str,sizeof(str),"Du hast die Steuern auf %d%% gestellt");
    SendClientMessage(playerid,COLOR_LIGHTBLUE,str);
    }
    return 1;
    }


    stock Steuern(playerid)
    {
    new steuer[20];


    if(PlayerInfo[playerid][pDonateRank] == 1)
    {
    format(steuer,sizeof(steuer),"1");
    dini_GetInt("/Steuern.ini",steuer);
    }
    else
    {
    format(steuer,sizeof(steuer),"2"); // 2?
    dini_GetInt("/Steuern.ini",steuer);
    }
    return 1;
    }


    "steuer" war nicht deklariert.



    Edit:
    Das nächste mal poste bitte die Errors die kommen und markiere die Zeilen.

    Ersetze das
    if(sscanf(params,"u",pID))return SendClientMessage(playerid, COLOR_WHITE, "{19FF00}Verwende: {0041FF}/Arrest [SpielerID/Name]");


    mal damit:



    if(!strlen(params)) return SendClientMessage(playerid, COLOR_WHITE, "{19FF00}Verwende: {0041FF}/Arrest [SpielerID/Name]");
    if(!IsNumeric(params)) pID = ReturnPlayerID(params);
    else pID = strval(params);


    Und füge das unten im GM ein:

    Spoiler anzeigen

    stock ReturnPlayerID(PlayerName[]) //©Jeffry
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(!strcmp(pName(i),PlayerName, true)) return i;
    }
    }
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(strfind(pName(i),PlayerName,true)!=-1) return i;
    }
    }
    return INVALID_PLAYER_ID;
    }

    Spoiler anzeigen
    stock IsNumeric(string[])
    {
    for (new i = 0, j = strlen(string); i < j; i++)
    {
    if ((string[i] > '9' || string[i] < '0')) return 0;
    }
    return 1;
    }


    Funktioniert es dann?
    Wenn ja, sscanf :pinch:


    Wenn nein, was gibst du ein?

    und sowso ich bin vor dir und dem jef hier registriert


    Ernsthaft?
    Dazu muss ich jetzt nichts sagen, oder?



    äää wi ich sehe hast du keine ahnung also gib das besserweissen auf.


    Da ich es besser weiß und es auch belegen kann, schätze ich mal, dass ich das Recht dazu habe, auch wenn du es nicht einsehen willst, dass du mit deinen Aussagen eben völlig daneben liegst. Wir können auch noch ewig so weiter machen, ich habe damit kein Problem, da ich dir jede Falschaussage die du hier tätigst mit einem Gegenteil belegen kann. Also bitte, nur zu.



    1. OnPlayerDis muss man des texdraw logischerweise hiden


    Nein, muss man nicht. Warum sollte ich ein TextDraw verstecken, wenn der Spieler den Server verlässt? Er kann es ja sowieso nicht mehr sehen, von daher ist das unnötig.
    Den Timer muss man, wenn er global erstellt ist, auch nicht stoppen, da er ja für alle anderen Spieler weiterläuft. Das spart Ressourcen und schont somit den Server. Einer mag sogar sagen das spart Strom, da die CPU weniger rechnen muss, aber das geht dann doch etwas weit.



    2. ausem fahrzeug geporter kan man abfragen ob der andere im fahrzeug it und auch wenn onplayerexitv wird ABGERUFEN!!!!


    Da kannst du noch so viele Ausrufezeichen setzen, deine Rechtschreibung macht das leider keineswegs besser und deine Aussagen somit keineswegs kompetenter, ganz zu schweigen von der Richtigkeit dieser "Aussage".
    Hier der Gegenbeweis:


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.



    Log:


    Code:
    #include <a_samp>


    public OnFilterScriptInit()
    {
    AddStaticVehicle(522,1957.8439,1342.8807,15.374,0.0,0,0);
    return 1;
    }


    public OnPlayerDeath(playerid, killerid, reason)
    {
    print("OnPlayerDeath");
    SendClientMessageToAll(-1,"OnPlayerDeath");
    return 1;
    }


    public OnPlayerEnterVehicle(playerid, vehicleid)
    {
    print("OnPlayerEnterVehicle");
    SendClientMessageToAll(-1,"OnPlayerEnterVehicle");
    return 1;
    }


    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    print("OnPlayerExitVehicle");
    SendClientMessageToAll(-1,"OnPlayerExitVehicle");
    return 1;
    }


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER) print("PLAYER_STATE_DRIVER"), SendClientMessageToAll(-1,"PLAYER_STATE_DRIVER");
    if(newstate == PLAYER_STATE_ONFOOT) print("PLAYER_STATE_ONFOOT"), SendClientMessageToAll(-1,"PLAYER_STATE_ONFOOT");
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    SetPlayerPos(playerid, 0.0,0.0,0.0);
    print("SetPlayerPos");
    SendClientMessageToAll(-1,"SetPlayerPos");
    return 0;
    }
    Du darfst es gerne selbst testen.



    3. wenn er vom bike fällt omg das ist schon etwas peinlich, wird natürlich onexit aufgerufen -.-


    Das kann schnell vorkommen, wie du im Video gesehen hast. Ob das nun peinlich ist oder nicht (man könnte ja auch runtergerammt werden), es ist doch ziemlich unschön wenn plötzlich mehrere Timer laufen, die nicht mehr gestoppt werden können, da sie auf keiner Variable hinterlegt sind.

    Würdest du wenigstens die Frage beantworten?
    Es ist mir klar, dass es mit der Include keine Probleme gibt, aber wenn dein MAX_PLAYERS auf 500 / 800 gesetzt ist, dann überschreitest du schon fast das Limit der Textdraws, wenn du 500x4 Textdraws erstellst, das sind 2000 bzw. 3200 aktive Textdraws, 2048 gehen maximal. Somit liegt es nahe, warum die anderen nicht angezeigt werden.

    SetPlayerPos(playerid,198.4943,162.0886,1003.0300);
    SetPlayerInterior(playerid,3);
    Hier auch noch. pID muss das sein.



    Mach das
    new string[512];
    if(SpielerInfo[pID][pWanted] > 0)


    mal zu:
    new string[512];
    printf("pID: %d Wanted: %d", pID, SpielerInfo[pID][pWanted]);
    if(SpielerInfo[pID][pWanted] > 0)


    Was wird geprintet? Und stimmt die ID?

    Also, es soll ja derjenige mit den Wanteds arrested werden, daher muss ich die haben und nicht du, wenn du mich arrestest. Das stimmt ja im Code auch.


    SetTimerEx("JailTime", 1000, 0, "d", playerid);
    SpielerInfo[playerid][pWanted]=0;


    zu:
    SetTimerEx("JailTime", 1000, 0, "d", pID);
    SpielerInfo[pID][pWanted]=0;


    Und derjenige den du eingibst: /arrest Jeffry => Jeffry muss ein Wanted haben, nicht du.

    ja dan macht mn halt in ondeath und onexitveh killtimer(...)


    Und was ist wenn der Spieler den Server verlässt? => OnPlayerDeath & OnPlayerExitVehicle werden nicht aufgerufen.
    Und was ist wenn der Spieler sich aus dem Fahrzeug teleportiert. => OnPlayerDeath & OnPlayerExitVehicle werden nicht aufgerufen.
    Und was ist wenn der Spieler aus dem Auto jemanden /spec-tated? => OnPlayerDeath & OnPlayerExitVehicle werden nicht aufgerufen.
    Und was ist wenn der Spieler vom Fahrzeug fällt (Motorrad)? => OnPlayerDeath & OnPlayerExitVehicle werden nicht aufgerufen.
    ...
    Soll ich weiter machen?


    Diese Methode wirft nur Fehler auf, es wäre Schwachsinn das so zu machen und ich kann dir garantieren, dass jeder auch nur halbwegs kompetente Programmierer hier zustimmt.
    (Zustimmung = Grünen "Bedank-Button" drücken.)