Bei Feuerwehrsystem geht Feuer net weg

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo,
    ich hab grad ein Feuerwehrsystem gemacht, aber wenn ich mit dem Feuerlöscher drauf sprüh geht es net aus. Ich hab es Scriptlich festgelegt, damit es aus geht, aber es geht trzdm net

    enum fires
    {
    ID,
    Float:zX,
    Float:zY,
    Float:zZ
    }
    #define MAX_FIRES 100
    new bfire;
    new fire[MAX_FIRES][fires] = {
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0}
    };


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp(cmdtext, "/feuerzünden", true) == 0)
    {
    if(bfire < MAX_FIRES)
    {
    new Float:p[3];
    GetPlayerPos(playerid, p[0], p[1], p[2]);
    bfire += 1;
    fire[bfire][ID] = CreateObject(18692, p[0], p[1], p[2]-2, 0.0, 0.0, 0.0);
    fire[bfire][zX] = p[0];
    fire[bfire][zY] = p[1];
    fire[bfire][zZ] = p[2];
    }
    return 1;
    }
    return 1;
    }
    public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid)
    {
    if(weaponid == 42)
    {
    for(new i=0; i<MAX_FIRES;i++)
    {
    if(GetPlayerDistanceFromPoint(playerid, fire[i][zX], fire[i][zY], fire[i][zZ]) < 10)
    {
    new Float:z[2];
    GetXYInFrontOfPlayer(playerid, z[0], z[1], GetPlayerDistanceFromPoint(playerid, fire[i][zX], fire[i][zX], fire[i][zZ]));
    if(z[0] == fire[i][zX] && z[1] == fire[i][zY])
    {
    DestroyObject(fire[i][ID]);
    SendClientMessage(playerid, COLOR_GREEN, "Feuer gelöscht!");
    }
    }
    }
    }
    return 1;
    }


    stock GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance)
    {
    new Float:a;
    GetPlayerPos(playerid, x, y, a),GetPlayerFacingAngle(playerid, a);
    if(GetPlayerVehicleID(playerid)) GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
    x += (distance * floatsin(-a, degrees));
    y += (distance * floatcos(-a, degrees));
    }

    Was ist da falsch?
    PS GetXYInFrontOfPlayer ist von Kalieber

  • GetXYInFrontOfPlayer(playerid, z[0], z[1], GetPlayerDistanceFromPoint(playerid, fire[i][zX], fire[i][zX], fire[i][zZ]));


    Ich denke so wird das nichts nützen, du musst das denke mal in eine Abfrage packen!


    mfg :thumbup:


    und was soll der in der Abfrage suchen?
    bei dem Stock wird nicht return´t.


    ausserdem aus

    PHP
    new fire[MAX_FIRES][fires] = {
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0},
    {"", 0.0, 0.0, 0.0}};


    zu dem

    PHP
    new fire[MAX_FIRES][fires];

    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.


  • Ich habe mir die Funktion nicht Ordentlich Angeschaut, was genau Funktioniert denn nicht?
    Tom, lasse es doch mal durchprinten :)


    mfg :thumbup:

  • zeige mal dein "OnPlayerWeaponShot" public


    public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid)
    {
    if(weaponid == 42)
    {
    for(new i=0; i<MAX_FIRES;i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 4, fire[i][zX], fire[i][zY], fire[i][zZ]))
    {
    new Float:z[2];
    GetXYInFrontOfPlayer(playerid, z[0], z[1], GetPlayerDistanceFromPoint(playerid, fire[i][zX], fire[i][zX], fire[i][zZ]));
    if(z[0] == fire[i][zX] && z[1] == fire[i][zY])
    {
    DestroyObject(fire[i][ID]);
    SendClientMessage(playerid, COLOR_GREEN, "Feuer gelöscht!");
    }
    }
    }
    }
    return 1;
    }

  • schmeiß ma zum Testen

    PHP
    GetXYInFrontOfPlayer(playerid, z[0], z[1], GetPlayerDistanceFromPoint(playerid, fire[i][zX], fire[i][zX], fire[i][zZ]));
    	    		if(z[0] == fire[i][zX] && z[1] == fire[i][zY])

    raus "{" nicht vergessen


    wenn dies klappt debug mal z[0], z[1], fire[i][zX] und zY

    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • @[GSR]Kaito-sensei
    geht trzdm nicht
    debugg:
    public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid)
    {
    SendClientMessage(playerid, COLOR_RED, "1");
    if(weaponid == 42)
    {
    SendClientMessage(playerid, COLOR_RED, "1");
    for(new i=0; i<MAX_FIRES;i++)
    {
    SendClientMessage(playerid, COLOR_RED, "1");
    if(IsPlayerInRangeOfPoint(playerid, 4, fire[i][zX], fire[i][zY], fire[i][zZ]))
    {
    SendClientMessage(playerid, COLOR_RED, "1");
    /* new Float:z[2];
    GetXYInFrontOfPlayer(playerid, z[0], z[1], GetPlayerDistanceFromPoint(playerid, fire[i][zX], fire[i][zX], fire[i][zZ]));
    SendClientMessage(playerid, COLOR_RED, "1");
    if(z[0] == fire[i][zX] && z[1] == fire[i][zY])
    {*/
    SendClientMessage(playerid, COLOR_RED, "1");
    DestroyObject(fire[i][ID]);
    SendClientMessage(playerid, COLOR_GREEN, "Feuer gelöscht!");
    // }
    }
    }
    }
    return 1;
    }
    es kommt nichtmal eine "1" kommt

    Einmal editiert, zuletzt von Tom Sunder ()

  • new fire[MAX_FIRES][fires] = {
    {"", 0.0, 0.0, 0.0},


    Also 2 Dinge zu dieser Initialisation:


    1. Du hast da "" geschrieben, okay sehr clever, das funktioniert nur, weil das NULL Byte dafür genommen wird und das dezimal der 0 entspricht :D Aber, es wäre deutlich übersichtlicher einfach 0 zu schreiben.


    2. Du brauchst in Pawn deine Variable nicht mit 0 initialisieren, sowie in C oder so...das wird hier schon alles automatisch gemacht ;)


    //Edit: Ja waffenid 42...da wird der Callback gar nicht aufgerufen :D


    Musst alternativ OnPlayerUpdate oder einen Timer verwenden ;)

    Spoiler anzeigen

    So und als Nächstes, schreibe mal deinen Callback so:
    public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid)
    {
    if(weaponid != 42) return 1;
    for(new i,Float:x; i<MAX_FIRES;i++) {
    x = GetPlayerDistanceFromPoint(playerid, fire[i][zX], fire[i][zY], fire[i][zZ]);
    if(x < 10) {
    new Float:z[2];
    GetXYInFrontOfPlayer(playerid, z[0], z[1], x);
    if(k_Range(z[0],fire[i][zX]) && k_Range(z[1],fire[i][zY])) {
    DestroyObject(fire[i][ID]);
    SendClientMessage(playerid, COLOR_GREEN, "Feuer gelöscht!");
    }
    break;
    }
    }
    return 1;
    }
    stock k_Range(Float:x,Float:y) return ((x-y) < 2.5 && (x-y) > -2.5) ? 1 : 0;


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S


  • wenn cih das einfüg kommt, dass es schon defined ist, ist es aber nicht