Beiträge von IPrototypeI

    Denk einfach mal nach wann OnVehicleSpawn aufgerufen wird .


    Dann wirst du selbst sehen das deine Panzer niemals beim spawnen , geschweige beim starten des gamemodes
    zu beginn 15k hp haben


    und ich hoffe mal du weisst was UpdateVehicleDamageStatus überhaupt macht . Das hat nix mit dem leben des fahrzeuges zu tun.

    Die originalen Tags einfach so lassen? Würde dann nicht das gleiche passieren, wenn beim Übersprühen ein Graffiti Objekt erschaffen wird?
    EDIT: Ich habe einen Verdacht, dass es auch was mit RemoveBuildingForPlayer zu tun haben könnte...



    Im 0.3d update kamen neue objekte dafür da die alten gebugt haben also dazu führten das der client crasht


    http://wiki.sa-mp.com/wiki/Sam….3c_RC4_.28109_Objects.29


    siehe spraytags

    ja kanns oben wo ich new gemacht habe
    und wenn die 30 mins um sind


    Also ich kann mir , das nicht vorstellen da ich hier kein fehler sehe warum sicher der wert der variabel wieder zurück ändert zu dem hast du noch vergessen
    nach dem ablauf des timers die variabel wieder auf 0 zu setzen. Als auch die bezeichnung des Timers ist falsch und um den parameter playerid zu nutzen musst SetTimerEx verwenden.


    zu dem ordne mein deine abfrage sinn gemäß


    if(newkeys == KEY_FIRE){
    if(IsPlayerInRangeOfPoint(playerid,1.0,1705.6857,-1898.7067,13.5688)){
    if(fahrradausleih)return SendClientMessage(playerid,error,"Du hast schon ein Fahrrad!");
    ShowPlayerDialog(playerid,DIALOG_FAHRRAD,DIALOG_STYLE_MSGBOX,"Fahrrad","Willst du ein Fahrrad ?","Ja","Nein");
    }
    }


    du testes nix ahja xD
    naja du willst das ganze doch bestimmt ihrgend was erstellen. Bestimmt mit den ganzen einträgen pro block dafür benutzt du
    for(new i, j= sizeof(GGMap[]); i < j; i++)


    GGMap[] gibt die anzahl an einträge der zweiten dimension zurück und GGMap die der ersten.
    Wie schon oben genannt ist es nicht möglich unterschiedlich viele einträge in der 2d zu verwenden.


    die einfachste verwendung
    printf("%f",GGMap[0][0][0]);
    so verstanden "nix gehen mit unterschiedliche einträge in zweite dimension"
    in der dritten gehts wieder aber nicht in der zweiten.

    Wenn du für den Spieler die variabel setzen möchtest benötigst du ein array.


    new bool:fahrradausleih [MAX_PLAYERS char];


    if(fahrradausleih{playerid})


    das gilt auch für die fahrzeuge


    dennoch ist es komisch das du immer wieder ein fahrrad bekommst da du die variabel auf 1 setzt;
    setzt du diese variabel ihrgend wo im skript wieder auf 0 , wenn ja wo

    GW zum kompilen dann musst es ja nur noch benutzen :D
    dann kommen wir wieder auf meinen oberen post zu sprechen .


    //edit ahja um die größe für die zweite dimension zu bekommen in einen loop


    benutzt man sizeof(GGMap[])


    oder einfach den wert der anzahl der einträge der zweiten dimension eintragen für die größe
    :D

    Würd ich ja so machen
    stock SetPlayerFacingAngleToPoint(playerid,Float:X, Float:Y){
    new Float: Pos[2];
    GetPlayerPos(playerid, Pos[0], Pos[1], 0);
    return SetPlayerFacingAngle(playerid,180.0-atan2(Pos[0]-X,Pos[1]-Y));
    :thumbup:


    trotzdem ist das return nicht nötig und die paar bytes auf die kam es mir jetzt auch nicht an :D
    man hätte sogar noch draus ein makro machen können.
    Aber wir wissen ja alle das du ein kleiner Perfektionist bist und was auch hier in dem bereich gepostet wurde soll auch eine gewisse qualität aufzeigen ^^.


    Frohe Weihnachten dir.


    Aber um noch was zu ergänzen sollte man variabeln verwenden die nur einen wert haben sollen 0 oder 1 (false oder true)so sollte man y_bit benutzen.

    stock SetPlayerFacingAngleToPoint(playerid,Float:X, Float:Y){
    new Float: Pos[3];
    GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
    new Float:Angle = 180.0-atan2(Pos[0]-X,Pos[1]-Y);
    SetPlayerFacingAngle(playerid,Angle);
    }


    Eine neue Funktion nach langem Testen geht sie nun :D.
    Damit ist es möglich die person auf einen punkt zu fixxieren oder besser gesagt zu drehen.


    Weiters klein Wissen.


    #pragma ctrlchar


    Damit kann man das Zeichen definieren mit dem man in Strings die doppelten Anführungszeichen verwenden kann. (Standart ist \)
    printf("\"Hallo\"");



    #pragma ctrlchar '^'
    printf("^"Hallo^"");


    Um alle Werte eines true/false Arrays zu setzen auf einen wert wird dies so gemacht
    {true, ...}
    new bool:array[5] = {true, ...};


    Nun um bei arrays noch bytes zu sparen gibt man dem compiler die benachrichtung das es sich um ein bestimmten Datentyp handelt.
    In dem fall char.
    Damit ist es möglich Zahlen von 0 - 255 zu speichern.
    new array[MAX_PLAYERS char];
    array{playerid} = 2;
    if(array{playerid} == 2)return SendClientMessage(playerid,-1,"Hallo");


    aber zurück zu den strings.


    wenn du schon ein dreidimensionales array benutzt dann mach es doch wenigstens richtig



    new Float:GGMap[2][6][4] = {
    {
    {-1285.7355,2499.9009,87.0075,59.0473},
    {-1321.6528,2504.4688,89.5703,191.2752},
    {-1336.7495,2531.4897,87.0899,244.8323},
    {-1311.9321,2546.4199,87.7422,186.8652},
    {-1293.1025,2547.6797,86.9489,175.2717},
    {-1303.1263,2526.1602,87.5380,180.2851}
    },
    {
    {-467.6490,-470.9081,25.5234,135.5014}, //SPAWNID (bs: 1)
    {-484.4607,-559.2358,25.5234,54.9974}, //SPAWNID (bs: 2)
    {-601.8755,-559.7782,25.5234,270.5494}, //SPAWNID (bs: 3)
    {-616.9458,-496.6703,25.5234,276.8395}, //SPAWNID (bs: 4)
    {-541.5930,-504.8772,25.5234,356.8853},
    {-1303.1263,2526.1602,87.5380,180.2851} //SPAWNID (bs: 5)
    }
    };


    jedoch brauchst du constante werte da es sonst mit der for schleife nicht klappt als auch mit dem starten des gamemodes
    *hust* Runtime error 22 *hust*

    so viel wie ich weisss gibt es doch bei samsung kies
    entweder ein automatisches update oder auch manuel.
    Jedoch isr es auch moeglich das per wlan zu machen ota update.
    naja ein bissle suchen mein stiefvater hat von mir das handy zum geburtstag bekommen und es ist ziemlich schwer da durch zu blicken zu dem gibts ja noch eine anleitung ueber das handy bei den widgets oder so aenlich hiesss dies

    1. Ist es egal wo du SetSpawnInfo benutzt jedoch solltest du es benutzen oder AddPlayerClass.
    Da es sonst zu komplikationen kommt,wenn man den Spieler spawnt (sampserver crasht, flakern von gta, stay... by use text und ein erhellen des bildschirmes)


    2.Man sollte beachten das man nach dem verwenden von SetSpawnInfo direkt gespawnt wird da OnPlayerSpawn aufgerufen wird.


    3.SpawnPlayer kannst du so oft benutzen wie du willst nur ist zu beachten das davoreine Spawninformation festgelegt wurde.


    4. Gleich nach OnPlayerConnect wird OnPlayerRequestClass aufgerufen .


    mit den informationen weisst du nun was du falsch gemacht hast


    so um das ganze noch anders formatieren als beispiel %02.2f


    ich hab das prozent zeichen falsch gesetzt mein fehler bis 5 sollte man nicht wach sein..


    %0.2f oder %.2f ist das selbe mann kan das ganze auch formatieren %02.2f das würde das ganze so formatieren 00.25 bei 0.25
    das sind formatierte operator

    du gibst dies auch mit %d aus %d und %i stehen für integer %f steht für float


    %0.2f


    gibt zwei dezimalen an nach dem komma ich geh mal davon aus das du dies willst

    An deinem Codeausschnitt kann man den fehler nichts erkennen. Es wäre hier noch zu erkennen, wenn du CreateVehicle oder AddStaticVehicleEx benutzt hättest um die Fahrzeuge zu erstellen, da man hier eine respawndelay setzen kann.


    Kann es sein das zu ihrgend wo eine for-schleife verwendest und die fahrzeuge mit SetVehicleToRespawn respawnst.( Ich geh jetzt mal von einem Timer aus).
    Da wie schon oben genannt kann man hier nichts genauers dazu sagen an was es liegen könnte.

    Es kann an mehreren dingen liegen.


    Richtige sscanf version und richtige include zu der version.


    besitzt du Framework 3.5 / 4
    und besitzt du Microsoft Visual C++ 2010 Redistributable Package (x86)


    mehr gibt es glaub ich auch nicht dazu zu sagen

    gibts noch andere meinungen? hab das glaub schonmal gesehen


    Ja man kan dies machen.




    Hier zum testen.


    enum test {
    var[3],
    string[20],
    Float:ab[2],
    }
    new PlayerInfo[3][test];


    format(PlayerInfo[2][string],20,"array");
    format(PlayerInfo[1][string],20,"sdadas");
    PlayerInfo[2][var][0] = 1;
    PlayerInfo[2][var][1] = 2;
    PlayerInfo[2][var][2] = 3;
    PlayerInfo[1][ab][0] = 2.1213;
    printf(" %d %d %d %s %f",PlayerInfo[2][var][0],PlayerInfo[2][var][1],PlayerInfo[2][var][2],PlayerInfo[2][string],PlayerInfo[2][ab][1]);
    printf(" %d %d %d %s %f",PlayerInfo[1][var][0],PlayerInfo[1][var][1],PlayerInfo[1][var][1],PlayerInfo[1][string],PlayerInfo[1][ab][0]);