Beiträge von ScyFox

    Habe mal folgendes problem und zwart geht es um die meldung welche ich gleich kommentiere



    public Speedometer(playerid)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new vehicleid,Float:speed_x,Float:speed_y,Float:speed_z,Float:final_speed,speed_string[256],final_speed_int, Float:chealth;
    vehicleid = GetPlayerVehicleID(playerid);
    GetVehicleVelocity(vehicleid,speed_x,speed_y,speed_z);
    final_speed = floatsqroot(((speed_x*speed_x)+(speed_y*speed_y))+(speed_z*speed_z))*144; // 136.666667 = kmph // 85.4166672= mph
    final_speed_int = floatround(final_speed,floatround_round);
    GetVehicleHealth(vehicleid, chealth);
    new LocationZone[MAX_ZONE_NAME];
    GetPlayer2DZone(playerid, LocationZone, MAX_ZONE_NAME);
    format(speed_string,200,"~B~Fahrzeug: ~W~%s~n~~B~Km/h: ~W~%d km/h~n~~B~Zustand: ~W~%d%%~n~~B~Benzin: ~W~%d%%~n~~B~GPS: ~W~%s",VehicleName[GetVehicleModel(vehicleid)-400], final_speed_int, floatround(chealth, floatround_round)/10, Gas[vehicleid], LocationZone);
    TextDrawSetString(Speedo[playerid], speed_string);
    //format(string, 256, "~n~~n~~n~~n~~n~~n~~g~Auto Schaden : ~w~%.0f",health);//
    new VID, Float:h_vid;
    if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid))
    {
    VID = GetPlayerVehicleID(playerid);
    GetVehicleHealth(VID, h_vid);
    if(h_vid <= 500)
    {
    TogglePlayerControllable(playerid, 0);
    SendClientMessage(playerid, 0xFF6900AA, "Dieses Fahrzeug hat nun einen Motorschaden. Rufe die Feuerwehr"); // <--- DIese meldung soll nur einmalkommen..
    //PlayerMessageMotorschaden[playerid] = true;
    SetVehicleHealth(vehicleid, 210.0);
    SetPlayerHealth(playerid,100);
    return 0;
    }
    }
    }
    return 1;
    }


    Der speedometer wird mit einem timer abgefragt dieser soll aber nicht gestoppt werden.. nur die meldung soll 1x kommen sie spammt den ganzen bildschirm zu..
    Nur wie ?

    Wie lös ich das 2. Problem ?


    //edit
    kann mal eine nen vorschlag machen wenn ich jetzt zum beispiel nen 2. bot habe zb Buslinie{72] & Buslinie{73]


    dann soll da an stelle des x die nummer kommen wenn einer der beiden busse den punkt erreicht da jeder buss unterschiedliche routen fährt


    nur kp wie das gehen soll?


    und die erste idee scheint schwierig zu dein oder ?

    Hier mal für ein GF system wenn nicht dementsprechend umschreiben..



    if (strcmp(cmd, "/admins", true) == 0 || strcmp(cmd, "/supporter", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    SendClientMessage(playerid, COLOR_GRAD1, " ");
    SendClientMessage(playerid, COLOR_GRAD1, " Admins und Supporter:");
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(PlayerInfo[i][pAdmin] >= 1)
    {
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string,sizeof(string)," %d* Admin: %s[%d] Nummer: %d",PlayerInfo[i][pAdmin],sendername,i,PlayerInfo[i][pPnumber]);
    SendClientMessage(playerid, COLOR_GRAD2, string);
    }
    if(PlayerInfo[i][pSupporter] >= 1)
    {
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string,sizeof(string)," %d* Supporter: %s[%d] Nummer: %d",PlayerInfo[i][pSupporter],sendername,i,PlayerInfo[i][pPnumber]);
    SendClientMessage(playerid, COLOR_GRAD2, string);
    }
    }
    }
    }
    return 1;
    }

    Uff lool danke ja manchmal bin ich halz blind und überseh so einiges ..


    so nun noch meine frage wie kann ich das machen das oben bei den groves id nummer 13 nix passiert weil sie ja in ihrer zone sind


    und das gleiche bei den yakuzas


    und in der mitte das nur die cops in dieser zone schiesen können alle anderen nicht allso denen sollen dan die waffen weggenommen werden :??


    Ist das mit return und so richtig?

    Nein nicht so es soll ja nix passieren wen cops Leader 1 in der nodmzone sind


    und das selber bei den grooves und yakuzas


    Grove = 13 Yaks = 6


    Hier nochmal der cood mit errorzeile



    public Checkzone()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerInArea(i,2330.292, -1745.026, 2604.096, -1571.325))
    {
    if(PlayerInfo[i][pLeader] == 13 || PlayerInfo[i][pMember] == 13) { return 0; }
    new Float:hp;
    GetPlayerHealth(i, hp);
    SetPlayerHealth(i, hp-1);
    TextDrawShowForPlayer(i,groovezone);
    }
    else
    {
    TextDrawHideForPlayer(i,groovezone);
    }
    if(IsPlayerInArea(i, 972.6795, -1421.311, 976.4823, -1393.677))
    {
    if(IsPlayerNPC(i))
    {
    SendClientMessageToAll(COLOR_ORANGE, "Der Bus erreicht in wenigen Minuten den Zivilspan");
    }
    }
    else
    {
    ///
    }
    if(IsPlayerInArea(i,1995.642, -1460.788, 2098.319, -1354.199))
    {
    if(PlayerInfo[i][pLeader] == 1 || PlayerInfo[i][pMember] == 1) { }
    {
    new Float:hpheal;
    GetPlayerHealth(i, hpheal);
    SetPlayerHealth(i, hpheal+5);
    TextDrawShowForPlayer(i,khzone);
    } /// <<< 41859 -- Errorbereich
    else /// <<< 41860 -- Errorbereich
    { // -- 41861 -- Errorbereich
    TextDrawHideForPlayer(i,khzone);
    }
    if(IsPlayerInArea(i,-2483.524, -202.821, -2166.784, 61.49159))
    {
    if(PlayerInfo[i][pLeader] == 6 || PlayerInfo[i][pMember] == 6) { }
    }
    new Float:yhp;
    GetPlayerHealth(i, yhp);
    SetPlayerHealth(i, yhp-5);
    TextDrawShowForPlayer(i,yakzone);
    }
    else
    {
    TextDrawHideForPlayer(i,yakzone);
    }
    }
    return 0;
    }

    C:\gta\gamemodes\s4y.pwn(41860) : error 029: invalid expression, assumed zero
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.

    Bitte mal helfen ich seh beim überblick nicht mehr durch und die leute die da leader sind bei denen soll nichts passieren..


    Bekomme beim kompalieren den fehler invalid expression assumed zero ?


    Hier der cood bite mal schnell helfen!



    public Checkzone()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerInArea(i,2330.292, -1745.026, 2604.096, -1571.325))
    {
    if(PlayerInfo[i][pLeader] == 13 || PlayerInfo[i][pMember] == 13) { return 0; }
    new Float:hp;
    GetPlayerHealth(i, hp);
    SetPlayerHealth(i, hp-1);
    TextDrawShowForPlayer(i,groovezone);
    }
    else
    {
    TextDrawHideForPlayer(i,groovezone);
    }
    if(IsPlayerInArea(i, 972.6795, -1421.311, 976.4823, -1393.677))
    {
    if(IsPlayerNPC(i))
    {
    SendClientMessageToAll(COLOR_ORANGE, "Der Bus erreicht in wenigen Minuten den Zivilspan");
    }
    }
    else
    {
    ///
    }
    if(IsPlayerInArea(i,1995.642, -1460.788, 2098.319, -1354.199))
    {
    if(PlayerInfo[i][pLeader] == 1 || PlayerInfo[i][pMember] == 1) { }
    {
    new Float:hpheal;
    GetPlayerHealth(i, hpheal);
    SetPlayerHealth(i, hpheal+5);
    TextDrawShowForPlayer(i,khzone);
    }
    else
    {
    TextDrawHideForPlayer(i,khzone);
    }
    if(IsPlayerInArea(i,-2483.524, -202.821, -2166.784, 61.49159))
    {
    if(PlayerInfo[i][pLeader] == 6 || PlayerInfo[i][pMember] == 6) { }
    }
    new Float:yhp;
    GetPlayerHealth(i, yhp);
    SetPlayerHealth(i, yhp-5);
    TextDrawShowForPlayer(i,yakzone);
    }
    else
    {
    TextDrawHideForPlayer(i,yakzone);
    }
    }
    return 0;
    }

    Problem - Blitzer wird zwar aufgestellt aber man wird nicht geblitzt wenn man den speed und raduis einstellt


    wie muss man sich denn hinstellen und welcher radius ist denn funktionstüchtig weil habs mit 5 und 10 versucht..


    Hier mal mein code die inc ist da



    if(strcmp(cmd, "/blitzer", true) == 0)
    {
    if(PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pMember] == 1)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_YELLOW, "[BENUTZUNG:] /blitzer [Funktion]");
    SendClientMessage(playerid, COLOR_WHITE, "Verfügbare Funktionen: add, remove, removeall, count");
    return 1;
    }
    if (!IsACop(playerid)) return SendClientMessage(playerid, COLOR_LIGHTRED, "[ERROR:] Du bist kein Polizist!");
    if(strcmp(tmp,"add",true) == 0)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_LIGHTBLUE, "[BENUTZUNG:] /blitzer [add] [Geschwindigkeit] [Radius]");


    new b_speed;
    b_speed = strval(tmp);
    if(b_speed < 20 || b_speed > 180) return SendClientMessage(playerid, COLOR_LIGHTRED, "[ERROR:] Die Geschwindigkeit muss zwischen 20 und 180 km/h liegen!");


    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_LIGHTBLUE, "[BENUTZUNG:] /blitzer [add] [Geschwindigkeit] [Radius]");


    new b_radius;
    b_radius = strval(tmp);
    if(b_radius < 5 || b_radius > 50) return SendClientMessage(playerid, COLOR_LIGHTRED, "[ERROR:] Der Radius muss zwischen 5 und 50 Meter liegen!");
    AddBlitzer(playerid,b_speed,b_radius);
    SendClientMessage(playerid, COLOR_ORANGE, "[ZENTRALE:] Ein Blitzer wurde erfolgreich aufgestellt und registriert!");
    return 1;
    }
    else if(strcmp(tmp,"remove",true) == 0)
    {
    RemoveBlitzer(playerid);
    SendClientMessage(playerid, COLOR_ORANGE, "[ZENTRALE:] Dieser Blitzer wurde erfolgreich abgebaut und aus der Akte entfernt!");
    return 1;
    }
    else if(strcmp(tmp,"removeall",true) == 0)
    {
    RemoveAllBlitzer();
    SendClientMessage(playerid, COLOR_ORANGE, "[ZENTRALE:] Dieser Blitzer wurde erfolgreich abgebaut und aus der Akte entfernt!");
    return 1;
    }
    else if(strcmp(tmp,"count",true) == 0)
    {
    new b = CountBlitzer();
    new str[130];
    format(str,sizeof(str),"ZENTRALE: Es sind momentan %d Blitzer registriert und werden um 4.00 Uhr abgebaut!", b);
    SendClientMessage(playerid, COLOR_ORANGE, str);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_YELLOW, "[BENUTZUNG:] /blitzer [Funktion]");
    SendClientMessage(playerid, COLOR_WHITE, "Verfügbare Funktionen: add, remove, removeall, count");
    return 1;
    }
    }
    }

    Nein nicht ganz...
    weil er dann ja immer noch die rec abspielt die ich aufgezeichnet haben..


    Was ist den mit der 2. idee die ich fast gelöst habe..?



    if(PlayerInfo[i][pLeader] == 13 || PlayerInfo[i][pMember] == 13) { return 1; }
    new Float:hp;
    GetPlayerHealth(i, hp);
    SetPlayerHealth(i, hp-1);
    TextDrawShowForPlayer(i,groovezone);
    }
    else
    {
    TextDrawHideForPlayer(i,groovezone);
    }


    Damit die hp nicht von groove membern sich reduziert ?


    Und wie mach ich die erste idee ?
    und das dan dan im test ne nummer erschein busslinie x soll immer mit der richtigen nummer vom buss ersetzt werden.. ?

    So sollte es gehen :)
    du muss eine abfrage der coords machen und dementsprechend einen checkpoint setzen ein kurzes beispiel



    //Checkpoint setzen
    new Float:pX, Float:pY, Float:pZ;
    GetVehiclePos(vehicleid, pX,pY,pZ)
    SetPlayerCheckpoint(playerid,pX,pY,pZ.2.0);
    //CHeckpoint ende



    if(strcmp("/polizei", cmdtext, true, 10) == 0)
    {
    if(InDM[playerid]==10)
    {
    SendClientMessage(playerid,green,"Server: Willkommen bei der Polizei. Der rote Punkt auf der Karte zeigt an, wo sich der Geldtransporter aufhält.");
    polizei[playerid] = 1;
    terroristen[playerid] = 0;
    geldvon[playerid]=0;
    ResetPlayerWeapons(playerid);
    GivePlayerWeapon (playerid,46,1);
    GivePlayerWeapon (playerid,39,50000);
    GivePlayerWeapon (playerid,35,50000);
    GivePlayerWeapon (playerid,34,50000);
    GivePlayerWeapon (playerid,28,50000);
    SetPlayerHealth(playerid,100);
    SetPlayerArmour(playerid,100);
    SetPlayerPos(playerid,-1615.3008,684.1713,7.1875);
    SetVehicleParamsForPlayer(MainCarGeld,playerid,0,1);
    return 1;
    }
    }


    wenn du dir mal die inc a_players.inc anschaust dann findest du das SetPlayerCheckpoint


    Auszug

    // Player world/map related
    native SetPlayerCheckpoint(playerid, Float:x, Float:y, Float:z, Float:size);
    native DisablePlayerCheckpoint(playerid);
    native SetPlayerRaceCheckpoint(playerid, type, Float:x, Float:y, Float:z, Float:nextx, Float:nexty, Float:nextz, Float:size);
    native DisablePlayerRaceCheckpoint(playerid);
    native SetPlayerWorldBounds(playerid,Float:x_max,Float:x_min,Float:y_max,Float:y_min);
    native SetPlayerMarkerForPlayer(playerid, showplayerid, color);
    native ShowPlayerNameTagForPlayer(playerid, showplayerid, show);


    Füg doch da mal
    native SetVehicleCheckpoint(vehicleid, Float:x, Float:y, Float:z, Float:size);


    und probier dann mal im obigen code
    SetVehicleCheckpoint(vehicleid,pX,pY,pZ);


    Nur ne idee?

    Hallo,
    Folgende idee für ein GF System,


    Beispiel Busbot....


    Mein jetziger Busbot fährt so durch die gegend wenn jemand einsteigt werden ihm 12$ abgezogen das ist ja schon schön :)
    Nur meine idee ist... nun wartet ja nicht jeder gerne auf einen bus :)
    Ist es möglich das zu scripten wenn man /service bus eintippt


    das dann der Bus zu der stelle fährt ?


    2. idee


    wie kann man auserdem noch machen wenn der buss einen bestimmten punkt oder bereich erreicht also dieser bus halt..
    das halt ingame ne meldung erscheint "" Linie x erricht demnächst die Haltestelle Los Santos bank - Bitte entfernen sie sich von der Straße"" // das x soll die bussliniennummer ersetzen weil es immer verschiedene busbots geben soll.... die auch unterschiedliche Wege haben...


    Nun meine frage ich bin recht neu damit und will nicht das mir hier wieder jemand mit wiki google etc kommt..
    Ist sowas möglich zu scripten wen ja wie ? Bitte mit Beispielen - Danke!


    //edit
    2. Idee fast selbst gelöst nur er bringt die meldung nicht raus... und noch was ber der ersten abfrage soll nix passieren wenn ein groove mitglied in der zone iss wenn nicht die hp reduzieren..


    was ist an dem code falsch ?



    public Checkzone()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerInArea(i,2330.292, -1745.026, 2604.096, -1571.325))
    {
    if(PlayerInfo[i][pLeader] == 13 || PlayerInfo[i][pMember] == 13) { }
    new Float:hp;
    GetPlayerHealth(i, hp);
    SetPlayerHealth(i, hp-1);
    TextDrawShowForPlayer(i,groovezone);
    }
    else
    {
    TextDrawHideForPlayer(i,groovezone);
    }
    if(IsPlayerInArea(i, 972.6795, -1421.311, 976.4823, -1393.677))
    {
    if(IsPlayerNPC(i))
    {
    SendClientMessageToAll(COLOR_ORANGE, "Der Bus erreicht in wenigen Minuten den Zivilspan");
    }
    }
    else { }
    }
    return 1;
    }


    // edit 1. idee noch keine lösung gefunden :(
    aber ich bin dankbar wenn ihr helft :)8o