Beiträge von IPrototypeI


    ja das ist egal in pawn ist das hochzählen auch so rum egal ++i (Inkrement Operator).
    obwohl sowas in programmiersprachen wie c++ schneller ist.
    Da dabei die Postfix-Version (i++) eine Kopie von sich anlegt, erst dann kann sie sich Inkrementieren. Das muss die Präfix-Version(++i) nicht und ist daher schneller.

    Du solltest dem spieler eine variabel setzen, welche du auch speicherst im Account des Spielers Beispiel: sollte er das tutorial gemacht haben setzt du den wert zum auf 1
    Dann kanst du das ganze auch demnach abfragen.
    Wenn du dann den Account des Spielers lädst hast du den wert in der jeweiligen variabel welche du gespeichert hast.


    Zu dem Thema kannst du PVars benutzen oder falls du ein enum hast diese variabel hinzufügen

    Ich hab den Stock auf deinen geändert und deine Kordinaten verwendet hab jedoch immer noch das Problem kann es vlt daran liegen weil der bsn gemappt ist?
    ~TheSnipesZone =]


    hm das ist sehr komisch ich habs nochmal geschrieben


    SetTimer("IsPlayerInNoDMZone",1000,true);



    [pwn] Textdraw0 = TextDrawCreate(497.000000, 112.000000, "NO DM ZONE");
    TextDrawLetterSize(Textdraw0, 0.449999, 1.600000);
    TextDrawTextSize(Textdraw0, 606.500000, -3.062500);
    TextDrawAlignment(Textdraw0, 1);
    TextDrawColor(Textdraw0, -16776961);
    TextDrawUseBox(Textdraw0, true);
    TextDrawBoxColor(Textdraw0, 255);
    TextDrawBackgroundColor(Textdraw0, 51);
    TextDrawFont(Textdraw0, 1);
    TextDrawSetProportional(Textdraw0, 1);



    forward IsPlayerInNoDMZone();
    public IsPlayerInNoDMZone()
    {
    for(new i=0; i < MAX_PLAYERS; i++){
    if(IsPlayerInArea(i,1225.4095,1166.0907,-865.9355,-960.7029))TextDrawShowForPlayer(i,Textdraw0);
    else TextDrawHideForPlayer(i,Textdraw0);
    }
    return 1;
    }


    und es geht ohne probleme und ob man den typ dazu anhängt als Tex: ist egal

    Mit der Anmerkung, dass mehr Leben dazu führt dass die Lebensleiste einfach immer voll ist bis man genug Leben verloren hat
    um wieder unter 100 zu sein (oder?) :)


    Ja genau IV wie ich schon oben angemerkt habe es geht nicht mehr als 255 ich habs nochmal ausgetestet , wenn du das leben auf 9999 setzen verändert sich zwar die hp anzeige du hast dennoch nur 15 hp

    dein problem ist ganz einfach das du falsche koordinaten verwendest beziehungsweise sie falsch eingfügt hast


    stock IsPlayerInArea(playerid, Float:MaxX, Float:MinX, Float:MaxY, Float:MinY)
    {
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
    if(X >= MinX && X <= MaxX && Y >= MinY && Y <= MaxY)return 1;
    return 0;
    }
    if (IsPlayerInArea(i,1225.4095,1166.0907,-865.9355,-960.7029))


    hier bin kurz ingame gegangen und hab dies neu erstellt



    deine koords richtig gestellt


    if (IsPlayerInArea(i,1230,1165,-866,-963))

    wie meinst du dies an manchen stellen wenn du die größe damit meinst solltest du diese anpassen.


    Jeodch gebe ich dir ein Tipp benutz das streamer plugin um solche zonen zu erstellen dazu gibt es eine nette funktionen und zwei callbacks


    CreateDynamicRectangle(Float:minx, Float:miny, Float:maxx, Float:maxy, worldid = -1, interiorid = -1, playerid = -1);


    forward OnPlayerEnterDynamicArea(playerid, areaid);
    forward OnPlayerLeaveDynamicArea(playerid, areaid);


    ich vermerke es nochmal damit erstellst du keine Gangzonen die sichtbar sind sondern nur gebiete


    Dein Design ist sehr ansprechend mir gefällt es recht gut. Rot harmoniert auch immer gut mit hellen Farben , jedoch wäre es nicht schlecht, wenn du die jeweiligen container hervor gehoben hättest nicht nur mit einem hover effekt, dies ist jedoch meine persönliche meinung dazu. Zum Thema coding ist es in meinen Augen anspruchsvoll gecodet mit eigenen Templates und es sind auch paar gute Ideen vorhanden wie mit dem mainmenu. Gut gemacht.

    Vielen vielen Dank!
    Ich werde es direkt mal einspielen. :)


    Könnte durch diesen Fehler die ganzen Server Ausfälle passiert sein?


    Also ausfälle ja das ist mir selbst auch schonmal unter gekommen daher kenne ich das problem gut genug .
    Das ist auch nix anderes als bei diesem Problem von Logan hab ihn auch dort geholfen
    Array index out of bounds - Accessing element at negative index -1
    Man sollte halt aufpassen wenn es anzeichen gibt das man mit negativen Zahlen mit arrays arbeitet besser gesagt als index benutzt.


    Deine anzeichen sagen das selbe aus das der Server dadurch crasht, da keine Befehle gehen etc... .
    Wie schon gesagt kannst du das jetzt noch ein bissle länger im Auge behalten.


    das hättest du auch eleganter lösen können


    new Zeichen[26][] = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
    stock CreateRandoomNumplate(vehicle)
    {
    new numtext[20],Float:Pos[3];
    GetVehiclePos(vehicle, Pos[0], Pos[1],Pos[2]);
    format(numtext,20,"%s-%s%s %d",((Pos[0] > -992.5172 && Pos[0] < 4000.0000) && (Pos[1] < 528.0000 && Pos[1] > -4000.0000)?("LS"):((Pos[0] > -4000.0000 && Pos[0]< -992.5172) && (Pos[1] < 4000.0000 && Pos[1] > -4000.0000)?("SF"):((Pos[0] > -992.5172 && Pos[0]< 4000.0000) && (Pos[1] < 4000.0000 && Pos[1] > 528.0000)?("LV"):("CS")))),Zeichen[random(25)],Zeichen[random(25)],random(999));
    SetVehicleNumberPlate(vehicle,numtext);
    return numtext;
    }


    zu dem ist die verwendung von switch langsamer als else if :D jedoch ist der Ternäre Operator schneller als else if da nix initaliziert werden muss zu dem
    benutz arrays diese kosten weniger memory und verkleinere auch die strings verringert auch den memory verbrauch und warum alles einzelt wenn es auch so geht
    nur 1 mal formatieren format ist langsam daher versucht man dies so wenig wie möglich zu verwenden.


    //edit neu zitiert zu dem kannst du bestimmt noch einiges lernen wenn du mal mein tutorial durchlesen würdest :D

    hier bitte


    public OnPlayerUpdateTacho()
    {
    new
    radios[64],
    string[200],
    Float:CarHealth,
    Float:speed,
    Float:memory[3],
    kraftstoff,
    model,
    CarHealthIni,
    SpeedT,
    SpeedF,
    vehicleid;
    for(new i = 0 ; i < g_iMaxPlayers ; i++)
    {
    if(IsPlayerConnected(i))
    {
    vehicleid = GetPlayerVehicleID(i);
    if(vehicleid && IsPlayerInVehicle(i,vehicleid) ) {
    speed = GetVehicleSpeed_P(i);
    GetVehicleHealth(vehicleid, CarHealth);
    model = GetVehicleModel( vehicleid );
    if(model >= 400){
    CarHealth = CarHealth -250;
    CarHealth = CarHealth/10;
    CarHealth = CarHealth/75;
    CarHealth = CarHealth * 100;
    CarHealthIni = floatround(CarHealth, floatround_floor);
    if(CarHealthIni < 0){CarHealthIni = 0;}
    GetVehicleVelocity(vehicleid, memory[0], memory[1], memory[2]);
    SpeedT = floatround(speed)/2;
    SpeedF = (SpeedT*1000)/700;
    if(RadioSender[vehicleid] == 0){radios ="Kein Radio";}
    else if(RadioSender[vehicleid] == 1){radios ="1-Live";}
    else if(RadioSender[vehicleid] == 2){radios ="Technobase.FM";}
    else if(RadioSender[vehicleid] == 3){radios ="Hardbase.FM";}
    else if(RadioSender[vehicleid] == 4){radios ="I Love Radio";}
    else if(RadioSender[vehicleid] == 5){radios ="Breakz.us";}
    if(!IsAFahrrad(model))
    {
    kraftstoff = GetVehicleModelKraftstoff( model );
    format(string, sizeof(string), "~b~%s~n~~n~~b~KM/H: ~w~%i~n~~b~Kraftstoff: ~w~%s~n~~b~Benzin: ~w~%d/%d L~n~~b~Zustand: ~w~%i~n~~b~Radio: ~w~%s", CarName[model-400], floatround(SpeedF), g_asKraftstoff[kraftstoff] , gGas[vehicleid], GetMaxTank(vehicleid), CarHealthIni, radios);
    PlayerTextDrawSetString(i, TachoMessage[2][i], string);


    }
    else
    {
    format(string, sizeof(string), "~b~%s~n~~n~~b~KM/H: ~w~%i~n~~b~Benzin: ~w~-/- L~n~~b~Zustand: ~w~%i~n~~b~Radio: ~w~%s", CarName[model-400], floatround(SpeedF),CarHealthIni, radios);
    PlayerTextDrawSetString(i, TachoMessage[2][i], string);
    }
    if( SpeedF >= 210 ) {
    new
    t = gettime();
    if( t >= Spieler[i][punixSpeedhack] ) {
    format(string,sizeof(string),"[ACHTUNG] Spieler %s Speed-Warnung %dKm/h",GetName(i),SpeedF);
    SendAdminMessage(COLOR_LIGHTRED2,string);
    Spieler[i][punixSpeedhack] = t + 5; // Alle 5 Sekunden MAXIMAL die Nachricht senden
    }
    }
    }
    }
    }
    }
    return 1;
    }

    Ah ok..
    Was muss ich nun tun?
    Soll ich jetzt statt "CarName[model-400]" es in "CarName[model 0]" ändern, oder wie meinst du das?? 8|


    du kannst noch eine abfrage rein machen wenn model gleich null ist wird ganz einfach ein wert returnt
    jedoch würde ich an deiner stelle auf eine nummer sicher gehen und abfragen ob di emodelid nicht kleiner ist als 400 jedoch nicht gleich verwenden
    400-400 = 0 das bedeutet der erste name deiner array

    Was gibt es den daran nicht zu Checken wenn der spieler sich eingeloggt hat einfach SpawnPlayer(playerid); schreiben is das denn so schwer und bei Youtube gibt es auch Videos darüber :cursing:


    Nein das darf man nicht machen sonst crasht der spieler , wenn davor nicht ihrgend eine Spawninformation gesetzt wurde