Beiträge von [C]Jack

    Heyho,


    meine Frage, ich suche schon die ganze Zeit nach einem Zebrastreifen, habe aber noch nichts gefunden,
    gibt es überhaupt einen Zebrastreien?
    Dann könnte ich ja noch lange suchen ..^^

    Ich habe irgendwie immer ein Problem mit der playerid im TImer, hab schon alles mögliche versucht, doch es klappt nie.
    Hier ein Beispiel:


    oben:
    forward gametexttimer(playerid);


    Dann darunter das Public:
    public gametexttimer(playerid)
    {
    if(IsPlayerInRangeOfPoint(playerid,3,1186.70, -917.30, 42.90))
    {
    GameTextForPlayer(playerid,"~w~Geben Sie ~g~/ATM~w~ ein um Geld ab- oder draufzuzahlen.",5000,3);
    return 1;
    }
    if(IsPlayerInRangeOfPoint(playerid,3,1441.80, -1010.20, 26.50))
    {
    GameTextForPlayer(playerid,"~w~Geben Sie ~g~/ATM~w~ ein um Geld ab- oder draufzuzahlen.",5000,3);
    return 1;
    }
    if(IsPlayerInRangeOfPoint(playerid,3,1092.30, -1803.60, 13.20))
    {
    GameTextForPlayer(playerid,"~w~Geben Sie ~g~/ATM~w~ ein um Geld ab- oder draufzuzahlen.",5000,3);
    return 1;
    }
    if(IsPlayerInRangeOfPoint(playerid,3,1511.50, -1682.40, 13.70))
    {
    GameTextForPlayer(playerid,"~w~Geben Sie ~g~/ATM~w~ ein um Geld ab- oder draufzuzahlen.",5000,3);
    return 1;
    }
    if(IsPlayerInRangeOfPoint(playerid,3,732.40, -1338.10, 13.200))
    {
    GameTextForPlayer(playerid,"~w~Geben Sie ~g~/ATM~w~ ein um Geld ab- oder draufzuzahlen.",5000,3);
    return 1;
    }
    if(IsPlayerInRangeOfPoint(playerid,3,378.60, -2060.40, 7.50))
    {
    GameTextForPlayer(playerid,"~w~Geben Sie ~g~/ATM~w~ ein um Geld ab- oder draufzuzahlen.",5000,3);
    return 1;
    }
    if(IsPlayerInRangeOfPoint(playerid,3,1737.50, -1863.50, 13.20))
    {
    GameTextForPlayer(playerid,"~w~Geben Sie ~g~/ATM~w~ ein um Geld ab- oder draufzuzahlen.",5000,3);
    return 1;
    }
    return 1;
    }


    Unter OnPlayerConnect
    SetTimer("gametexttimer",137,true);


    Das Problem ist, das der Text nun nur für die Person / den User mit der ID 0 angezeigt wird.
    Ich habe es schon öffter auch mit SetTimerEx versucht, doch ich setzte es wahrscheinlcih immer falsch ein.

    Nicht so ganz,
    ich versuchs noch mal zu erklären anhand eines Beispiels:


    Es gibt auf der ganzen Map viele Burgershots, doch wenn man in LV in einen geht und eine andere Person in LS in einen, sollen die Leute sich nicht sehen, obwohl sie im gleichen Interior sind, also muss ich die Virtual World ändern.
    Um das scripten nun zu vereinfachen möchte ich gern einen Befehl erstellen, mit den Parametern:
    SetInt(playerid,Float:X,Float:Y,Float:Z,Interior,VirtualWorld)
    sodass ich nicht jedes mal folgendes machen muss:


    if(pickupid==bsnenter)
    {
    SetPlayerPos(playerid,X,Y,Z);
    SetPlayerVirtualWorld(playerid,2);
    SetPlayerInterior(playerid,2);
    return 1;
    }


    sondern einfach:


    if(pickupid==bsnenter)
    {
    SetInt(playerid,X,Y,Z,2,2);
    return 1;
    }

    Hey,


    ich würde mir gerne einen Befehl erstellen:
    SetInt(playerid,Float:X,Float:Y,Float:Z,Interior,VirtualWorld)
    Doch hab ich soetwas noch nie gemacht, also brauche etwas hilfe.


    Hab so schon mal angefanen:


    stock SetInt(playerid,Float:X,Float:Y,Float:Z,Interior,VirtualWorld)
    {


    oder lieber mit einem public? und was muss da rein?

    Ich hab nun unten im Stock den Timer gesetzt,


    Muss ich dann oben einfach wie vorher


    forward Tut(playerid);


    und dann



    public TutBSN(playerid)
    {
    TextDrawHideForPlayer(playerid,Text:BSN1);
    TextDrawHideForPlayer(playerid,Text:BSN2);
    InterpolateCameraPos(playerid, 1012.8224,-1713.9231,70.4898,/**/ 1036.6874,-1876.9349,70.4898, 10000, CAMERA_MOVE);
    InterpolateCameraLookAt(playerid,1033.0063,-1730.6783,13.3883-10,/**/1033.0063,-1730.6783,13.3883-10,10000,CAMERA_MOVE);
    TogglePlayerControllable(playerid,0);
    TextDrawShowForPlayer(playerid,Text:FBI1);
    TextDrawShowForPlayer(playerid,Text:FBI2);
    SetTimerEx("Tut2", 15000, false, "i",playerid);
    return 1;
    }


    oder muss ich das hier mit einbauen?
    for(new i = 0; i <= MAX_PLAYERS; i++)


    @SunRise:

    Hey,


    ich habe ein kleine Tutorial gescriptet,
    Es beginnt mit einem stock


    In dem Stock wird die Kamera auf eine bestimmte Position gerichtet und es wid etwas erklärt,
    doch nun möchte ich, dass er diese Position + die Schrift 15 sec hält, ich hab nun am ende des Stock´s
    einen Timer (SetTimer,"Tut",15000,false)
    Doch alles was im Timer passieren soll, passiert dann immer bei der ID 0.
    Wie kann ich nun die playerid unten aus dem Stock, oben in den Timer nehmen? SetTimerEx? GetPlayerID?


    mfG
    The_Driver

    Habs jetzt so gemacht:



    if(strcmp(cmd, "/admins",true)==0)
    {
    SendClientMessage(playerid,COLOR_GRAD1,"Admins Online:");
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(GetPVarInt(i, "Adminlevel") == 1)
    {
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string, 256, "Supporter: %s", sendername);
    SendClientMessage(playerid, COLOR_GRAD2, string);
    }
    if(GetPVarInt(i, "Adminlevel") == 2)
    {
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string, 256, "Supporter/Moderator: %s", sendername);
    SendClientMessage(playerid, COLOR_GRAD2, string);
    }
    if(GetPVarInt(i, "Adminlevel") >=3 && GetPVarInt(i, "Adminlevel") <=1337)// Einfach mit " >= 3 " und " <= 1337 " anstatt " >2 " und " >1338"
    {
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string, 256, "Admin: %s", sendername);
    SendClientMessage(playerid, COLOR_GRAD2, string);
    }
    return 1;
    }
    }
    return 1;


    Und es klappt :)

    Gut, danke das klappt schon mal :)
    Nun hätte ich nur noch eine kleine Frage :D
    Ich möchte das bei den verschiedenen Rängen auch verschiedene 'Titel' angezeigt werden, und man ab dem Rang 1338 nicht mehr angezeigt wird.
    if(strcmp(cmd, "/admins",true)==0)
    {
    SendClientMessage(playerid,COLOR_GRAD1,"Admins Online:");
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(GetPVarInt(i, "Adminlevel") == 1)
    {
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string, 256, "Supporter: %s", sendername);
    SendClientMessage(playerid, COLOR_GRAD2, string);
    }
    if(GetPVarInt(i, "Adminlevel") == 2)
    {
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string, 256, "Supporter/Moderator: %s", sendername);
    SendClientMessage(playerid, COLOR_GRAD2, string);
    }
    if(GetPVarInt(i, "Adminlevel") > 2 && GetPVarInt(i, "Adminlivel") < 1338) // In dieser Zeile ist etwas flasch, doch was :D
    {
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string, 256, "Admin: %s", sendername);
    SendClientMessage(playerid, COLOR_GRAD2, string);
    }
    return 1;
    }
    }
    return 1;
    }


    So wie ich es jetzt hab, wird bei dem Rang 1 "Supporter: NAME ", bei dem Rang 2 "Supporter/Moderator: NAME" u. bei ALLEN Rängen über 2 "Admin: NAME" angezeigt, doch ich möchte halt wie gesagt, dass nur die Ränge 3 - 1337 als "Admin: NAME" angezeigt werden.



    /e: Habs auch mal so ausprobiert:
    if(strcmp(cmd, "/admins",true)==0)
    {
    SendClientMessage(playerid,COLOR_GRAD1,"Admins Online:");
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(GetPVarInt(i, "Adminlevel") == 1)
    {
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string, 256, "Supporter: %s", sendername);
    SendClientMessage(playerid, COLOR_GRAD2, string);
    }
    if(GetPVarInt(i, "Adminlevel") == 2)
    {
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string, 256, "Supporter/Moderator: %s", sendername);
    SendClientMessage(playerid, COLOR_GRAD2, string);
    }
    if(GetPVarInt(i, "Adminlevel") > 2 && GetPVarInt(i, "Adminlivel") < 1338)
    {
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string, 256, "Admin: %s", sendername);
    SendClientMessage(playerid, COLOR_GRAD2, string);
    }
    if(GetPVarInt(i, "Adminlevel") >= 2000)
    {
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string, 256, "Projektleiter: %s", sendername);
    SendClientMessage(playerid, COLOR_GRAD2, string);
    }
    return 1;
    }
    }
    return 1;
    }


    ..doch dann wird bei einem Rang von 2000+ Angezeigt:


    Code
    Admins online:
    Admin: Fredi
    Projektleiter: Fredi

    Meine Adminabfrage funzt über einen stock


    stock isPlayerAnAdmin(playerid,rang)
    {
    if(GetPVarInt(playerid,"Adminlevel")>=rang)return 1;
    return 0;
    }



    Mein Problem liegt halt daran, da ich nicht weiß wie ich das Adminlevel von anderen Usern abfrage

    Hab nu ein bisschen rumprobiert, wenn ich es so mache:
    if(strcmp(cmd, "/admins",true)==0)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(GetPVarInt(i, "Adminlevel") > 0);
    {
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string, 256, "Admin: %s", sendername);
    SendClientMessage(playerid, COLOR_GRAD2, string);
    }
    }
    }
    return 1;
    }
    kommt der Error:

    Code
    (697) : error 036: empty statement


    Wenn ich es so mache:
    if(strcmp(cmd, "/admins",true)==0)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    new admin[MAX_PLAYERS];
    GetPVarInt(playerid, pAdmin) = admin[playerid];

    if(admin[playerid] > 1 && admin[playerid] <1338)
    {
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string, 256, "Admin: %s", sendername);
    SendClientMessage(playerid, COLOR_GRAD2, string);
    }
    }
    }
    return 1;
    }
    kommen diese beiden errors:

    Code
    (695) : error 017: undefined symbol "pAdmin"
    (695) : warning 215: expression has no effect


    Was muss ich ändern?

    Hey, ich hab mal eine kleine Frage.
    Wie erstell ich den /admins - Befehl mit GetPVarInt.
    Ich hab mal in GF geschaut, doch da ist es eben nicht mit GetPVarInt sondern mit
    if(PlayerInfo[i][pAdmin] >= 1 ......


    Der Befehl sollte dann so ähnlich wie der hier sein nur halt wie gesagt mit GetPVarInt:


    if (strcmp(cmd, "/admins", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Admins Online:");
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(PlayerInfo[i][pAdmin] >= 1 && PlayerInfo[i][pAdmin] < 1338)
    {
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string, 256, "Admin: %s", sendername);
    SendClientMessage(playerid, COLOR_GRAD2, string);
    }
    }
    }
    }
    return 1;
    }