Beiträge von Kaliber

    1. Schreib das mal so:


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys & 2) {
    if(isPlayerInFrakt(playerid,1) && IsPlayerInRangeOfPoint(playerid,20,1519.41589, -1693.81421, 12.88200)) {
    MoveObject(pdgate,1524.75122, -1697.09167, 5.6722,4);
    SetTimer("Gate",10000,true);
    SendClientMessage(playerid,WEIß,"Du hast die Tor geöffnet. Das Tor schließt nach 5 Sek von selbst.");
    }
    }
    return 1;
    }


    2. Poste mal die Funktion public Gate()


    3. Erstellst du das Gate auch mit CreateObject?


    mfg. :thumbup:

    Hau das SendClientMessage aus der Schleife raus


    Besser wäre einfach so:


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER) {
    for(new i = 0; i<sizeof(PolizeiFahrzeuge); i++) {
    if(GetPlayerVehicleID(playerid) != PolizeiFahrzeuge[i]) continue;
    if(isPlayerInFrakt(i,1)) break;
    RemovePlayerFromVehicle(playerid),SendClientMessage(playerid,GRAU,"Du bist kein Polizist");
    break;
    }
    }
    return 1;
    }


    mfg. :thumbup:

    Code:


    Schreib das mal so:


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    switch(newstate) {
    case PLAYER_STATE_DRIVER: {
    if(GetPlayerVehicleID(playerid) == PolizeiFahrzeuge(GetPlayerVehicleID(playerid))) {
    if(!isPlayerInFrakt(playerid,1)) return SendClientMessage(playerid,GRAU,"Du bist kein Polizist!"),RemovePlayerFromVehicle(playerid);
    }
    }
    }
    return 1;
    }


    mfg. :thumbup:

    SetPVarInt(pID,"Geld",Geld);
    GivePlayerMoney(pID, Geld);
    SpielerSpeichern(pID);


    Anstatt dem da, das so schreiben:


    for(new i; i!=MAX_PLAYERS; i++) if(IsPlayerConnected(i)) SetPVarInt(i,"Geld",Geld),GivePlayerMoney(i,Geld),SpielerSpeichern(i);


    mfg. :thumbup:

    1. Schreib es so:


    if(!strcmp(cmdtext,"/stats",true)) {
    new dialogstring[50],header[18 + MAX_PLAYER_NAME],sName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,sName,sizeof(sName));
    format(dialogstring,sizeof(dialogstring),"Willkommen %s\n\nKills: %d\nTode: %d\n",sName,GetPVarInt(playerid,"Kills"),GetPVarInt(playerid,"Tode"));
    format(header,sizeof header,"Deine Statistiken %s",sName);
    ShowPlayerDialog(playerid,Stats,DIALOG_STYLE_MSGBOX,header,dialogstring,"Oke","Abbrechen");
    return 1;
    }


    2. Schreibe es so:


    ocmd:givemoney(playerid,params[]) {
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,ROT,"Du bist kein Admin.");
    new pID, Geld, msg[144];
    if(sscanf(params,"ui",pID,Geld))return SendClientMessage(playerid,GELB,"/givemoney [spieler] [Betrag] ");
    if(Geld < 1 || Geld > 90000)return SendClientMessage(playerid,ROT,"Bitte gültigen Betrag angeben.");
    SetPVarInt(pID,"Geld",Geld);
    SpielerSpeichern(pID);
    format(msg, sizeof(msg),"Du hast von einem Admin geld überwiesen bekommen.");
    SendClientMessage(pID,BLAU,msg);
    return 1;
    }


    mfg. :thumbup:

    Abgefragt werden die so


    1. Das meine ich nicht, sondern wie du die Produkte prüfst ;)


    Schleife schön und gut wenn aber der rest nicht geht würde die schleife auch nix Bringen vorallem da ich die werte nacher noch änder das nicht jeder truck gleich viel hat


    Weiß ich selbst, deshalb sagte ich Zusatz Info ;)


    Wieder Zusatzinfo
    Das kann man auch wieder in 1ner Zeile schreiben:
    stock IsATruckerVeh(carid) {
    for(new i; i<sizeof(TruckerVeh); i++) if(carid == TruckerVeh[i]) return 1;
    return 0;
    }


    mfg. :thumbup:

    1. Wie groß ist:


    TruckerVeh[0]? lass dir das mal über ein printf("%d",TruckerVeh[0]); ausgeben ;)


    2. Wie fragst du das ab?


    Zusatz Information
    Du brauchst keine 20 Zeilen immer dahin schreiben..es würde auch eine Schleife tun:
    for(new i; i<sizeof(TruckerVeh); i++) PlayerHaul[TruckerVeh[i]][pCapasity] = 500;


    mfg. :thumbup:

    1. Schreibs so:


    public OnPlayerText(playerid, text[])
    {
    new string[144],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    format(string, sizeof(string), "%s sagt: %s",name,text);
    return Message(playerid,string,20),0;
    }


    2. Schreib es so:


    public UpdateClock()
    {
    new x[3],String[256];
    gettime(x[0],x[1],x[2]);
    format(String,sizeof(String),"%02d:%02d:%02d",x[0],x[1],x[2]);
    TextDrawSetString(RealClock,String),SetWorldTime(x[0]);
    return 1;
    }


    3. So:


    ocmd:ao(playerid,params[])
    {
    if(SpielerInfo[playerid][pAdmin]< 2) return SendClientMessage(playerid,0xFF0000,"Du bist kein Admin!");
    new string[144],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    if(!params[0])return SendClientMessage(playerid,0xFF0000,"Tippe: /ao [TEXT]");
    format(string,sizeof(string),"** Admin %s: %s",name,params);
    for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) SendClientMessage(i,COLOR_AOCHAT,string);
    return 1;
    }


    mfg. :thumbup:

    Muss ich das speichern Könntes du code vorschlag schreiben ?


    Das musst du doch wissen? :huh:


    Willst du es denn speichern? Soll also das Pickup noch nach einem Server Restart angezeigt werden bzw wenn der Spieler disconnected? :huh:


    Meiner Meinung nach...würde sich das nicht rentieren...also nein.


    Du benötigst keinen Enumerator, du benötigst nicht einmal Globale Variablen, einfach so:


    //Unter OnPlayerDeath
    new Float:dPos[3],name[MAX_PLAYER_NAME],str[MAX_PLAYER_NAME + 20];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    GetPlayerPos(playerid,dPos[0],dPos[1],dPos[2]);
    CreatePickup(1239, 23, dPos[0],dPos[1],dPos[2]); //modelid ändern 1239 = i kein Totenkopf :D
    format(str,sizeof str,"Gestorben ist hier:\n%s",name); //Kannst den Text beliebig ändern
    Create3DTextLabel(text,0xFF4800FF,dPos[0],dPos[1],dPos[2],20.0,0,0); //Erstellt das 3DLabel


    PS: Dies wird da bleiben bis zum Restart...allerdings wird wenn er 2x gestorben ist wird das halt an 2 Orten angezeigt..wolltest du das so? :huh:


    mfg. :thumbup: