Beiträge von Goldkiller

    Zitat

    Vielleicht die undefinierte Größe und dann sizeof?


    Warst du nicht mal Experte ^^? Hat damit nichts zu tun. Ist keine größe angegeben wird sie autom. angepasst. Für sizeof ist es kein Problem die Größe zu bekommen.


    Zitat

    Oder dass sizeof mit = i, über der Dimension liegt?


    Sehr dicht dran. Erklärung fehlt aber trotzdem :p


    //Edit: Und Hauke hat aufgelöst ... . :p
    sizeof () wird 6 zurück geben.
    Wir können auf das Array aber nur mit dem Index von 0 - 5 bzw 0 - sizeof() -1 zugreifen.


    //Edit2 : Sucht ihr aus,wer weiter macht xD

    Quatsch.Die sind super :).
    new aArray[ ] = { 7 , 18 , 0xFF , 0b01011 , 154 , 1390 };
    main() // <-- diese Zeile nur gelöscht.
    {
    for(new i = sizeof( aArray ) ; i > -1 ; i--) {
    printf("%d",aArray[i]);
    }
    }
    Die Klammern sollten nur zeigen,dass man das schon irgendwo aufruft und nicht sinnlos im Kopf rum steht.Geht also noch weiter,Fehler ist immernoch drin.

    Kannst alles nachlesen in a_samp.inc
    #define MAX_PLAYER_NAME (24)
    #define MAX_PLAYERS (500)
    #define MAX_VEHICLES (2000)
    #define INVALID_PLAYER_ID (0xFFFF)
    #define INVALID_VEHICLE_ID (0xFFFF)
    #define NO_TEAM (255)
    #define MAX_OBJECTS (400)
    #define INVALID_OBJECT_ID (0xFFFF)
    #define MAX_GANG_ZONES (1024)
    #define MAX_TEXT_DRAWS (2048)
    #define MAX_MENUS (128)
    #define MAX_3DTEXT_GLOBAL (1024)
    #define MAX_3DTEXT_PLAYER (1024)
    #define MAX_PICKUPS (2048)
    #define INVALID_MENU (0xFF)
    #define INVALID_TEXT_DRAW (0xFFFF)
    #define INVALID_GANG_ZONE (-1)
    #define INVALID_3DTEXT_ID (0xFFFF)

    Da SendClientMessage sowieso überprüft ob die playerid gültig ist,ist es sowieso egal ob das im Check ist oder nicht.Der Übersicht halber sollte es aber trotzdem in den Check :p

    Dann ist killerid INVALID_PLAYER_ID und es crasht.
    Hab es dort völlig übersehen:
    public OnPlayerDeath(playerid, killerid, reason)
    {
    printf("Debug #1");
    SpielerInfo[playerid][Death]++;
    if(killerid != INVALID_PLAYER_ID) {
    SpielerInfo[killerid][Kills]++;
    }
    printf("Debug #2 %d",duelstate[playerid]);
    if(duelstate[playerid]==1)
    {
    printf("Debug #3");
    if(killerid != INVALID_PLAYER_ID) {
    SpielerInfo[killerid][duelkills]++; //Hier könnte es zu einem Crash kommen
    }
    SpielerInfo[playerid][dueldeaths]++;
    printf("Debug #4");
    SendClientMessage(playerid,ROT,"Sie sind gestorben!");
    SendClientMessage(killerid,ROT,"Sie haben getötet!");
    printf("Debug #5");
    }
    printf("Debug #6");
    return 1;
    }
    INVALID_PLAYER_ID ist 2 ^ 16 ( 65536 ). Dein Array hat aber niemals so eine größe.Deswegen ist das "Out of Bounce" und an der Stelle crasht / stoppt dein Script und es geht nicht weiter.


    //Edit:
    Die Abfrage mit INVALID_PLAYER_ID ist sehr sehr wichtig unter OnPlayerDeath! Ohne die Abfrage kommt es oft zu problemen,zB wenn der Spieler Selsbtmord begangen hat.Die killerid ist dann INVALID_PLAYER_ID.Was dann passiert, siehst ja an deinem Code ;).

    Das löschen aus einer Datei ist nicht ganz so leicht wie daraus lesen oder hinnein zu schreiben.
    Leider find Ich dazu auch keine passende Funktion, obwohl ich mir eigentlich sicher bin es gab mal "fremoveline".

    • 2 Datein Öffnen
    • Aus Datei 1 alles auslesen und in Datei 2 schreiben bis aus "gesuchte Zeile"
    • Datei 1 Schließen + Löschen
    • Datei 2 Schließen
    • Datei 2 in Datei 1 umbennen ( Diesmal alles aus Datei 2 in Datei 1 schreiben )


    Vielleicht hat ja jemand diese Funktion noch :/.

    public OnPlayerDeath(playerid, killerid, reason)
    {
    printf("Debug #1");
    SpielerInfo[playerid][Death]++;
    SpielerInfo[killerid][Kills]++;
    printf("Debug #2 %d",duelstate[playerid]);
    if(duelstate[playerid]==1)
    {
    printf("Debug #3");
    if(killerid != INVALID_PLAYER_ID) {
    SpielerInfo[killerid][duelkills]++; //Hier könnte es zu einem Crash kommen
    }
    SpielerInfo[playerid][dueldeaths]++;
    printf("Debug #4");
    SendClientMessage(playerid,ROT,"Sie sind gestorben!");
    SendClientMessage(killerid,ROT,"Sie haben getötet!");
    printf("Debug #5");
    }
    printf("Debug #6");
    return 1;
    }
    Wenn die meisten mal anfangen würden mit Debug-Notes zu arbeiten, würde sie 1) ihr Fehler selber lösen und 2) das auch viel schneller.

    Ich währe dafür, dass wir uns nur auf Pawno beschrenken ?


    Edit:
    Alles raus geamacht, war doch falsch .


    Das ist ebenfalls ein Eigentor.PAWNO ist der Editor bzw IDE,PAWN die Sprache.
    Wie gesagt,wäre dafür als Regel mit einzuführen dass nur die SA:MP Standart Funktionen genutzt werden dürfen.Alle Funktionen die dazu gehören und im SA:MP Server Paket als Include dabei sind.Keine zusätzlichen Plugins usw usf.

    Ich verwechsel nichts.
    Mit listitem bekommst du den Index des gewählten Items in der Liste.( 0 - IRGENDWAS ).
    inputtext ist eigentlich für den speziellen fall das man ein DIALOG_MENU mit einer input-Box haben will. inputtext funktioniert aber auch bei DIALOG_MENU's mit Listen und gibt dir den Text,der in diesem gewähltem Eintrag steht.



    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == DEIN_DIALOG) { // Dein DIALOG mit den Usernamen,muss Liste sein
    printf("listindex %d mit Text %s",listitem,inputtext);
    }
    return 1;
    }
    Der inputtext ist dann dein gewählten Username ( In diesem speziellen Beispiel ).