Beiträge von Goldkiller

    Ne, kann man nicht.


    Der Übersicht halber mach Ich zB aber immer sowas.
    if(
    PlayerInfo[playerid][pLeader] == 5 ||
    PlayerInfo[playerid][pLeader] == 6 ||
    PlayerInfo[playerid][pLeader] == 9 ||
    PlayerInfo[playerid][pLeader] == 12
    ) {
    // Code
    }

    Oh man... da frag Ich mich wie du über 1000 Post's sammelst, aber solche Grundlagen nicht kannst :-O.


    if( Farbe1 < 0 || Farbe1 > 126 || Farbe2 < 0 || Farbe2 > 126 )
    kann man aber auch etwas Anders schreiben
    if( !(0 < Farbe1 < 126) || !(0 < Farbe2 < 126) )

    Davon abgesehen, dass es auch fcmd|dasisteintest heißt, ist es bei ocmd und Co. genauso, bedingt durch CallLocalFunction (case sensitive).


    Nur weil es bei ocmd auch so ist,ist es nicht richtig.Es hat schon seinen Grund,wieso tolower benutzt wird von Leuten wie Y_Less oder ZeeX. Nur die Kopien haben komischerweise selten den Case-Sensetive Aspekt :/.
    Man muss /dasisteintest eingeben, /Dasisteintest würde nicht funktionieren,eben weil es case sensetive ist. Deshalb ( finde Ich jedenfalls ) , ist die tolower Maßnahme sehr nützlich. Man kann ja nicht einfach wie bei strcmp für ignore-case true / false angeben .


    Zitat

    "@ Goldkiller: wie ich schon geschrieben habe, sind diese Tests mit meinen Plugin gemacht worden.
    Wie kommst du auf Nanosekunden? Genauer als Microsekunden gebe ich das nirgends an...


    Wenn ihr wollt, kann ich die Tests bald nochmal öfters wiederholen. "
    Hups,Nanosekunde war natürlich falsch :p.
    Ich meine die Nachkommastellen, wie hier : 3,37 ms
    Wie du dort auf 37 kommst,denn in PAWN ist es ja nur möglich auf Millisekunden zu gehen. Wie auch immer,der Testcode wäre sehr nützlich.Versteh auch nicht so recht wieso den bisher noch nicht gepostet hast.
    Hier zB bekommt man direkt den Testcode mit schöner Grafik :p
    http://forum.sa-mp.com/showthread.php?t=169029


    Funktioniert aber nicht mal richtig. fcmd_DasIstEinTest ist nicht fcmd_dasisteintest .


    Abgesehen davon,dass 10 Durchläufe sowieso nicht Aussagekräftig genug sind, wie kommst du denn auf die Zahlenwerte?
    Du kannst mit pawn nur MS bekomme, keine Nanosekunden. Wie kommst du daher auf 3,37 ?


    http://forum.sa-mp.com/showthread.php?p=365121#post365121
    Da habt ihr mal ein Aussagekräftigeren Test als diesen hier. Auch ohne Sourcecode nicht wirklich wertbar ;). Hab schon oft erwähnt,man sollte auf ZCMD umsteigen.Allerdings ist es nicht immer am schnellsten. Den Grund dazu findet man im verlinkten Beitrag,

    Lesen hilft.Du benutzt den Variablennamen x2,y2 usw öfters.Das verwirrt.
    public Float:GetDistanceBetweenPlayers(p1,p2)
    {
    new Float:__x1,Float:__y1,Float:__z1,Float:__x2,Float:__y2,Float:__z2;
    if(!IsPlayerConnected(p1) || !IsPlayerConnected(p2))
    {
    return -1.00;
    }
    GetPlayerPos(p1,__x1,__y1,__z1);
    GetPlayerPos(p2,__x2,__y2,__z2);
    return floatsqroot(floatpower(floatabs(floatsub(__x2,__x1)),2)+floatpower(floatabs(floatsub(__y2,__y1)),2)+floatpower(floatabs(floatsub(__z2,__z1)),2));
    }
    Hab das jetzt mit "Replace..." gemacht in PAWNO.


    MoneySpam[playerid] = 0;
    Hast du denn auch MoneySpawn definiert?
    new MoneySpawn[MAX_PLAYERS];
    Falls du es definiert hast,zeig uns wie.

    Tommyx3,


    Das kann man über format, strcat usw machen.Ich zeigs mal am Beispiel von format:
    format(PlayerInfo[i][pBanAdmin],50,banner);
    //format(PlayerInfo[i][pBanAdmin],50,"Server"); <- Wäre auch möglich,dann brauch man Variable banner nicht

    Nicht vergessen anstatt 50 die richtige Größe einzutragen.


    new banner[50], grund[50];
    banner = "Server";
    PlayerInfo[i][pBanAdmin] = banner; //errorzeile
    grund = "Jetpack";
    PlayerInfo[i][pBanGrund] = grund; //errorzeile
    Man kann es auch so machen,dann müssen aber banner und grund die gleiche Größe haben wie pBanAdmin und pBanGrund.
    Dafür muss es sich aber um Arrays / Strings handeln bei pBanAdmin und pBanGrund.


    Zcelo12,
    Das drücken von F4 kann man nicht direkt unterbrechen.Man bekommt immer die Nachricht "Return to Class-Selection ... " .
    Was willst du denn genau machen ?
    Vielleicht hilft dir das ja schon mal:
    http://wiki.sa-mp.com/wiki/ForceClassSelection
    http://wiki.sa-mp.com/wiki/SpawnPlayer

    SetTimer("Funktion",10*6000*1000,true);


    forward Funktion();
    public Funktion() {
    new
    Float:fHealth;
    for(new i ; i < MAX_PLAYERS ; i++) {
    if( GetPlayerHealth(i,fHealth) ) { // Check ob connect + Health-Wert abfragen
    fHealth -= 10.0; // Variable um 10.0 verringern
    SetPlayerHealth(i,fHealth); // Health des Spielers neu setzen
    }
    }
    return 1;
    }

    new IconNames[61][1024] =
    Wieso du da 1024 nimmst,ist mir nicht wirklich klar.Das ist total die Verschwendung :-X.
    new const IconNames[][] =
    Würde Ich an deiner Stelle nehmen.Hab es mal eben so kompiliert, man spart 60KByte.Denn mit 1024 ist es nur Verschwendung, du brauchst die größe ja niemals.

    Ich würde die ganzen Textdraws nicht bei OnGameModeInit erstellen.Mach es lieber immer bei OnPlayerConnect und nur für den Spieler,der gerade auf den Server kommt.Dann zerstört du den auch wieder, wenn er den Server verlässt ( OnPlayerDisconnect ).


    Bist du dir denn auch sicher,dass der Timer die Funktion auch wirklich aufruft ? Zeig mal zusätzlich den Timer und die Funktion die den Textdraw updaten soll.

    Naja, die Meisten machen es so:
    0 / false heisst Nein,hat er nicht usw usf.
    1 / true heisst Ja, hat er usw usf.


    stock havePlayerCarL(playerid) // Hat er CarL ? 1 Ja , 0 Nein
    {
    if(GetPVarInt(playerid,"CarL") < 1) return 1; // CarL Wert kleiner als 1 ? Ok, Wert ist wahrscheinlich 0 aber hat eine Lizenz
    return 0; // Hat keine Lizenz
    }


    Zitat

    >= heist ja das es größer als 1 oder 1 ist ich will aber das wen es auf 0 steht er aussteigt und nicht fahren kann ;)


    Hab ich dir ja gemacht.Also stell dich nicht ganz so Klever an, bevor du es nicht ausprobiert hast ;).


    Zitat

    kann ich da nicht eigtnlich ==0 dahinter machen hab es noch nicht aus probiert.


    stock havePlayerCarL(playerid)
    {
    if(GetPVarInt(playerid,"CarL") == 1 )return 1;
    return 0;
    }
    Kannst auch machen.

    FKasse[frakkasse:frak] += egeld;
    Du musst den Namens des enums angeben ( frakkasse ) .Du greifst ja nicht direkt auf den Index zu durch den Namen ( zb Feuerwehr ).

    stock havePlayerCarL(playerid)
    {
    if(GetPVarInt(playerid,"CarL")<1)return 1;
    return 0;
    }
    Das würde ja bedeuten,wenn die Variable CarL kleiner als 1 ist,besitzt der Spieler ein CarLicence. Glaube du hast es falsch herrum.
    stock havePlayerCarL(playerid)
    {
    if(GetPVarInt(playerid,"CarL") >= 1) return 1;
    return 0;
    }
    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(!havePlayerCarL(playerid))
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,ROT,"Du hast noch keinen Führerschein!");
    }
    return 1;
    }
    Es müsste sowieso richtiger Weise hasPlayerCarL sein ;).

    Sind so ähnlich wie PVars, nur gab es die halt schon bei SA:MP 01b.
    Ich nehm mal das Beispiel aus dem SA:MP Wiki,
    //Gamemode
    setproperty(0, "", 12345, "Ich komme aus dem Gamemode");
    //Filterscript
    new string[24];
    getproperty(0, "", 12345, string);
    printf("string -> %s",string);


    Damit konntest du damals schon Werte global speichern lassen. Dann natürlich auf diese von Überall ( Filterscript oder dem Gamemode selber ) darauf zugreifen.Wurde aber eher selten benutzt, jetzt gibt es ja für so etwas das GVar Plugin.