Beiträge von Kaliber

    Mit der Funktion bekommst du den Slot:


    stock getSlotOut(const string[])
    {
    new p = strfind(string," ");
    if(p == -1) return -1;
    new p2 = strfind(string," ",false,p+1);
    if(p2 == -1) return -1;
    new id[11];
    strmid(id,string,p,p2,sizeof(id));
    return strval(id);
    }
    //und dann der code so:
    case DIALOG_IMOBEL:
    {
    if(!response) return 1;
    new id = getSlotOut(inputtext),string[11];
    if(id == -1) return SendClientMessage(playerid,-1,"Fehler"); //Sollte eig nie vorkommen!
    mobelidVar[playerid] = mobelid;
    format(string,sizeof(string),"%d",id);
    SendClientMessage(playerid,-1,string);
    ShowPlayerDialog(playerid,DIALOG_IMOBEL2,DIALOG_STYLE_LIST,"Möbelstück","Entfernen\nAuswählen","Weiter","Abbruch");
    return 1;
    }

    Es gibt so etwas, das nennt sich DEBUG.


    Wenn du ca weißt (und das tust du), wann der Fehler auftritt bzw was du tust damit der Fehler auftritt...setze ein Print rein und dann weißte wo im Code die falsche Stelle ist...ist nicht allzu kompliziert..

    Wenn du z.B. in einem Command /test Hallo 5 eingibst und der Befehl so aussieht:



    CMD:test(playerid, params[])
    {
    new string[128],id;
    if(sscanf(params,"s[3]d",string,id)) //Hallo = 5 Zeichen, hast aber nur 3 zur Verfügung....Buffer overflow
    }

    Der fehler besteht noch immer,
    danke aber für eure vielen ansätze

    ..ich hab das Skript kompiliert gehabt...bei mir kamen keine Fehler...


    Hast du auch meinen Code kopiert und mit deinem ersetzt? :rolleyes:


    Habe da einige Sachen geändert gehabt..die man nicht direkt sieht..wie z.B. aus einer ) eine } gemacht...und Namen von Makros geändert..bzw angepasst..

    Deine Makros so schreiben:



    #define AMMO_EXTRA (0) //Das hier hast du vergessen...ehh weiß nicht was für n wert das haben soll


    #define AMMO_NOAMMO (0)
    #define AMMO_9MM (1)
    #define AMMO_SHOTGUN (2)
    #define AMMO_MAGNUM (3)
    #define AMMO_9x19MM (4)
    #define AMMO_762x39MM (5)
    #define AMMO_556MM (6)
    #define AMMO_762x51MM (7)
    #define AMMO_THROW (8)
    #define AMMO_UNABLE (9)


    #define AMMTYPE_NOAMMO (0)
    #define AMMTYPE_NORM (1)
    #define AMMTYPE_HOLLOWPOINT (2)
    #define AMMTYPE_BREAKING (3)
    #define AMMTYPE_GUMMI (4)


    #define WSLOT_FIST (0)
    #define WSLOT_MEELE (1)
    #define WSLOT_HANDGUN (2)
    #define WSLOT_MAIN (3)
    #define WSLOT_THROW (4)
    #define WSLOT_OTHER (5)


    //Und dann das so:


    stock const weaponData[47][_weaponData] = {
    {"Faust", AMMO_NOAMMO, 4,WSLOT_FIST,0},
    {"Schlagring", AMMO_NOAMMO, 5,WSLOT_FIST,0},
    {"Golfschläger", AMMO_NOAMMO, 6,WSLOT_MEELE, 1},
    {"Schlagstock", AMMO_NOAMMO, 8,WSLOT_MEELE, 1},
    {"Messer", AMMO_NOAMMO, 8,WSLOT_MEELE, 1},
    {"Baseballschläger", AMMO_NOAMMO, 8,WSLOT_MEELE, 1},
    {"Schaufel", AMMO_NOAMMO, 6,WSLOT_MEELE, 1},
    {"BillardKö", AMMO_NOAMMO, 5,WSLOT_MEELE, 1},
    {"Katana", AMMO_NOAMMO, 25,WSLOT_MEELE, 1},
    {"Kettensäge", AMMO_NOAMMO, 25,WSLOT_MEELE, 1},
    {"Dildo", AMMO_NOAMMO, 1,WSLOT_MEELE, 10},
    {"Dildo", AMMO_NOAMMO, 1,WSLOT_MEELE, 10},
    {"Vibrator", AMMO_NOAMMO, 1,WSLOT_MEELE, 10},
    {"Vibrator", AMMO_NOAMMO, 1,WSLOT_MEELE, 10},
    {"Blumenstrauß", AMMO_NOAMMO, 1,WSLOT_MEELE, 10},
    {"Gehstock", AMMO_NOAMMO, 5,WSLOT_MEELE, 10},
    {"Splittergranate",AMMO_THROW,0, WSLOT_THROW, 8},
    {"Tränengas",AMMO_THROW,0, WSLOT_THROW, 8},
    {"Molotov Cocktail", AMMO_THROW,0, WSLOT_THROW, 8},
    {"Noting",-1,-1,-1,-1},
    {"Noting",-1,-1,-1,-1},
    {"Noting",-1,-1,-1,-1},
    {"9mm", AMMO_9MM, 20,WSLOT_HANDGUN, 2},
    {"9mm-SD", AMMO_9MM,15,WSLOT_HANDGUN, 2},
    {"Desert Eagle", AMMO_MAGNUM, 30,WSLOT_HANDGUN, 2},
    {"Shotgun", AMMO_SHOTGUN, 30,WSLOT_MAIN,3},
    {"Abgesägte Shotgun", AMMO_SHOTGUN, 25,WSLOT_MAIN,3},
    {"Combat Shotgun", AMMO_SHOTGUN, 20,WSLOT_MAIN,3},
    {"Uzi", AMMO_9x19MM, 15,WSLOT_HANDGUN, 4},
    {"Mp5", AMMO_9MM, 20,WSLOT_MAIN,4},
    {"Ak-47", AMMO_762x39MM, 30,WSLOT_MAIN,5},
    {"M4A1", AMMO_556MM, 30,WSLOT_MAIN,5}, // Zeile 84
    {"Tec9", AMMO_9x19MM, 15,WSLOT_HANDGUN, 4},
    {"Country Rifle", AMMO_762x51MM, 40,WSLOT_MAIN,6},
    {"Sniper Rifle", AMMO_762x51MM, 50,WSLOT_MAIN,6},
    {"RPG",AMMO_UNABLE,0,-1,7},
    {"HS Rocketlauncher", AMMO_UNABLE,0,-1,7},
    {"Flammenwerfer",AMMO_UNABLE,0,-1,7},
    {"Minigun",AMMO_UNABLE,0,-1,7},
    {"Rucksackbombe",AMMO_UNABLE,0,-1,8},
    {"Detonator",AMMO_UNABLE,0,-1,12},
    {"Sprühdose",AMMO_EXTRA,0,WSLOT_OTHER, 9},
    {"Feuerlöscher",AMMO_EXTRA,0,WSLOT_OTHER, 9},
    {"Kamera",AMMO_EXTRA,0,WSLOT_OTHER, 9},
    {"Nachtsichtgerät",AMMO_UNABLE,0,-1,11},
    {"Thermalgerät",AMMO_UNABLE,0,-1,11},
    {"Fallschirm",AMMO_EXTRA,4,WSLOT_OTHER, 11}
    };


    mfg. :thumbup:

    Bei OnPlayerDeath:



    if(killerid != INVALID_PLAYER_ID) //If-Abfrage halt noch erweitern prüfen ob er in der Arena ist
    {
    new name[MAX_PLAYER_NAME],string[128];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    GetPlayerName(killerid,string,MAX_PLAYER_NAME);
    format(string,128,"* Spieler %s hat %s getötet!",string,name);
    SendClientMessageToAll(-1,string); //ggf Anpassen, an wen es gesendet werden soll
    }

    Du erstellst ein Array mit der maximalen Anzahl der Koordinaten. Dann beim erstellen, packst du einmal die Koords in das Array und in eine SQLite Datenbank.


    Zu prüfen ob wer in der Nähe ist loopst du halt durch das Array.


    Und beim Server start, liest du alle Einträge in der Datenbank aus und packst die in das Array.


    Fertig :)

    Gibt ja Google.

    Wenn man spezifische Fragen oder Erklärungen sucht, oder etwas wirklich nicht versteht und man dazu nichts gefunden hat...dann ist das ja kein Problem.


    Aber einfach sagen, ich suche das...und es aber 1000 Erklärungen dazu gibt..sogar im Forum..ist das etwas lächerlich...

    Ahh gut, dass du das alles schreibst, wenn wir schon dabei sind:


    1. Eintrag in google: http://wiki.sa-mp.com/wiki/TextDraws


    Da wird dir erklärt was ein Textdraw ist und wie es funktioniert, da du anscheinend nicht googlen kannst, davon geht anscheinend Jeffry aus (tut mir Leid, dass er dich so bloßstellt mit seinem Beitrag, aber ok).


    2. Eintrag in google: https://wiki.sa-mp.com/wiki/TextDrawCreate


    Damit erstellst du ein TextDraw.


    3. Eintrag in google: https://wiki.sa-mp.com/wiki/CreatePlayerTextDraw


    TextDraws haben ein Limit, du solltest deshalb überlegen die TextDraws Spieler basiert machen.


    Googlen wir mal weiter, ohhh was ist das denn, findet man etwa auch Tutorials wenn man sucht =O
    Das ja der Wahnsinn: Textdraws


    4. Eintrag in google: http://forum.sa-mp.com/showthread.php?t=543002
    und jetzt halte dich gut fest, es gibt sogar sub-Einträge in google die ähnliche Themen auf der Website anzeigen..und was haben wir denn hier, noch mehr Editoren, die hättest du nie gefunden:



    Ja...also anscheinend hättest du das echt nicht durch die ersten 4 Einträge von google herausbekommen. Wow unglaublich.
    Gut Jeffry, dass du nicht davon ausgehst, dass er googlen kann.
    Meinen Beitrag sollte ihn dazu animieren, genau das zu tun, dein Beitrag ist einfach nur ihm den ganzen Rotz vor die Nase setzen.
    Bei seinem Nächsten Problem, wird er sich wieder nicht zu helfen wissen und herkommen, damit du noch ein paar Beiträge generieren kannst.


    Wow...genial


    ||

    In Zeile 329 fehlt ein else.


    Sprich, es muss so lauten:



    public OnUserCheck(playerid)
    {
    if(cache_get_row_count() ==0)
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Account Erstellung","Bitte Erstelle dir ein Account","Erstellen","Verlassen");
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Anmeldung","Bitte Logge dich mit dein Password ein","Einloggen","Verlassen");
    }
    return 1;
    }