[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
  • <p>
    </p>

    Wieso sagt er mir immer, dass ich keine Befugnisse habe, trotz ich den Schlüssel ganz klar auf einen der pHaus Slots habe. pHaus wurde mit pHaus[3] erstellt.


    command(garage, playerid, params[]){ new Float:x, Float:y, Float:z, string[128], mainstring[2000]; GetPlayerPos(playerid, x, y, z); for(new i=0;i<MAX_HAUS;i++){ if(HausInfo[i][h_erstellt] == 1){ printf("%d", i); if(IsPlayerInRangeOfPoint(playerid, 5.0, HausInfo[i][g_x], HausInfo[i][g_y], HausInfo[i][g_z])){ for(new ii=0;ii<3;ii++){ if(Spieler[playerid][pHaus][ii] == i){ if(IsPlayerInAnyVehicle(playerid)){ ShowPlayerDialog(playerid, DIALOG_GARAGE, DIALOG_STYLE_LIST, "Test", "Fahrzeug reinstellen","Weiter","Abbruch"); } else{ for(new g=0;g<3;g++){ if(HausInfo[i][g_slot][ii] == 0 && HausInfo[i][g_fahrzeug][ii] == 0){ format(string, sizeof(string), "Frei\n"); strcat(mainstring, string); } else if(HausInfo[i][g_slot][ii] != 0 && HausInfo[i][g_fahrzeug][ii] != 0){ format(string, sizeof(string), "%d - %s\n", HausInfo[i][g_fahrzeug][ii], VehicleNames[GetVehicleModel(HausInfo[i][g_fahrzeug][ii]) - 400]); strcat(mainstring, string); } } ShowPlayerDialog(playerid, DIALOG_GARAGE_RAUS, DIALOG_STYLE_LIST, "Test", string, "Rausholen", "Abbruch"); } } } return SendClientMessage(playerid, -1, ""#SERVERF" Du hast keine Befugniss für diese Garage!"); } } } return 1;}

  • @[LnD]JustMe.77 Was soll denn floatstr(params) bewirken ?

  • Beitrag von Mr.Pawn ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • So funktioniert jetzt alles, eine Frage ist jedoch noch da. Im Dialog zeigt er mir nur eine Zeile an, ist da bei der Schleife was falsch wo es um das Fahrzeug geht ?



    command(garage, playerid, params[])
    {
    new Float:x, Float:y, Float:z, string[128], mainstring[2000];
    GetPlayerPos(playerid, x, y, z);
    for(new i=0;i<MAX_HAUS;i++){
    if(HausInfo[i][h_erstellt] == 1){
    if(IsPlayerInRangeOfPoint(playerid, 5.0, HausInfo[i][g_x], HausInfo[i][g_y], HausInfo[i][g_z])){
    for(new ii=0;ii<3;ii++){
    printf("%d pHaus", Spieler[playerid][pHaus][ii]);
    if(Spieler[playerid][pHaus][ii] == i){
    if(IsPlayerInAnyVehicle(playerid)){
    ShowPlayerDialog(playerid, DIALOG_GARAGE, DIALOG_STYLE_LIST, "Test", "Fahrzeug reinstellen","Weiter","Abbruch");
    }
    else{
    for(new g=0;g<3;g++){
    if(HausInfo[i][g_slot][ii] == 0 && HausInfo[i][g_fahrzeug][ii] == 0){
    format(string, sizeof(string), "Frei\n");
    strcat(mainstring, string);
    }
    else if(HausInfo[i][g_slot][ii] != 0 && HausInfo[i][g_fahrzeug][ii] != 0){
    format(string, sizeof(string), "%d - %s\n", HausInfo[i][g_fahrzeug][ii], VehicleNames[GetVehicleModel(HausInfo[i][g_fahrzeug][ii]) - 400]);
    strcat(mainstring, string);
    }
    }
    ShowPlayerDialog(playerid, DIALOG_GARAGE_RAUS, DIALOG_STYLE_LIST, "Test", string, "Rausholen", "Abbruch");
    }
    }
    }
    }
    }
    }
    return 1;
    }

  • So hab ich es jetzt und das Script sagt, Nein.



    command(garage, playerid, params[])
    {
    new Float:x, Float:y, Float:z, string[128], mainstring[2000];
    GetPlayerPos(playerid, x, y, z);
    for(new i=0;i<MAX_HAUS;i++){
    if(HausInfo[i][h_erstellt] == 1){
    if(IsPlayerInRangeOfPoint(playerid, 5.0, HausInfo[i][g_x], HausInfo[i][g_y], HausInfo[i][g_z])){
    for(new ii=0;ii<3;ii++){
    if(Spieler[playerid][pHaus][ii] == i){
    SetPVarInt(playerid, "Haussss", i);
    if(IsPlayerInAnyVehicle(playerid)){
    ShowPlayerDialog(playerid, DIALOG_GARAGE, DIALOG_STYLE_LIST, "Test", "Fahrzeug reinstellen","Weiter","Abbruch");
    }
    else{
    for(new g=0;g<3;g++){
    if(HausInfo[i][g_slot][g] == 0 && HausInfo[i][g_fahrzeug][g] == 0){
    format(string, sizeof(string), "Frei\n");
    strcat(mainstring, string);
    }
    else if(HausInfo[i][g_slot][g] != 0 && HausInfo[i][g_fahrzeug][g] != 0){
    format(string, sizeof(string), "%d - %s\n", HausInfo[i][g_fahrzeug][g], VehicleNames[GetVehicleModel(HausInfo[i][g_fahrzeug][g]) - 400]);
    strcat(mainstring, string);
    }
    }
    }
    }
    }
    }
    }
    }
    ShowPlayerDialog(playerid, DIALOG_GARAGE_RAUS, DIALOG_STYLE_LIST, "Test", mainstring, "Rausholen", "Abbruch");
    return 1;
    }


    Code
    [debug] Run time error 4: "Array index out of bounds"
    [debug]  Accessing element at negative index -400
    [debug] AMX backtrace:
    [debug] #0 0002ad60 in public cmd_garage (0, 13685620) from selfmade.amx
    [debug] #1 native CallLocalFunction () from samp-server.exe
    [debug] #2 00000720 in public OnPlayerCommandText (0, 13685588) from selfmade.amx
  • Das liegt dann daran, dass dir
    VehicleNames[GetVehicleModel(HausInfo[i][g_fahrzeug][g]) - 400]
    den Fehler ausgibt, weil GetVehicleModel 0 zurück gibt, das das Fahrzeug in der Variable nicht existiert.


    Ändere eventuell
    else if(HausInfo[i][g_slot][g] != 0 && HausInfo[i][g_fahrzeug][g] != 0){
    zu:else if(HausInfo[i][g_slot][g] != 0 && GetVehicleModel(HausInfo[i][g_fahrzeug][g]) != 0){

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Hey,


    was brauche ich, damit mein UCP mit meinem Server "verbunden" ist. Mir fällt leider gerade nicht der Name ein.
    Als Beispiel: Das ich im UCP einen Spieler banne und er vom Server gekickt wird o.Ä.


    Nächste Frage: Würde das auf meinem localhost funktionieren oder bräuchte ich einen Server?

    Einmal editiert, zuletzt von The Sensei ()

  • Hi, warum erstellen sich manchmal die Textlabels mehrmals?


    In OnPlayerUpdate



    new pInfosStr[90];
    {
    format(pInfosStr, sizeof pInfosStr, "{%06x}Ping: {FFFFFF}%d\n{%06x}FPS: {FFFFFF}%d\n{%06x}PL: {FFFFFF}%0.2f", GetPlayerColor(playerid) >>> 8, GetPlayerPing(playerid), GetPlayerColor(playerid) >>> 8, pFPS[playerid], GetPlayerColor(playerid) >>> 8, GetPlayerPacketLoss(playerid));
    Update3DTextLabelText(pInfos[playerid], 0xFFFFFFFF, pInfosStr);
    }


    Bild



    Mit freundlichen Grüßen
    JustMe.77 8)

  • new Text3D:pInfos[MAX_PLAYERS];


    OnPlayerConnect



    pInfos[playerid] = Create3DTextLabel("", -1, 0.0, 0.0, 0.0, 15.0, 0, 1);
    Attach3DTextLabelToPlayer(pInfos[playerid], playerid, 0.0, 0.0, -0.7);


    Das ist alles..


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Yo, will nen einfachen Skinwechsel machen indem sich die Variable einfach jedes mal um +1 erweitert.



    Code
    if(skin[playerid] < 280) skin[playerid]; //falls alter skin unter 280 ist
    if(skin[playerid] >  287) skin[playerid] = 303; //soll skinid 202-310 überspringen
    if(skin[playerid] >  310) skin[playerid] = 280;//wieder von vorne anfangen
    SetPlayerSkin(playerid, skin[playerid]);
    skin[playerid]++;//+1

    Es geht bis auf, dass wenn der Skin bei 303 angelangt ist er sich jedes mal wiederholt.


    Weiß jemand woran das liegt? :D

  • Code
    if(skin[playerid] < 280) skin[playerid]; //falls alter skin unter 280 ist
    else if(skin[playerid] >  287) skin[playerid] = 303; //soll skinid 202-310 überspringen
    else if(skin[playerid] >  310) skin[playerid] = 280;//wieder von vorne anfangen
    SetPlayerSkin(playerid, skin[playerid]);
    skin[playerid]++;//+1

    Und so?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen