Beiträge von Hagi

    Ah ja hast recht


    im timer


    forward timecheck();


    SetTimer("timecheck",3600000,1);


    public timecheck()
    {
    new hour,minute,second;
    gettime(hour,minute,second);
    new string[256];
    format(string,sizeof(string),"Es ist %d,%d,%d Uhr",hour,minute,second);
    SendClientMessageToAll(farbe,string);
    SetWorldTime(hour);
    }


    Aber das hier ist denk ich besser


    forward timecheck();


    SetTimer(timecheck,60000,1);


    public timecheck()
    {
    new hour,minute,second;
    gettime(hour,minute,second);
    if(minute == 0)
    {
    new string[256];
    format(string,sizeof(string),"Es ist nun %d Uhr",hour);
    SendClientMessageToAll(farbe,string);
    SetWorldTime(hour);
    }
    }

    forward timecheck();


    SetTimer(timecheck,3600000,1);


    public timecheck()
    {
    new hour,minute,second;
    gettime(hour,minute,second);
    new string[256];
    format(string,sizeof(string),"Es ist %d,%d,%d Uhr",hour,minute,second);
    SendClientMessageToAll(farbe,string);
    SetWorldTime(hour);
    }

    öhm hier


    forward timecheck();


    SetTimer(timecheck,1000*60*60,1);


    public timecheck()
    {
    new hour,minute,second;
    Gettime(hour,minute,second);
    new string[256];
    format(string,sizeof(string),"Es ist %d,%d,%d Uhr",hour,minute,second);
    SendClientMessageToAll(farbe,string);
    SetWorldTime(hour);
    }


    Sollte eigentlich so funktionieren

    Hier schau mal


    Das ist dein Code


    AddPlayerClass(265,218.6827,119.1074,1003.2188,123.3172,0,0,0,0,0,0); // waffen pd 1


    Man brauch für den Pickup dies


    CreatePickup(model,type,x,y,z,world)


    model = Die Waffe die erscheinen soll also = 394
    type = Was es für ein Pickup ist also = 23
    x,y,z ist aus deiner savepos isoliert worden = 218.6827(x),119.1074(y),1003.2188(z)
    world = in welche interiors das pickup angezeigt werden soll = -1 für alle interiors


    Alles weitere siehe hier http://wiki.sa-mp.com/wiki/Pickups

    Bitteschön


    new waffe; // Unter #inlude <a_samp>
    waffe = CreatePickup(349,23,218.6827,119.1074,1003.2188,-1); // Unter OnGameModeInit


    Damit hast du dann dort ein Pickup mit einer Schrotflinte

    Hier dcmd


    In OnPlayerCommandtext


    dcmd(afk,3,cmdtext);


    Dann unter OnPlayerCommand Text



    dcmd_afk(playerid,params[])
    {
    new grund[256];


    if(sscanf(params, "s",grund))
    {
    return SendClientMessage(playerid,weiß,"Benutzung: /afk [Grund]");
    }
    new playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    new string[256];
    format(string,sizeof(string),"Spieler %s ist AFK. Grund: %s",playername,grund);
    SendClientMessageToAll(farbe,string);
    SetPlayerColor(playerid, COLOR_NEONGREEN);
    mute[playerid] = 1;


    }


    Für Back halt das gleich nur die Werte ändern

    Also das zweite Problem habe ich dank kleinerOpa gelöst


    Nun hab ich nochmal ein bisschen durchprobiert


    Der Textdraw funktioniert wenn man anstatt des ladenzeitstring einfach "test" oder so macht.


    Sobald man den ladenzeitstring mit rein nimmt, beendet sich die server exe, wenn ein spieler connected


    @dit:


    Also das hat doch nicht funktioniert
    Der 2te Textdraw Ladenzeit ersetzt den 1sten Textdraw Verision, obwohl ich Version vor Ladenzeit aktualisiere.
    Desweiteren bekommen alle Spieler immer den gleichen Textdraw.


    Weiß keiner weiter ?


    Hier nochmal der public wo der ladenzeitstring erstellt wird und geupdatet wird


    public somecheck() // Diverse Updates auf 1 Sekunde
    {
    // Version

    TextDrawSetString(Version,"Version 5 BETA");


    // Ladenzeit


    for(new i = 0;i<MAX_PLAYERS;i++)
    if(IsPlayerConnected(i))
    {
    if(playerladenzeit[i] >= 0)
    {
    format(ladenzeitstring[i],sizeof(ladenzeitstring),"Ladenzeit: %d",playerladenzeit[i]);
    TextDrawSetString(ladenzeit[i],ladenzeitstring[i]);


    playerladenzeit[i] --;
    }
    else
    {
    TextDrawSetString(ladenzeit[i],"Ladeneit: ---");
    }
    }
    }


    @dit


    Wenn ich den Textdraw unter OnPlayerConnect erstelle, sprich das hier mache, crasht die server exe



    public OnPlayerConnect (playerid)
    {
    ladenzeit[playerid] = TextDrawCreate(486.000000,422.000000,ladenzeitstring[playerid]);
    TextDrawAlignment(ladenzeit[playerid],0);
    TextDrawBackgroundColor(ladenzeit[playerid],0x000000ff);
    TextDrawFont(ladenzeit[playerid],3);
    TextDrawLetterSize(ladenzeit[playerid],0.399999,1.100000);
    TextDrawColor(ladenzeit[playerid],0xffffffff);
    TextDrawSetOutline(ladenzeit[playerid],1);
    TextDrawSetProportional(ladenzeit[playerid],1);
    TextDrawSetShadow(ladenzeit[playerid],1);


    TextDrawShowForPlayer(playerid,ladenzeit[playerid]);
    }

    ja aber jeder spieler soll ja einen anderen text ( zahl ) bekommen.
    Diese wird in ladenzeitstring gespeichert. Darum auch /ladenzeitstring[MAX_PLAYERS]


    Dieser Ladenzeitstring wird hier immer aktualisiert mit der variable playerladenzeit[MAX_PLAYERS]


    for(new i = 0;i<MAX_PLAYERS;i++)
    if(IsPlayerConnected(i))
    {
    if(playerladenzeit[i] >= 0)
    {
    format(ladenzeitstring[i],sizeof(ladenzeitstring),"Ladenzeit: %d",playerladenzeit[i]);
    TextDrawSetString(ladenzeit[i],ladenzeitstring[i]);


    playerladenzeit[i] --;
    }
    }


    demnach muss ich doch als "Text" den ladenzeitstring angeben


    definiert habe ich diese ja so


    new ladenzeitstring[MAX_PLAYERS];
    new playerladenzeit[MAX_PLAYERS];


    nur ich bin mir nicht sicher ob da nicht so was [256] fehlt

    Wie kann ich den Fehler für das zweite Problem beheben ?


    @dit


    Wenn ich das unter OnPlayerConnect mache, sag der Compiler mir, dass dies


    ladenzeit[playerid] = TextDrawCreate(486.000000,422.000000,ladenzeitstring[playerid]);


    ein unreachable code ist

    Hallo Breadfisher,


    Wie kann ich es mache, dass jeder Spieler einen eigenen Textdraw hat.
    Ich habe das momentan so. Allerdings funktioniert es nicht


    Ganz oben
    new Text:ladenzeit[MAX_PLAYERS];
    new ladenzeitstring[MAX_PLAYERS];
    new playerladenzeit[MAX_PLAYERS];


    GameModeInit


    for(new i = 0;i<MAX_PLAYERS;i++)
    if(IsPlayerConnected(i))
    {
    ladenzeit[i] = TextDrawCreate(486.000000,422.000000,ladenzeitstring[i]);
    TextDrawAlignment(ladenzeit[i],0);
    TextDrawBackgroundColor(ladenzeit[i],0x000000ff);
    TextDrawFont(ladenzeit[i],3);
    TextDrawLetterSize(ladenzeit[i],0.399999,1.100000);
    TextDrawColor(ladenzeit[i],0xffffffff);
    TextDrawSetOutline(ladenzeit[i],1);
    TextDrawSetProportional(ladenzeit[i],1);
    TextDrawSetShadow(ladenzeit[i],1);
    }


    OnPlayerConnect


    TextDrawShowForPlayer(playerid,ladenzeit[playerid]);


    OnPlayerDisconnect


    TextDrawHideForPlayer(playerid,ladenzeit[playerid]);


    und ein forward


    public somecheck() // Diverse Updates auf 1 Sekunde
    {
    // Ladenzeit
    for(new i = 0;i<MAX_PLAYERS;i++)
    if(IsPlayerConnected(i))
    {
    if(playerladenzeit[i] >= 0)
    {
    format(ladenzeitstring[i],sizeof(ladenzeitstring),"Ladenzeit: %d",playerladenzeit[i]);
    TextDrawSetString(ladenzeit[i],ladenzeitstring[i]);


    playerladenzeit[i] --;
    }
    }
    }


    Hoffentlich weiß jemand hilfe, wie jeder Spieler seine eigene Zeit bekommt:


    PS: Der Ladenzeit Textdraw ersetzt komischerweise mein Versionstextdraw, obwohl das eine ganz andere position hat.
    Sprich da von Version sein sollte, ist die Ladenzeit

    Okai also du baust /mapan /mapaus natürlich nur einmal ein.


    Ich denke Rcon abfrage sollte reichen, damit nicht jeder das machen kann


    if(strcmp(cmdtext,"/mapan",true) == 0)
    {
    if(IsPlayerAdmin(playerid))
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    for(new k = 0;<MAX_PLAYERS;k++)
    if(IsPlayerConnected(k))
    {
    SetPlayerMarkerForPlayer(i,k,0xFFFFFFFF); //hier stand das du es nur beim player aktivierst
    }
    }
    {
    }
    return 1;
    }


    if(strcmp(cmdtext,"/mapan",true) == 0)
    {
    if(IsPlayerAdmin(playerid))
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    for(new k = 0;<MAX_PLAYERS;k++)
    if(IsPlayerConnected(k))
    {
    SetPlayerMarkerForPlayer(i,k,0xFFFFFF00); //und hier auch
    }
    }
    }
    }
    return 1;
    }


    Wenn man /mapan macht sieht jeder spieler jeden anderen auf der karte
    Wenn man /mapaus macht sieht niemand mehr jemanden buw nur nur in der angegebenen farbe

    Wird so nicht funktionieren, da du nur eine SChleife laufen lässt.
    Demnach wird Spieler 1 nur 1 spieler 2 nur 2 sehen usw.


    Lass 2 Schleifen in einender laufen


    if(strcmp(cmdtext,"/mapan",true) == 0)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    for(new k = 0;<MAX_PLAYERS;k++)
    if(IsPlayerConnected(k))
    {
    SetPlayerMarkerForPlayer(i,k,0xFFFFFFFF); //hier stand das du es nur beim player aktivierst
    }
    }
    {
    return 1;
    }


    if(strcmp(cmdtext,"/mapan",true) == 0)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    for(new k = 0;<MAX_PLAYERS;k++)
    if(IsPlayerConnected(k))
    {
    SetPlayerMarkerForPlayer(i,k,0xFFFFFF00); //und hier auch
    }
    }
    {
    return 1;
    }


    Mit 2 Schleifen bekommt jeder Spieler jeden auf seine Karte