[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
  • Kann ich das so mit der Zeitangabe machen? (time*60*60)


    ocmd:prison(playerid,params[])
    {
    new pID,time,string[256],plog[256];
    if(sscanf(params,"uis[50]",pID,time,string))
    {
    return SendClientMessage(playerid,COLOR_RED,"Benutze /prison <ID> <Dauer> <Grund>");
    }
    ArrestPlayer(pID, ARREST_LOCATION_LSPD, time*60*60);
    return 1;
    }

  • ocmd:prison(playerid,params[])
    {
    new pID,time,string[256],alog[256],msg[256];
    if(sscanf(params,"uis[50]",pID,time,string))
    {
    return SendClientMessage(playerid,COLOR_RED,"Benutze /prison <ID> <Dauer> <Grund>");
    }
    ArrestPlayer(pID, ARREST_LOCATION_LSPD, time*60);
    format(msg,sizeof(msg),"%s hat %s ins Prison geschickt. Grund: %s",GetName(playerid),GetName(pID),string);
    SendClientMessageToAll(COLOR_RED,msg);
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(time == 0) SetPlayerPos(pID, 0.0,0.0,0.0);
    }
    format(alog,sizeof(alog),"[PRISON] %s => %s => %s", GetName(playerid), GetName(pID), string);
    log("admin",alog);
    return 1;
    }


    So?


    Eine kleine sache noch, wie kann ich einstellen, dass pID mit einem Befehl überprüfen kann, wie lange er noch im Prison ist?

    • Offizieller Beitrag

    Ich glaub' ich steh total auf dem Schlauch.
    Wieso geht es nach der Gehalt-Abfrage nicht mehr weiter? Ich kann mir in etwa denken, wo der Fehler liegt nur irgendwie komme ich nicht auf die Lösung.


    SetPVarInt(i,"Paydaytime",3600);
    PaydaypP[i]=0;
    pdcars[i]=0;
    SCM(i,COLOR_BLUE,"|__________ Zahltag __________|");
    //== Alter Kontostand
    format(str,144,"Alter Kontostand: %i$",GetPVarInt(i,"Bank"));
    SCM(i,COLOR_WHITE,str);
    //== Gehalt
    if(GetPVarInt(i,"Fraktion") > 0)
    {
    format(str,144,"Gehalt: %i$",GetPVarInt(i,"Rang")*750);
    SCM(i,COLOR_WHITE,str);
    PaydaypP[i]+=GetPVarInt(i,"Rang")*750;
    }
    //== Arbeitslosengeld
    if(GetPVarInt(i,"Hartz4") == 1)
    {
    format(str,144,"Arbeitslosengeld: %i$",HARTZ4);
    SCM(i,COLOR_WHITE,str);
    PaydaypP[i]+=HARTZ4;
    }
    //== KFZ-Steuer
    for(new is;is<MAX_VEHICLES;i++)
    {
    if(IsAPlayerCar(is))
    {
    if(!strcmp(PlayerName[i],CarInfo[is][c_Owner],true))
    {
    pdcars[i]++;
    }
    }
    }
    if(pdcars[i] > 0)
    {
    format(str,144,"Fahrzeugsteuer: %i$ (%i Fahrzeuge)",pdcars[i]*150,pdcars[i]);
    SCM(i,COLOR_WHITE,str);
    PaydaypP[i]-=pdcars[i]*150;
    }
    //== Zinsen
    format(str,144,"Zinsen: %i$ (%i%%)",GetPVarInt(i,"Bank")/100*ZINSSATZ_PAYDAY);
    SCM(i,COLOR_WHITE,str);
    PaydaypP[i]+=GetPVarInt(i,"Bank")/100*ZINSSATZ_PAYDAY;
    //== Geänderter Betrag
    format(str,144,"Geänderter Betrag: %i$",PaydaypP[i]);
    SCM(i,COLOR_WHITE,str);
    //== Geld geben
    AddOnePVar(i,"Bank",PaydaypP[i]);
    //== Neuer Kontostand
    format(str,144,"Neuer Kontostand: %i$",GetPVarInt(i,"Bank"));
    SCM(i,COLOR_WHITE,str);
    //== Respektpunkt
    AddOnePVar(i,"Respektpunkte",1);
    //== Variablen resetten
    pdcars[i]=0;
    PaydaypP[i]=0

  • Ich habe das so gemacht:
    new vehTank[212] =
    {
    250,
    175,
    105,
    650,
    65,
    85,
    1450,
    564,
    234,
    156,
    80,
    124,
    134,
    87,
    87,
    150,
    235,
    560,
    123,
    100,
    100,
    100,
    150,
    165,
    65,
    560,
    120,
    150,
    250,
    123,
    256,
    180,
    750,
    345,
    85,
    25,
    134,
    256,
    100,
    100,
    100,
    25,
    124,
    434,
    734,
    100,
    700,
    563,
    35,
    1000,
    100,.....


    wie muss ich es nun definieren:
    #define GasMax

  • Beitrag von SLaYz ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Geht ziemlich einfach.
    Du erstellst 2 Textdraws (TextDrawCreate) bei OnGameModeInit, eins davon ist einfach nur weiß und geht über den ganzen Bildschirm, und das andere ist das mit dem Text (nennen wir sie tdWeiss und tdText).


    Unter die Includess:
    new trollTimer[MAX_PLAYERS] = {-1,...};


    Der Code würde dann so aussehen:
    Im Befehl /troll [id]:
    if(trollTimer[pID] != -1) KillTimer(trollTimer[pID]);
    trollTimer[pID] = SetTimerEx("TrollPlayer", 1000, 1, "d", pID);


    Bei /endtroll:
    if(trollTimer[pID] != -1) KillTimer(trollTimer[pID]);
    trollTimer[pID] = -1;


    Ganz unten im Gamemode:
    forward TrollPlayer(playerid);
    public TrollPlayer(playerid)
    {
    static bool:trollStatus[MAX_PLAYERS];
    if(trollStatus[playerid])
    {
    TextDrawHideForPlayer(playerid, tdText);
    TextDrawHideForPlayer(playerid, tdWeiss);
    trollStatus[playerid] = false;
    }
    else
    {
    TextDrawShowForPlayer(playerid, tdText);
    TextDrawShowForPlayer(playerid, tdWeiss);
    trollStatus[playerid] = true;
    }
    return 1;
    }

  • Was willst du denn machen?
    Auf die Variable mit den maximalen Tank Mengen kannst du so zugreifen:


    vehTank[GetVehicleModel(vehicleid)-400]


    Was willst du denn machen?
    Auf die Variable mit den maximalen Tank Mengen kannst du so zugreifen:


    vehTank[GetVehicleModel(vehicleid)-400]


    Daraus entstehen folgende Errors:
    C:\Users\Daniel\Desktop\irp.pwn(10042) : error 017: undefined symbol "vehicleid"
    C:\Users\Daniel\Desktop\irp.pwn(10045) : error 017: undefined symbol "vehicleid"
    C:\Users\Daniel\Desktop\irp.pwn(12410) : error 017: undefined symbol "vehicleid"
    C:\Users\Daniel\Desktop\irp.pwn(13938) : error 017: undefined symbol "vehicleid"
    C:\Users\Daniel\Desktop\irp.pwn(27456) : error 017: undefined symbol "vehicleid"


    VID = GetPlayerVehicleID(playerid);
    FillUp = GasMax - Gas[VID];//1.Error
    if(Gas[VID] < GasMax){//2.Error
    for(new veh = 0; veh < MAX_VEHICLES; veh++)
    {
    Gas[veh] = GasMax;
    VehicleObject[veh] = -1;
    }//3.Error
    FillUp = GasMax - Gas[carid];//4Error


    for(new veh = 0; veh < MAX_VEHICLES; veh++){
    Gas[veh] = GasMax;
    }//5.Error

  • Guten Tag Community,
    ich habe mal so ne frage. Sehr viele kenne ja warscheinlich das Programm sobeit*, meine Frage ist jetzt kann man sowas Scripten das User z.B. Fliegen können(ist gedacht als ein teil meines Admin-Systems, damit Admins nicht immer porten müssen)?


    Ich danke euch schonmal im Vorraus.
    MFG _J0K3R_


    *Sobeit ist ein Programm womit man in GTA SA Fliegen kann o.ä.

  • Die Fehlermeldungen passen nicht zu den Code Zeilen. Da stimmt irgendwas nicht, schau nochmal nach.


    Hier:public Fillup(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    new VID,
    FillUp,
    string[256],
    TankKosten;
    VID = GetPlayerVehicleID(playerid);//hier
    FillUp = GasMax - Gas[VID];
    TogglePlayerControllable(playerid, 1);
    if(Refueling[playerid] == 1){
    if(Gas[VID] < GasMax){
    for(new TB = 0; TB < sizeof(TankenBizInfo); TB++){
    if(PlayerToPoint(5, playerid, TankenBizInfo[TB][TBPosX], TankenBizInfo[TB][TBPosY], TankenBizInfo[TB][TBPosZ]) && TankenBizInfo[TB][TBProducts] > 0){
    TankKosten = FillUp * TankenBizInfo[TB][TBSpritPreis];
    if(IsACopCar(VID) || IsAOAmtCar(VID) || IsAMedicCar(VID))
    {
    Gas[VID] += FillUp;
    TankenBizInfo[TB][TBProducts] -= FillUp;
    format(string,sizeof(string),"* Du hast deinen Dienstwagen für $%d auf Kosten des Staates betankt.", TankKosten);
    SendClientMessage(playerid, COLOR_LIGHTBLUE,string);
    TankenBizInfo[TB][TBKasse] += TankKosten;
    ExtortionTankenBiz(TB, TankKosten/100*10);
    Refueling[playerid] = 0;
    Update3DTextTanke(TB);
    }

  • Corvus:
    In dem Code finde ich keine Variable oder sonst etwas was "vehicleid" heißt, daher kann es nicht sein, dass in den Zeilen "vehicleid" nicht definiert ist, es ist ja nicht verwendet.
    Das einzige was mir auffällt ist, dass die Variable bei dir jetzt "Gas" heißt, und nicht mehr "vehTank".
    Ansonsten passen die Error-Meldungen aber nicht zu dem Code, bzw. der Code nicht zu den Meldungen. :wacko:

  • Corvus:
    In dem Code finde ich keine Variable oder sonst etwas was "vehicleid" heißt, daher kann es nicht sein, dass in den Zeilen "vehicleid" nicht definiert ist, es ist ja nicht verwendet.
    Das einzige was mir auffällt ist, dass die Variable bei dir jetzt "Gas" heißt, und nicht mehr "vehTank".
    Ansonsten passen die Error-Meldungen aber nicht zu dem Code, bzw. der Code nicht zu den Meldungen. :wacko:


    Hab das nun so:
    #define GasMax vehTank[GetVehicleModel(veh)-400]
    Das Problem liegt daran:
    public Fillup(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    new VID, //Andere Variable
    FillUp,
    string[256],
    TankKosten;
    VID = GetPlayerVehicleID(playerid); //Doppelte Auslesung weil wir oben schon das ja deklariert haben.
    FillUp = GasMax - Gas[VID];
    TogglePlayerControllable(playerid, 1);
    if(Refueling[playerid] == 1){
    if(Gas[VID] < GasMax){//hier wird abgezogen aber oben ist da anderst deklariert und somit geht das nicht.
    for(new TB = 0; TB < sizeof(TankenBizInfo); TB++){
    if(PlayerToPoint(5, playerid, TankenBizInfo[TB][TBPosX], TankenBizInfo[TB][TBPosY], TankenBizInfo[TB][TBPosZ]) && TankenBizInfo[TB][TBProducts] > 0){
    TankKosten = FillUp * TankenBizInfo[TB][TBSpritPreis];
    if(IsACopCar(VID) || IsAOAmtCar(VID) || IsAMedicCar(VID))
    {
    Gas[VID] += FillUp;
    TankenBizInfo[TB][TBProducts] -= FillUp;
    format(string,sizeof(string),"* Du hast deinen Dienstwagen für $%d auf Kosten des Staates betankt.", TankKosten);
    SendClientMessage(playerid, COLOR_LIGHTBLUE,string);
    TankenBizInfo[TB][TBKasse] += TankKosten;
    ExtortionTankenBiz(TB, TankKosten/100*10);
    Refueling[playerid] = 0;
    Update3DTextTanke(TB);
    }
    Sobald ich das an oben anpasse bekomme ich Gamemode Unknown

  • z.B. Fliegen können


    Es ist nicht alles möglich, aber einiges. Fliegen unter anderem ist möglich.


    Ein Beispiel Skript für einen flymode gibt es als FilterSkript von h02:


    flymode.pwn
    //-------------------------------------------------
    //
    // This is an example of using the AttachCameraToObject function
    // to create a no-clip flying camera.
    //
    // h02 2012
    //
    // SA-MP 0.3e and above
    //
    //-------------------------------------------------

    flymode.pwn
    #include <a_samp>

    flymode.pwn
    // Players Move Speed
    #define MOVE_SPEED 100.0
    #define ACCEL_RATE 0.03

    flymode.pwn
    // Players Mode
    #define CAMERA_MODE_NONE 0
    #define CAMERA_MODE_FLY 1

    flymode.pwn
    // Key state definitions
    #define MOVE_FORWARD 1
    #define MOVE_BACK 2
    #define MOVE_LEFT 3
    #define MOVE_RIGHT 4
    #define MOVE_FORWARD_LEFT 5
    #define MOVE_FORWARD_RIGHT 6
    #define MOVE_BACK_LEFT 7
    #define MOVE_BACK_RIGHT 8

    flymode.pwn
    // Enumeration for storing data about the player
    enum noclipenum
    {
    cameramode,
    flyobject,
    mode,
    lrold,
    udold,
    lastmove,
    Float:accelmul
    }
    new noclipdata[MAX_PLAYERS][noclipenum];

    flymode.pwn
    //--------------------------------------------------

    flymode.pwn
    public OnFilterScriptExit()
    {
    // If any players are still in edit mode, boot them out before the filterscript unloads
    for(new x; x<MAX_PLAYERS; x++)
    {
    if(noclipdata[x][cameramode] == CAMERA_MODE_FLY) CancelFlyMode(x);
    }
    return 1;
    }

    flymode.pwn
    //--------------------------------------------------

    flymode.pwn
    public OnPlayerConnect(playerid)
    {
    // Reset the data belonging to this player slot
    noclipdata[playerid][cameramode] = CAMERA_MODE_NONE;
    noclipdata[playerid][lrold] = 0;
    noclipdata[playerid][udold] = 0;
    noclipdata[playerid][mode] = 0;
    noclipdata[playerid][lastmove] = 0;
    noclipdata[playerid][accelmul] = 0.0;
    return 1;
    }

    flymode.pwn
    //--------------------------------------------------

    flymode.pwn
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(!strcmp(cmdtext, "/flymode", true))
    {
    // Place the player in and out of edit mode
    if(GetPVarType(playerid, "FlyMode")) CancelFlyMode(playerid);
    else FlyMode(playerid);
    return 1;
    }
    return 0;
    }

    flymode.pwn
    //--------------------------------------------------

    flymode.pwn
    public OnPlayerUpdate(playerid)
    {
    if(noclipdata[playerid][cameramode] == CAMERA_MODE_FLY)
    {
    new keys,ud,lr;
    GetPlayerKeys(playerid,keys,ud,lr);

    flymode.pwn
    if(noclipdata[playerid][mode] && (GetTickCount() - noclipdata[playerid][lastmove] > 100))
    {
    // If the last move was > 100ms ago, process moving the object the players camera is attached to
    MoveCamera(playerid);
    }

    flymode.pwn
    // Is the players current key state different than their last keystate?
    if(noclipdata[playerid][udold] != ud || noclipdata[playerid][lrold] != lr)
    {
    if((noclipdata[playerid][udold] != 0 || noclipdata[playerid][lrold] != 0) && ud == 0 && lr == 0)
    { // All keys have been released, stop the object the camera is attached to and reset the acceleration multiplier
    StopPlayerObject(playerid, noclipdata[playerid][flyobject]);
    noclipdata[playerid][mode] = 0;
    noclipdata[playerid][accelmul] = 0.0;
    }
    else
    { // Indicates a new key has been pressed

    flymode.pwn
    // Get the direction the player wants to move as indicated by the keys
    noclipdata[playerid][mode] = GetMoveDirectionFromKeys(ud, lr);

    flymode.pwn
    // Process moving the object the players camera is attached to
    MoveCamera(playerid);
    }
    }
    noclipdata[playerid][udold] = ud; noclipdata[playerid][lrold] = lr; // Store current keys pressed for comparison next update
    return 0;
    }
    return 1;
    }

    flymode.pwn
    //--------------------------------------------------

    flymode.pwn
    stock GetMoveDirectionFromKeys(ud, lr)
    {
    new direction = 0;

    if(lr < 0)
    {
    if(ud < 0) direction = MOVE_FORWARD_LEFT; // Up & Left key pressed
    else if(ud > 0) direction = MOVE_BACK_LEFT; // Back & Left key pressed
    else direction = MOVE_LEFT; // Left key pressed
    }
    else if(lr > 0) // Right pressed
    {
    if(ud < 0) direction = MOVE_FORWARD_RIGHT; // Up & Right key pressed
    else if(ud > 0) direction = MOVE_BACK_RIGHT; // Back & Right key pressed
    else direction = MOVE_RIGHT; // Right key pressed
    }
    else if(ud < 0) direction = MOVE_FORWARD; // Up key pressed
    else if(ud > 0) direction = MOVE_BACK; // Down key pressed

    return direction;
    }

    flymode.pwn
    //--------------------------------------------------

    flymode.pwn
    stock MoveCamera(playerid)
    {
    new Float:FV[3], Float:CP[3];
    GetPlayerCameraPos(playerid, CP[0], CP[1], CP[2]); // Cameras position in space
    GetPlayerCameraFrontVector(playerid, FV[0], FV[1], FV[2]); // Where the camera is looking at

    flymode.pwn
    // Increases the acceleration multiplier the longer the key is held
    if(noclipdata[playerid][accelmul] <= 1) noclipdata[playerid][accelmul] += ACCEL_RATE;

    flymode.pwn
    // Determine the speed to move the camera based on the acceleration multiplier
    new Float:speed = MOVE_SPEED * noclipdata[playerid][accelmul];

    flymode.pwn
    // Calculate the cameras next position based on their current position and the direction their camera is facing
    new Float:X, Float:Y, Float:Z;
    GetNextCameraPosition(noclipdata[playerid][mode], CP, FV, X, Y, Z);
    MovePlayerObject(playerid, noclipdata[playerid][flyobject], X, Y, Z, speed);

    flymode.pwn
    // Store the last time the camera was moved as now
    noclipdata[playerid][lastmove] = GetTickCount();
    return 1;
    }

    flymode.pwn
    //--------------------------------------------------

    flymode.pwn
    stock GetNextCameraPosition(move_mode, Float:CP[3], Float:FV[3], &Float:X, &Float:Y, &Float:Z)
    {
    // Calculate the cameras next position based on their current position and the direction their camera is facing
    #define OFFSET_X (FV[0]*6000.0)
    #define OFFSET_Y (FV[1]*6000.0)
    #define OFFSET_Z (FV[2]*6000.0)
    switch(move_mode)
    {
    case MOVE_FORWARD:
    {
    X = CP[0]+OFFSET_X;
    Y = CP[1]+OFFSET_Y;
    Z = CP[2]+OFFSET_Z;
    }
    case MOVE_BACK:
    {
    X = CP[0]-OFFSET_X;
    Y = CP[1]-OFFSET_Y;
    Z = CP[2]-OFFSET_Z;
    }
    case MOVE_LEFT:
    {
    X = CP[0]-OFFSET_Y;
    Y = CP[1]+OFFSET_X;
    Z = CP[2];
    }
    case MOVE_RIGHT:
    {
    X = CP[0]+OFFSET_Y;
    Y = CP[1]-OFFSET_X;
    Z = CP[2];
    }
    case MOVE_BACK_LEFT:
    {
    X = CP[0]+(-OFFSET_X - OFFSET_Y);
    Y = CP[1]+(-OFFSET_Y + OFFSET_X);
    Z = CP[2]-OFFSET_Z;
    }
    case MOVE_BACK_RIGHT:
    {
    X = CP[0]+(-OFFSET_X + OFFSET_Y);
    Y = CP[1]+(-OFFSET_Y - OFFSET_X);
    Z = CP[2]-OFFSET_Z;
    }
    case MOVE_FORWARD_LEFT:
    {
    X = CP[0]+(OFFSET_X - OFFSET_Y);
    Y = CP[1]+(OFFSET_Y + OFFSET_X);
    Z = CP[2]+OFFSET_Z;
    }
    case MOVE_FORWARD_RIGHT:
    {
    X = CP[0]+(OFFSET_X + OFFSET_Y);
    Y = CP[1]+(OFFSET_Y - OFFSET_X);
    Z = CP[2]+OFFSET_Z;
    }
    }
    }
    //--------------------------------------------------

    flymode.pwn
    stock CancelFlyMode(playerid)
    {
    DeletePVar(playerid, "FlyMode");
    CancelEdit(playerid);
    TogglePlayerSpectating(playerid, false);

    flymode.pwn
    DestroyPlayerObject(playerid, noclipdata[playerid][flyobject]);
    noclipdata[playerid][cameramode] = CAMERA_MODE_NONE;
    return 1;
    }

    flymode.pwn
    //--------------------------------------------------

    flymode.pwn
    stock FlyMode(playerid)
    {
    // Create an invisible object for the players camera to be attached to
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
    noclipdata[playerid][flyobject] = CreatePlayerObject(playerid, 19300, X, Y, Z, 0.0, 0.0, 0.0);

    flymode.pwn
    // Place the player in spectating mode so objects will be streamed based on camera location
    TogglePlayerSpectating(playerid, true);
    // Attach the players camera to the created object
    AttachCameraToPlayerObject(playerid, noclipdata[playerid][flyobject]);

    flymode.pwn
    SetPVarInt(playerid, "FlyMode", 1);
    noclipdata[playerid][cameramode] = CAMERA_MODE_FLY;
    return 1;
    }

    flymode.pwn
    //--------------------------------------------------


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S