Beiträge von Templer

    Füge diesen Stock von dieser folgenden Seite in dein Script oben ein...
    http://wiki.sa-mp.com/wiki/Sscanf


    In OnPlayerCommandText folgende Zeile einfügen:
    dcmd(schreien, strlen("schreien"), cmdtext);


    und ersetzt deinen Befehl hiermit...
    dcmd_schreien(playerid, params[])
    {
    new text[100],string[128];
    if(sscanf(params,"s",text)) return SendClientMessage(playerid, 0xFFFFFF00, "Verwendung: /schreien [Text]");
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    format(string,sizeof(string),"%s schreit: %s",name,text);
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    for(new d=0; d<MAX_PLAYERS; d++)
    {
    if(IsPlayerInRangeOfPoint(d, 10.0, x, y, z)) SendClientMessage(d, farbe, string);
    }
    return 1;
    }

    Du musst vor #else eine #if Abfrage haben, damit dies Funktioniert oder du ersetzt das #else durch eine #if Abfrage


    Bei Zeile 244 nütze bitte nicht split, sondern gleich die Funktion strfind, also zB.:


    strfind(playername2,"_",false);


    Zitat von Wiki Samp wegen strfind:

    Zitat

    Returns Die Zahl ab welchem Charakter der Substring anfänft (Die StartpositionsZahl vom Substring) oder die Zahl -1 wenn nichts gefunden wurde.

    Poste bei Zeile 256 auch die Zeile davor

    Die Formatierung %f gibt die ganze Zahl mit bis zu 5 Kommastellen glaube ich, ändern kannst du es indem du folgendes nützt...


    %0.f ... gibt eine Kommastelle von Zahl an
    %1.f ... gibt zwei Kommastellen von Zahl an
    %2.f ... gibt drei Kommastellen von Zahl an


    usw.. ^^

    Das kann man in dem Sinne nicht herausfinden, da dem Script kein Include fehlt, sondern in einem vorhanden Include was anders ist, was bei dem von wo du es gekriegt hast geändert wurde.. Sry, also so können wir es dir nicht sagen

    Hier ein Beispiel was selbsterklärend sein sollte...


    public OnPlayerCommandText(playerid, cmdtext[]) //Ausgeführt wenn Spieler im Chat die Nachricht mit / beginnt
    {
    if(strcmp(cmdtext, "/afk", false) == 0) //Überprüfung ob Spieler /afk geschrieben hat!
    {
    new spielername[MAX_PLAYER_NAME], string[128];
    GetPlayerName(playerid, spielername, sizeof(spielername)); //Filtere Spielernamen heraus
    format(string, sizeof(string), "Spieler %s hat sich als AFK gemeldet!", spielername) //Formatiere Text den an alle gesendet wird
    SendClientMessageToAll(0xFFFFFF00, string); //Sende den formatierten Text an Alle
    return 1;
    }
    return 0;
    }

    Zeile 144 und 149 bedeutet, dass dort die TAB-Verschiebung falsch ist, also die Ausrichtung. Am besten einfach Nachrichten


    Zeile 229 bedeutet, dass du diese Farbe definieren sollten am besten oben im Script mit sagen wir
    #defne COLOUR_DISCONNECT (0xFFFFFF00) //Für die Farbe weiß ^^


    Zeile 240 bedeutet, du sollst entweder eine public oder eine stock Funktion erstellen in der das Ausgeführt wird, dass dem Spieler die Daten in eine Daten abgespeichert wird (was ich vom Funktionsnamen so verstehe)


    Die restlichen Warning kannst du eigentlich ignorieren und stören auch nicht...

    Ja, es ist aber ganz einfach, ganz oben im Script erstellst du eine globale Definition zB.:


    new gCountDeleteCreatedVehicles = 0;
    new gDeleteCreatedVehicles[50]; //Die Zahl ändern, wenn mehr als 50 Autos damit definiert wurden bzw weniger als 50 Autos ^^


    danach fügst du folgendes dort ein wo die Autos dafür erstellt werden, zB bei deinem Beispiel sieht es dann so aus:


    gDeleteCreatedVehicles[gCountDeleteCreatedVehicles] = AddStaticVehicleEx (411,player_pos[0],player_pos[1],player_pos[2],player_pos[3],-1,-1,-1);
    gCountDeleteCreatedVehicles++;


    und dann einfach eine billige Abfrage unter OnVehicleDeath


    public OnVehicleDeath(vehicleid, killerid)
    {
    new vehid;
    for(; vehid < gCountDeleteCreatedVehicles; vehid++)
    {
    if(vehicleid == gDeleteCreatedVehicles[vehid])
    {
    DestroyVehicle(gDeleteCreatedVehicles[vehid]);
    break;
    }
    }
    return 1;
    }


    Hoffe ich hab dir damit geholfen ^^

    Das bedeutet einfach, dass in diesem Script etwas fehlt oder in einem include ist, was bei denen anders modifiziert wurde. Entweder du fragst bei demjenegen nach ob er seine Includes dir schickt oder du hast einfach Pech ^^

    Ja ins Auto, damit die Waffen die Weggenommen werden, also die SMG, wieder benutzbar sind. Natürlich kannst du oben in den defines die Option, dass die Waffen abgenommen werden in der DM Zone abstellen

    Nun ja, ich habe eigentlich ein Ass im Ärmel, was besser ist als mein "Sekundenzähler" im OnPlayerUpdate und besser als ein Timer der bei OnGameModeInit oder bei OnPlayerConnect gestartet wird. Wenn ich dir jetzt damit deine "gedachte" Möglichkeit erfasst habe, dann bin ich zufrieden. Wenn Nicht, dann beantworte mir folgende Frage "Wäre bei deiner Möglichkeit OnPlayerUpdate in benützung oder würdest du diesen Callback bei deiner Möglichkeit ganz weglassen?" ^^

    Ehm nein sry, hab es bissl falsch aufgebaut, mom:


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    new pVeh = GetPlayerVehicleID(playerid);
    if (oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
    {
    if(pVeh == hhvehicles[9])
    {
    if(happyhour == 1) SendClientMessage(playerid,COLOR_LIGHTBLUE,"Viel Spass in der HappyHour mit diesem Fahrzeug.");
    else
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,COLOR_LIGHTRED,"Das Fahrzeug ist nur in der HappyHour verfügbar.");
    }
    }
    }
    return 1;
    }

    Guck mal wie dein Code aufgebaut ist und wie meiner hier unten ^^


    if (strcmp(cmdtext, "/verkaufen", true) ==0 )
    {
    if(Spieler[playerid][Job] != 1) return SendClientMessage(playerid,rot,"Du bist kein Auto Dieb");
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,rot,"Du sitzt in keinem Fahrzeug!");
    if(!IsPlayerInRangeOfPoint(playerid,7, -2323.0105,-1624.4343,483.8835)) return SendClientMessage(playerid,rot,"Du bist nicht an der Richtigen Stelle.");
    SendClientMessage(playerid, gelb,"Du hast dieses Auto erfolgreich verkauft und erhälst 1.000");
    GivePlayerMoney(playerid, 1000);
    return 1;
    }


    INFO: Deine Abfrage mit if(vehicle > 0) ist sehr sinnlos, denn wenn ein Fahrzeug die ID 0 hat, hat er wohl pech oder? ^^ Deswegen nütze lieber IsPlayerInAnyVehicle nebenbei hattest du ein bis zwei Klammern zuviel die eine fehlerhafte Abfrage ermöglichten. Ansonsten passt alles

    So muss es aussehen


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    new pVeh = GetPlayerVehicleID(playerid);
    if (oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
    {
    if(pVeh == hhvehicles[9] && happyhour == 1)
    {
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"Viel Spass in der HappyHour mit diesem Fahrzeug.");
    }
    else
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,COLOR_LIGHTRED,"Das Fahrzeug ist nur in der HappyHour verfügbar.");
    }
    }
    return 1;
    }

    Kann nicht sein, da die Fahrzeuge bei meiner Include erstellt werden, kann es sein das du irgendandere Includes nützt wie zB AntICheat JunkBuster und Co

    Nein du verwendest es richtig, aber lol. Du hast es in einer for Schleife und wiederholst es 500mal, also dem Spieler wird 500mal 1 Zigarette abgezogen xD Ka wie du auf die Schnappsidee kamst und dann auch noch, wenn ein Spieler raucht, soll jeder rauchen? :P


    Hier der gefixxte Code ^^


    dcmd_smoke(playerid,params[])
    {
    #pragma unused params
    if(SpielerInfo[playerid][Zigaretten] == 0)
    {
    return SendClientMessage(playerid,Rot,"[Server]Du hast keine Zigaretten mehr!Kaufe dir welche im 24/7!");
    }
    else
    {
    AmRauchen[playerid] = 1;
    SpielerInfo[playerid][Zigaretten] -= 1;
    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_SMOKE_CIGGY);
    }
    return 1;
    }