[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 kann ich das hier mit den Menus der Shops verbinden?


    Du prüfst ob GetPlayerMoney(playerid) < pInfo[playerid][Geld] ist...falls dies der Fall ist, setzt du pInfo[playerid][Geld] = GetPlayerMoney(playerid)


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • 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.
  • 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:

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