Beiträge von pierre65

    Sobald ein Admin /aduty macht musst du für jeden Spieler den Spieler in diesem Fall setzten (http://wiki.sa-mp.com/wiki/SetPlayerMarkerForPlayer)
    Mit ShowPlayerMarkers(1) würde jeder Spieler angezeigt werden bzw. in einem Radius je nachdem welcher Mode.
    Mit SetPlayerMarkerForPlayer wird ein Spieler bei einem anderen Spieler immer angezeigt (was du glaub ich auch haben möchtest), musst du per For Schleife dann machen dass jeder Spieler den jenigen sieht.

    Artus nein muss man nicht...
    Man kann, bzw. wär es besser und ordentlicher wenn man diese `` hat, aber das ist nicht umbedingt notwendig.


    Master147
    strcat(query1, "INSERT INTO `haus` (id,Created,Owner,Owned,EnterX,EnterY,EnterZ,ExitX,ExitY,ExitZ,Preis,Level,Int,Mieter,Miete,Rentable,lock");
    format(query2,sizeof(query2),"VALUES ('%d','%d','%s','%d','%f','%f','%f','%f','%f','%f','%d','%d','%d','%d','%d','%d','%d')", i,Hauser[i][pCreated],Hauser[i][pOwner],Hauser[i][pOwned],Hauser[i][pEnterX],Hauser[i][pEnterY],Hauser[i][pEnterZ],Hauser[i][pExitX],Hauser[i][pExitY],Hauser[i][pExitZ],Hauser[i][pPrice],Hauser[i][pLevel],Hauser[i][pInt],Hauser[i][pMieter],Hauser[i][pMiete],Hauser[i][pRentable],Hauser[i][plock]);
    Du hast 2x "Preis" speichern wollen.... nächstes mal schaust du dein Code nochmal ganz genau nach, denn sowas sind Kleinigkeiten die man beim selber beim genaueren rüberschauen problemlos finden kann..

    Also ich habe 18/17 gezählt.....
    Vielleicht hast du alle angegeben (format(string..., "('%d'....", wert1,wert2.....);) es muss aber nicht sein dass du alle beim Query eingetragen hast
    also du hast zu wenig Parameter mit übergeben ;)
    Kleines Beispiel (hat man mehr Überblick)

    format(query,sizeof query,"INSERT INTO `table` (VALUE1,VALUE2,VALUE3)");
    format(query,sizeof query,"%s VALUES('%d','%d')", query, variable1, variable2, variable3);

    MySql Log? Fehlermeldungen?
    (MySql Log aktivieren mit mysql_debug(1))


    // Edit: Hast einen Parameter vergessen beim übergeben, mach VALUES(NULL,'%d'...... oder nimm "id," raus (beim INSERT)
    // Edit 2: Hab falsch gelesen :/


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {//Vom San Fierro Mietautohaus, was auch funktioniert
    for(new i = 0; i<MAX_VEHICLES; i++) {
    if(vehicleid == Mietcar[i] || vehicleid == LSMietcar[i])
    {
    TogglePlayerControllable(playerid,1); // freezt eigentlich nur den Spieler?!?
    RemovePlayerFromVehicle(playerid); // Entfernt den Spieler vom Auto ;)
    return 1;
    }
    }
    return 1;
    }

    Kannst einfach mit einer For schleife das ganze überprüfen ;)


    new vehid = GetPlayerVehicleID(PERSONB);
    for (new i=0;i<MAX_PLAYERS;i++) {
    if ( IsPlayerConnected(i) && GetPlayerVehicleID(i) == vehid ) {
    if ( GetPlayerVehicleSeat(i) == 0 ) {
    // Das ist dein Taxifahrer! (ID: i)
    break; // da gefunden wurde kann er die For Schleife auch abbrechen.
    }
    }
    }

    Wäre die einzigste Möglichkeit die mir auf die schnelle einfällt..


    // Beim Befehl:
    if ( gettime() >= DasIstDeineVariableVomUser[playerid] ) { // Das soll passieren wenn 2 Stunden um sind oder er es zum ersten mal macht
    DasIstDeineVariableVomUser[playerid] = gettime() * (3600 * STUNDENANZAHL); // damit er es auch erst nach 2h kann, wieder speichern
    }

    Die Variable solltest du aber auch abspeichern ;)


    format(query1,sizeof(query1),"UPDATE `haus` SET `Created` = '%d',`Besitzer` = '%s',`Owned = '%d',`EnterX` = '%f',`EnterY` = '%f',`EnterZ` = '%f',`ExitX` = '%f',`ExitY` = '%f',`ExitZ` = '%f',",Hauser[haus][pCreated],]Hauser[haus][pOwner],Hauser[haus][pOwned],Hauser[haus][pEnterX],Hauser[haus][pEnterY],Hauser[haus][pEnterZ],Hauser[haus][pExitX],Hauser[haus][pExitY],Hauser[haus][pExitZ]); //<-----Kriege hier alle fehler

    Guck dir mal Hauser[haus][pCreated],]Hauser[haus][pOwner],Hauser[haus][pOwned] genauer an...
    Na findest es selbst?
    Wenn nein: nachdem ersten Komma hast du ein ] zu stehen, das entfernen.


    ocmd:admins(playerid,params[])
    {
    new adminonline = 0;
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    if(IstSpielerAdmin(i,1))
    {
    adminonline ++;
    new string[128];
    new adminrang[64];
    switch(GetPVarInt(i,"Adminlevel"))
    {
    case 1:{adminrang="1 Adminrang";}
    case 2:{adminrang="2 Adminrang";}
    //usw...
    }
    format(string,sizeof(string),"%s | Administratoren | %i",SpielerName(i),adminrang);
    SendClientMessage(playerid,FARBE,string);//FARBE = DEINE FARBE!!!
    }
    }
    if ( adminonline < 1 ) { SendClientMessage(playerid,FARBE," Es sind momentan keine Administratoren online!"); } //FARBE = DEINE FARBE!!!
    return 1;
    }


    [SoA]TheBester hat das in der For-Schleife abgefragt dadurch wurde auch der Chat zugespamt...

    {-2596.0364, 337.6360, -2550.4565, 302.9267}
    ersetzen zu
    {-2596.0364, 302.9267, -2550.4565, 337.6360}
    Danach sollte es gehen...
    Weil er denkt die erste und die zweite ist die Mindestvariable und die 3. + 4. ist die Maxvariable.. ;)

    Du hast viele Varialben (für zum Beispiel) Timers erstellt, hättest das alles auf eins machen können z.b. GangZone[i][flagTimer] = SetTimer... und das mit allen anderen Timern auch.
    Du hast bei der auch ein Fehler gemacht
    MinX, MinY, MaxX, MaxY, da 337.* höher ist als 302.* ist das keine gültige Gangzone, falls du es nach dieser Reihenfolge sortiert hast, wasi ch glaube.


    public OnPlayerRequestSpawn(playerid) {
    TogglePlayerSpectating(playerid, 1);
    PlayerSpectatePlayer(playerid, playerid);
    return 0;
    }
    public OnPlayerRequestClass(playerid, classid)
    {
    TogglePlayerSpectating(playerid, 1);
    PlayerSpectatePlayer(playerid, playerid);
    // dein restlicher Code....
    }


    Damit hast du keine Buttons unten mehr... Damit man auch spawnt musst du wie JackC schon gesagt hat, SpawnPlayer (& SetSpawnInfo) nutzen (beim OnDialogResponse..).

    Dein SpielerSpeichern ändern zu:

    stock SpielerSpeichern(playerid)
    {
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    new Float:x, Float:y, Float:z; // falls nicht generiert
    GetPlayerPos(playerid,x,yz);
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
    if(dini_Exists(Spieler))
    {
    dini_IntSet(Spieler,"Adminlevel",sSpieler[playerid][Adminlevel]);
    dini_IntSet(Spieler,"Level",sSpieler[playerid][Level]);
    dini_IntSet(Spieler,"Fraktion",sSpieler[playerid][Fraktion]);
    dini_IntSet(Spieler,"Job",sSpieler[playerid][Job]);
    dini_IntSet(Spieler,"Team",sSpieler[playerid][Team]);
    dini_IntSet(Spieler,"Skin",GetPlayerSkin(playerid));
    dini_IntSet(Spieler,"Geld",GetPlayerMoney(playerid));
    dini_FloatSet(Spieler,"X", x);
    dini_FloatSet(Spieler,"Y", y);
    dini_FloatSet(Spieler,"Z", z);
    return 1;
    }
    return 1;
    }

    Dein SpielerLaden Befehl ändern zu:
    stock SpielerLaden(playerid)
    {
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
    if(dini_Exists(Spieler))
    {
    sSpieler[playerid][Adminlevel] = dini_Int(Spieler,"Adminlevel");
    sSpieler[playerid][Level] = dini_Int(Spieler,"Level");
    sSpieler[playerid][Fraktion] = dini_Int(Spieler,"Fraktion");
    sSpieler[playerid][Job] = dini_Int(Spieler,"Job");
    sSpieler[playerid][Team] = dini_Int(Spieler,"Team");
    sSpieler[playerid][sLogin] = 1;
    sSpieler[playerid][Geld] = dini_Int(Spieler,"Geld");
    GivePlayerMoney(playerid, sSpieler[playerid][Geld]);
    SetPlayerPos(playerid,dini_Float(Spieler,"X"),dini_Float(Spieler,"Y"),dini_Float(Spieler,"Z"));
    return 1;
    }
    return 1;
    }


    Und fertig... (Weiss gerade nicht obs dini_Float und dini_FloatSet ist ich arbeite nicht mehr mit dini nur noch mit MySql)

    Wieso hast du das so kompliziert gestaltet.... (hier (wird in 7 Tagen wieder gelöscht) kannst du mal mein GangWar System anschauen)
    1. (Nur ein Tip) Statt "var = i;" kannst du "return i;" nutzen (bei GetPlayerGangZone(playerid)). Sowie am Ende "return var;" durch "return -5;" ersetzen, die Zeile "new var = -5;" kannst du dann entfernen. So läuft nämlich die For Schleife nicht weiter falls er schon ein Gebiet gefunden hat, und ich glaube nicht dass du 2 Gebiete übereinander hast...


    2. Gib dir mal gangzoneid aus und schau was für einen Wert er dir zurückgibt. Sollte der Wert über 0 liegen liegts daran schonmal nicht.


    3. Alles was zwischen "if(IsGangZoneInFight[gangzoneid] == false)" steht kommentierst du mal mit Hilfe von /* und */ aus und gibst etwas ein wie "SendClientMessage(playerid, 255, "Hallo");" oder so ähnlich. (nicht in den /* */, sondern davor).
    >> Ist der Fehler "Server Unknown Command" weg, dann liegt es an einen Befehl den du auskommentiert hast, einfach jeden einzelnen Befehl wieder "entkommentieren" (oder so) und dann mal schauen durch welchen Befehl der "Server Unknown Command" ausgelöst wird. (denke mal das liegt an der FOR-Schleife)
    >> Ist der Fehler nicht weg, dann liegt es an einer IF-Abfrage.