Beiträge von Zunno

    Kleine Frage:


    Du speicherst die Fahrzeuge doch in einer Datei und diese heißt doch bestimmt mit namen und nicht nur mit einer Zahl oder?


    format(strr, sizeof strr, "/Cars/%d.ini", i);
    Weil sonst ladet er ja nur wenn z.B. MAX_VEHICLES auf 2 ist die Cars aus diesen Dateien:


    /Cars/0.ini
    /Cars/1.ini


    Ich glaube da liegt der Fehler :huh:

    Hier So muss das:


    ocmd:knast(playerid,params[])
    {
    new pID, reason[128], string[128];
    if(sscanf(params,"us",pID,reason)) return SendClientMessage(playerid,BLAU,"NUTZUNG: /knast [ID] [Verbrechen]");
    if(IsPlayerInRangeOfPoint(playerid, 3,-2032.9984,-117.4550,1035.1719)) return SendClientMessage(playerid, COLOR_RED,"Du bist nicht am Gefängnis");
    {
    if(GetPVarInt(playerid,"Fraktion") == 0 || GetPVarInt(playerid,"Fraktion") == 2 || GetPVarInt(playerid,"Fraktion") == 3 || GetPVarInt(playerid,"Fraktion") == 4 || GetPVarInt(playerid,"Fraktion") == 5 || GetPVarInt(playerid,"Fraktion")==6) return SendClientMessage(playerid,COLOR_YELLOW,"Du darfst diesen Befehl nicht benutzen!");
    format(string,sizeof string,"Polizei: %s wurde von Officer %s eingebuchtet. Verbrechen: %s",SpielerName(pID),SpielerName(playerid),reason);
    SendClientMessageToAll(COLOR_YELLOW,string);
    SetPVarInt(pID,"Knast",1);
    SetPlayerPos(pID,219.2929,110.0441,999.0156);
    SetPlayerInterior(pID,10);
    }
    return 1;
    }
    Sollte eigentlich Funktionieren :)

    VIeleicht liegt es am Komma?


    if(IsNoNitroCar(GetVehicleModel(GetPlayerVehicleID(playerid,)))if(IsNoNitroCar(GetVehicleModel(GetPlayerVehicleID(playerid,)))


    Zu:
    if(IsNoNitroCar(GetVehicleModel(GetPlayerVehicleID(playerid)))


    Wenns dann nicht funktioniert bitte einmal die Funktion "IsNoNitroCar" posten.


    /EDIT: Der böse Haxler war schneller :(


    Mit freundlichen Grüßen,
    Zunno

    SQL
    WHERE Name = '%s'


    Bei dieser Abfrage, nehmen wir Higgy als Nick vom Spieler, werden auch Spieler aus der Datenbank mit den Nick HiggY ausgewählt, da die Abfrage nicht case-sensitive ist.
    Man kann sich damit Statistiken von anderen Spielern holen.


    Dies sollte kein Problem sein da wenn der Account schon existiert du immernoch das Passwort brauchst um an die "Stats" zu kommen.
    Oder bei welcher funktion meinst du soll dies ein Problem darstellen?

    Du musst die ObjektIDs ändern da MTA die ObjektIDs der neuen Objekte nicht weiß sogesagt und deswegen musst du nach dem mappen die ObjektIDs mit den richtigen austauschen, irgendwo im englischen forum gibts dazu auch ein Filterscript was dies automatisch macht :)

    Habs raus, hab jetzt giveplayerid, welchen ich aus dem /ungrab Befehl genommen hab. Trotzdem Danke :)




    Mfg, René

    giveplayerid sollte eigentlich nicht funktionieren da du "suspect" als "giveplayerid" benutzt... 8|

    Richtig, da hat dich Maddin wahrscheinlich falsch verstanden.


    Hast du die Variable "sendername" auch richtig definiert ?
    new sendername[MAX_PLAYER_NAME];

    sendername = Der Name?
    maddin hatte da schon recht aber wenn er statt playerid, suspect eingesetzt hätte, wäre es richtig :rolleyes: ^^



    Mit freundlichen Grüßen,
    Zunno

    Nunja mir is gerade aufgefallen das du diese Varriabeln für die Textdraws benutzt:


    new Text:tachotextdraw[12];
    new Text:tachotextdrawname[MAX_PLAYERS];
    new Text:tachotextdrawspeed[MAX_PLAYERS];
    new Text:tachotextdrawzust[MAX_PLAYERS];
    new Text:tachotextdrawfuel[MAX_PLAYERS];
    new Text:tachotextdrawfuelart[MAX_PLAYERS];


    Nun ist mir nicht ganz klar wofür die 12 bei du bei Tachotextdraw steht...
    und vieleicht bringt es ja etwas wenn du aus
    new Text:tachotextdrawname[MAX_PLAYERS];
    dies hier machen würdest:
    new Text:tachoname[MAX_PLAYERS];


    Also halt "kürzer" ^^

    Beispiel meiner Uhr^^


    new Text:Uhr;
    forward Uhrzeit();


    //OnGameModeInit()
    Uhr = TextDrawCreate(547.000000,26.000000,"00:00");
    TextDrawAlignment(Uhr,0);
    //...... usw .......


    //Timer unter OnGameModeInit
    SetTimer("Uhrzeit",1000 * 60,1); // = 1 Minute


    //OnPlayerLogin (GF ^^)
    TextDrawShowForPlayer(playerid, Uhr);


    //Wo anders im Script
    public Uhrzeit()
    {
    new timestr[32];
    new hour, minute;
    gettime(hour, minute);
    format(timestr,32,"%02d:%02d",hour,minute);
    TextDrawSetString(Uhr,timestr);
    }

    Versuch es mal so:


    if(!strcmp(strget(cmdtext,0),"/makeleader"))
    {
    if(Spieler[playerid][Admin] >= 4 )
    {
    if(!strlen(strget(cmdtext,1))) return SendClientMessage(playerid,COLOR_GREY,"Benutze: /makeleader [Spielerid] [FraktionsID]");
    //new string[128];
    new id3 = strval(strget(cmdtext,1));
    new admin3[MAX_PLAYER_NAME];
    new gang = strval(strget(cmdtext,2));
    GetPlayerName(id3,admin3,sizeof(admin3));
    format(string, sizeof(string), "*** Du wurdest von Admin %s zum Leader der Fraktionsnummer %d gemacht.", admin3, gang);
    SendClientMessage(id3, COLOR_LIGHTRED, string);
    format(string, sizeof(string), "*** Du hast %s zum Leader der Fraktionsnummer %d gemacht.", id3, gang);
    SendClientMessage(playerid, COLOR_LIGHTRED, string);
    if(gang==0) { SetPlayerSkin(id3,0); Spieler[playerid][leader] = 0; Spieler[playerid][skin] = 0; }
    if(gang==1) { SetPlayerSkin(id3,116); Spieler[playerid][leader] = 1; Spieler[playerid][skin] = 116; }
    if(gang==2) { SetPlayerSkin(id3,288); Spieler[playerid][leader] = 2; Spieler[playerid][skin] = 288; }
    if(gang==3) { SetPlayerSkin(id3,126); Spieler[playerid][leader] = 3; Spieler[playerid][skin] = 126; }
    if(gang==4) { SetPlayerSkin(id3,70); Spieler[playerid][leader] = 4; Spieler[playerid][skin] = 70; }
    if(gang==5) { SetPlayerSkin(id3,255); Spieler[playerid][leader] = 5; Spieler[playerid][skin] = 255; }
    if(gang==6) { SetPlayerSkin(id3,217); Spieler[playerid][leader] = 6; Spieler[playerid][skin] = 217; }
    Spieler[id3][leader] = gang;
    Spieler[id3][team] = gang;
    }
    else
    {
    SendClientMessage(playerid, COLOR_LIGHTRED,"Du darfst diesen Befehl nicht benutzen !");
    }
    return 1;
    }


    //Speichern


    public OnPlayerDisconnect(playerid, reason)
    {
    new pname[MAX_PLAYERS],accFormat[128];
    GetPlayerName(playerid,pname,sizeof pname);
    format(accFormat,sizeof accFormat,"%s.datei",pname);
    //dini_IntSet(accFormat, "skin", GetPlayerSkin(playerid)); //Unnötig?^^
    if(fexist(accFormat) && Spieler[playerid][eingeloggt])
    {
    dini_IntSet(accFormat,"wanted",Spieler[playerid][wanted]);
    dini_IntSet(accFormat,"jail",Spieler[playerid][jail]);
    dini_IntSet(accFormat,"jailtime",Spieler[playerid][jailtime]);
    dini_IntSet(accFormat,"pduty",Spieler[playerid][pduty]);
    dini_IntSet(accFormat,"leader",Spieler[playerid][leader]);
    dini_IntSet(accFormat,"team",Spieler[playerid][team]);
    dini_IntSet(accFormat,"skin",Spieler[playerid][skin]);
    dini_IntSet(accFormat,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(accFormat,"Score",GetPlayerScore(playerid));
    dini_IntSet(accFormat,"Admin",Spieler[playerid][Admin]);
    }
    Spieler[playerid][eingeloggt] = 0;
    Spieler[playerid][wanted] = 0;
    Spieler[playerid][jail] = 0;
    Spieler[playerid][jailtime] = 0;
    Spieler[playerid][pduty] = 0;
    Spieler[playerid][leader] = 0;
    Spieler[playerid][team] = 0;
    Spieler[playerid][skin] = 0;
    Spieler[playerid][Admin] = 0;
    return 1;
    }

    So wie ich das sehe, speicherst du den Skin gar nicht.


    Er muss ja auch nicht bei jedem Befehl den Skin in die User Datei schreiben,
    sondern es reicht wenn der Account unter OnPlayerDisconnect gespeichert wird und vieleicht alle 10 minuten per Timer falls es mal zu einem Server absturz kommt oder so ;)

    Du musst nach einem TextDraw-Befehl immer wieder TextDrawShowForPlayer machen.
    Ich denke das sollte dein Problem beheben.


    Du meinst also nach z.B. TextDrawSetString muss man TextDrawShowForPlayer machen?
    Ich glaube da liegst du ein wenig falsch... ich benutze auch nur TextDrawSetString und danach nix mehr mit TextDrawShow oder so, und es funktioniert einwand frei ;)


    /EDIT:

    Zitat

    Zunno
    Was haben die anderen Server dagegen gemacht?
    ich weis es z.B. nicht.
    Habe jetzt nur 3D-texte dort.

    Nunja was man genau dagegen machen kann weiß ich nicht^^
    wenn du oben in der Stadthalle nix hast map diesen "Flur" dort einfach zu.
    Dann kann niemand mehr nach oben, die Pickups werden dann weiter angezeigt und alles is gut :thumbup:

    Es wäre vieleicht sinnvoll zu zeigen wie du den Skin speicherst, ob du fürs speichern GetPlayerSkin(playerid); benutzt oder eine Varriable hast (z.B. Spieler[playerid][skin])


    Desweiteren is mir aufgefallen das du bei deinem Befehl auch nen kleinen fehler hast.. so wie ich sehe ist id3 = Der Player der Leader sein soll.. deswegen muss
    Spieler[playerid][leader] doch = Spieler[id3][leader] sein oder nicht? :D



    Mit freundlichen Grüßen,
    Zunno

    Also bei den Textdraws kann ich dir jetzt gerade nicht weiterhelfen, aber bei der Stadthalle schon.


    Diese werden nicht gelöscht sondern durch ein Bug von GTA oder SA-MP einfach nur nichtmehr angezeigt, wenn du wieder raus und rein gehst sollten diese wieder da sein.
    Bei mir is nemlich der gleiche Bug^^

    Wie is den die Spalte in der du die Farbe speicherst eingestellt?
    varchar, int oder wie? bzw wie ladest du sie? oder gibst sie im printf aus?

    Bin mir jetzt nicht sicher aber bei mysql_query(); ist es doch so wie bei SendClientMessage oder?
    Also ich meine damit das man dort keine %d benutzen kann ?(


    Ich habe gelernt es so zu machen:
    new query[128];
    format(query, sizeof(query), "SELECT * FROM `sms` WHERE `An` = '%d' ORDER BY `id` DESC",Spielerdaten[playerid][Handy]);
    mysql_query(query);
    mysql_store_result();
    if(mysql_num_rows() > 0)
    {
    new string[256];
    while(mysql_fetch_row_format(Data, "|"))
    {
    sscanf(Data, "p<|>ddds[256]", id,Von,An,Text);
    format(string, sizeof(string), "%s\nVon:%d",string,Von);
    }
    mysql_free_result();
    SendClientMessage(playerid,COLOR_RED,string);
    ShowPlayerDialog(playerid,DIALOG_SMS1,0,"SMS Postfach",string,"Beenden"," ");
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du hast keine Nachrichten.");
    }

    Auf einem Server hat das ADAC die Möglichkeit, mit der Taste 'ALT' Gelblichter einzuschalten.
    Es sind 2 Gelblichter, die in diese 'Säule' auf dem Dach dranhängen.
    Diese werden ca. jede Sekunde zerstört und wieder erstellt - Es sieht so aus, als würden sie blinken.


    Sie werden nicht zerstört und wieder erstellt, es gibt die SA-MP 0.3c Objekte wo nur das Licht ist sogesagt und die Blinken alleine :D