Beiträge von Templer

    Du bist echt krass ^^ Das gleiche hab ich auch mal irgendwann versucht, aber hast wohl auch ne coole denkweise xD


    dcmd_su(playerid,params[])
    {
    new sGrund[128], wps22, pID, ThePlayer[MAX_PLAYER_NAME],pname[MAX_PLAYER_NAME],i=-1, string[128], sinfo[10];
    if(sscanf(params, "uds[128]",pID,wps22,sGrund)) return SendClientMessage(playerid,COLOR_LIGHTRED,"USAGE: /su [playerid] [wandets] ([grund],optional)");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,COLOR_LIGHTRED,"[SYSTEM]: Kein Spieler mit angegebener ID Online");
    if(PlayerInfo[playerid][fraktion] != 1 && PlayerInfo[playerid][fraktion] != 6) return 1;
    if(!strlen(sGrund)) format(sGrund, sizeof(sGrund), "<Kein Grund");
    if(PlayerInfo[pID][wps] > 60)
    {
    format(string, sizeof(string), "[SYSTEM]: Dieser Benutzer hat schon %d Wandets, es können ihm nicht mehr gegeben werden.",PlayerInfo[playerid][wps]);
    return SendClientMessage(playerid,COLOR_LIGHTRED,string);
    }
    PlayerInfo[pID][wps] += wps22;
    PlayerInfo[pID][wplevel] = PlayerInfo[pID][wps]/10;
    GetPlayerName(playerid, pname, sizeof(pname)); GetPlayerName(pID,ThePlayer,sizeof(ThePlayer));
    SendClientMessage(pID,COLOR_LIGHTRED,"[SYSTEM]: Du hast ein verbrechen begangen (%s), Reporter: %s.",sGrund,ThePlayer);
    SendClientMessage(pID,COLOR_YELLOW,"[SYSTEM]: Aktuelles Wandetlevel: %d, %d Wandets.",PlayerInfo[pID][wplevel],PlayerInfo[pID][wps]);
    if(PlayerInfo[playerid][fraktion] == 1) sinfo = "Officer";
    else if(PlayerInfo[playerid][fraktion] == 6) sinfo = "Soldat";
    while(i!=MAX_PLAYERS)
    {
    i++;
    if(PlayerInfo[i][fraktion] != 1 && PlayerInfo[i][fraktion] != 6) continue;
    format(string,sizeof(string),"[Polizei HQ]: %s %s hat %s %d Wandets gegeben. Grund: %s",sinfo,ThePlayer,pname,wps22,sGrund");
    SendClientMessage(i,COLOR_LIGHTBLUE,string);
    format(string,sizeof(string),"[Polizei HQ]: Wandetlevel %d, %d Wandets!",PlayerInfo[pID][wplevel], PlayerInfo[pID][wps]);
    SendClientMessage(i,COLOR_LIGHTBLUE,string);
    }
    return 1;
    }

    Bitteschön, du verwendest es wirklich alles sehr komisch ^^


    ocmd:m(playerid, params[])
    {
    new msg[100],str[128],aname[MAX_PLAYER_NAME],Float:mx,Float:my,Float:mz;
    GetPlayerName(playerid,aname,sizeof(aname));
    if(sscanf(params,"s[100]",msg)) return SendClientMessage(playerid, COLOR_WHITE, "Nutze: /m [Message]");
    if(Spielerinfo[playerid][Fraktion] != 1 && Spielerinfo[playerid][Fraktion] != 3 || Spielerinfo[playerid][Leader] != 1 && Spielerinfo[playerid][Leader] != 3) return SendClientMessage(playerid, 0xFF0000FF, "Du bist kein Staatsbeamter!");
    format(str, sizeof(str), "[Megaphone]: %s: %s", aname, msg);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    GetPlayerPos(playerid,mx,my,mz);
    if(!IsPlayerInRangeOfPoint(i,10.0,mx,my,mz)) continue;
    SendClientMessage(i, COLOR_YELLOW, str);
    }
    return 1;
    }

    Mich wunderts, dass hier keiner was geschrieben hat xD


    Folgende Zeilen ins Forum posten:


    Zeile 3888 - Da ich nicht genau sagen kann woran es liegt


    Zeile 3260 - Höchstwahrscheinlich steht sowas wie Float:rX, Float:rY - Diese sollst du löschen.


    Zeile 3263 - Falscher Tag, aber bitte ins Forum posten..


    Zeile 3251 - Das gleiche wie bei Zeile 3260


    Zeile 3254 - Gilt genau das gleiche wie für 3263


    Zeile 90 - Du benützt ein #define zweimal mit gleichem Namen, entweder es ist das gleiche, oder du benennst login um in Login und alles was damit zusammenhängt auch

    Nunja, jeder hat die Wahl, ober auf Gut Glück darauf hofft, dass ihm jemand im Forum den Fehler behebt oder es wirklich selbstständig löst.. Die Wahl wird bei vielen nach ner Zeit klar, andere hingegen machen sich bei der Wahl keinen Stress ^^


    public OnPlayerShootPlayer(shooter,target,damage)
    {
    if((PlayerInfo[shooter][pMember] >= 8 && PlayerInfo[shooter][pMember] <= 13 || PlayerInfo[shooter][pLeader] >= 8 && PlayerInfo[shooter][pLeader] <= 13) && GetPlayerWeapon(shooter) == 23)
    {
    TogglePlayerControllable(target,0);
    new name[MAX_PLAYER_NAME],msg[80];
    GetPlayerName(shooter,name,sizeof(name));
    format(msg,sizeof(msg),"* %s hat dich mit seiner Tazerwaffe für 5 Sekunden getazert!",name);
    SendClientMessage(target,0x33AA33AA,msg);
    GetPlayerName(target,name,sizeof(name));
    format(msg,sizeof(msg),"* Du hast %s getazert!",name);
    SendClientMessage(shooter,0x33AA33AA,msg);
    SetTimerEx("Tazer",5000,0,"d",target); //Platzhalter 'd' reicht eig. vollkommen aus, aber Geschmackssache
    }
    return 1;
    }
    public tazer(playerid) TogglePlayerControllable(playerid,1);

    Es gäbe natürlich eine bessere Variante vielleicht, aber diese hier sollte die einfachste sein..


    new gCurrentTime[3];


    forward CheckHour();
    public CheckHour()
    {
    gettime(gCurrentTime[0],gCurrentTime[1],gCurrentTime[2]);
    if(gCurrentTime[0]!=0||gCurrentTime[1]!=59)
    {
    SetTimer("CheckHour", 30000, false); //Überprüft alle 30Sekunden...
    return false;
    }
    GameModeExit();
    return true;
    }


    public OnFilterScriptInit()
    {
    SetTimer("CheckHour", 120000, false); //Startet zum überprüfen erst in 2min...
    return true;
    }

    Höchstwahrscheinlich ist er auch nicht 17, jedoch um dies zu testen kannst du deinen obigen Code mit folgendem ersetzen


    printf("DEBUG Spieler %d spawnt mit Fraktion´s ID: %d", playerid, pInfo[playerid][fraktion]); //Wiedergibt nen Debug Text im Log
    switch(pInfo[playerid][fraktion]) //Überprüft welche Fraktion Spieler ist
    {
    case 1: SetPlayerPos(playerid,1580.1251,-1635.4674,13.5604);
    case 2: SetPlayerPos(playerid,-1616.4448,685.6295,7.1875);
    case 3: SetPlayerPos(playerid,-2557.4812,662.7305,14.4531);
    case 4: SetPlayerPos(playerid,2034.1553,-1403.5601,17.2816);
    case 5: SetPlayerPos(playerid,-1616.4448,685.6295,7.1875);
    case 6: SetPlayerPos(playerid,-2452.0681,503.3803,30.0827);
    case 7: SetPlayerPos(playerid,-1521.9054,481.5855,7.1875);
    case 8: SetPlayerPos(playerid,2256.7405,-1408.8368,24.0000);
    case 9: SetPlayerPos(playerid,2499.5959,-1684.8195,13.4340);
    case 10: SetPlayerPos(playerid,-2106.6504,-195.4614,35.3203);
    case 11: SetPlayerPos(playerid,-2200.4988,646.3664,49.4375);
    case 12: SetPlayerPos(playerid,2584.2241,-1104.3000,66.6413);
    case 13: SetPlayerPos(playerid,-535.9175,-504.5012,25.5178);
    case 14: SetPlayerPos(playerid,329.6980,-1511.2147,36.0391);
    case 15: SetPlayerPos(playerid,-1876.4185,-150.8452,11.8984);
    case 16: SetPlayerPos(playerid,2791.9575,-1427.7181,36.0938);
    case 17: SetPlayerPos(playerid,-1026.1521,-714.3414,32.0078);
    default: SetPlayerPos(playerid,1674.2616,-1915.5049,21.9542); //Wird aufgerufen, wenn Spieler nicht in der Fraktion von 1 bis 17 in dem Fall...
    }
    SetPlayerSkin(playerid,pInfo[playerid][skin]); //Setzt den Spielerskin

    Sofern du gespawnt bist, schaust du in der server_log.txt nach, was im Debug Text steht und wenn dort die FraktionsID 0 ist, dann hast du irgendwo mit der Variable pInfo[playerid][fraktion] einen Fehler...

    Wie Google es so schön förmlich sagen würde "Auf Gut Glück" xD



    if(strcmp("/cc", cmd , true) == 0)
    {
    new string[256];
    if(!IsPlayerInRangeOfPoint(playerid,5.0,1275.94458008,-1257.80810547,15.59458160)) return SendClientMessage(playerid, COLOR_YELLOW, "Du bist nicht in der Car-Color-Garage.");
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_YELLOW, "Du musst in einem deiner Privatfahrzeuge sein!");
    for(new i = 0; i<MAX_VEHICLES; i++)
    {
    if(PlayerCar[i][vid] != GetPlayerVehicleID(playerid)) continue;
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_YELLOW, "VERWENDUNG: /cc [Farbe 1] [Farbe 2]");
    new color1 = strval(tmp);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_YELLOW, "VERWENDUNG: /cc [Farbe 1] [Farbe 2]");
    new color2 = strval(tmp);
    if(color1 < 0 || color1 > 400) return SendClientMessage(playerid, COLOR_YELLOW, "Es gibt keine Farbe unter 0 und über 400!");
    if(color2 < 0 || color2 > 400) return SendClientMessage(playerid, COLOR_YELLOW, "Es gibt keine Farbe unter 0 und über 400!");
    ChangeVehicleColor(GetPlayerVehicleID(playerid), color1, color2);
    PlayerCar[i][c1] = color1; PlayerCar[i][c2] = color2;
    format(string, sizeof(string), "Fahrzeug-Farben geändert! [Farbe 1: %d || Farbe 2: %d]", color1, color2);
    return SendClientMessage(playerid, COLOR_YELLOW, string);
    }
    return SendClientMessage(playerid, COLOR_YELLOW, "Du sitzt nicht in einem deiner Privatfahrzeuge drinnen...");
    }


    //Edit: Fehler ausgebessert...

    Zunächst mal ist es sinnlos Parameter zu definieren, da sie sowieso gleich sind... Also reicht es einfach so


    #define GivePlayerWeapon b_GivePlayerWeapon
    #define GetPlayerWeaponData b_GetPlayerWeaponData
    #define ResetPlayerWeapons b_GetPlayerWeapons




    Dazu muss man sagen, dass man wissen sollte, wo du alles definiert hast. Sollte die Funktion b_GivePlayerWeapon und Co in einem Include sein, so fügst du diese drei Zeilen am Ende der Include und die Zeile, wo du im GM das Include definierst, sollte genau unterhalb von a_samp sein, um Konflikte mit anderen Includes zu vermeiden. Sollte jedoch die funktion in dein GM kopiert sein, so musst du diese Definitionen ganz oben zu den anderen hinzufügen, jedoch sollten Sie unterhalb der Funktionen sein. Sonst entsteht ein Dauer-Loop.

    Naja der Typ da oben meint Anfangs das Richtige, jedoch am Ende kam nur ein Döner heraus. Was du machen kannst ist eine eigene VehicleID Strukturierung zu bauen, welche aber nichts mit GetPlayerVehicleID zu tun hat, bedeutet man kann die Samp erzeugten Variablen "derzeit" noch nicht intern verändern. Es fehlen uns einfach die Funktionen bzw. die enum Strukturierung dazu (sofern ein enum überhaupt benützt wird in SAMP ^^).


    Also ein Beispiel wäre wie erfolgt im Anhang... Have Fun

    Eigentlich ist das ein Godfather Problem, aber ok ausnahmsweise...


    Das Godfather hat eine Variable welche "pLocal" sich nennt. Es wird überprüft, ob ein Spieler in einem Haus/Geschäft ist. Sollte der Spieler in Interior 0 sein und die Variable von ihm nicht auf 255 sein, so wird er automatisch zu diesem Haus/Geschäft geportet, welches in seiner Variable "pLocal" steht. Es ist aufjedenfall in einem Timer, jedoch wie er bei dir heißt, weiß ich nicht. Diese Lösung soll für beide deiner Punkte gelten und naja, ich finde es lustig, wenn Leute ein Projekt programmieren, welches Sie selbst nicht beherschen :P