Beiträge von Haxler

    Hey :D
    Hab nen nervigen Bug mit den Skins...
    Wenn man auf meinen Server connected wird der Skin aus einer Datei ausgelesen. Manchmal hab ich dann aber trotzdem den CJ-Skin. (passiert auch bei anderen Spielern). Wenn ich dann aber überprüf welchen Skin ich hab (GetPlayerSkin) dann steht da die richtige Skin-ID. Achja: alle anderen sehen meinen richtigen Skin nur ich seh den CJ-Skin :/ Weiß jemand an was da liegen kann?


    mfg :D

    Du kannst das Fahrzeug auch einfach in eine andere Virtualworld setzen und in der Datei abspeichern, dass das Fahrzeug "gelöscht" ist. Das Fahrzeug spawnt zwar immernoch, aber man sieht es nicht und es gibt keine ID-Verschiebung :)

    Verwende einfach das hier:


    stock SendClientMessageInRange(playerid,msg[],farbe,range)
    {
    for(new i=0;i<GetMaxPlayers();i++)
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    if(IsPlayerInRangeOfPoint(i,range,x,y,z))
    {
    SendClientMessage(i,color,msg);
    }
    }


    return 1;
    }


    Bsp:


    //OnPlayerSpawn
    SendClientMessageInRange(playerid,"Ich bin gespawnt",DEINE FARBE,100);

    60000 millisekunden sind 1 Minute. Im Timer wird pro Minute die Variable hochgehählt und wenn sie auf 60 ist (60*60 = 3600 = 1 Stunde) bekommt man die Waffe etc. Das praktische daran ist, man kann jederzeit die onlinezeit variable abfragen.

    stock Register [playerid,pw]
    {


    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei,"/Accounts/%s.txt",name);
    dini_Create(Spielerdatei);
    dini_Set(Spielerdatei,"Passwort",pw);
    SendClientMessage(playerid, COLOR_Hellrot,"Erfolgreich Registriert.");
    return 1;
    }


    wenn ich mich nicht irre müsste das:


    stock Register(playerid,pw)
    {


    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei,"/Accounts/%s.txt",name);
    dini_Create(Spielerdatei);
    dini_Set(Spielerdatei,"Passwort",pw);
    SendClientMessage(playerid, COLOR_Hellrot,"Erfolgreich Registriert.");
    return 1;
    }


    heißen

    mit MAX_PLAYERS wird die Variable für alle Spieler erstellt.


    EDIT:


    zu 3:



    new onlinezeit[MAX_PLAYERS];
    forward Online(playerid);
    // OnPlayerConnect
    onlinezeit[playerid] =0;
    SetTimerEx("Online",60000,1,"d",playerid);


    // OnPlayerDisconnect
    onlinezeit[playerid] =0;


    // Public:
    public Online(playerid)
    {
    onlinezeit[playerid] ++;
    if(onlinezeit[playerid] >= 60)
    {
    GivePlayerWeapon(playerid,WAFFENID,1000);
    SendClientMessage(playerid,FARBE,"Da du 1 Stunde online warst, bekommst du eine Waffe!");
    onlinezeit[playerid] =0;
    }
    return 1;
    }


    Nicht getestet aber soltle funktionieren. Statt WAFFENID musst du eine Waffen-ID eingeben und statt FARBE eine Farbe.

    Einfach beim Befehl abfragen, in welcher Virtualworld der Spieler ist:


    new vw = GetPlayerVirtualWorld(playerid);
    // Beispiel
    if(vw == 1)return SendClientMessage(playerid,farbe,"Du darfst diesen Befehl hier nicht verwenden!"); // Wenn der Spieler in der Virtualworld 1 bekommt er die Nachricht

    Kommt die Nachricht oder passiert überhaupt nichts?


    EDIT: hab nen fehler entdeckt ^^


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER && oldstate == PLAYER_STATE_ONFOOT)
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    if(LSPDFahrzeug(vehicleid) && SpielerInfo[playerid][Firma] != 1)
    {
    SendClientMessage(playerid,COLOR_GRAD2,"Du bist kein Mitglied des 'LSPD'");
    RemovePlayerFromVehicle(playerid);
    }
    else
    if(SFPDFahrzeug(vehicleid) && SpielerInfo[playerid][Firma] != 2)
    {
    SendClientMessage(playerid,COLOR_GRAD2,"Du bist kein Mitglied des 'SFPD'");
    RemovePlayerFromVehicle(playerid);
    }
    else
    if(LVPDFahrzeug(vehicleid) && SpielerInfo[playerid][Firma] != 3)
    {
    SendClientMessage(playerid,COLOR_GRAD2,"Du bist kein Mitglied des 'LVPD'");
    RemovePlayerFromVehicle(playerid);
    }
    }
    return 1;
    }

    Ich würds so machen:


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER && oldstate == PLAYER_STATE_ONFOOT)
    {
    new vehid = GetPlayerVehicleID(playerid);
    if(LSPDFahrzeug(vehicleid) && SpielerInfo[playerid][Firma] != 1)
    {
    SendClientMessage(playerid,COLOR_GRAD2,"Du bist kein Mitglied des 'LSPD'");
    RemovePlayerFromVehicle(playerid);
    }
    else
    if(SFPDFahrzeug(vehicleid) && SpielerInfo[playerid][Firma] != 2)
    {
    SendClientMessage(playerid,COLOR_GRAD2,"Du bist kein Mitglied des 'SFPD'");
    RemovePlayerFromVehicle(playerid);
    }
    else
    if(LVPDFahrzeug(vehicleid) && SpielerInfo[playerid][Firma] != 3)
    {
    SendClientMessage(playerid,COLOR_GRAD2,"Du bist kein Mitglied des 'LVPD'");
    RemovePlayerFromVehicle(playerid);
    }
    }
    return 1;
    }


    Bei deiner Variante wird das Fahrzeug für alle Spieler abgeschlossen, wenn der Spieler nicht zur gewählten Firma gehört.

    Nach OnPlayerDeath wird OnPlayerSpawn aufgerufen. D.H. wenn du in OnPlayerSpawn den Spieler an eine bestimmte Position teleportierst, ist dein Code unter OnPlayerDeath nutzlos.


    public OnPlayerDeath(playerid, killerid, reason)
    {
    if(GetPlayerVirtualWorld(playerid) == 1)
    {
    SetPVarInt(playerid,"dmtot",1);
    }
    return 1;
    }
    public OnPlayerSpawn(playerid)
    {
    if(GetPVarInt(playerid,"dmtot")==1)
    {
    GivePlayerWeapon(playerid, 8, 1);
    GivePlayerWeapon(playerid, 24, 100);
    GivePlayerWeapon(playerid, 31, 500);
    GivePlayerWeapon(playerid, 25, 100);
    GivePlayerWeapon(playerid, 34, 20);
    GivePlayerWeapon(playerid, 17, 10);
    GivePlayerWeapon(playerid, 28, 400);
    SetPlayerPos(playerid, 18.7913,2218.5874,123.9989);
    SetPVarInt(playerid,"dmtot",0);
    }
    else
    // Restlicher Code
    }