Beiträge von Kaliber

    schöne sache :) Kannst du evtl auch eine Funktion machen, wie z.B "IsPlayerInRangeOfPoint", wobei aber nur die X und die Y achse eine rolle spielen, und natürlich der radius ? Also die höhe dann egal. (Falls dies überhaupt möglich ist)


    Sehr gute Idee ;)


    Werde ich gleich mal machen (das ist möglich) ;)


    Ich poste alle meine Vorschläge in einen Post, damit es nicht als SPam gilt.


    Wäre cool :)



    Thx ;)


    mfg. :thumbup:

    Nein,
    wenn jemand den Keybinder aktiviert ist und jemand GTA verlässt (also auf Desktop geht) wird ein kleineres gui Fenster erstellt indem Sekunden aufgezählt werden wie lange man nicht ingame ist. Und sobald man wieder in GTA reingeht wird die "AFK Anzeige" gelöscht/geschlossen.


    Mal eine Frage nebenbei und was soll das bringen :huh:

    Guten Morgen liebe Brotfische,


    mir war mal langweilig und da habe ich überlegt, welche Funktionen denn in Pawn noch so recht praktisch sind/wären.


    Aus diesem Grund habe ich ein paar Funktionen geschrieben die ich gleich erläutern werde, zunächst aber mal, wenn euch noch irgendwelche coolen Funktionen einfallen die ihr haben wollt, könnt ihr sie gerne posten:


    [tabmenu]


    [tab='Informationen','http://the-devils-playground.org/wcf/icon/infoM.png']
    [subtab='Funktionen','http://forum.gamerzhost.de/wcf/icon/codeS.png']
    GetPickupPos(pickupid, &Float: X, &Float: Y, &Float: Z); //Siehe "Wichtig"
    GivePlayerJetpack(playerid, bool: var);//wenn var = true, bekommt er ein Jetpack | wenn var = false, wird dem Spieler das Jetpack genommen
    GetIP(playerid); //Gibt die Ip (als String) aus
    GetVehicleDriver(vehicleid); //Gibt die Spielerid vom Fahrer wieder
    CountAllObjects(); //Zählt alle Objekte im Script
    CountAllPickups(); //Zählt alle Pickups im Script *Wichtig lesen*
    CountAllVehicles(); //Zählt alle Vehicles
    InRange(playerid, Float: range, Float: X, Float: Y); //Tab Beispiele mal schauen
    GetVehicleColor(veh, &color1, &color2); //Schreibt die Farbeid in die Variable color1 und color2
    VehiclePort(playerid, modelid, Float: range); //Portet alle vehicleids mit dieser modelid in dieser Range zu dir
    RangeFreeze(playerid, Float: range, bool: var); //Range freeze (true = freeze) | (false = unfreeze) | Beispiel Tab mal schauen
    GetVehicleInterior(vehicleid); //Gibt den Interior von dem Fahrzeug wieder (Siehe Wichtig !)
    CutIp(Ip[]);//Siehe Beispiel Tab
    GetVehicleSeats(vehicleid); //Gibt die Anzahl der Sitze eines Fahrzeuges wieder !
    GetVehicleEmptySeats(vehicleid); //Gibt die Anzahl der Freien Sitze in einem Fahrzeug an !
    IsAlpha(text[]); //Prüft ob der Text nur aus Buchstaben besteht ! (Beispiel Tab)
    GetIDFromName(name[]); //Man gibt dort den Namen eines Spielers ein und erhält seine ID
    LogMessage(filename[], msg[]); //Schreibt die Nachricht in die Datei
    WriteList(nam[]); //Schaue Beispiel Tab
    ListActive(playerid); //Schaue Beispiel Tab
    GetVehicleCoDriver(vehicleid); //gibt die playerid von dem CoDriver wieder
    GetOnlinePlayers();//Returnt die Anzahl der Spieler die online sind
    SetEngine(vehicleid, bool:var);//Motor an/aus (Beispiel Tab)
    SetDoors(vehicleid, bool:var);//Türen auf/zu
    SetLights(vehicleid, bool:var);//Lichter an/aus
    SetAlarm(vehicleid, bool:var);//Alarm an/aus
    SetBonnet(vehicleid, bool:var);//Motorhaube auf/zu
    SetBoot(vehicleid, bool:var);//Kofferraum auf/zu
    SetObjective(vehicleid, bool:var);//Objective an/aus

    [subtab='Anleitung','https://webmail.server.uni-frankfurt.de/horde/themes/graphics/problem.png']
    Um die Include Datei nutzen zu können, muss sie in diesen Ordner/Pfad kopiert werden:

    Code
    /pawno/includes


    und in seinem Script wo man die Funktionen nutzen möchte muss oben stehen:
    #include <kaliber>
    [subtab='Beispiele','http://www.damen-eishockey.de/images/lampe.gif']
    Hier ein paar Beispiele zu den Funktionen:



    //SetEngine
    SetEngine(GetPlayerVehicleID(playerid), false);//Motor ist ausgeschaltet


    //Whitelist System
    new WhiteListName[3][64] = {"Kaliber","Test","Penner"}; //nur ein Bsp muss man natürlich anpassen
    public OnGameModeInit()
    {
    for(new i; i<sizeof(WhiteListName); i++)
    {
    WriteList(WhiteListName[i]);
    }
    return 1;
    }
    public OnPlayerConnect(playerid)
    {
    ListActive(playerid);//und wenn der Spieler nicht oben eingetragen wurde, wird er hier gekickt !
    return 1;
    }


    //IsAlpha
    new text[128];
    format(text, 128, "Hey was geht ab ?!");
    if(IsAlpha(text))
    {
    //Der Text enthält keine Zahlen !
    }


    //InRange
    if(InRange(playerid, 15.0, X, Y))
    {
    //Der Spieler ist in der Nähe von dieser X oder Y Koordinate !
    }


    //Ip Cutter
    new Ip[16];
    GetPlayerIp(playerid, Ip, 16);
    printf("Cuttet Ip: %s",CutIp(Ip));
    //->OutPut 127.0. (Wenn die Ip 127.0.0.1 war)


    //Range Freeze
    RangeFreeze(playerid, 15.0, true); //User in einer Range von 15.0 werden gefreezt !
    [subtab='Download','http://www.projekt-deutsch.de/templates/cback/images/download.gif']
    SourceCode: Pastebin
    Mediafire: Mediafire
    [/tabmenu]


    Bitte um Feedbacks und um mehr Funktionen !


    mfg. :thumbup:


    //Edit:

    Dan mach ne schleife und speicher alle beim restart


    Das ist nicht nötig, da der Callback OnPlayerDisconnect für jeden Spieler beim Restart aufgerufen wird ;)


    Und bei einem Disconnect, wird das auch nicht gespeichert.


    Kein Wunder warum das dann nicht funktioniert :whistling:


    Lass es da einfach abspeichern, dann funktioniert es :rolleyes:


    Wenn du es schon perfektionieren willst dann direkt die .pwn Datei mit und dann schreibs so:



    new einsatz;
    if(sscanf(params, "i", einsatz)) return SendClientMessage(playerid, COLOR_GREY, "Benutze: /cdice [Einsatz]");
    if(!IsPlayerInRangeOfPoint(playerid, 5, 2187.9375,1676.8564,11.1101)) return SendClientMessage(playerid, COLOR_GREY, "Hier kannst du nicht Würfeln!");
    if(einsatz >= 10001 || einsatz <= 999) return SendClientMessage(playerid, COLOR_GREY, "Der mindest Einsatz ist $1000 und der maximale Einsatz $10000");
    new spieleraugen = random(6), computeraugen = random(6), string[128];
    if(spieleraugen < computeraugen){format(string, sizeof(string), "Du verlierst mit einer %d gegen eine %d - Verlust: %d", spieleraugen, computeraugen, einsatz); SendClientMessage(playerid, COLOR_WHITE, string); GivePlayerMoney(playerid, -einsatz);}
    if(spieleraugen > computeraugen){format(string, sizeof(string), "Du gewinnst mit einer %d gegen eine %d - Gewinn: %d", spieleraugen, computeraugen, einsatz); SendClientMessage(playerid, COLOR_WHITE, string); GivePlayerMoney(playerid, einsatz);}
    if(spieleraugen == computeraugen) return SendClientMessage(playerid, COLOR_WHITE, "Niemand gewinnt - es wurde ein Unentschieden gewürfelt!");
    return 1;
    }


    mfg. :thumbup:

    Das Ding ist einfach, dass diese Rakete ein Ziel benötigt, sonst steht die nur blöd in der Luft ;)


    Raketex, Raketey, Raketez wie/wo initialisierst du diese Variablen ? (Wo gibst du den Variablen einen Wert ?)


    mfg. :thumbup:

    Hmmm kommen Timer mit Kommazahlen klar ? würde so wie dus sagst 47,61904761904762 Timer brauchen (Milisekunden)


    Ich mach erstmal kurz nebenher das mit den keys ;)


    Nein kommen sie nicht :whistling:


    und das ist definitiv zu viel nimm irgendwas zwischen 100 und 1000 Millisekunden ;)


    mfg. :thumbup:

    Hoch = Z-Achse erhöhen
    Runter = Z-Achse verringern
    Rechts = Y-Achse erhöhen
    Links = Y-Achse verringern
    Vorne = X-Achse verringern
    Hinten = X-Achse erhöhen


    mfg. :thumbup:

    Da ist noch so einiges mehr falsch ^^


    new SkinAuswahl[MAX_PLAYERS] = 1;


    So kannst du das nicht schreiben und wirst zu 100% auch einen Warning oder Error bekommen...


    So muss das aussehen:


    new SkinAuswahl[MAX_PLAYERS];
    //irgendwo, wo der Parameter playerid übergeben wird
    SkinAuswahl[playerid] = 1;


    //Edit: Die anderen Fehler:

    Zitat

    if(SkinAuswahl[playerid] >= 1)
    {
    new pID;


    pID bekommt keinen Wert Initialisiert, also ist der Wert 0.
    d.h. Die Kamera Pos wird immer vom Spieler 0 gesetzt, aber von keinem anderen !


    Zitat

    else if(SkinAuswahl[playerid] == 5)
    {
    SetPlayerSkin(playerid, 200);
    SkinAuswahl[playerid] = 1;
    }


    Wenn du das so machst, wird der Spieler nie zu == 6 kommen und somit wird das ganze System buggen !


    (noch ein Verbesserungsvorschlag:)
    anstatt:

    Zitat

    SkinAuswahl[playerid] += 1;


    schreibe es so:


    SkinAuswahl[playerid]++;


    mfg. :thumbup: