Beiträge von Bubelbub

    dcmd_aeinstellen(playerid, params[])
    {
    new pid,
    rang,
    fraktion[64],
    Spielerdatei[64],
    Spielerdatei2[64],
    adminname[MAX_PLAYER_NAME],
    eingestellter[MAX_PLAYER_NAME];
    GetPlayerName(playerid, adminname ,sizeof(adminname));
    GetPlayerName(pid, eingestellter, sizeof(eingestellter));
    format(Spielerdatei, sizeof(Spielerdatei), "/Accounts/%s.txt", adminname);
    format(Spielerdatei2, sizeof(Spielerdatei2), "/Accounts/%s.txt", eingestellter);
    if(dini_Int(Spielerdatei, "Team") < 3)
    return SendClientMessage(playerid, ROT, "Du bist kein Admin!");
    if(dini_Int(Spielerdatei,"Team") == 3)
    {
    if(sscanf(params, "uds", pid, fraktion, rang))
    return SendClientMessage(playerid, ROT, "Benutzung: /aeinstellen [PlayerID] [Rang] [Fraktion]");
    else
    {
    if(!strcmp("TEAM", fraktion, true, 4))
    {
    new string[128];
    format(string, sizeof(string), "Du hast %s ins Team aufgenommen!", eingestellter);
    SendClientMessage(playerid, GELB, string);
    dini_IntSet(Spielerdatei2, "Team", rang);
    return 1;
    }
    }
    }
    return 0;
    }


    Sag uns doch noch einmal was der genaue Fehler ist.
    Was gibst du Ingame ein?
    Was kommen für Fehler?

    Ähm...
    ... kannste das vielleicht mit der ID machen?
    Das du die Debug Funktion per Command anschaltest.
    Mit dem Command bekommst du die Objekt ID.


    Dann würdest du nur das Objekt haben.


    Sonst...
    .... lass es doch genauer filter,


    if(stream_id > MAX_STREAM || stream_id < 0)
    return 0;
    mit
    if(stream_id > MAX_STREAM || stream_id < 0)
    return printf("[Debug] Objekt hat Fehler!");
    ersetzen
    vllt. noch formatieren o.ä.


    Sonst einfach mal MAX_STREAM erhöhen.



    eine der 3 MÖglichkeiten muss doch gehen :S

    if(!strcmp("LVPD", fraktion, true, 4))


    strcmp ist so eine Art -> == <-
    Kennste vllt. aus PHP o.ä.


    strcmp vergleicht string 1 und string 2.
    Wenn man jetzt hier unten guckt:


    if(!strcmp("LVPD", fraktion))


    Dann macht der Server folgendes:
    "LVPD" ==/like fraktion ?????
    Also ob eben die Strings gleich bzw. fast gleich sind.


    Wenn du jetzt da das:
    , true, 4
    hin machst, ist das eine Art wie MySQL (like).
    4 bedeutet die Länge.
    Machst du dort z.B. 1 hin, wäre das so:
    if "L%" == fraktion


    Also er nimmt nur noch das "L".



    Ich hoffe ich konnte dir das jetzt gut mit Beispielen erklären.


    Theoretisch kannste
    if(string == string)
    durch
    if(!strcmp(string, string))
    ersetzen



    P.S.: Sa-MP Wiki: http://wiki.sa-mp.com/wiki/Strcmp

    Bitteschön:


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    new Float:health;
    GetPlayerHealth(playerid, health);
    if(dialogid == DIALOG_LOGIN)
    {
    if(!response)
    {
    SendClientMessage(playerid,BLAU,"Du hast den Vorgang abgebrochen.");
    return Kick(playerid);
    }
    else
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid,BLAU,"Das Passwort war nicht lang genug.");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Dein Account wurde gefunden. Gib bitte das Passwort ein.","Login","Abbrechen");
    return 1;
    }
    else
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/LARP/%s.ini",name);
    Login(playerid,inputtext);
    SetTimer("LifeTime",60000,1);
    return 1;
    }
    }
    }
    if(dialogid == DIALOG_REGISTER)
    {
    if(!response)
    {
    SendClientMessage(playerid,BLAU,"Du hast den Vorgang abgebrochen.");
    return Kick(playerid);
    }
    else
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid,BLAU,"Das Passwort war nicht lang genug.");
    return ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Gib bitte das gewünschte Passwort ein:","Register","Abbrechen");
    }
    else
    {
    return Register(playerid, inputtext);
    }
    }
    }
    if(dialogid == DIALOG_TUTORIAL)
    {
    if(!response)
    {
    new string[256];
    new sendername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, sendername, sizeof(sendername));
    SendClientMessage(playerid,0xFFFF00FF,"Alle Administratoren die Online sind wurden benachrichtigt, das du Hilfe benötigst.");
    format(string, sizeof(string), "%s benötigt Hilfe! Du kannst ihm mit /aw antworten!", sendername);
    SendAdminMessage(0xFFFA00FF, string);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,BLAU,"Schön, das du alleine zurecht gefunden hast.");
    return 1;
    }
    }
    if(dialogid == 20)
    {
    switch(listitem)// Checking which item was chosen
    {
    case 0:
    {
    if(GetPlayerMoney(playerid) < 20)return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-20);
    SetPlayerHealth(playerid, health+10);
    }
    case 1:
    {
    if(GetPlayerMoney(playerid) < 50)return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-50);
    SetPlayerHealth(playerid, health+20);
    }
    case 2:
    {
    if(GetPlayerMoney(playerid) < 80)return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-80);
    SetPlayerHealth(playerid, health+30);
    }
    case 3:
    {
    if(GetPlayerMoney(playerid) < 100)return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-100);
    SetPlayerHealth(playerid, health+45);
    }
    case 4:
    {
    if(GetPlayerMoney(playerid) < 30)return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-30);
    SetPlayerHealth(playerid, health+15);
    }
    case 5:
    {
    if(GetPlayerMoney(playerid) < 20)return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-20);
    SetPlayerHealth(playerid, health+11);
    }
    case 6:
    {
    if(GetPlayerMoney(playerid) < 50)return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-50);
    SetPlayerHealth(playerid, health+20);
    }
    case 7:
    {
    if(GetPlayerMoney(playerid) < 30)return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-30);
    SetPlayerHealth(playerid, health+15);
    }
    case 8:
    {
    if(GetPlayerMoney(playerid) < 35)return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-35);
    SetPlayerHealth(playerid, health+18);
    }
    }
    }
    return 1;
    }

    Hier noch einmal, damit du das aktuellste hast:


    if(dialogid == 20)
    {
    switch(listitem)// Checking which item was chosen
    {
    case 0:
    {
    if(GetPlayerMoney(playerid) < 20)return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-20);
    SetPlayerHealth(playerid, bsnleben+10);
    }
    case 1:
    {
    if(GetPlayerMoney(playerid) < 50)return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-50);
    SetPlayerHealth(playerid, bsnleben+20);
    }
    case 2:
    {
    if(GetPlayerMoney(playerid) < 80)return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-80);
    SetPlayerHealth(playerid, bsnleben+30);
    }
    case 3:
    {
    if(GetPlayerMoney(playerid) < 100)return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-100);
    SetPlayerHealth(playerid, bsnleben+45);
    }
    case 4:
    {
    if(GetPlayerMoney(playerid) < 30)return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-30);
    SetPlayerHealth(playerid, bsnleben+15);
    }
    case 5:
    {
    if(GetPlayerMoney(playerid) < 20)return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-20);
    SetPlayerHealth(playerid, bsnleben+11);
    }
    case 6:
    {
    if(GetPlayerMoney(playerid) < 50)return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-50);
    SetPlayerHealth(playerid, bsnleben+20);
    }
    case 7:
    {
    if(GetPlayerMoney(playerid) < 30)return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-30);
    SetPlayerHealth(playerid, bsnleben+15);
    }
    case 8:
    {
    if(GetPlayerMoney(playerid) < 35)return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-35);
    SetPlayerHealth(playerid, bsnleben+18);
    }
    }
    }

    dcmd_einstellen(playerid,params[])
    {
    if(dini_Int(Spielerdatei,"Team") < 4)
    return SendClientMessage(playerid, ROT, "Du bist kein Admin!");
    if(sscanf(params, "udd", pid, fraktion, rang))
    return SendClientMessage(playerid, ROT, "Benutzung: /einstellen [PlayerID] [Fraktion] [Rang]");
    else
    {
    if(!strcmp("LVPD", fraktion, true, 4)) // oder if(!strcmp("LVPD", fraktion))
    {
    dini_IntSet(Spielerdatei,"LVPD",rang);
    return 1;
    }
    }
    }


    So geht das ;)

    Einrückfehler.


    if(dialogid == 20)
    {
    new Float:PlayerHealth;
    GetPlayerHealth(playerid, PlayerHealth);
    switch(listitem)// Checking which item was chosen
    {
    case 0:
    {
    if(GetPlayerMoney(playerid) < 20)
    return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-20);
    SetPlayerHealth(playerid, PlayerHealth+10);
    }
    case 1:
    {
    if(GetPlayerMoney(playerid) < 50)
    return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-50);
    SetPlayerHealth(playerid, PlayerHealth+20);
    }
    case 2:
    {
    if(GetPlayerMoney(playerid) < 80)
    return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-80);
    SetPlayerHealth(playerid, PlayerHealth+30);
    }
    case 3:
    {
    if(GetPlayerMoney(playerid) < 100)
    return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-100);
    SetPlayerHealth(playerid, PlayerHealth+45);
    }
    case 4:
    {
    if(GetPlayerMoney(playerid) < 30)
    return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-30);
    SetPlayerHealth(playerid, PlayerHealth+15);
    }
    case 5:
    {
    if(GetPlayerMoney(playerid) < 20)
    return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-20);
    SetPlayerHealth(playerid, PlayerHealth+11);
    }
    case 6:
    {
    if(GetPlayerMoney(playerid) < 50)
    return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-50);
    SetPlayerHealth(playerid, PlayerHealth+20);
    }
    case 7:
    {
    if(GetPlayerMoney(playerid) < 30)
    return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-30);
    SetPlayerHealth(playerid, PlayerHealth+15);
    }
    case 8:
    {
    if(GetPlayerMoney(playerid) < 35)
    return SendClientMessage(playerid,0xFFFFFF,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)-35);
    SetPlayerHealth(playerid, PlayerHealth+18);
    }
    }
    }

    Ja schwer zu sagen :S
    Wie wäre es wenn du folgendes machst:


    public GetStreamerObjectPos(stream_id, &Float:x, &Float:y, &Float:z)
    {
    // Die Debug Meldungen dürfen NICHT wahr sein, wenn ja, dann ist das das Problem!
    new debugStr[128];
    format(debugStr, sizeof debugStr, "[ DEBUG ] stream_id (%d) > MAX_STREAM (%d) oder stream_id (%d) < 0", stream_id, MAX_STREAM, stream_id);
    printf(debugStr); // oder SendClientMessageToAll(COLOR_RED, debugStr);
    if(stream_id > MAX_STREAM || stream_id < 0)
    return 0;
    format(debugStr, sizeof debugStr, "[ DEBUG ] bfxobject[stream_id][exist] (%d) == 0", bfxobject[stream_id][exist]);
    printf(debugStr); // oder SendClientMessageToAll(COLOR_RED, debugStr);
    if(!bfxobject[stream_id][exist])
    return 0;
    new foundno = 0;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i) || IsPlayerNPC(i))
    continue;
    if(ERSTELLT[i][stream_id])
    {
    GetPlayerObjectPos(i, OBJ_ID[i][stream_id], x, y, z);
    foundno = 1;
    break;
    }
    }
    format(debugStr, sizeof debugStr, "[ DEBUG ] foundno (%d) == 1", foundno);
    printf(debugStr); // oder SendClientMessageToAll(COLOR_RED, debugStr);
    if(!foundno)
    {
    x = bfxobject[stream_id][ox];
    y = bfxobject[stream_id][oy];
    z = bfxobject[stream_id][oz];
    }
    return 1;
    }


    Wenn du das dann ingame hast (ich würde es mit SendClientMessageToAll machen) dann siehst du direkt woran es liegen könnte.
    Wenn eine Bedingung -> wahr <- ist, also stimmt.
    Dann ist das der Fehler!


    Wenn du nicht weißt was ich meine, für das o.g. Script einfach mal aus.
    Danach schickst du mir einen Screen von Ingame oder vom Server Log (je nachdem welche Methode).


    -> Das letzte Objekt mir dann schicken <-
    Weil der ja alle debuggt :O
    Hoffe das bringt was :wacko:

    SpielerInfo[playerid][Passwort] = strval(dini_Get(Spielerdatei,"Passwort"));


    Ups...

    SpielerInfo[playerid][Passwort] = dini_Get(Spielerdatei, "Passwort");


    Du willst da doch keine Zahl haben :D




    (wenn jetzt ein Fehler mit "Tag" kommt, mach bei dem SpielerInfo Enum einfach bei Passwort ein [100] o.ä. hinter)
    (wenn du nicht weißt was ich meine, versuch das:)
    Ersetz:
    SpielerInfo[playerid][Passwort] = strval(dini_Get(Spielerdatei,"Passwort"));
    if(strcmp(inputtext,SpielerInfo[playerid][Passwort],false) == 0)
    durch:
    if(!strcmp(inputtext, dini_Get(Spielerdatei, "Passwort"), false))
    (überspringt das zwischenspeichern)

    Jeder kann ja mal die float, str, val und so etwas durcheinander bringen ;)


    if(!strcmp(cmd, "/setvheal", true))
    {
    if(!strlen(strget(cmdtext, 1)) || !strlen(strget(cmdtext, 2)))
    return SendClientMessage(playerid, COLOR_YELLOW, "Verwendung: /setvheal [Carid] [Health]");
    new id[200],
    heal[200];
    format(id, sizeof(id), "%s", strlen(strget(cmdtext, 1)));
    format(heal, sizeof(heal), "%s", strlen(strget(cmdtext, 2)));
    SetVehicleHealth(strval(id), floatstr(heal));
    SendClientMessage(playerid, COLOR_RED, id);
    SendClientMessage(playerid, COLOR_RED, heal);
    return 1;
    }
    if(!strcmp(cmd, "/setpheal", true))
    {
    if(!strlen(strget(cmdtext, 1)) || !strlen(strget(cmdtext, 2)))
    return SendClientMessage(playerid, COLOR_YELLOW, "Verwendung: /setpheal [Playerid] [Health]");
    new id[200],
    heal[200];
    format(id, sizeof(id), "%s", strlen(strget(cmdtext, 1)));
    format(heal, sizeof(heal), "%s", strlen(strget(cmdtext, 2)));
    SetPlayerHealth(strval(id), floatstr(heal));
    SendClientMessage(playerid, COLOR_RED, id);
    SendClientMessage(playerid, COLOR_RED, heal);
    return 1;
    }
    if(!strcmp(cmd, "/respawnveh", true))
    {
    if(!strlen(strget(cmdtext, 1)))
    return SendClientMessage(playerid,COLOR_YELLOW,"Verwendung: /respawnveh [Carid]");
    new id[100];
    format(id, sizeof(id), "%s", strlen(strget(cmdtext, 1)));
    SetVehicleToRespawn(strval(id));
    SendClientMessage(playerid, COLOR_RED, id);
    return 1;
    }

    Meinst du so etwas?


    new VehicleDeathInfo[MAX_VEHICLES];


    public OnVehicleDeath(vehicleid, killerid)
    {
    VehicleDeathInfo[vehicleid] = 1;
    }


    public OnVehicleSpawn(vehicleid)
    {
    if(VehicleDeathInfo[vehicleid])
    {
    VehicleDeathInfo[vehicleid] = 0;
    SetVehicleHealth(vehicleid, 255);
    }
    }