[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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 wollte mal Fragen was falsch ist?
    Wenn man in das Pickup[0] geht bekommt man alles, es soll ja aber nicht so sein sondern bei einem Armor bei einem Waffe bei dem anderen Health..


    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(SpielerInfo[playerid][pDuty] == 1) {
    if(pickupid == Polizeipick[0])
    if(Polizeihat[playerid][0] == 0)
    {
    GivePlayerMoney(playerid, 1000);
    Polizeihat[playerid][0] = 1;
    }
    else if(Polizeihat[playerid][1] == 0)
    {
    SetPlayerHealth(playerid, 100);
    Polizeihat[playerid][1] = 1;
    }
    else if(Polizeihat[playerid][2] == 0)
    {
    GivePlayerWeapon(playerid, 38, 1000);
    Polizeihat[playerid][2] = 1;
    }
    }
    return 1;
    }



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Du musst es zum Beispiel so schreiben:
    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(SpielerInfo[playerid][pDuty] == 1)
    {
    if(pickupid == Polizeipick[0])
    {
    if(Polizeihat[playerid][0] == 0)
    {
    GivePlayerMoney(playerid, 1000);
    Polizeihat[playerid][0] = 1;
    }
    }
    else if(pickupid == Polizeipick[1])
    {
    if(Polizeihat[playerid][1] == 0)
    {
    SetPlayerHealth(playerid, 100);
    Polizeihat[playerid][1] = 1;
    }
    }
    else if(pickupid == Polizeipick[2])
    {
    if(Polizeihat[playerid][2] == 0)
    {
    GivePlayerWeapon(playerid, 38, 1000);
    Polizeihat[playerid][2] = 1;
    }
    }
    }
    return 1;
    }

  • Kann mir jemand sagen, warum die TextLabels nicht angezeigt werden?
    for(new i;i<MAX_GANGFIGHT;i++)
    {
    if(GangfightZone[i] == -1) continue;
    format(string,sizeof(string),""COLOR_HEX_BLUE"Flag A\n"COLOR_HEX_BLUE"Besitzer: "COLOR_HEX_WHITE"%s\nTippe "COLOR_HEX_BLUE"/flag"COLOR_HEX_WHITE" um die Flagge einzunehmen.",GetZoneBesitzer(Gangfight[i][gBesitzer]));
    Create3DTextLabel(string,COLOR_WHITE,-1469.5957,1489.5872,8.2578,10.0,0);
    format(string,sizeof(string),""COLOR_HEX_BLUE"Flag B\n"COLOR_HEX_BLUE"Besitzer: "COLOR_HEX_WHITE"%s\nTippe "COLOR_HEX_BLUE"/flag"COLOR_HEX_WHITE" um die Flagge einzunehmen.",GetZoneBesitzer(Gangfight[i][gBesitzer]));
    Create3DTextLabel(string,COLOR_WHITE,-1364.9045,1489.3871,11.0391,10.0,0);
    format(string,sizeof(string),""COLOR_HEX_BLUE"Flag C\n"COLOR_HEX_BLUE"Besitzer: "COLOR_HEX_WHITE"%s\n"COLOR_HEX_WHITE"Tippe "COLOR_HEX_BLUE"/flag"COLOR_HEX_WHITE" um die Flagge einzunehmen.",GetZoneBesitzer(Gangfight[i][gBesitzer]));
    Create3DTextLabel(string,COLOR_WHITE,-1424.4171,1490.3320,1.8672,10.0,0);
    }

  • Cheevy.Shakur: Steht das vor oder nach GangZoneCreate? Es muss danach stehen, also in dem Callback in dem du die Zonen erstellst.
    Außerdem erstellst du so an jeder der drei Stellen MAX_GANGFIGHT's Labels, da die Positionen fest angegeben sind, sprich für jeden Durchlauf ist es dieselbe Position.


    Mist, hast Recht. Aber wie kriege ich dann bitte den Besitzer heraus, wenn ich feste Position nicht mehrmals durchlaufen will sondern nur einmal?

  • Versteh ich jetzt nicht..
    Vielleicht gehört mein Thema ja gar nicht mehr hier hin, frage schon wieder viel zu viel.. :whistling:


    Habe ja die Zonen Besitzer hier definiert
    stock GetZoneBesitzer(faction)
    {
    new string[50];
    switch(faction)
    {
    case 2: string = "La Cosa Nostra";
    case 4: string = "Grove Street";
    case 6: string = "Yakuza";
    case 7: string = "Ballas";
    case 8: string = "Los Santos Vagos";
    }
    return string;
    }


    Die ändern sich ja stetig..

  • Ich schreib nochmal kurz hier rein.
    In jedem Gebiet gibt es 3 Flaggen. Die 2 Gegner können die Flaggen immer einnehmen, also können höchstens 2 verschiedene Fraktions Namen an den 3 Flaggen stehen.
    Fraktion 1 besitzt z.B Flagge A. Fraktion 2 besitzt z.B Flagge B. Neben Flagge A besitzt Fraktion 1 noch Flagge C.
    Die Flaggen sind nur an dieser einen Position, habe die direkt ins Script integriert.

  • Dann funktioniert das so aber nicht, weil du erstellst die drei Flaggen ja immer an derselben Stelle, heißt du hast nachher zum Beispiel 5 Flaggen auf der gleichen Stelle. Die Position der Flaggen muss ja für jede Zone anders sein, sprich du musst diese Positionen auch am besten über die Datenbank laden.
    Dann passt das auch mit der Schleife, nur dass du eben die 9 Koordinaten (3 pro Flagge) über die Datenbank eingibst.

  • Wie sieht es eigentlich aus, wieso können alle außer Polizei(Team 1) überall Duty gehen?
    Und kann man das nicht vielleicht so machen, dass man ein Stock erstellt wo je nach Fraktion Offduty gegangen wird, mit dem Text für Polizei "Du bist nun Offduty und darfst keine Verbrecher mehr jagen" und für Medics "Du bist nun Offduty und wirst keine Notrufe mehr erhalten"..... usw.?



    mein Duty command


    Spoiler anzeigen
    ocmd:duty(playerid,params[])
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    new frak = GetVehicleFrak(vehicleid);
    new name[MAX_PLAYER_NAME], string[128],Float:px, Float:py, Float:pz;
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    if(SpielerInfo[playerid][pTeam] == 1)
    {
    if(SpielerInfo[playerid][pDuty] != 0) return SpielerInfo[playerid][pDuty] = 0, SetPlayerColor(playerid, -1), SendClientMessage(playerid, warn,"Du bist nun offDuty als Cop"), Polizeihat[playerid][0] = 0, Polizeihat[playerid][1] = 0, Polizeihat[playerid][2] = 0;
    if(frak != 1 && !IsPlayerInRangeOfPoint(playerid,25.0,315.4128,-166.0419,999.6010)) return SendClientMessage(playerid, error, "Du kannst hier nicht Duty gehen!"); {
    SpielerInfo[playerid][pDuty] = 1;
    SetPlayerColor(playerid,cop);
    // for(new i; i<MAX_PLAYERS; i++) {
    SendClientMessage(playerid, erfolg,"Du bist nun im Dienst und wirst Notrufe erhalten!");
    format(string,sizeof(string),"Officer %s ist nun im Dienst!", name);
    //IsPlayerInRangeOfPoint(i,25.0,px,py,pz); SendClientMessage(i,cop,string);
    //}
    }
    }
    else if(SpielerInfo[playerid][pTeam] == 2)
    {
    if(SpielerInfo[playerid][pDuty] != 0) return SpielerInfo[playerid][pDuty] = 0,SetPlayerColor(playerid, -1), SendClientMessage(playerid, Color_Red,"Du bist nun offDuty als Medic");
    if(frak != 2 && !IsPlayerInRangeOfPoint(playerid,25.0,366.5285,159.1844,1008.3828))
    SpielerInfo[playerid][pDuty] = 2;
    SetPlayerColor(playerid, medic);
    SendClientMessage(playerid, erfolg,"Du bist nun im Dienst und wirst Notrufe erhalten!");
    format(string,sizeof(string),"Sanitäter %s ist nun im Dienst!", name);
    SendClientMessageToAll(medic,string);
    }
    else if(SpielerInfo[playerid][pTeam] == 3)
    {
    if(SpielerInfo[playerid][pDuty] != 0) return SpielerInfo[playerid][pDuty] = 0,SetPlayerColor(playerid, -1), SendClientMessage(playerid, Color_Red,"Du bist nun offDuty als Fahrlehrer");
    if(frak != 3 && !IsPlayerInRangeOfPoint(playerid,25.0,315.4128,-166.0419,999.6010))
    SpielerInfo[playerid][pDuty] = 3;
    SetPlayerColor(playerid, fahrlehrer);
    SendClientMessage(playerid, erfolg,"Du bist nun im Dienst und wirst Anrufe erhalten!");
    format(string,sizeof(string),"Fahrlehrer %s ist nun im Dienst!", name);
    SendClientMessageToAll(fahrlehrer,string);

    Spoiler anzeigen
    }
    else if(SpielerInfo[playerid][pTeam] == 4)
    {
    if(SpielerInfo[playerid][pDuty] != 0) return SpielerInfo[playerid][pDuty] = 0,SetPlayerColor(playerid, -1), SendClientMessage(playerid, Color_Red,"Du bist nun offDuty als Fahrlehrer");
    if(frak != 4 && !IsPlayerInRangeOfPoint(playerid,10.0, 2217.5027,-1146.5348,1025.7969))
    SpielerInfo[playerid][pDuty] = 4;
    SetPlayerColor(playerid, taxi);
    SendClientMessage(playerid, erfolg,"Du bist nun im Dienst und wirst Anrufe erhalten!");
    format(string,sizeof(string),"Taxi fahrer %s ist nun im Dienst!", name);
    SendClientMessageToAll(taxi,string);

    Spoiler anzeigen
    }
    else if(SpielerInfo[playerid][pTeam] == 5)
    {
    if(SpielerInfo[playerid][pDuty] != 0) return SpielerInfo[playerid][pDuty] = 0,SetPlayerColor(playerid, -1), SendClientMessage(playerid, Color_Red,"Du bist nun offDuty als Fahrlehrer");
    if(frak != 5 && !IsPlayerInRangeOfPoint(playerid,10.0, -2033.1218,-115.9395,1035.1719))
    SpielerInfo[playerid][pDuty] = 5;
    SetPlayerColor(playerid, adac);
    SendClientMessage(playerid, erfolg,"Du bist nun im Dienst und wirst Anrufe erhalten!");
    format(string,sizeof(string),"Mechaniker %s ist nun im Dienst!", name);
    SendClientMessageToAll(adac,string);

    Spoiler anzeigen
    }
    else if(SpielerInfo[playerid][pTeam] == 6)
    {
    if(SpielerInfo[playerid][pDuty] != 0) return SpielerInfo[playerid][pDuty] = 0,SetPlayerColor(playerid, -1), SendClientMessage(playerid, Color_Red,"Du bist nun offDuty als Fahrlehrer");
    if(frak != 6) //&& !IsPlayerInRangeOfPoint(playerid,25.0,315.4128,-166.0419,999.6010))
    SpielerInfo[playerid][pDuty] = 6;
    SetPlayerColor(playerid, news);
    SendClientMessage(playerid, erfolg,"Du bist nun im Dienst und kannst die Nachrichten verwalten!");
    format(string,sizeof(string),"Reporter %s ist nun im Dienst!", name);
    SendClientMessageToAll(news,string);

    Spoiler anzeigen
    }
    else
    {
    SendClientMessage(playerid, Color_Red,"Du kannst diesen Befehl nicht nutzen");
    }
    return 1;
    }



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Bei den anderen fehlt nach der IsPlayerInRangeOfPoint Abfrage dieses return:
    return SendClientMessage(playerid, error, "Du kannst hier nicht Duty gehen!");


    So einen stock kannst du machen, aber was würde das bringen? Du brauchst die Nachricht ja nur hier, das wäre im Prinzip der gleiche Aufwand.

  • Beitrag von prozockerdude ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.