Beiträge von firestormZ


    enum SpielerDaten
    {
    Adminlevel,
    Gang,
    Banned,
    Kills
    };


    public OnPlayerDeath(playerid, killerid, reason)
    {
    sSpieler[killerid][Kills]++;
    SetPlayerScore(killerid, sSpieler[killerid][Kills]);
    GivePlayerMoney(killerid,150);
    GameTextForPlayer(killerid,"~w~Kill",1000,3);
    SendDeathMessage(killerid, playerid, reason);
    return 1;
    }



    stock SpielerLaden(playerid)
    {
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler, sizeof(Spieler),"/Spieler/%s.txt",Sname);
    sSpieler[playerid][Adminlevel] = dini_Int(Spieler,"Adminlevel");
    sSpieler[playerid][Gang] = dini_Int(Spieler,"Gang");
    sSpieler[playerid][Banned] = dini_Int(Spieler,"Banned");
    GivePlayerMoney(playerid,dini_Int(Spieler,"Geld"));
    sSpieler[playerid][Kills] = dini_Int(Spieler,"Kills");
    SetPlayerScore(playerid,dini_Int(Spieler,"Kills"));
    if(sSpieler[playerid][Banned] == 1)
    {
    SendClientMessage(playerid,ROT,"Du bist permanent gebannt!");
    Kick(playerid);
    }
    return 1;
    }



    stock SpielerSpeichern(playerid)
    {
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler, sizeof(Spieler),"/Spieler/%s.txt",Sname);
    dini_IntSet(Spieler,"AdminLevel",sSpieler[playerid][Adminlevel]);
    dini_IntSet(Spieler,"Gang",sSpieler[playerid][Gang]);
    dini_IntSet(Spieler,"Banned",sSpieler[playerid][Banned]);
    dini_IntSet(Spieler,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(Spieler,"Kills",sSpieler[playerid][Kills]);
    return 1;
    }


    //edit: ich hab dir jz mal Geld aus dem enum gelöscht, da du einfach beim disconnect und spawn das geld abfragen bzw speichern kannst :D

    Du könnstest von anfang an nur EINEN timer starten, der alle 2 sek abfragt, ob du dich in der nähe von dem pickup befindest,
    da packst du dan einfach mehrere rein und arbeitest mit else if, hier mal nen beispiel:

    forward CheckPickup(playerid);


    public CheckPickup(playerid)
    {
    if(IsPlayerInRangeOfPoint(playerid, 4.0, 3553.8247,-665.3829,10.6583)) //ob der spieler an der stelle ist
    {
    if(GetPlayerState(playerid) == 2 && IsPlayerInAnyVehicle(playerid)) // Ob der spieler fahrer in einem auto ist und in eines sitzt
    {
    TogglePlayerControllable(playerid,0); //freezen
    ShowPlayerDialog(playerid, DIALOG_Tankstellen, DIALOG_STYLE_LIST, "Werkstatt","Reparieren ca. 12$ pro DMG.","Auswaehlen","Abbrechen"); //dialog zeigen oder so...
    }
    }
    else if (....)
    {
    ....
    }
    else if(...)
    {
    ....
    }
    ...
    }


    public OnPlayerSpawn(playerid)
    {
    SetTimerEx("CheckPickup", 2000, true, "i", playerid);
    }

    BlackHuhn: Wenn keine VirtualWorld ID angegeben wurde, ist die VirtualWorld 0 :)


    //edit:
    magnussoft: höher setzen nützt nichts, das pickup sinkt weiterhin zur meeresoberfläche, habs alles schonmal getestet...
    Ich würd an deiner Stelle das Pickup als Object erstellen, und mit nem Timer abfragen, ob er sich darin befindet...

    Also ich habs so, und es geht alles wunderbar...

    ocmd:sethp(playerid,params[])
    {
    new pID, health;
    if(!IsSpielerTeamler(playerid,1)) return SendClientMessage(playerid,ROT,"Dein Adminlevel reicht nicht aus!");
    if(sscanf(params, "ui",pID, health))return SendClientMessage(playerid,ROT,"Verwendung: /sethp [ID/Name] [HP]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Dieser Spieler ist nicht online!");
    if(health < 0 || health > 100) return SendClientMessage(playerid,ROT, "Die Anzahl muss zwischen 0 - 100 liegen!");
    {
    new str2[128];
    format(str2,sizeof(str2),"Du hast den jeweiligen Spieler %d HP gegeben!",health);
    SendClientMessage(playerid,GRUEN,str2);
    SetPlayerHealth(pID, health);
    }
    return 1;
    }