Beiträge von Jeffry

    new Float:x,Float:y,Float:z;
    if(!IsPlayerInRangeOfPoint(playerid,3,x,y,z)
    Die zwei Zeilen entfernen, die machen keinen Sinn, da x, y und z ohnehin 0 ist.

    Dann ändere das
    if(!IsPlayerNPC(playerid)) SetPlayerSkin(playerid,Spieler[playerid][pSkin]);
    zu:
    if(!IsPlayerNPC(playerid))
    {
    printf("Setze Skin von ID %d zu: %d", playerid, Spieler[playerid][pSkin]);
    SetPlayerSkin(playerid,Spieler[playerid][pSkin]);
    }


    Dann poste was im Server Log steht, wenn du spawnst. Es geht darum zu sehen, ob zum einen der Code überhaupt aufgerufen wird, und zum anderen ob der Wert in der pSkin Variable korrekt ist.

    Das muss man ausprobieren, ich kann dir das Prinzip mal aufzeigen, dann kannst du dich daran versuchen.


    1) Du erstellst ein Objekt an der Position an der sich der Text bewegen soll. Dahinter erstellst du das gleiche Objekte nochmal.
    2) Beide Objekte texturierst du mit einem Text: http://forum.sa-mp.com/showthread.php?t=361737
    3) Nun baust du etwas um die beiden Objekte herum, damit man nur den eigentlichen Teil sieht (maximal die Größe eines der beiden Objekte, sonst musst du ein drittes erstellen).
    4) Dann lässt du beide Objekte langsam in die gleiche Richtung bewegen (MoveObject). Wird OnObjectMoved aufgerufen, so wird das Objekt wieder an seine Ausgangsposition (die des letzten Objektes) gesetzt, und es bewegt sich danach wieder (MoveObject) in die gleiche Richtung.


    Wichtig ist eben, dass links und rechts das Objekt übersteht, also da muss etwas (Wand?) davor sein, damit man das nicht sieht.

    if(!strcmp(vehicle, "-")) return SendClientMessage(playerid, 0xFF0000FF, "Error: Fehlerhafte Eingabe.");


    Wobei das natürlich nur eine Schönheitskorrektur ist.

    @xMichael:
    Das ist bis dahin die interessanteste Methode, die ich gesehen habe, so einen Befehl zu machen. Die IDs in das Array zu schreiben. Ist zwar nicht ganz so performant wie es mit IsNumeric zu prüfen, aber es hat was.


    Allerdings müsstest du noch abfragen, ob man nur ein Minus eingegeben hat ("-"), macht man das nämlich, bekommt man einen Lankstalker.


    Und:
    for(new i = 0; i < 211; i++)
    zu:
    for(new i = 0; i < 212; i++)




    EDIT: (Post unten)
    @xMichael: Haha ok! Wäre trotzdem gut, wenn du die Änderungen machst, falls sich das mal jemand raus kopiert. ;)

    Habe es eigentlich abgerechnet, sollte passen


    Dann hast du dich verzählt. :D


    SQL
    SELECT `Datum` FROM `Timeban` WHERE `Name` = ''


    47 Zeichen.


    47 + 24 = 71 => + EOS = 72


    Ich habe etwas mehr genommen, man weiß ja nie. Sicher ist sicher.

    Ich hab mich einfach mal hier bedient und den Fehler ausgebessert: http://forum.sa-mp.com/showthread.php?t=291633&page=3


    Den Rest habe ich gelassen, da ich denke, du passt das ohnehin an deine Bedürfnisse an, aber so hast du alles was du brauchst.


    Spoiler anzeigen
    #include <a_samp>

    Spoiler anzeigen
    #define l_red 0xFF0000AA
    #define l_green 0x33FF33AA

    Spoiler anzeigen
    new aVehicleNames[212][] =
    {
    {"Landstalker"},
    {"Bravura"},
    {"Buffalo"},
    {"Linerunner"},
    {"Perrenial"},
    {"Sentinel"},
    {"Dumper"},
    {"Firetruck"},
    {"Trashmaster"},
    {"Stretch"},
    {"Manana"},
    {"Infernus"},
    {"Voodoo"},
    {"Pony"},
    {"Mule"},
    {"Cheetah"},
    {"Ambulance"},
    {"Leviathan"},
    {"Moonbeam"},
    {"Esperanto"},
    {"Taxi"},
    {"Washington"},
    {"Bobcat"},
    {"Mr Whoopee"},
    {"BF Injection"},
    {"Hunter"},
    {"Premier"},
    {"Enforcer"},
    {"Securicar"},
    {"Banshee"},
    {"Predator"},
    {"Bus"},
    {"Rhino"},
    {"Barracks"},
    {"Hotknife"},
    {"Trailer 1"},
    {"Previon"},
    {"Coach"},
    {"Cabbie"},
    {"Stallion"},
    {"Rumpo"},
    {"RC Bandit"},
    {"Romero"},
    {"Packer"},
    {"Monster"},
    {"Admiral"},
    {"Squalo"},
    {"Seasparrow"},
    {"Pizzaboy"},
    {"Tram"},
    {"Trailer 2"},
    {"Turismo"},
    {"Speeder"},
    {"Reefer"},
    {"Tropic"},
    {"Flatbed"},
    {"Yankee"},
    {"Caddy"},
    {"Solair"},
    {"Berkley's RC Van"},
    {"Skimmer"},
    {"PCJ-600"},
    {"Faggio"},
    {"Freeway"},
    {"RC Baron"},
    {"RC Raider"},
    {"Glendale"},
    {"Oceanic"},
    {"Sanchez"},
    {"Sparrow"},
    {"Patriot"},
    {"Quad"},
    {"Coastguard"},
    {"Dinghy"},
    {"Hermes"},
    {"Sabre"},
    {"Rustler"},
    {"ZR-350"},
    {"Walton"},
    {"Regina"},
    {"Comet"},
    {"BMX"},
    {"Burrito"},
    {"Camper"},
    {"Marquis"},
    {"Baggage"},
    {"Dozer"},
    {"Maverick"},
    {"News Chopper"},
    {"Rancher"},
    {"FBI Rancher"},
    {"Virgo"},
    {"Greenwood"},
    {"Jetmax"},
    {"Hotring"},
    {"Sandking"},
    {"Blista Compact"},
    {"Police Maverick"},
    {"Boxville"},
    {"Benson"},
    {"Mesa"},
    {"RC Goblin"},
    {"Hotring Racer A"},
    {"Hotring Racer B"},
    {"Bloodring Banger"},
    {"Rancher"},
    {"Super GT"},
    {"Elegant"},
    {"Journey"},
    {"Bike"},
    {"Mountain Bike"},
    {"Beagle"},
    {"Cropdust"},
    {"Stunt"},
    {"Tanker"},
    {"Roadtrain"},
    {"Nebula"},
    {"Majestic"},
    {"Buccaneer"},
    {"Shamal"},
    {"Hydra"},
    {"FCR-900"},
    {"NRG-500"},
    {"HPV1000"},
    {"Cement Truck"},
    {"Tow Truck"},
    {"Fortune"},
    {"Cadrona"},
    {"FBI Truck"},
    {"Willard"},
    {"Forklift"},
    {"Tractor"},
    {"Combine"},
    {"Feltzer"},
    {"Remington"},
    {"Slamvan"},
    {"Blade"},
    {"Freight"},
    {"Streak"},
    {"Vortex"},
    {"Vincent"},
    {"Bullet"},
    {"Clover"},
    {"Sadler"},
    {"Firetruck LA"},
    {"Hustler"},
    {"Intruder"},
    {"Primo"},
    {"Cargobob"},
    {"Tampa"},
    {"Sunrise"},
    {"Merit"},
    {"Utility"},
    {"Nevada"},
    {"Yosemite"},
    {"Windsor"},
    {"Monster A"},
    {"Monster B"},
    {"Uranus"},
    {"Jester"},
    {"Sultan"},
    {"Stratum"},
    {"Elegy"},
    {"Raindance"},
    {"RC Tiger"},
    {"Flash"},
    {"Tahoma"},
    {"Savanna"},
    {"Bandito"},
    {"Freight Flat"},
    {"Streak Carriage"},
    {"Kart"},
    {"Mower"},
    {"Duneride"},
    {"Sweeper"},
    {"Broadway"},
    {"Tornado"},
    {"AT-400"},
    {"DFT-30"},
    {"Huntley"},
    {"Stafford"},
    {"BF-400"},
    {"Newsvan"},
    {"Tug"},
    {"Trailer 3"},
    {"Emperor"},
    {"Wayfarer"},
    {"Euros"},
    {"Hotdog"},
    {"Club"},
    {"Freight Carriage"},
    {"Trailer 3"},
    {"Andromada"},
    {"Dodo"},
    {"RC Cam"},
    {"Launch"},
    {"Police Car (LSPD)"},
    {"Police Car (SFPD)"},
    {"Police Car (LVPD)"},
    {"Police Ranger"},
    {"Picador"},
    {"S.W.A.T. Van"},
    {"Alpha"},
    {"Phoenix"},
    {"Glendale"},
    {"Sadler"},
    {"Luggage Trailer A"},
    {"Luggage Trailer B"},
    {"Stair Trailer"},
    {"Boxville"},
    {"Farm Plow"},
    {"Utility Trailer"}
    };

    Spoiler anzeigen
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new cmd[20], idx;
    cmd = strtok(cmdtext, idx);
    if(strcmp(cmd, "/veh", true) == 0)
    {
    new String[200];
    new tmp[20];
    new Float:x, Float:y, Float:z;

    Spoiler anzeigen
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, l_red, "You didn't give a vehicle name");
    new vehicle;

    Spoiler anzeigen
    if(!IsNumeric(tmp)) vehicle = GetVehicleModelIDFromName(tmp);
    else vehicle = strval(tmp);

    Spoiler anzeigen
    if(vehicle < 400 || vehicle > 611) return SendClientMessage(playerid, l_red, "That vehicle name was not found");

    Spoiler anzeigen
    new Float:a;
    GetPlayerFacingAngle(playerid, a);
    GetPlayerPos(playerid, x, y, z);

    Spoiler anzeigen
    if(IsPlayerInAnyVehicle(playerid) == 1)
    {
    GetXYInFrontOfPlayer(playerid, x, y, 8);
    }
    else
    {
    GetXYInFrontOfPlayer(playerid, x, y, 5);
    }

    Spoiler anzeigen
    new PlayersVehicle = CreateVehicle(vehicle, x, y, z, a+90, -1, -1, -1);
    LinkVehicleToInterior(PlayersVehicle, GetPlayerInterior(playerid));

    Spoiler anzeigen
    format(String, sizeof(String), "You have spawned a %s", aVehicleNames[vehicle - 400]);
    SendClientMessage(playerid, l_green, String);
    return 1;
    }
    return 0;
    }

    Spoiler anzeigen
    stock strtok(const string[], &index) //©Jeffry
    {
    new result[20], length = strlen(string), i = index;
    while ((i < length) && (string[i] == ' ')) i++;
    strmid(result,string,i,((index = strfind(string, " ", false, i)) == -1) ? (index = length) : (index) , 20);
    index++;
    return result;
    }

    Spoiler anzeigen
    stock IsNumeric(str[]) //©Jeffry
    {
    if(!strlen(str)) return 0;
    for (new i = 0, j = strlen(str); i < j; i++) if(str[i] > '9' || str[i] < '0') return 0;
    return 1;
    }

    Spoiler anzeigen
    GetVehicleModelIDFromName(vname[])
    {
    for(new i = 0; i < 211; i++)
    {
    if(strfind(aVehicleNames[i], vname, true) != -1)
    return i + 400;
    }
    return -1;
    }

    Spoiler anzeigen
    stock GetXYInFrontOfPlayer(playerid, &Float:x2, &Float:y2, Float:distance)
    {
    new Float:a;

    Spoiler anzeigen
    GetPlayerPos(playerid, x2, y2, a);
    GetPlayerFacingAngle(playerid, a);

    Spoiler anzeigen
    if(GetPlayerVehicleID(playerid))
    {
    GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
    }

    Spoiler anzeigen
    x2 += (distance * floatsin(-a, degrees));
    y2 += (distance * floatcos(-a, degrees));
    }

    Das liegt an der Verzögerung zwischen dem Absenden des Dialogs und der Cache-Rückgabe.
    Du musst bei OnPlayerRequestClass die Position sowie die Camera Position setzen, falls der Spieler nicht eingeloggt ist. Die Koordinaten (in etwa) habe ich hier gefunden: http://forum.sa-mp.com/showpost.php?p=2566177&postcount=4


    Übrigens:
    new mysqlquery[70];
    könnte theoretisch zu wenig sein, wenn der Spieler die vollen 24 Zeichen in Anspruch nimmt.
    Schreibe lieber:
    new mysqlquery[55 + MAX_PLAYER_NAME];
    Dann bist du auf der sicheren Seite.

    Möglicherweise liegt der andere Fehler an diesem Klammerfehler.
    COMMAND:jobholz(playerid,params[])
    {
    if(Spieler[playerid][pJob] == 0) return SendClientMessage(playerid,ROT,"Du hast noch keinen Job!");
    new cmd[15],string[129];
    if(sscanf(params,"s[15]",cmd)) return SendClientMessage(playerid,ROT,"Verwende: /job [start/stop]");
    if(Spieler[playerid][pJob] == 4)
    {
    if(!IsPlayerInRangeOfPoint(playerid,5.0,HOLZMANN)) return SendClientMessage(playerid,WEISS,"Du bist nicht in der Nähe des Waldes! (Haus)");
    ShowJobAnzeige(playerid);
    SetPlayerSkin(playerid,133);
    BaumWeg[playerid] = 0;
    ErstellungObjekteHolz(playerid);
    imHolzfaller[playerid] = true;
    SendClientMessage(playerid,GRAU,"");
    SendClientMessage(playerid,WEISS,"Schmeiß nun ein paar Bäume um! (Map Icon wurde gesetzt) - Zum Fällen am Baum 'Feuer Taste' drücken!");
    ERText(playerid,"Job gestartet~n~Schmeiss nun ein paar Baeume um!~n~Um den Job zu beenden, benutze:~n~/job",30000);
    PlayerTextDrawShow(playerid,Anzeige[playerid][0]);
    PlayerTextDrawShow(playerid,Anzeige[playerid][1]);
    format(string,sizeof(string),"Gefaellt:");
    PlayerTextDrawSetString(playerid,Anzeige[playerid][1],string);
    PlayerTextDrawShow(playerid,Anzeige[playerid][3]);
    PlayerTextDrawShow(playerid,Anzeige[playerid][2]);
    format(string,sizeof(string),"%i/10",BaumWeg[playerid]);
    PlayerTextDrawSetString(playerid,Anzeige[playerid][2],string);
    SetPlayerMapIcon(playerid, 74,2424.6169,-654.6063,125.4632, 19, 0, MAPICON_LOCAL);
    HolzStart[playerid] = 1;
    return true;
    }
    if(strcmp(cmd,"stop",true) == 0)
    {
    SendClientMessage(playerid,WEISS,"Du hast den Job beendet!");
    DisablePlayerCheckpoint(playerid);
    JobMarker[playerid] = 0;
    KillTimer(JobTimer[playerid]);
    for(new i=0;i<4;i++)
    {
    PlayerTextDrawHide(playerid,Anzeige[playerid][i]);
    }
    SetPlayerSkin(playerid,Spieler[playerid][pSkin]);
    EntfernungJobVariable(playerid);
    UnFreeze(playerid);
    imHolzfaller[playerid] = false;
    if(Spieler[playerid][pJob] != 4)
    {
    SetPlayerVirtualWorld(playerid,0); SetPlayerInterior(playerid,0);
    }
    if(Spieler[playerid][pJob] == 4)
    {
    EntfernungObjekteHolz(playerid); DeleteVehicle(holzauto[playerid]);
    }
    }
    return true;
    }


    Wobei ich nicht weiß, ob die Abfrage so ist wie du sie willst, das musst du gegebenenfalls anpassen.

    ocmd:Leadererstellen(playerid,params[])
    {
    if(!isAdmin(playerid,5))return SendClientMessage(playerid,grün,"Du hast keine Berechtigung dazu!");
    new pID,fID;
    if(sscanf(params,"ui",pID,fID))return
    SendClientMessage(playerid,dunkelblau,"INFO: /Leadererstellen [playerid][fraktid]");
    if(fID>= sizeof(fInfo))return SendClientMessage(playerid,rot,"Die Fraktion existiert nicht!");
    sInfo[pID][fraktion] = fID;
    sInfo[pID][rang] = 5;
    new string[145];
    format(string,sizeof(string),"%s hat Sie zum Leader der Fraktion %s gemacht.",getPlayerName(playerid),fInfo[fID][f_name]);
    SendClientMessage(pID,grün,string);
    format(string,sizeof(string),"%s hat Sie zum Leader der Fraktion ernannt. Sie haben nun 5Wochen eine Fraktionssperre!",getPlayerName(playerid));
    SendClientMessage(pID,grün,string);
    SendClientMessage(pID,grün,"Sollten sie vorher die Fraktion verlassen bekommen sie eine Leaderverwarnung!");
    SetPlayerColor(playerid,fInfo[fID][f_color]);
    return 1;
    }

    In SA-MP ist das relativ schwer zu bewerkstelligen. Du könntest zwar versuchen, das mit texturierten Objekten zu machen, die du bewegen lässt, aber ob das wirklich toll aussieht ist die andere Frage.

    format(string,sizeof(string),"%s hat Sie zum Leader der Fraktion ernannt. Sie haben nun 5Wochen eine Fraktionssperre! Sollten sie vorher die Fraktionverlassen bekommen sie eine Leaderverwarnung!",getPlayerName(playerid),fInfo[fID][f_name]);
    SendClientMessage(pID,grün,string);


    zu:
    format(string,sizeof(string),"%s hat Sie zum Leader der Fraktion ernannt. Sie haben nun 5Wochen eine Fraktionssperre!",getPlayerName(playerid));
    SendClientMessage(pID,grün,string);
    SendClientMessage(pID,grün,"Sollten sie vorher die Fraktion verlassen bekommen sie eine Leaderverwarnung!");


    Außerdem sieht die Nachricht ja der andere (außer du gibst es dir selbst).