Beiträge von Kaliber

    Und mit #pragma unsed var1; würde ich die meldung für var1 ignorieren lassen, möchte sie jedoch für alle ignorieren und dabei nicht für jede einzelnde diese anweisung schreiben.


    Wenn es auf globaler Ebene ist, dann deklarier die Variablen so:


    new stock var1, var2, var3, var4, var5;


    //Kannst zur übersicht natürlich auch:
    new stock
    var1,
    var2,
    var3,
    var4,
    var5;


    //Ansonsten musst du es so machen:
    new stock var1;
    new stock var2;
    new stock var3;
    new stock var4;
    new stock var5;


    Und mit pragma sollte man nur auf lokaler Ebene arbeiten, sprich dann so:


    new var1;
    new var2;
    new var3;
    new var4;
    new var5;
    #pragma unused var1,var2,var3,var4,var5


    mfg. :thumbup:

    sondern eine Anweisung die direkt alle Warnings dieser Art ignoriert.


    Ja gibt es und das ist der berühmte "stock" ;)


    Wenn du globale Variablen hast:


    new stock x,y,z; //Auch wenn die sie nicht nutzt, kein Warning


    Leider ist dieser nur global anwendbar, ansonsten auf lokaler ebene, musst du mit Pragma arbeiten:


    if(...)
    {
    new x,y,z;
    #pragma unused x,y,z
    }


    mfg. :thumbup:

    Schade eigentlich, dass das nicht bei jeder Waffe aufgerufen wird.


    Man kann sich einen Callback ganz simpel basteln, der das checkt:


    forward WeaponCalled(playerid, weaponid);


    //unter OnPlayerKeyStateChange
    if(newkeys & KEY_FIRE && GetPlayerWeapon(playerid) != 0) WeaponCalled(playerid, GetPlayerWeapon(playerid));


    //Dann weiter unten im Skript
    public WeaponCalled(playerid, weaponid)
    {
    if(weaponid == 16)
    {
    //Hier hat der Spieler eine Granate geworfen
    }
    return 1;
    }


    mfg. :thumbup:

    zu dem der Spieler beim werfen der Granate guckt und dementsprechend die Koordinaten des Punktes in den Timer einbauen


    Genau so muss man es machen, hier ein Beispiel:



    const Float:distance = 5.0; //Wie weit er die Granate wirft..
    new Float:x,Float:y,Float:z,Float:a;
    GetPlayerPos(playerid, x, y, z),GetPlayerFacingAngle(playerid, a);
    x += (distance * floatsin(-a, degrees));
    y += (distance * floatcos(-a, degrees));


    //x,y und z an den Timer übergeben


    //Dann in dem Timer:
    for(new i,Float:heal; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerInRangeOfPoint(i,7.5,x,y,z)) GetPlayerHealth(i,heal),SetPlayerHealth(i,heal-2.0);
    }


    mfg. :thumbup:

    Hahaha :D


    Kann doch Spaß machen so Automaten Spiele, ich meine im Singleplayer gibts die Dinger ja auch...


    Ist halt ein lustiger zeitvertreib, damit es nicht sinnlos ist, kann man das ja verknüpfen, wie z.B. pro 1000 Score = 50$ oder sowas ^^


    Aber, danke für euer Feedback :)

    Hallo liebe Community,


    da mir mal langweilig ist, dachte ich ich schreib mal ein neues Spiel in SA:MP.


    Also, ihr kennt doch alle diese Spiele-Automaten aus dem Singleplayer und naja durch Sprites kann man diese Games "neu" schreiben.


    Mir geht es momentan darum ein paar Ideen zu sammeln, bisher sieht das ungefähr alles so aus:



    Also, das Raumschiff kann man mit den Pfeil-Tasten über den Bildschirm steuern.


    Den Komet kann man abschießen, dass sieht dann so aus (das grüne ist der Schuss):



    Sobald man den Kometen trifft, wird dieser erstmal heller, also man brauch mehrere Schüsse, damit er verschwindet:



    Das rechts ist ein Power-Boost, dadurch bekommt man einen Double-Shoot und macht halt eben doppelt soviel schaden :)


    Ich wollte mal fragen, was ihr grundsätzlich von so einer Idee haltet und evtl paar Verbesserungsvorschläge und Ideen :)


    //Edit:
    PS: Also, das ist jetzt nicht nur permanent ein Komet oder so...es kommen halt viele Reihen und man muss diese halt immer wieder abschießen oder ausweichen und so...


    mfg. :thumbup:

    Diese Logik...finde ich ja doch mal sehr interessant :)


    Du schreibst alle strings in unterschiedliche Variablen und alle machst du 256 Byte groß...und dann willst du 256*29 in einen insgesamt string schreiben, der 256 Bytes groß ist :D


    256 != 256*29 xD


    Zudem sind für die Informationen insgesamt 256 Bytes ein bisschen zu wenig Platz :S


    Naja, wie dem auch sei, schreib das alles mal einfach so:


    new str[512];
    format(str, sizeof(str), "Accountübersicht\n\
    Name: %s\n\
    Alter: %d\n\
    Geschlecht: %s\n\
    Premium: %s\n\
    Partner: %s\n\
    Leben: %.1f\n\
    Level: %d\n\
    Verwarnungen: %d\n\
    Respektpunkte: %d/%d\n\
    Levelkosten: %d$\n\
    Spielminuten: %d\n\
    Verbrechen: %d\n\
    Bargeld: $%d\n\
    Bankkonto: $%d\n\
    Zinsen: $%d\n\
    Nebenjob: %d\n\
    Fraktion: %s\n\
    Rang: %s\n\
    Organisation: %s\n\
    Lohn: %s\n\
    Lottonummer: %d\n\
    Telefonnummer: %d\n\
    Sturmhauben: %d\n\
    Gras: %d\n\
    Drogen: %d\n\
    Morde: %d\n\
    Tode: %d",
    name,age,atext,drank,married,shealth+50.0,level,PlayerInfo[targetid][pWarns],exp,expamount,
    costlevel,PlayerInfo[targetid][pGesamtMinutes],crimes,cash,account,interest,jtext,ttext,rtext,
    ftext,PlayerInfo[targetid][pGehalt],lotto,pnumber,PlayerInfo[targetid][pSturmhauben],
    PlayerInfo[targetid][pGras],drugs,kills,deaths);
    ShowPlayerDialog(playerid,30,DIALOG_STYLE_MSGBOX , "Accountübersicht", str, "OK", "");


    So hast du auch nur einen String und es wird gleich direkt alles formatiert, das ist 29x schneller und sparst viel Speicher :D


    mfg. :thumbup:

    hat jemand noch nen gültigen Link? :D


    Das nicht, aber ich kann mir nicht vorstellen, dass das unglaublich komplex war dieses Include.


    Hier ein Vorschlag von mir:


    Source-Code: Pastebin
    Direkt-Download: Mediafire


    AddBaum(playerid); //Erstellt einen Baum
    RemoveBaum(index); //Löscht einen Baum
    RemoveAllBaum(); //Löscht alle Bäume


    PS: Wenn Incognito Streamer inkludiert ist, wird dieser automatisch verwendet!


    Wenn man mehr als 100 Bäume haben will
    #define MAX_TREES 500 //Jetzt hätte man 500 Bäume (kann man auch weiter ehöhen)
    #include <baum>



    //Mal ein Beispiel Skript:
    new Baum[MAX_PLAYERS];


    //Dann einen Command: /erstelle Baum
    if(Baum[playerid]) return SendClientMessage(playerid,-1,"Sie haben einen Baum bereits erstellt!");
    Baum[playerid] = AddBaum(playerid);


    //Und zum löschen
    RemoveBaum(Baum[playerid]);
    Baum[playerid] = 0;


    Viel Spaß damit ^^


    //Edit: Okay habe es getestet und die Z-Koordinate musste runter gesetzt werden :)


    Hier nochmal ein Screen, da dieser auch am Anfang fehlt:



    mfg. :thumbup: