[SAMMELTHREAD] Kleine Scripting Fragen

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • Danke, aber das gibt mir einen Tag Mismatch Fehler aus.


    Ah mein Fehler
    vor den jeweiligen Enums Tags muss der Tag noch entfernt( _: ) werden, liegt daran, das dein Enum Name, mit einem groß Buchstaben beginnt - einem "Strong Tag".
    Klingt vielleicht komisch - ist aber so :D


    Also, man subtrahiert im Grunde nur die Werte voneinander, die sie durch die Enumstruktur bzw. Auflistung bekommen haben.


    enum TICKET_INFO{
    _ticketCreatorID, <- 0
    _ticketSupporterID, <- 1
    _ticketQuestion[70], <- 2
    _ticketState <- 72
    };
    Man rechnet hier einfach gegen.
    _ticketQuestion hat einfach nur den Wert 2, die restlichen 70 werden reserviert und können nicht über Variablennamen angesprochen werden.
    _ticketState hat den Wert 70 -> rechnet man nun 72 - 2 bekommt man 70 heraus, genau den Wert den man haben möchte.

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Du kannst eine Schleife durch alle Spieler machen und dann mit strfind Namen rausfiltern.

  • new name[MAX_PLAYER_NAME];
    for(new i;i<MAX_PLAYERS;i++)
    {
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    if(strfind(inputtext,name,true) != -1)
    {
    "name" ist nun der Name
    return 1;
    }
    }

  • Werde 2 mal im /members angezeigt, sprich mein Name überschreibt den Namen des anderen.
    Woran liegt es?
    CMD:members(playerid,params[])
    {
    if(!IsLoggedIn(playerid))return 1;
    if(Spieler[playerid][pFraktion] == 0)return SendClientMessage(playerid,COLOR_GREY,"** Du bist in keiner Fraktion.");
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(Spieler[i][pFraktion] == Spieler[playerid][pFraktion])
    {
    format(DialogString,sizeof(DialogString),"%s (Rang: %s - %d)\n",GetName(i),GetRankName(Spieler[i][pFraktion],Spieler[i][pRank]),Spieler[i][pRank]);
    strcat(DialogString,DialogString);
    }
    }
    }
    ShowPlayerDialog(playerid,DIALOG_MEMBERS,DIALOG_STYLE_LIST,""COLOR_HEX_BLUE""#SERVER_NAME": "COLOR_HEX_WHITE"Member Verwaltung",DialogString,"Auswählen","Abbrechen");
    return 1;
    }

  • hab das nun gelöst folgendes Problem:
    error 021: symbol already defined: "AC_GivePlayerHealthEx"
    #define GivePlayerHealth AC_GivePlayerHealthEx
    forward AC_GivePlayerHealthEx(playerid,Float:health);
    public AC_GivePlayerHealthEx(playerid,Float:health){
    ACNewHealth[playerid] = health;
    stopAC[playerid] = 15;
    return SetPlayerHealth(playerid,ACNewHealth[playerid]);
    }

  • Cheevy.Shakur:
    CMD:members(playerid,params[])
    {
    if(!IsLoggedIn(playerid))return 1;
    if(Spieler[playerid][pFraktion] == 0)return SendClientMessage(playerid,COLOR_GREY,"** Du bist in keiner Fraktion.");
    for(new i;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(Spieler[i][pFraktion] == Spieler[playerid][pFraktion]))
    {
    format(DialogString,sizeof DialogString,"%s\n%s (Rang: %s - %d)",DialogString,GetName(i),GetRankName(Spieler[i][pFraktion],Spieler[i][pRank]),Spieler[i][pRank]);
    }
    }
    }
    return ShowPlayerDialog(playerid,DIALOG_MEMBERS,DIALOG_STYLE_LIST,""COLOR_HEX_BLUE""#SERVER_NAME": "COLOR_HEX_WHITE"Member Verwaltung",DialogString,"Auswählen","Abbrechen");
    }
    So sollte das klappen.


  • Hab das jetzt so, aber irgendwas buggt hier...
    CMD:lock(playerid)
    {
    if(!IsLoggedIn(playerid))return 1;
    new veh = GetPlayerVehicleID(playerid), Float:pos[3];
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, COLOR_GREY, "** Du sitzt in keinem Fahrzeug.");
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)return SendClientMessage(playerid, COLOR_GREY, "** Du bist nicht der Fahrer.");
    if(Spieler[playerid][pAdminDuty] == 1)
    {
    if(IsValidVehicle(veh))
    {
    GetVehiclePos(veh, pos[0], pos[1], pos[2]);
    GetVehicleParamsEx(veh, engine, lights, alarm, doors, bonnet, boot, objective);
    if(doors == VEHICLE_PARAMS_UNSET || doors == VEHICLE_PARAMS_OFF)
    {
    LockVehicle(veh);
    GameTextForPlayer(playerid, "~w~Fahrzeug~n~~r~Abgeschlossen", 3000, 6);
    PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
    return 1;
    }
    else if(doors == VEHICLE_PARAMS_ON)
    {
    UnlockVehicle(veh);
    GameTextForPlayer(playerid, "~w~Fahrzeug~n~~g~Aufgeschlossen", 3000, 6);
    PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
    return 1;
    }
    }
    }
    if(!(IsAFraktionsVeh(veh) == INVALID_VEHICLE_ID))
    {
    if(IsValidVehicle(veh))
    {
    new fV = IsAFraktionsVeh(veh);
    if(Spieler[playerid][pFraktion] == fVehicle[fV][vehFraktion])
    {
    GetVehiclePos(veh, pos[0], pos[1], pos[2]);
    GetVehicleParamsEx(fVehicle[fV][vehID], engine, lights, alarm, doors, bonnet, boot, objective);
    if(doors == VEHICLE_PARAMS_UNSET || doors == VEHICLE_PARAMS_OFF)
    {
    LockVehicle(fVehicle[fV][vehID]);
    GameTextForPlayer(playerid, "~w~Fraktions-Fahrzeug~n~~r~Abgeschlossen", 3000, 6);
    PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
    return 1;
    }
    else if(doors == VEHICLE_PARAMS_ON)
    {
    UnlockVehicle(fVehicle[fV][vehID]);
    GameTextForPlayer(playerid, "~w~Fraktions-Fahrzeug~n~~g~Aufgeschlossen", 3000, 6);
    PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
    return 1;
    }
    }
    else
    {
    return SendClientMessage(playerid, COLOR_GREY, "** Du besitzt keine Schlüssel für dieses Fahrzeug.");
    }
    }
    }
    for(new i=0;i<GetMaxPlayers();i++)
    {
    for(new slot=0;slot<MAX_PLAYER_VEHICLES;slot++)
    {
    if(veh == PrivateVehicle[i][slot][vehID])
    {
    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;
    }
    }
    }
    }
    if(veh == Spieler[playerid][pBusID])
    {
    GetVehiclePos(veh, pos[0], pos[1], pos[2]);
    GetVehicleParamsEx(Spieler[playerid][pBusID], engine, lights, alarm, doors, bonnet, boot, objective);
    if(doors == VEHICLE_PARAMS_OFF || doors == VEHICLE_PARAMS_UNSET)
    {
    LockVehicle(Spieler[playerid][pBusID]);
    GameTextForPlayer(playerid, "~w~Job-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(Spieler[playerid][pBusID]);
    GameTextForPlayer(playerid, "~w~Job-Fahrzeug~n~~g~Aufgeschlossen", 3000, 6);
    PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
    return 1;
    }
    }
    if(veh == Spieler[playerid][pBike])
    {
    if(IsValidVehicle(Spieler[playerid][pBike]))
    {
    GetVehiclePos(Spieler[playerid][pBike], pos[0], pos[1], pos[2]);
    GetVehicleParamsEx(Spieler[playerid][pBike], engine, lights, alarm, doors, bonnet, boot, objective);
    if(doors == VEHICLE_PARAMS_OFF || doors == VEHICLE_PARAMS_UNSET)
    {
    LockVehicle(Spieler[playerid][pBike]);
    GameTextForPlayer(playerid, "~w~Fahrrad~n~~r~Abgeschlossen", 3000, 6);
    return 1;
    }
    if(doors == VEHICLE_PARAMS_ON)
    {
    UnlockVehicle(Spieler[playerid][pBike]);
    GameTextForPlayer(playerid, "~w~Fahrrad~n~~g~Aufgeschlossen", 3000, 6);
    return 1;
    }
    }
    }
    return SendClientMessage(playerid, COLOR_GREY, "** Du besitzt keine Schlüssel für dieses Fahrzeug.");
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Hi, habe gerade ein Problem beim Speichern der Fahrzeugfarben..


    Vorher hatte ich es gespeichert ohne Farben, also nur ID und Koordinaten, jetzt möchte ich die Farben auch speichern.


    ocmd:veh(playerid,params[])
    {
    new mID,pID,color1,color2;
    if(!IsPlayerAnAdmin(playerid,3))return SendClientMessage(playerid, ROT, "Du bist kein Admin oder dein Rang ist zu niedrig!");
    if(sscanf(params,"uiii",pID,mID,color1,color2))return SendClientMessage(playerid,ROT,"Befehl: /veh [PLAYERID] [CARID] [FARBE1] [FARBE2]");
    if(mID<400||mID>611)return SendClientMessage(playerid,ROT,"Fahrzeug ID muss zwischen 411 und 611 liegen!");
    if(color1<0||color1>126||color2<0||color2>126) return SendClientMessage(playerid,ROT,"Die Farbe muss zwischen 0 und 126 liegen!");
    new Float:xc,Float:yc,Float:zc,Float:rc;
    GetPlayerPos(pID,xc,yc,zc);
    GetPlayerFacingAngle(pID,rc);
    createCar(pID,mID,xc,yc,zc,rc,color1,color2);
    return 1;
    }



    createCar(playerid,modelid,Float:x,Float:y,Float:z,Float:r,f1,f2)
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][id_x]!=0)continue;
    GetPlayerName(playerid,cInfo[i][besitzer],24);
    cInfo[i][c_x]=x;
    cInfo[i][c_y]=y;
    cInfo[i][c_z]=z;
    cInfo[i][c_r]=r;
    cInfo[i][farbe1]=f1;
    cInfo[i][farbe2]=f2;
    cInfo[i][model]=modelid;
    cInfo[i][id_x] = CreateVehicle(modelid,x,y,z,r,f1,f2,-1);
    saveCarToDB(playerid,i);
    return 1;
    }
    return 1;
    }



    saveCarToDB(playerid,carid)
    {
    new query[128];
    format(query,sizeof(query),"INSERT INTO cars (besitzer,model,farbe1,farbe2,x,y,z,r) VALUES ('%i','%i','%i','%i','%f','%f','%f','%f')",sInfo[playerid][id],cInfo[carid][model],cInfo[carid][farbe1],cInfo[carid][farbe2],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]);
    mysql_function_query(dbverbindung,query,false,"","");
    return 1;
    }







    Problem ist jetzt er speichert gar nichts mehr..
    Ist hier vll ein Fehler, dass ich hier nicht color1,color2 schreiben darf:
    createCar(pID,mID,xc,yc,zc,rc,color1,color2);

  • Danke! noch eine kleine Frage dazu warum kann ich hier jetzt
    createCar(pID,mID,xc,yc,zc,rc,color1,color2);
    color1 und color2 direkt eintragen?



    Hier funktioniert das ja so nicht:
    ocmd:test(playerid,params[])
    {
    GetPlayerName(playerid, sendename, 24);
    SendClientMessage(playerid,ORANGE,"sendename");
    return 1;
    }





    da man ja den text formatieren muss:
    ocmd:test(playerid,params[])
    {
    new text1[60];
    GetPlayerName(playerid, sendename, 24);
    format(text1, sizeof(text1), "%s",sendename);
    SendClientMessage(playerid,ORANGE,text1);
    return 1;
    }

  • Beitrag von Apokrate ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Hi, ich hätte eine kleine Frage:
    wenn man bei einem Befehl zum Beispiel 2 Integer braucht,
    wie beim /veh befehl farbe 1 und farbe 2 kann man ja new farbe[2];
    und dann kann man farbe[0] und farbe[1] verwenden
    funktioniert das auch mit strings?
    also wenn ich text1[60] habe und text2[60]
    gibts dann irgendwie sowas oder so: text[2][60]

  • funktioniert das auch mit strings?


    Ja, dafür musst du zweidimensionale Arrays verwenden, ansonsten funktioniert das nicht.


    Beispiel:


    new bla[5][60];


    Damit kannst du 5 Strings mit je maximal 60 Zeichen speichern.


    new bla[5][60];
    format(bla[0], sizeof(bla[]), "Blub");
    print(bla[0]); //Ausgabe: "Blub"


    //E: Kleinigkeit am Code verändert

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