Beiträge von DMA

    new jakob[256];
    memcpy(jakob,dini_Get("Tankstellen.ini", "Tankstelle0"), 0, 0, sizeof jakob);
    Die Memcpy variante, damit wird es direkt in den AMX Speicher geschrieben.

    Drück imfahrzeug mal "Key_fire" (evt. mehrfach) und schreib mal was in den chat resp. versuch einen servercmd auszuführen.
    Dann wirst du sehen was ich meine.
    Irgendwo in der GlobalTimer() hängt sich das Script auf.

    new pname[16], msg[256], File:ftw=fopen("adm.txt", io_read);
    GetPlayerName(playerid, pname, 16);
    while(fread(ftw, msg, sizeof msg))
    {
    if(!strcmp(strget(msg, 0, ':'), pname))
    {
    admin[playerid] = strval(strget(msg, 1, ':'));
    }
    }
    fclose(ftw);


    Beispieldatei:
    DMA:1:kommentar zum Eintrag
    Horst:3:Horst ist nun admin lvl 3!
    Aufbau:
    NAME:LVL:KOMMENTAR

    Ich hatte da mal was angefangen, nur ist irgendwo ein Array index out of bound.
    Müsstest du finden und fixen:
    #include <a_samp>
    forward GlobalTimer();
    new Float:hydranten[][4] = {
    /* X Y Z Durchfluss */
    { 2716.53, 862.06, 10.89, 140.0}
    };
    new Float:Feuer1_unten[][3] = {
    { 2695.6721,821.8301,10.9545 },
    { 2692.6096,821.8650,10.9545 },
    { 2689.1851,821.7084,10.9545 },
    { 2686.6284,823.8589,10.9545 },
    { 2687.2573,827.3737,10.9545 },
    { 2685.4519,835.7369,11.0283 },
    { 2682.0549,835.9455,8.8181 },
    { 2684.2095,835.6848,8.8181 },
    { 2633.3572,801.0260,5.3158 },
    { 2632.5486,798.3673,5.3158 },
    { 2637.2576,791.2891,5.3433 },
    { 2649.5320,806.3348,5.3158 }
    }, Float:Feuer1_oben[][3] = {
    { 2688.2632,821.3648,13.7127 },
    { 2692.8750,821.8119,13.7127 },
    { 2695.9998,821.7861,13.7127 },
    { 2698.5425,821.9093,13.7127 },
    { 2701.2441,820.6647,13.7127 },
    { 2701.3801,818.3001,13.7127 },
    { 2701.3647,815.0685,13.7127 }
    }, bool:geloescht_brand_1_unten[sizeof Feuer1_unten], bool:geloescht_brand_1_oben[sizeof Feuer1_oben], TankInCar[32],
    FWWid[8], bool:Fahrzeugloescht[8], feuergeloescht_1_unten[sizeof Feuer1_unten],
    feuergeloescht_1_oben[sizeof Feuer1_oben];
    stock Float:GetDistance2(Float:x1, Float:x2, Float:y1, Float:y2, Float:z1, Float:z2)
    {
    return floatsqroot(floatpower(floatabs(x1 - x2), 2) + floatpower(floatabs(y1 - y2), 2) + floatpower(floatabs(z1 - z2), 2));
    }
    main()
    {
    print("\n----------------------------------");
    print(" Feuerwehr");
    print("----------------------------------\n");
    }


    public OnGameModeInit()
    {
    // Don't use these lines if it's a filterscript
    SetGameModeText("Feuerwehr");
    SetTimer("GlobalTimer", 1000, 1);
    AddPlayerClass(278,1774.7996,2072.0164,10.8203,139.9539,0,0,0,0,0,0); // fd_spawn
    FWWid[0] = CreateVehicle(407,1751.3673,2077.7161,11.0571,180.5025,3,3, -1); // tlf_1
    TankInCar[FWWid[0]] = 1200;
    FWWid[1] = CreateVehicle(407,1757.7097,2077.8093,11.0548,181.5029,3,3, -1); // tlf_2
    TankInCar[FWWid[1]] = 1200;
    FWWid[2] = CreateVehicle(416,1763.5522,2075.7500,10.9703,180.9251,3,3, -1); // rtw
    FWWid[3] = CreateVehicle(544,1770.7786,2076.9077,10.9697,181.1622,3,3, -1); // dl_1
    FWWid[4] = CreateVehicle(596,1739.3901,2073.9590,10.5402,236.1482,3,3, -1); // kw_1
    return 1;
    }


    public OnGameModeExit()
    {
    return 1;
    }


    public GlobalTimer()
    {
    new Float:each[3], x[64];
    for(new i = 0; i < sizeof Feuer1_unten; i++)
    {
    if(geloescht_brand_1_unten[i] == false)
    {
    CreateExplosion(Feuer1_unten[i][0], Feuer1_unten[i][1], Feuer1_unten[i][2], 2, 2.0);
    }
    }
    for(new i = 0; i < sizeof Feuer1_oben; i++)
    {
    if(geloescht_brand_1_oben[i] == false)
    {
    CreateExplosion(Feuer1_oben[i][0], Feuer1_oben[i][1], Feuer1_oben[i][2], 2, 2.0);
    }
    }
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerInAnyVehicle(i) && GetVehicleModel(GetPlayerVehicleID(i)) == 407)
    {
    i = GetPlayerVehicleID(i);
    if(Fahrzeugloescht[i] == true)
    {
    format(x , sizeof x , "%d 2tank2", TankInCar[i]);
    SendClientMessageToAll(0xFF0000AA, x);
    if(TankInCar[i] > 80)
    {
    TankInCar[i] -= random(80);
    format(x , sizeof x , "%d tank", TankInCar[i]);
    SendClientMessageToAll(0xFF0000AA, x);
    GetVehiclePos(i, each[0], each[1], each[2]);
    for(new j = 0; j < sizeof Feuer1_oben; i++)
    {
    if(GetDistance2(each[0], Feuer1_oben[j][0], each[1], Feuer1_oben[j][1], each[0], Feuer1_oben[j][2]) < 50.0 &&
    geloescht_brand_1_oben[j] == false)
    {
    feuergeloescht_1_oben[j]++;
    if(feuergeloescht_1_oben[j] == 4)
    {
    format(x , sizeof x , "%d %d true", feuergeloescht_1_oben[j], j);
    SendClientMessageToAll(0xFF0000AA, x);
    geloescht_brand_1_oben[j] = true;
    }
    }
    }
    for(new j = 0; j < sizeof Feuer1_unten; j++)
    {
    if(GetDistance2(each[0], Feuer1_unten[j][0], each[1], Feuer1_unten[j][1], each[0], Feuer1_unten[j][2]) < 50.0 &&
    geloescht_brand_1_unten[j] == false)
    {
    feuergeloescht_1_unten[j]++;
    if(feuergeloescht_1_unten[j] == 4)
    {
    geloescht_brand_1_unten[j] = true;
    format(x , sizeof x , "%d %d true", feuergeloescht_1_unten[j], j);
    SendClientMessageToAll(0xFF0000AA, x);
    }
    }
    }
    }
    else
    {
    SendClientMessageToAll(0xFF0000AA, "Kein Wasser im Fahrzeug!");
    }
    }
    }
    }
    }


    public OnPlayerRequestClass(playerid, classid)
    {
    SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
    return 1;
    }


    public OnPlayerRequestSpawn(playerid)
    {
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    GivePlayerWeapon(playerid, 42, 4000);
    SetPlayerMapIcon(playerid, 12, hydranten[0][0], hydranten[0][1], hydranten[0][2], 22, 0);
    return 1;
    }


    public OnPlayerDeath(playerid, killerid, reason)
    {
    return 1;
    }


    public OnVehicleSpawn(vehicleid)
    {
    return 1;
    }


    public OnVehicleDeath(vehicleid, killerid)
    {
    return 1;
    }


    public OnPlayerText(playerid, text[])
    {
    return 1;
    }


    public OnPlayerPrivmsg(playerid, recieverid, text[])
    {
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(!strcmp(cmdtext, "/auftanken"))
    {
    }
    return 0;
    }


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    new VID = 0;
    if(IsPlayerInAnyVehicle(playerid))
    {
    VID = GetPlayerVehicleID(playerid);
    if(VID == FWWid[0] || VID == FWWid[1])
    {
    if(newkeys == KEY_FIRE)
    {
    Fahrzeugloescht[VID] = true;
    }
    else if(oldkeys == KEY_FIRE && newkeys != oldkeys)
    {
    Fahrzeugloescht[VID] = false;
    }
    }
    }
    return 1;
    }

    Viel kürzer und reißt nichts weil die pickups eh schon zrulaufzeit existieren:
    static pickupid_x;
    public OnGameModeInit()
    {
    pickupid_x = CreatePickup(...);
    }
    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(pickupid == pickupid_x)
    {
    ShowMenuForPlayer(...);
    DestroyPickup(pickupid_x);
    pickupid_x = -1; /* Sicherheit ansonsten könnte ein neues pickup die id einnehmen */
    }
    return 1;
    }
    public OnPlayerSelectedMenuRow(playerid, row)
    {
    pickupid_x = CreatePickup(...);
    }
    Einfach die parameter ersetzten und voila ;x.
    Ist eindeutig kürzer und nimmt sich nichts (pickups + vehicles haben nen extra thread :>)

    Hm jo leider fehlen dem SA:MP AMX JIT CC einige funktionen wie.
    getcell() aber hier meine Idee:
    static blub[3] = { 1, 2, 9 };
    forward getArray(const id);
    public getArray(const id)
    {
    if(id < sizeof blub)
    return blub[id];
    return -1;
    }
    Aufrufen dann so:
    static x = CallRemoteFunction("getArray", "i", 2);
    nun müßte x 9 sein.
    Afiak sollte CRF den wert wiedergeben.

    #include <a_samp>


    main()
    printf("Hier war der fehler");


    public OnGameModeInit()
    {
    SetGameModeText("Test Script");
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    return 1;
    }


    public OnGameModeExit()
    {
    return 1;
    }


    public OnPlayerRequestClass(playerid, classid)
    {
    SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
    return 1;
    }

    xxx.xxx.xxx.xxx
    1 2 3 4


    * <- Whitecard -> alles bannen
    bannt man 80.99.*.*
    Bannt man alle deren 1 2 gleich sind
    mit 80.99.12.*
    Alle die 1 2 und 3 als IP haben.
    Erklärung IP Raum:
    Die ersten beiden (1+2) werden an Provider übergeben , dennen gehört dann 0-255 bei 3 und 0-255 bei 4.
    (Ganz einfach ausgedrückt)
    Verstehst du? :>

    Wenn dein Informatik lehrer gut ist, sagt er das was ich gesagt habe, ansonsten soltle er an seiner Kompetenz als Informatiklehrer zweifeln.
    Zeiger bieten nur Laufzeittechnische Vorteile , aber mit der Geschwindigkeit hat das reihn garnichts zutun.
    Sonst würde ja jeder nurnoch zeiger verwenden ;).