[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
  • Hey, gibt es eine Funktion die abfragt, welches das nähste Auto in Reichweite vom Spieler ist?


    Falls nein, wie würde so eine aussehen?


    Verwendungszwecke: Vehicleparams wie Alarm(Lock) wenn man neben dem Auto steht

    SA:MP in 2020?

  • Hey, gibt es eine Funktion die abfragt, welches das nähste Auto in Reichweite vom Spieler ist?


    Falls nein, wie würde so eine aussehen?


    Verwendungszwecke: Vehicleparams wie Alarm(Lock) wenn man neben dem Auto steht



    stock GetNearestVehicle(playerid, Float:MaxDistanz)
    {
    new Float:PositionX, Float:PositionY, Float:PositionZ, Float:Distanz, ReturnElement = -1;


    for(new i = 0; i < MAX_VEHICLES; i++)
    {
    GetVehiclePos(i, PositionX, PositionY, PositionZ);
    Distanz = GetPlayerDistanceFromPoint(playerid, PositionX, PositionY, PositionZ);


    if(ReturnElement == -1)
    {
    if(MaxDistanz >= Distanz)
    {
    ReturnElement = i;
    MaxDistanz = Distanz;
    }
    }
    else if(ReturnElement != -1)
    {
    GetVehiclePos(ReturnElement, PositionX, PositionY, PositionZ);


    if(Distanz > GetPlayerDistanceFromPoint(playerid, PositionX, PositionY, PositionZ) && MaxDistanz >= Distanz)
    {
    ReturnElement = i;
    MaxDistanz = Distanz;
    }
    }
    }
    return ReturnElement;
    }

  • Hi, habe eine Progressbar erstellt und möchte die jetzt updaten sodass man sehen kann wie lange noch eine Runde läuft, wie genau berechne ich jetzt den einzutragenen Wert aus?


    So sieht ein Teil meiner Roundtimer Funktion aus:




    forward RoundTimer(areaid);
    public RoundTimer(areaid)
    {
    switch(Round[r_func])
    {
    case 0, 2:
    {
    if(Round[r_func] == 2)
    {
    Round[r_time][RTIME_SECONDS]--;
    if(Round[r_time][RTIME_SECONDS] <= 0)
    {
    Round[r_time][RTIME_MINUTES]--;
    if(Round[r_time][RTIME_MINUTES] + 1 > 0)
    {
    Round[r_time][RTIME_SECONDS] = 59;
    }
    else
    {
    Round[r_time][RTIME_MINUTES] = 0;
    Round[r_time][RTIME_SECONDS] = 0;
    Round[r_func] = 0;
    for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++) PlayerTextDrawSetString(i, TimerValue[i], " ~g~Loading..");
    }
    }
    if(!(Round[r_time][RTIME_MINUTES] <= 0 && Round[r_time][RTIME_SECONDS] <= 0))
    {
    new str[15];
    format(str, sizeof(str), " ~g~%02d:%02d", Round[r_time][RTIME_MINUTES], Round[r_time][RTIME_SECONDS]);
    for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++) PlayerTextDrawSetString(i, TimerValue[i], str);
    for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++) SetPlayerProgressBarValue(i, TimerBar[i], 100); //Test Value



    return 1;
    }
    }
    if(Round[r_starting] == true)
    return 1;


    Habe da bei SetPlayerProgressBarValue erstmal 100 als Test eingetragen, weil ich nicht weiß wie ich das machen soll :/


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Hey undzwar hab ich ein problem mit dem Checkpoint Prison System von pRP,
    es ist auf random eingestellt ich möchte das die Checkpoints aber nach der reinfolge kommen.
    Hab vieles versucht aber bei mir erscheinen die Checkpoints dann nicht ^^


    Prison Checkpoint System:



    if(Spieler[playerid][pInPrison] == 1)
    {
    if(Spieler[playerid][pMaske] == 1 || Spieler[playerid][pDuty] == 4)
    {
    SetPlayerName(playerid,Spieler[playerid][pName]);
    SetPlayerScore(playerid,GetPlayerLevel(playerid));
    }
    if(Spieler[playerid][pDuty] == 1 && isPlayerInFrakt(playerid,14)) if(IsValidDynamic3DTextLabel(fSCHULleher[playerid])) DestroyDynamic3DTextLabel(fSCHULleher[playerid]);
    ResetWeapons(playerid,false);
    if(!isPlayerInFrakt(playerid,16)) Spieler[playerid][pDuty] = 0;
    Spieler[playerid][pMaske] = 0;
    Spieler[playerid][pHaveMaske] = 0;
    GangZoneStopFlashForPlayer(playerid,Friedhofszone);
    GangZoneHideForPlayer(playerid,Friedhofszone);
    SetPlayerColor(playerid,SAMP_WEISS);
    SetPlayerPosEx(playerid,1296.5354,2780.4092,10.8203);
    SetPlayerInterior(playerid,0);
    Spieler[playerid][pHandystate] = 0;
    SetPlayerVirtualWorld(playerid,200);
    new changeskin = random(11);
    switch(changeskin)
    {
    case 0: SetPlayerSkin(playerid,26);
    case 1: SetPlayerSkin(playerid,51);
    case 2: SetPlayerSkin(playerid,78);
    case 3: SetPlayerSkin(playerid,94);
    case 4: SetPlayerSkin(playerid,101);
    case 5: SetPlayerSkin(playerid,137);
    case 6: SetPlayerSkin(playerid,167);
    case 7: SetPlayerSkin(playerid,205);
    case 8: SetPlayerSkin(playerid,264);
    case 9: SetPlayerSkin(playerid,239);
    case 10: SetPlayerSkin(playerid,230);
    case 11: SetPlayerSkin(playerid,289);
    }
    HideServerTD(playerid);
    SetPlayerWorldBounds(playerid,1404.205,1103.531,2858.022,2707.167);
    PlayerTextDrawShow(playerid,PRISONdraw[playerid]);
    format(string,sizeof(string),"~w~Checkpoints: ~y~%i ~w~von ~r~%i",Spieler[playerid][pPrisonCPsgelaufen],Spieler[playerid][pPrisonCPsgegeben]);
    PlayerTextDrawSetString(playerid,PRISONdraw[playerid],string);
    new rSpawn = random(sizeof(Prisoncheckpoints));
    SetPlayerCheckpoint(playerid,Prisoncheckpoints[rSpawn][0],Prisoncheckpoints[rSpawn][1],Prisoncheckpoints[rSpawn][2],1.0);
    GameTextForPlayer(playerid,"~w~Im ~r~Prison",1500,3);
    SendClientMessage(playerid,SAMP_WEISS,"Du bist im Prison.");
    format(string,sizeof(string),"Du musst noch %i von %i Checkpoints ablaufen.",Spieler[playerid][pPrisonCPsgelaufen],Spieler[playerid][pPrisonCPsgegeben]);
    SendClientMessage(playerid,WEISS,string);
    SendClientMessage(playerid,WEISS,"");
    KillTimer(AkkuTimer[playerid]);
    HideHandyDraw(playerid);
    return 1;
    }


    bedanke mich schonmal im vorraus!

  • Hey, als ich das letzte mal ein Gamemode gemacht habe, war das schon ne Weile her, glaube sogar schon ein Jahr.


    Muss man eigentlich MAX_VEHICLES und MAX_PLAYERS im Script definieren, oder ist das egal?

    SA:MP in 2020?

  • Wo liegt mein Fehler?


    ocmd:makeleader(playerid, params[])
    {
    if(!isAdmin(playerid, 7))return SendClientMessage(playerid,COLOR_ROT, "Server: Dein Adminrang ist zu niedrig!");
    new pID, fID;
    if(sscanf(params,"ui",pID,fID))return SendClientMessage(playerid, COLOR_ROT, "INFO: /makeleader [playerid] [FraktionID]");
    if(fID > 16)return SendClientMessage(playerid,COLOR_ROT, "Server: Diese Fraktion exestriert nicht!"), SendClientMessage(playerid,COLOR_ROT, "Benutze /fraktionen um die Fraktionsliste zu sehen.");
    sI[pID][pFraktion] = fID;
    sI[pID][pFraktionRang] = 6;
    new string[128];
    format(string,sizeof(string),"* %s hat dich zum Leader der Fraktion %s gemacht", sI[playerid][pName], FraktionName(fID));
    SendClientMessage(pID, COLOR_GELB, string);
    new string2[256];
    format(string2, sizeof(string2), "* Du hast den Spieler %s zum Leader der Fraktion %s gemacht.", sI[pID][pName], FraktionName(fID));
    SendClientMessage(playerid, COLOR_ROT, string2);
    return 1;
    }


  • kann mir jmd helfen?

  • kann mir jmd helfen?


    könntest du uns noch dein Enum senden vom Prison System?
    Der "Fehler" bzw das Problem liegt in dieser Zeile:

    Code
    new rSpawn = random(sizeof(Prisoncheckpoints));
    SetPlayerCheckpoint(playerid,Prisoncheckpoints[rSpawn][0],Prisoncheckpoints[rSpawn][1],Prisoncheckpoints[rSpawn][2],1.0);

    da du hier ja immer per zufall ein Checkpoint setzt. Ist das jetzt vom Befehl wenn du den Spieler ins Prison setzt?
    Weil wenn ja dann müsste man eventuell schaun unter dem public wo der Spieler diese abläuft ob da auch etwas mit Random ist ^^

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • ocmd:roller(playerid, params[])
    {
    if(sI[playerid][pLevel] > 2)return SendClientMessage(playerid, COLOR_ROT, "Server: Du bist kein Neuling mehr!");
    {
    new Float:r_X,Float:r_Y,Float:r_Z, Float:r_R;
    GetPlayerPos(playerid,r_X,r_Y,r_Z);
    GetPlayerFacingAngle(playerid, r_R);
    if(sI[playerid][pRoller] == 0)
    {


    }
    else
    {


    }
    }
    return 1;
    }



    Code
    C:\Users\Marcel\Desktop\SAMP Projekt\Server\gamemodes\PNR.pwn(354) : warning 213: tag mismatch
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    1 Warning.

    Warning in Zeile:
    if(sI[playerid][pRoller] == 0)

  • Mein Enum:


    enum SpielerDaten
    {
    p_ID,
    pName[MAX_PLAYER_NAME],
    pGeschlecht,
    pAlter[11],
    pEMail[128],
    pLevel,
    pUpPoints,
    pGeld,
    pBankKonto,
    pBankGeld,
    pFraktion,
    pFraktionRang,
    pAdmin,
    pSkin,
    pTutorial,
    pSpawn,
    //Bool's
    bool:pRoller,
    bool:pAdminDuty,
    bool:pPasswort[65],
    bool:pLoggedIn,
    };

  • Hallo,


    ich wollte mal wissen ob ich damit Cheatsicher bin vor dem Geldhack :D


    Also ich hab eine Variable pGeld und diese wird die ganze zeit verwendet für das gezahlen undso :D


    Ich hab mir noch überlegt ob ich ein Timer mache der alle 30 Sekunden den Geldwert mit SetPlayerMoney(playerid, sI[playerid][pGeld]);


    wäre dass so sicher?