Beiträge von KinGRaPTiiC

    @Jeffry mit dem if(sscanf(params,"ii",pID,mID))return SendClientMessage(playerid,DUNKELROT,"[INFO] /veh [playerid] [modelid]");
    hat es funktioniert danke dir



    /edit habe ein weiteres Problem:


    Ingame sieht es so aus:
    http://prntscr.com/gongh5


    und so sieht meine Datenbank aus:
    http://prntscr.com/gonh6x


    so sieht mein pDataEnum aus:


    enum pDataEnum
    {
    p_id,
    bool:pLoggedIn,
    pName[MAX_PLAYER_NAME],
    pLevel,
    pMoney,
    pKills,
    pDeaths,
    pAlevel,
    pFraktion,
    pRank,
    pPerso,
    pSpawnchange,
    pPayday,
    pXP,
    pXPMax,
    pCarlic,
    pBikelic,
    pFlylic,
    pWaffenlic,
    pBoatlic,
    pDrugs,
    pStartbonus,
    pMats,
    pMatpacks,
    pBusfahrer,
    pLandwirt,
    pStrassenfeger,
    pDrogendealer,
    pHure,
    pWaffendealer
    }


    und so sieht mein gesamter /set code aus:


    ocmd:set(playerid,params[])
    {
    if(!isAdmin(playerid, 3))return SendClientMessage(playerid,DUNKELROT,"Dein Adminlevel ist zu Niedrig!");
    new pID,string[128],cmd[30],menge;
    if(sscanf(params,"usi",pID,cmd,menge))
    {
    SendClientMessage(playerid,GELB,"[INFO]: /set [playerid/Name][Aktion] [Menge/Betrag]");
    return SendClientMessage(playerid,GRAU,"[Bank/Level/Skin/Geld/Respektpunkte/Drogen/Mats]");
    }
    if(strcmp(cmd,"Level",true) == 0)
    {
    if(!isAdmin(playerid, 3))return SendClientMessage(playerid,DUNKELROT,"Dein Adminlevel ist zu Niedrig!");
    if(menge<1||menge>100)return SendClientMessage(playerid,GELB,"/set Level [playerid/Name][Level 1-100]");
    format(string,sizeof(string),"AdmCmd: Der Admin %s (ID:%i) hat dein Level auf %i gesetzt.",SpielerName(playerid),playerid,menge);
    SendClientMessage(pID,HELLBLAU,string);
    format(string,sizeof(string),"AdmCmd: Du hast dem Spieler %s (ID:%i) das Level auf %i gesetzt.",SpielerName(pID),pID,menge);
    SendClientMessage(playerid,HELLBLAU,string);
    SetPlayerLevel(pID,menge);


    SaveUserStats(pID);
    }
    if(strcmp(cmd,"Skin",true) == 0)
    {
    if(menge<1||menge>311)return SendClientMessage(playerid,GELB,"/set Skin [playerid/Name][1-311]");
    SetPlayerSkin(pID,menge);
    format(string,sizeof(string),"AdmCmd: Der Admin %s (ID: %i) hat dir den Skin %i zugewiesen.",SpielerName(playerid),playerid,menge);
    SendClientMessage(pID,HELLBLAU,string);
    format(string,sizeof(string),"AdmCmd: Du hast dem Spieler %s (ID:%i) den Skin %i zugewiesen.",SpielerName(pID),pID,menge);
    SendClientMessage(playerid,HELLBLAU,string);
    SaveUserStats(pID);
    }
    if(strcmp(cmd,"Geld",true) == 0)
    {
    if(menge<1||90000000)return SendClientMessage(playerid,GELB,"/set Geld [playerid/Name][1-90000000]");
    ResetPlayerMoney(pID);
    GivePlayerMoney(pID, menge);
    PlayerInfo[pID][pMoney] = menge;
    format(string, sizeof(string), "AdmCmd: %s hat dein Geld auf $%i gesetzt.", SpielerName(playerid), menge);
    SendClientMessage(pID, HELLBLAU, string);
    format(string, sizeof(string), "AdmCmd: Du hast %s den Geldbetrag auf $%i gesetzt.", SpielerName(pID), menge);
    SendClientMessage(playerid, HELLBLAU, string);
    SaveUserStats(pID);
    }
    if(strcmp(cmd,"Drogen",true) == 0)
    {
    PlayerInfo[pID][pDrugs] += menge;
    format(string,sizeof(string),"AdmCmd: Der Admin %s (ID:%i) hat dir deine Drogen auf %i gesetzt.",SpielerName(playerid),playerid,menge);
    SendClientMessage(pID,HELLBLAU,string);
    format(string,sizeof(string),"AdmCmd: Du hast dem Spieler %s (ID:%i) die Drogen auf %i gesetzt.",SpielerName(pID),pID,menge);
    SendClientMessage(playerid,HELLBLAU,string);
    SaveUserStats(pID);
    }
    if(strcmp(cmd,"Mats",true) == 0)
    {
    PlayerInfo[pID][pMats] = menge;
    format(string,sizeof(string),"AdmCmd: Der Admin %s (ID:%i) hat dir deine Mats auf %i gesetzt.",SpielerName(playerid),playerid,menge);
    SendClientMessage(pID,HELLBLAU,string);
    format(string,sizeof(string),"AdmCmd: Du hast dem Spieler %s (ID:%i) die Mats auf %i gesetzt.",SpielerName(pID),pID,menge);
    SendClientMessage(playerid,HELLBLAU,string);
    SaveUserStats(pID);
    }
    return 1;
    }


    und da wäre noch etwas wenn ich /set 0 Geld [menge] angebe sieht so aus:


    http://prntscr.com/gonhtq


    kommt halt immer diese Nachricht die im Chat auf dem Screenshot ist.


    Mfg.

    Es kommt aus irgendeinem Grund immer SERVER: Unknown Command


    ocmd:veh(playerid,params[])
    {
    if(!isAdmin(playerid, 3))return SendClientMessage(playerid,DUNKELROT,"Dein Adminlevel ist zu Niedrig!");
    new mID, pID;
    if(sscanf(params,"ui",pID,mID))return SendClientMessage(playerid,DUNKELROT,"[INFO] /veh [playerid] [modelid]");
    if(mID<=400 ||mID>611)return SendClientMessage(playerid,DUNKELROT,"Ungültige Model ID!");
    new Float:xc,Float:yc,Float:zc,Float:rc;
    GetPlayerPos(playerid,xc,yc,zc);
    GetPlayerFacingAngle(playerid,rc);
    createPlayerCar(pID,mID,xc,yc,zc,rc);
    return 1;
    }
    Aber wenn ich z.B /veh [SPIELERID] [FahrzeugID] eingebe kommt Ungültige Model ID!


    aber anders rum SERVER: Unknown Command

    Wenn ich /agivelicense mache bleibt es in der Datenbank trotzdem noch auf 0 was mache ich falsch selbst nach einem Disconnect:


    ocmd:agivelicense(playerid,params[])
    {
    new pID, licname[20];
    if(!isAdmin(playerid, 3))return SendClientMessage(playerid,DUNKELROT,"Dein Adminlevel ist zu Niedrig!");
    if(sscanf(params,"us",pID,licname))return SendClientMessage(playerid,GELB,"[INFO]: /givelicense [ID] [Auto, Motorrad, Boot, Flug, Waffen, Alle]");
    if(strcmp(licname,"Auto",true)==0)
    {
    PlayerInfo[playerid][pCarlic]=1;
    SaveUserStats(playerid);
    }
    else if(strcmp(licname,"Motorrad",true)==0)
    {
    PlayerInfo[playerid][pBikelic]=1;
    SaveUserStats(playerid);
    }
    else if(strcmp(licname,"Boot",true)==0)
    {
    PlayerInfo[playerid][pBoatlic]=1;
    SaveUserStats(playerid);
    }
    else if(strcmp(licname,"Flug",true)==0)
    {
    PlayerInfo[playerid][pFlylic]=1;
    SaveUserStats(playerid);
    }
    else if(strcmp(licname,"Waffen",true)==0)
    {
    PlayerInfo[playerid][pWaffenlic]=1;
    SaveUserStats(playerid);
    }
    else if(strcmp(licname,"Alle",true)==0)
    {
    PlayerInfo[playerid][pCarlic]=1;
    PlayerInfo[playerid][pBikelic]=1;
    PlayerInfo[playerid][pBoatlic]=1;
    PlayerInfo[playerid][pFlylic]=1;
    PlayerInfo[playerid][pWaffenlic]=1;
    SaveUserStats(playerid);
    }
    else SendClientMessage(playerid,GELB,"[INFO]: /agivelicense [ID] [Auto, Motorrad, Boot, Flug, Waffen, Alle]");
    return 1;
    }

    Ich habe eine frage und zwar möchte ich das wenn ich /scheine eingebe dort steht Führerschein bestanden aber das soll dann z.B so aussehen:


    SendClientMessage(playerid,x,"Führerschein<- WEISS -> GRÜN bestanden // oder
    SendClientMessage(playerid,x,"Führerschein<- WEISS -> ROT nicht bestanden


    aber wie mache ich das dass script erkennt das wenn PlayerInfo[playerid][pCarlic] = 1;


    dort halt bestanden steht?

    Wie gesagt der letzte Checkpoint wird nicht "gelöscht" aber alle anderen schon wird jetzt zwar nicht viel bringen aber hier wie es aussieht:


    http://prntscr.com/gma1pc



    codes:


    public OnPlayerEnterCheckpoint(playerid)
    {
    if(GetPVarInt(playerid, "fs_start"))
    {
    new cID = GetPVarInt(playerid, "fs_cp");
    if(IsPlayerInRangeOfPoint(playerid, 5, fsCPs[cID][fs_x], fsCPs[cID][fs_y], fsCPs[cID][fs_z]))
    {
    cID++;
    if(cID > sizeof(fsCPs))
    {
    PlayerInfo[playerid][pCarlic] = 1;
    }
    else
    {
    SetPVarInt(playerid, "fs_cp", cID);
    SetPlayerCheckpoint(playerid, fsCPs[cID][fs_x], fsCPs[cID][fs_y], fsCPs[cID][fs_z], 5);
    }
    return 1;
    }
    }
    DisablePlayerCheckpoint(playerid);
    return 1;
    }


    ocmd:fahrschule(playerid, params[])
    {
    new Float:xc, Float:yc, Float:zc, Float:ac;
    GetPlayerPos(playerid, xc,yc,zc);
    GetPlayerFacingAngle(playerid,ac);
    new vID = CreateVehicle(405, xc, yc, zc, ac, 1, 1, -1);
    SetPVarInt(playerid, "fs_car", vID);
    PutPlayerInVehicle(playerid, vID, 0);
    SetPlayerCheckpoint(playerid, fsCPs[0][fs_x], fsCPs[0][fs_y], fsCPs[0][fs_z], 5);
    SetPVarInt(playerid, "fs_cp", 0);
    SetPVarInt(playerid, "fs_start", 1);

    return 1;
    }



    wenn noch was fehlt bescheid geben ^^

    @Braun_Strowman


    mein Tank kram:


    public Sekunde(playerid)
    {
    new sekunden,minuten,stunden,string[128];
    gettime(stunden,minuten,sekunden);
    format(string,sizeof(string),"%02d:%02d:%02d",stunden,minuten,sekunden);
    TextDrawSetString(TDEditor_TD[0],string);
    TextDrawShowForPlayer(playerid,TDEditor_TD[0]);
    new string1[128];
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(!IsPlayerInAnyVehicle(i))continue;
    new vID = GetPlayerVehicleID(i);
    format(string1, sizeof(string), "Tank: %i%%", tank[vID]);
    PlayerTextDrawSetString(i,TDEditor_PTD[i][5],string1);
    }
    tanktimer++;
    if(tanktimer == 5)
    {
    tanktimer = 0;
    //Tanks red.
    for(new i=0; i<MAX_VEHICLES; i++)
    {
    if(isMotorOn(i))continue;
    tank[i]--;
    }
    }
    return 1;
    }


    und meine isMotorOnFunktion:


    isMotorOn(vID)
    {
    new tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective;
    GetVehicleParamsEx(vID, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);
    if(tmp_engine == 1)return 1;
    return 0;
    }

    Zitat von Kasakow

    @KinGRaPTiiC
    Das hat sich zur Info seit den neuen Versionen ein bisschen umgestellt, les dir mal die aktuelle Wiki durch;)

    @Kasakow Vielen Dank wusste nicht das es das gibt vielleicht hab ich jetzt mal weniger Probleme :D




    /edit Frage:


    Sehe in manchen Scripts das die Dialoge in einem Enum gemacht werden wofür ist das Ressourcen sparender oder so was? weil hab es halt ganz normal mit #define XXXX 1 z.b

    einer eine ahnung?
    C:\Users\Dustin\Desktop\SA-MP Server\gamemodes\selfmade.pwn(3805) : warning 213: tag mismatch
    C:\Users\Dustin\Desktop\SA-MP Server\gamemodes\selfmade.pwn(3806) : warning 213: tag mismatch
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Warnings.


    cache_get_value_name(i, "besitzer", hInfo[id][h_besitzer], handle);
    hInfo[id][h_id]=cache_get_value_name_int(i, "id", handle);

    funktioniert immer noch nicht... aktueller code:


    new tanktimer =0;


    public Sekunde(playerid)
    {
    new sekunden,minuten,stunden,string[128];
    gettime(stunden,minuten,sekunden);
    format(string,sizeof(string),"%02d:%02d:%02d",stunden,minuten,sekunden);
    TextDrawSetString(TDEditor_TD[0],string);
    TextDrawShowForPlayer(playerid,TDEditor_TD[0]);
    new string1[128];
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(!IsPlayerInAnyVehicle(i))continue;
    new vID = GetPlayerVehicleID(i);
    format(string1, sizeof(string), "Tank: %i%%", tank[vID]);
    PlayerTextDrawSetString(i,TDEditor_PTD[i][5],string1);
    }
    tanktimer++;
    if(tanktimer == 25)
    {
    tanktimer = 0;
    //Tanks red.
    for(new i=0; i<MAX_VEHICLES; i++)
    {
    if(isMotorOn(i))continue;
    tank[i]--;
    }
    }
    return 1;
    }

    Hey ich weiß nicht richtig wie ich es beschreiben soll ich zeig einfach mal das was ich habe auf jedenfall wird im Textdraw nur %i angezeigt....


    new tanktimer =0;
    public Sekunde(playerid)
    {
    new sekunden,minuten,stunden,string[128];
    gettime(stunden,minuten,sekunden);
    format(string,sizeof(string),"%02d:%02d:%02d",stunden,minuten,sekunden);
    TextDrawSetString(TDEditor_TD[0],string);
    TextDrawShowForPlayer(playerid,TDEditor_TD[0]);
    new string1[128];
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))continue;
    if(IsPlayerInAnyVehicle(i))continue;
    new vID = GetPlayerVehicleID(i);
    format(string1, sizeof(string), "Tank: %i%%", tank[vID]);
    PlayerTextDrawSetString(i,TDEditor_PTD[i][5],string1);
    }
    tanktimer++;
    if(tanktimer == 26)
    {
    tanktimer = 0;
    //Tanks red.
    for(new i=1; i<sizeof(tank); i++)
    {
    if(isMotorOn(i))continue;
    tank[i]--;
    }
    }
    return 1;
    }


    Unter OnGameModeInit:
    for(new i=0; i<sizeof(tank); i++)
    {
    tank[i]=100;
    }


    TDEditor_PTD[playerid][5] = CreatePlayerTextDraw(playerid, 512.588256, 384.250122, "Tank: %i");
    PlayerTextDrawLetterSize(playerid, TDEditor_PTD[playerid][5], 0.400000, 1.600000);
    PlayerTextDrawAlignment(playerid, TDEditor_PTD[playerid][5], 1);
    PlayerTextDrawColor(playerid, TDEditor_PTD[playerid][5], -1);
    PlayerTextDrawSetShadow(playerid, TDEditor_PTD[playerid][5], 0);
    PlayerTextDrawSetOutline(playerid, TDEditor_PTD[playerid][5], 0);
    PlayerTextDrawBackgroundColor(playerid, TDEditor_PTD[playerid][5], 255);
    PlayerTextDrawFont(playerid, TDEditor_PTD[playerid][5], 1);
    PlayerTextDrawSetProportional(playerid, TDEditor_PTD[playerid][5], 1);
    PlayerTextDrawSetShadow(playerid, TDEditor_PTD[playerid][5], 0);
    PlayerTextDrawHide(playerid, TDEditor_PTD[playerid][5]);


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate==PLAYER_STATE_DRIVER)
    {
    new vID=GetPlayerVehicleID(playerid);
    PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][0]);
    PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][1]);
    PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][2]);
    PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][3]);
    PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][4]);
    PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][5]);
    PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][6]);
    if(!hasEngine(vID))
    {
    new a,b,c,d,e,f;
    //Motor an/ausschalten
    GetVehicleParamsEx(vID, a,a,b,c,d,e,f);
    SetVehicleParamsEx(vID, 1, a,b,c,d,e,f);
    }
    for(new i=0; i<sizeof(ahCars); i++)
    {
    if(ahCars[i][id_x]!=vID)continue;
    //Verkaufsprozess
    SetPVarInt(playerid,"buyCarID",i);
    new string[256];
    format(string,sizeof(string),"Möchten sie das Fahrzeug für %i$ kaufen?",ahCars[i][c_preis]);
    ShowPlayerDialog(playerid,DIALOG_AUTOHAUS,DIALOG_STYLE_MSGBOX,"Autoverkauf",string,"Ja","Nein");
    break;
    }
    return 1;
    }
    if(newstate==PLAYER_STATE_ONFOOT)
    {
    PlayerTextDrawHide(playerid, TDEditor_PTD[playerid][0]);
    PlayerTextDrawHide(playerid, TDEditor_PTD[playerid][1]);
    PlayerTextDrawHide(playerid, TDEditor_PTD[playerid][2]);
    PlayerTextDrawHide(playerid, TDEditor_PTD[playerid][3]);
    PlayerTextDrawHide(playerid, TDEditor_PTD[playerid][4]);
    PlayerTextDrawHide(playerid, TDEditor_PTD[playerid][5]);
    PlayerTextDrawHide(playerid, TDEditor_PTD[playerid][6]);
    }
    return 1;
    }



    sollte etwas fehlen bescheid sagen und schaue dann ob ich es im script habe :) //habe zudem keine Errors/Warnings

    Also Ingame wird mein Textdraw jetzt angezeigt aber wie gesagt egal wie schnell ich fahre es bleibt bei 0 Km/h


    http://prntscr.com/gkpf5g


    das was ich jetzt alles habe mein Textdraw unter OnGameModeInit:


    TDEditor_PTD[playerid][4] = CreatePlayerTextDraw(playerid, 512.588134, 344.583435, "Km/h: %d");
    PlayerTextDrawLetterSize(playerid, TDEditor_PTD[playerid][4], 0.341176, 2.667503);
    PlayerTextDrawAlignment(playerid, TDEditor_PTD[playerid][4], 1);
    PlayerTextDrawColor(playerid, TDEditor_PTD[playerid][4], -1);
    PlayerTextDrawSetShadow(playerid, TDEditor_PTD[playerid][4], 0);
    PlayerTextDrawSetOutline(playerid, TDEditor_PTD[playerid][4], 0);
    PlayerTextDrawBackgroundColor(playerid, TDEditor_PTD[playerid][4], 255);
    PlayerTextDrawFont(playerid, TDEditor_PTD[playerid][4], 1);
    PlayerTextDrawSetProportional(playerid, TDEditor_PTD[playerid][4], 1);
    PlayerTextDrawSetShadow(playerid, TDEditor_PTD[playerid][4], 0);
    PlayerTextDrawHide(playerid, TDEditor_PTD[playerid][4]);



    Timer unter OnGameModeInit:


    SetTimer("Tacho", 250, 1);



    und das public Tacho forward ist auch vorhanden aber woanders:


    public Tacho()
    {
    for(new i=GetPlayerPoolSize(),string[32]; i!=-1; i--)
    {
    if(!IsPlayerConnected(i) || IsPlayerNPC(i) || !IsPlayerInAnyVehicle(i)) continue;
    format(string,sizeof(string),"Km/h: %d",getPlayerSpeed(i));
    PlayerTextDrawSetString(i,TDEditor_PTD[i][4],string);
    }
    return 1;
    }


    und das ist unter OnPlayerStateChange:


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate==PLAYER_STATE_DRIVER)
    {
    new vID=GetPlayerVehicleID(playerid);
    PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][0]);
    PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][1]);
    PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][2]);
    PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][3]);
    PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][4]);
    PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][5]);
    PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][6]);
    if(!hasEngine(vID))
    {
    new a,b,c,d,e,f;
    //Motor an/ausschalten
    GetVehicleParamsEx(vID, a,a,b,c,d,e,f);
    SetVehicleParamsEx(vID, 1, a,b,c,d,e,f);
    }
    for(new i=0; i<sizeof(ahCars); i++)
    {
    if(ahCars[i][id_x]!=vID)continue;
    //Verkaufsprozess
    SetPVarInt(playerid,"buyCarID",i);
    new string[256];
    format(string,sizeof(string),"Möchten sie das Fahrzeug für %i$ kaufen?",ahCars[i][c_preis]);
    ShowPlayerDialog(playerid,DIALOG_AUTOHAUS,DIALOG_STYLE_MSGBOX,"Autoverkauf",string,"Ja","Nein");
    break;
    }
    return 1;
    }
    return 1;
    }


    das meiste hat halt nichts mit dem Tacho bei OnPlayerStateChange zu tun aber hab einfach das gesamte public reingemacht ^^


    Mfg.

    @Kaliber Nein Nein das wollte ich jetzt nicht von dir :D

    Zitat von Kaliber

    Willst du von mir, dass ich dir den ganzen Code auf einem Silber-Tablett serviere oder wie?

    Benuzte meistens SetTimer aber werde es einfach mal jetzt versuchen bin einfach grad nur ziemlich müde etc. danke dir trotzdem :) wenn was ist meld ich mich :)