[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
  • 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.
  • Danke dir, hab noch eine kleine Frage, dann war es das erstmal :b
    Hier wird mir trotz das ich der Besitzer bin angezeigt, dass ich nicht der Besitzer bin.
    for(new i=0;i<GetMaxPlayers();i++)
    {
    for(new slot=0;slot<MAX_PLAYER_VEHICLES;slot++)
    {
    if(veh == PrivateVehicle[i][slot][vehID])
    {
    if(vehicleid != PrivateVehicle[i][slot][vehID]) continue;
    GetVehiclePos(veh, pos[0], pos[1], pos[2]);
    GetVehicleParamsEx(PrivateVehicle[i][slot][vehID], engine, lights, alarm, doors, bonnet, boot, objective);
    if(doors == VEHICLE_PARAMS_OFF || doors == VEHICLE_PARAMS_UNSET)
    {
    LockVehicle(PrivateVehicle[i][slot][vehID]);
    GameTextForPlayer(i, "~w~Privat-Fahrzeug~n~~r~Abgeschlossen", 3000, 6);
    PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
    return 1;
    }
    if(doors == VEHICLE_PARAMS_ON)
    {
    UnlockVehicle(PrivateVehicle[i][slot][vehID]);
    GameTextForPlayer(i, "~w~Privat-Fahrzeug~n~~g~Aufgeschlossen", 3000, 6);
    PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
    return 1;
    }
    }
    }
    return SendClientMessage(playerid,COLOR_GREY,"** Dies ist nicht dein Fahrzeug.");
    }


    /e:
    Jeffry hinzugefügt
    Jeffry:

    Einmal editiert, zuletzt von Cheevy.Shakur () aus folgendem Grund: /e: Jeffry hinzugefügt

  • Hi, hab mal in den Tutorials rumgekramt und bin auf ein kleines Tut mit Racecheckpoints gekommen, hab es etwas umgebaut aber der letzte Checkpoint wird nicht angezeigt und somit auch nicht das SCM ... woran könnte es liegen?

    Spoiler anzeigen
    public OnPlayerEnterRaceCheckpoint(playerid)
    {
    if (IsPlayerInAnyVehicle(playerid))
    {
    if (GetVehicleModel(GetPlayerVehicleID(playerid)) == 560)
    {
    if(Praxis[playerid] == 1)
    {
    CheckpointStatus[playerid]++;

    Spoiler anzeigen
    new letzerpunkt = MAX_FPOINT;
    if(CheckpointStatus[playerid] < letzerpunkt)
    {
    DisablePlayerRaceCheckpoint(playerid);
    SetPlayerRaceCheckpoint(playerid,0,racecheckpoints[CheckpointStatus[playerid]][0],racecheckpoints[CheckpointStatus[playerid]][1],racecheckpoints[CheckpointStatus[playerid]][2],racecheckpoints[CheckpointStatus[playerid]+1][0],racecheckpoints[CheckpointStatus[playerid]+1][1],racecheckpoints[CheckpointStatus[playerid]+1][2],3.0);
    }
    // Bedeutung: SetPlayerRaceCheckpoint(playerid, Checkpointtype, X[CheckpointSTatus], Y[CheckpointStatus], Z[CheckpointStatus], NächsterX[Nächster CheckpointSTatus],NächsterY[Nächster CheckpointSTatus],NächsterZ[Nächster CheckpointSTatus], size);
    if(CheckpointStatus[playerid] == letzerpunkt){
    Praxis[playerid]= 0;
    CheckpointStatus[playerid] = 0;
    DisablePlayerRaceCheckpoint(playerid);
    SendClientMessage(playerid, erfolg, "Du hast bestanden test");
    }
    }
    }
    }
    return 1;
    }



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


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

  • Cheevy.Shakur:
    for(new slot=0;slot<MAX_PLAYER_VEHICLES;slot++)
    {
    if(veh == PrivateVehicle[playerid][slot][vehID])
    {
    if(vehicleid != PrivateVehicle[playerid][slot][vehID]) continue;
    GetVehiclePos(veh, pos[0], pos[1], pos[2]);
    GetVehicleParamsEx(PrivateVehicle[playerid][slot][vehID], engine, lights, alarm, doors, bonnet, boot, objective);
    if(doors == VEHICLE_PARAMS_OFF || doors == VEHICLE_PARAMS_UNSET)
    {
    LockVehicle(PrivateVehicle[playerid][slot][vehID]);
    GameTextForPlayer(playerid, "~w~Privat-Fahrzeug~n~~r~Abgeschlossen", 3000, 6);
    PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
    return 1;
    }
    else
    {
    UnlockVehicle(PrivateVehicle[playerid][slot][vehID]);
    GameTextForPlayer(playerid, "~w~Privat-Fahrzeug~n~~g~Aufgeschlossen", 3000, 6);
    PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
    return 1;
    }
    }
    }
    return SendClientMessage(playerid,COLOR_GREY,"** Dies ist nicht dein Fahrzeug.");



    @TVPikachu:
    public OnPlayerEnterRaceCheckpoint(playerid)
    {
    if (IsPlayerInAnyVehicle(playerid))
    {
    if (GetVehicleModel(GetPlayerVehicleID(playerid)) == 560)
    {
    if(Praxis[playerid] == 1)
    {
    CheckpointStatus[playerid]++;
    if(CheckpointStatus[playerid] < sizeof(racecheckpoints))
    {
    DisablePlayerRaceCheckpoint(playerid);
    SetPlayerRaceCheckpoint(playerid,0,racecheckpoints[CheckpointStatus[playerid]][0],racecheckpoints[CheckpointStatus[playerid]][1],racecheckpoints[CheckpointStatus[playerid]][2],racecheckpoints[CheckpointStatus[playerid]+1][0],racecheckpoints[CheckpointStatus[playerid]+1][1],racecheckpoints[CheckpointStatus[playerid]+1][2],3.0);
    }
    else
    {
    Praxis[playerid]= 0;
    CheckpointStatus[playerid] = 0;
    DisablePlayerRaceCheckpoint(playerid);
    SendClientMessage(playerid, erfolg, "Du hast bestanden test");
    }
    }
    }
    }
    return 1;
    }

    Falls das so nicht geht, poste bitte wie du die Checkpoint-Daten in racecheckpoints einträgst.

  • Jeffry:


    Schau so:

    Spoiler anzeigen
    #define MAX_FPOINT 22

    Spoiler anzeigen
    new Float:racecheckpoints[MAX_FPOINT][3] = {
    {-2045.6930,-81.6450,34.8956},
    {-2004.2744,-54.9843,34.8920},
    {-2004.0598,45.7823,31.4967},
    {-2003.9708,180.6956,27.2661},
    {-1999.8444,298.7823,34.3433},
    {-2047.9268,322.7840,34.7427},
    {-2128.6860,323.0107,34.8348},
    {-2144.5259,350.7651,34.8990},
    {-2139.7329,484.4901,34.7427},
    {-2161.2971,507.6261,34.7427},
    {-2214.3147,511.3216,34.7427},
    {-2228.9150,488.6285,34.7427},
    {-2267.7319,410.0070,34.7427},
    {-2269.1267,372.9379,33.4757},
    {-2254.5942,300.0095,34.8911},
    {-2254.7937,196.5933,34.9029},
    {-2254.4172,134.6183,34.8990},
    {-2258.2461,35.8751,34.8990},
    {-2260.6726,-31.9568,34.8990},
    {-2230.9214,-73.0984,34.8990},
    {-2119.0627,-72.9382,34.9027},
    {-2048.9795,-83.1473,34.8911}
    };


    Funktioniert leider immer noch nicht :/



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


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

  • Du brauchst nur eine Variable, vorzugsweise mit dem "bool"-Tag.
    new bool:state = false;
    Nun kannst du den string formatieren; je nachdem, wie der Status ist.( False = "Off" -> True = "On" )
    Solltest du dann das Listitem auswählen, musst du noch den Wert zu true bzw zu false ändern.

  • Oben unter den Includes:
    new bool:antiAimbot[MAX_PLAYERS];


    Bei OnPlayerDisconnect:
    antiAimbot[playerid] = false;


    Bei einem Befehl zum Beispiel:
    new str[32];
    format(str, sizeof(str), "Anti-Aimbot: %s", (antiAimbot[playerid]) ? ("On") : ("Off"));
    ShowPlayerDialog(playerid, 1234, DIALOG_STYLE_LIST, "Anti-Aimbot", str, "Select", "Cancel");


    Bei OnDialogResponse:
    if(dialogid == 1234)
    {
    if(!response) return 1;
    antiAimbot[playerid] = !antiAimbot[playerid];
    new str[32];
    format(str, sizeof(str), "Anti-Aimbot: %s", (antiAimbot[playerid]) ? ("On") : ("Off"));
    ShowPlayerDialog(playerid, 1234, DIALOG_STYLE_LIST, "Anti-Aimbot", str, "Select", "Cancel");
    return 1;
    }


    Falls es global einzustellen wäre, dann ohne das [MAX_PLAYERS] und [playerid].

  • Beitrag von Cheevy.Shakur ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Mache gerade was, damit 20 Liter Benzin hinzugefügt werden. Mit dem Code möchte ich bezwecken, dass das Fahrzeug nicht über die maximale Tankgröße befüllt wird.
    Er zeigt mir aber einen Fehler in der Zeile an.
    Vehicle[vehicleid][vehFuel] += pBenzin - Vehicle[vehicleid][vehFuel] += 20;


    pBenzin habe ich wie folgt definiert:
    new Float:pBenzin = (VehicleData[GetVehicleModel(vehicleid)-400][vehMaxTank] - Vehicle[vehicleid][vehFuel]);

  • Hat jemand ein Lösungsvorschlag, ohne dass ich vor jeder schleife erst new bla = GetPlayerPoolSize(); schreiben muss?


    Es geht auch so


    PHP
    for(new i = 0; i <= GetVehiclePoolSize(); i++)



    Zitat von Jeffry

    Das ist wesentlich performanter als diese neuen (für mich höchst sinnlosen) Funktionen.


    Und um wv. Millisekunden reden wir?



    Hier der Test, denn ich gerade gemacht hab.


    Spoiler anzeigen
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] MAX_PLAYERS: 24
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] Hier kommt der Code für die Spieler
    [13:40:09] GetPlayerPoolSize()+30: 18


    P.s. MAX_PLAYERS hat bei mir auch nur 30
    Hier das Script zum Selber testen: http://puu.sh/gq7QS/6e1fb62f40.rar

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

    2 Mal editiert, zuletzt von whitetiiger ()

  • Wie fixxe ich das?:
    (`sqlid`,`carkey`,`ingarage`,`AH_Typ`,`AH_X`,`AH_Y`,`AH_Z`,`AH_Rot`,`AH_Status`,`AH_Lock`,`AH_Paintjob`,`AH_Farbe1`,`AH_Farbe2`,`AH_Mod1`,`AH_Mod2`,`AH_Mod3`,`AH_Mod4`,`AH_Mod5`,`AH_Mod6`,`AH_Mod7`,`AH_Mod8`,`AH_Mod9`,`AH_Mod10`,`AH_Mod11`,`AH_Mod12`,`AH_Mod13`,`AH_Mod14`,`AH_Mod15`,`AH_Mod16`,`AH_Mod17`,`AH_SpawnSaveX`,`AH_SpawnSaveY`,`AH_SpawnSaveZ`,`AH_SpawnSaveRot`,`AH_TankVolumen`,`AH_Mats`,`AH_Neon`,`AH_NeonType`,`AH_Drugs`,`AH_StandTime`,`AH_Meter`) VALUES (1,0,0,496,748.975219,-1345.818237,13.515500,270.000000,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,748.975219,-1345.818237,13.515500,270.000000,1117782016,0,0,0,0,0,0)) - An error has occured. (Error ID: 1054, Unknown column 'AH_Mod5' in 'field list')
    [14:32:09] OnQueryError() - Called.

  • gerade habe ich mit Mysql ein Adminsystem gemacht, jetzt speichert er aufeinmal gar nichts mehr..
    savePlayer(playerid)
    {
    if(sInfo[playerid][eingeloggt]==0)return 1;
    new query[128];
    format(query,sizeof(query),"UPDATE user SET level='%i',geld='%i',eingeloggt='%i',adminlevel='%i' WHERE id='%i'",GetPlayerScore(playerid),GetPlayerMoney(playerid),sInfo[playerid][eingeloggt],sInfo[playerid][adminlevel],sInfo[playerid][id]);
    mysql_function_query(dbverbindung,query,false,"","");
    return 1;
    }
    steht überall nur noch der alte Wert oder wenn ich mich neu registriere 0 drin...
    Bis auf Passwort und Username