Beiträge von .#~Momo

    das kann schon mal garnicht funktionieren. du musst den text splitten. ich denke mal dcmd verstehst du jetzt auf der schnelle nicht, ich erkläre dir kurz das mit strtok.


    Für das in deinem code ganz unten hinzu:
    stock strtok(const string[], &index)
    {
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
    index++;
    }


    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
    result[index - offset] = string[index];
    index++;
    }
    result[index - offset] = EOS;
    return result;
    }


    stock split(const strsrc[], strdest[][], delimiter)
    {
    new i, li;
    new aNum;
    new len;
    while(i <= strlen(strsrc)){
    if(strsrc[i]==delimiter || i==strlen(strsrc)){
    len = strmid(strdest[aNum], strsrc, li, i, 128);
    strdest[aNum][len] = 0;
    li = i+1;
    aNum++;
    }
    i++;
    }
    return 1;
    }


    stock strrest(const string[], index)
    {
    new length = strlen(string);
    new offset = index;
    new result[256];
    while ((index < length) && ((index - offset) < (sizeof(result) - 1)) && (string[index] > '\r'))
    {
    result[index - offset] = string[index];
    index++;
    }
    result[index - offset] = EOS;
    return result;
    }


    Danach funzt das so.
    Public OnPlayerCommandText(playerid, cmdtext[])
    {
    new cmd[255], idx;
    cmd = strtok(cmdtext, idx);


    if(strcmp(cmd, "/kick", tru) == 0)
    {
    new ID;
    new Reason[256];
    ID = strtok(cmdtext, idx);
    Reason = strrest(cmdtext, idx);
    new str[128];
    format(str, sizeof(str), "Info: SpielerID: %i wurde gekickt, grund:%s", ID, Reason)
    SendClientMessageToAll(COLOR_PINK, str);
    Kick(ID);
    return 1;
    }
    }

    public CopCar(playerid)
    {
    new carid = GetPlayerVehicleID(playerid);
    for(new i = 0; i < sizeof(PoliceCar); i++)
    {
    if(carid == PoliceCar[i])
    {
    return 1;
    }else{
    return 0;
    }
    }
    } Loop doch einfach durch den Police cars als alles einzeln zu schreiben xD.

    Alles aus dem OnPlayerUpdate entfernen, return 1 machen (wichtig!) das soll dann so aussehen:


    Public OnPlayerUpdate(playerid)
    {
    return 1;
    }


    danach fügst du das hier hinzu:
    public OnPlayerLogoutUpate(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    if(gPlayerLogged[playerid])
    {
    new weap0, ammo0, weap1, ammo1, weap2, ammo2, weap3, ammo3, weap4, ammo4, weap5, ammo5, weap6, ammo6, weap7, ammo7;
    GetPlayerWeaponData(playerid,0,weap0,ammo0);
    GetPlayerWeaponData(playerid,1,weap1,ammo1);
    GetPlayerWeaponData(playerid,2,weap2,ammo2);
    GetPlayerWeaponData(playerid,3,weap3,ammo3);
    GetPlayerWeaponData(playerid,4,weap4,ammo4);
    GetPlayerWeaponData(playerid,5,weap5,ammo5);
    GetPlayerWeaponData(playerid,6,weap6,ammo6);
    GetPlayerWeaponData(playerid,7,weap7,ammo7);
    new string3[32];
    new playername3[MAX_PLAYER_NAME];
    GetPlayerName(playerid, playername3, sizeof(playername3));
    format(string3, sizeof(string3), "Accounts/%s.ini", playername3);
    new File: hFile = fopen(string3, io_write);
    if (hFile)
    {
    new var[32];
    format(var, 32, "Key=%s\n", PlayerInfo[playerid][pKey]);fwrite(hFile, var);
    PlayerInfo[playerid][pCash] = GetPlayerPCash(playerid);
    format(var, 32, "Level=%d\n",PlayerInfo[playerid][pLevel]);fwrite(hFile, var);
    if ((PlayerInfo[playerid][pPos_x]==0.0 && PlayerInfo[playerid][pPos_y]==0.0 && PlayerInfo[playerid][pPos_z]==0.0))
    {
    PlayerInfo[playerid][pPos_x] = 1684.9;
    PlayerInfo[playerid][pPos_y] = -2244.5;
    PlayerInfo[playerid][pPos_z] = 13.5;
    }
    if(Spectate[playerid] != 255)
    {
    PlayerInfo[playerid][pPos_x] = Unspec[playerid][sPx];
    PlayerInfo[playerid][pPos_y] = Unspec[playerid][sPy];
    PlayerInfo[playerid][pPos_z] = Unspec[playerid][sPz];
    PlayerInfo[playerid][pInt] = Unspec[playerid][sPint];
    PlayerInfo[playerid][pLocal] = Unspec[playerid][sLocal];
    }
    format(var, 32, "Pos_x=%.1f\n",PlayerInfo[playerid][pPos_x]);fwrite(hFile, var);
    format(var, 32, "Pos_y=%.1f\n",PlayerInfo[playerid][pPos_y]);fwrite(hFile, var);
    format(var, 32, "Pos_z=%.1f\n",PlayerInfo[playerid][pPos_z]);fwrite(hFile, var);
    format(var, 32, "CarLic=%d\n",PlayerInfo[playerid][pCarLic]);fwrite(hFile, var);
    format(var, 32, "FlyLic=%d\n",PlayerInfo[playerid][pFlyLic]);fwrite(hFile, var);
    format(var, 32, "BoatLic=%d\n",PlayerInfo[playerid][pBoatLic]);fwrite(hFile, var);
    format(var, 32, "FishLic=%d\n",PlayerInfo[playerid][pFishLic]);fwrite(hFile, var);
    format(var, 32, "BSLic=%d\n",PlayerInfo[playerid][pBSLic]);fwrite(hFile, var);
    format(var, 32, "SFLic=%d\n",PlayerInfo[playerid][pSFLic]);fwrite(hFile, var);
    format(var, 32, "GunLic=%d\n",PlayerInfo[playerid][pGunLic]);fwrite(hFile, var);
    format(var, 32, "CarTime=%d\n",PlayerInfo[playerid][pCarTime]);fwrite(hFile, var);
    format(var, 32, "PayDay=%d\n",PlayerInfo[playerid][pPayDay]);fwrite(hFile, var);
    format(var, 32, "PayDayHad=%d\n",PlayerInfo[playerid][pPayDayHad]);fwrite(hFile, var);
    format(var, 32, "CDPlayer=%d\n",PlayerInfo[playerid][pCDPlayer]);fwrite(hFile, var);
    format(var, 32, "Wins=%d\n",PlayerInfo[playerid][pWins]);fwrite(hFile, var);
    format(var, 32, "Loses=%d\n",PlayerInfo[playerid][pLoses]);fwrite(hFile, var);
    format(var, 32, "AlcoholPerk=%d\n",PlayerInfo[playerid][pAlcoholPerk]);fwrite(hFile, var);
    format(var, 32, "DrugPerk=%d\n",PlayerInfo[playerid][pDrugPerk]);fwrite(hFile, var);
    format(var, 32, "MiserPerk=%d\n",PlayerInfo[playerid][pMiserPerk]);fwrite(hFile, var);
    format(var, 32, "PainPerk=%d\n",PlayerInfo[playerid][pPainPerk]);fwrite(hFile, var);
    format(var, 32, "TraderPerk=%d\n",PlayerInfo[playerid][pTraderPerk]);fwrite(hFile, var);
    format(var, 32, "Tutorial=%d\n",PlayerInfo[playerid][pTut]);fwrite(hFile, var);
    format(var, 32, "Mission=%d\n",PlayerInfo[playerid][pMissionNr]);fwrite(hFile, var);
    format(var, 32, "Warnings=%d\n",PlayerInfo[playerid][pWarns]);fwrite(hFile, var);
    format(var, 32, "Adjustable=%d\n",PlayerInfo[playerid][pAdjustable]);fwrite(hFile, var);
    if(PlayerInfo[playerid][pDonateRank] < 1) { PlayerInfo[playerid][pFuel] = 0; }
    format(var, 32, "Fuel=%d\n",PlayerInfo[playerid][pFuel]);fwrite(hFile, var);
    format(var, 32, "MatsHolding=%d\n",MatsHolding[playerid]);fwrite(hFile, var);
    format(var, 32, "WantedLevel=%d\n",WantedLevel[playerid]);fwrite(hFile, var);
    format(var, 32, "WantedPoints=%d\n",WantedPoints[playerid]);fwrite(hFile, var);
    format(var, 32, "Bag=%d\n",PlayerInfo[playerid][pBag]);fwrite(hFile, var);
    format(var, 32, "playingseconds=%d\n",playingseconds[playerid]);fwrite(hFile, var);
    format(var, 32, "Married=%d\n",PlayerInfo[playerid][pMarried]);fwrite(hFile, var);
    format(var, 32, "felon=%d\n",felon[playerid]);fwrite(hFile, var);
    format(var, 32, "MarriedTo=%s\n",PlayerInfo[playerid][pMarriedTo]);fwrite(hFile, var);
    format(var, 32, "Gun0=%d\n",PlayerInfo[playerid][pGun0]);fwrite(hFile, var);
    format(var, 32, "Gun1=%d\n",PlayerInfo[playerid][pGun1]);fwrite(hFile, var);
    format(var, 32, "Gun2=%d\n",PlayerInfo[playerid][pGun2]);fwrite(hFile, var);
    format(var, 32, "Gun3=%d\n",PlayerInfo[playerid][pGun3]);fwrite(hFile, var);
    format(var, 32, "Gun4=%d\n",PlayerInfo[playerid][pGun4]);fwrite(hFile, var);
    format(var, 32, "Gun5=%d\n",PlayerInfo[playerid][pGun5]);fwrite(hFile, var);
    format(var, 32, "Gun6=%d\n",PlayerInfo[playerid][pGun6]);fwrite(hFile, var);
    format(var, 32, "Gun7=%d\n",PlayerInfo[playerid][pGun7]);fwrite(hFile, var);
    format(var, 32, "Gun8=%d\n",PlayerInfo[playerid][pGun8]);fwrite(hFile, var);
    format(var, 32, "Ammo0=%d\n",PlayerInfo[playerid][pAmmo0]);fwrite(hFile, var);
    format(var, 32, "Ammo1=%d\n",PlayerInfo[playerid][pAmmo1]);fwrite(hFile, var);
    format(var, 32, "Ammo2=%d\n",PlayerInfo[playerid][pAmmo2]);fwrite(hFile, var);
    format(var, 32, "Ammo3=%d\n",PlayerInfo[playerid][pAmmo3]);fwrite(hFile, var);
    format(var, 32, "Ammo4=%d\n",PlayerInfo[playerid][pAmmo4]);fwrite(hFile, var);
    format(var, 32, "Ammo5=%d\n",PlayerInfo[playerid][pAmmo5]);fwrite(hFile, var);
    format(var, 32, "Ammo6=%d\n",PlayerInfo[playerid][pAmmo6]);fwrite(hFile, var);
    format(var, 32, "Ammo7=%d\n",PlayerInfo[playerid][pAmmo7]);fwrite(hFile, var);
    format(var, 32, "Ammo8=%d\n",PlayerInfo[playerid][pAmmo8]);fwrite(hFile, var);
    PlayerInfo[playerid][pInterior] = GetPlayerInterior(playerid);
    format(var, 32, "Interior=%d\n",PlayerInfo[playerid][pInterior]);fwrite(hFile, var);
    PlayerInfo[playerid][pWorld] = GetPlayerVirtualWorld(playerid);
    format(var, 32, "World=%d\n",PlayerInfo[playerid][pWorld]);fwrite(hFile, var);
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid, x, y, z);
    PlayerInfo[playerid][pPosx] = x;
    PlayerInfo[playerid][pPosy] = y;
    PlayerInfo[playerid][pPosz] = z;
    format(var, 32, "Posx=%.1f\n",PlayerInfo[playerid][pPos_x]);fwrite(hFile, var);
    format(var, 32, "Posy=%.1f\n",PlayerInfo[playerid][pPos_y]);fwrite(hFile, var);
    format(var, 32, "Posz=%.1f\n",PlayerInfo[playerid][pPos_z]);fwrite(hFile, var);
    fclose(hFile);
    }
    }
    }


    return 1;
    }


    Danach fügst du das noch bei OnPlayerDisconnect hinzu. (Ganz Oben direkt unter {.)
    Public OnPlayerDisconnect(playerid, reason)
    {
    OnPlayerLogoutUpate(playerid);
    // Dein Ganzes zeugs danach...
    return 1;
    }


    Danach dürfte es nicht mehr laggen.

    Glaube ich wohl kaum.
    Lesen Bildet.

    Code
    Important Note: This callback is called very frequently  per second per player, only use it when you know what it's meant for.


    Code
    Wichtige Nachricht: Dieser Callback wird sehr häufig per Sekunde aufgerufen. Benutz diesen Callback nur wenn du weißt was dieser auch kann.


    Der Callback OnPlayerUpdate wird mehrmals in einer Sekunde aufgerufen und ihr benutzt das nur um die aktuellen Spieler stats zu updaten?
    Sinnloser Resourcen Verbrauch! Deswegen auch die Epic Lags.


    beim OnPlayerDisconnect callback kannst ruft er all diese Funktionen nur ein mal ab wenn der Spieler disconnected. (Ausloggen, timeout & kicked) das dürfte dein Problem lösen)

    Wie wäre es mit der Search Funktion?


    Ich gebe dir ein tipp, wenn du einigermaßen gut coden kannst, dürfte ein Streamer keine Probleme sein, alles was du brauchst ist n Timer, guckst ob der Spieler in der nähe eines Objectes Ist und lässt es dann via CreatePlayerObject erstellen, ist er außer reichweite somit entfernst du das mit DestroyPlayerObject. Natührlich musst du da ein bisschen mit declars spiele, ein super beispiel wäre der Object Streamer von OPA also die Lite Version, die ist glaub ich 50 zeilen lang und super einfach zu verstehen.

    Hey, hab mal ne frage, wie kann ich die aktuelle stadt ermitteln in der sich der Spieler grade befindet?


    2.


    Wie kann ich rausfinden ab wann ein Spieler auf dem Desktop bzw. ESC Menu ist?

    So in etwa?


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new cmd[255], idx;
    cmd = strtok(cmdtext, idx);
    // Erstellen wir nun ein Befehl mit Parametern zb. /test [ID] [Ihrgend eine Zahl] [Langer Text]
    if(strcmp(cmd, "/test", true) == 0)
    {
    new strID[256]; // Hier speichern wir unsere ID die wir eingegeben haben.
    new strZahl[256]; // Hier die Zahl
    new strText[256]; // und hier den Langen Text.

    strID = strtok(cmdtext, idx);
    strZahl = strtok(cmdtext, idx);
    strText = strrest(cmdtext, idx);


    if(!strlen(strID)) return SendClientMessage(playerid, 0xFFFFFFFF, "Du musst eine ID angeben.");
    if(!strlen(strZahl)) return SendClientMessage(playerid, 0xFFFFFFFF, "Du musst eine Zahl angeben.");
    if(!strlen(strText)) return SendClientMessage(playerid, 0xFFFFFFFF, "Du musst einen text angebe.");


    new strEndString[128];
    format(strEndString, sizeof(strEndString), "Du hast folgendes eingegeben: /test %i %i%s", strval(strID), strval(strZahl), strText);
    SendClientMessage(playerid, 0xFFFFFFFF, strEndString)
    // Du rufst die Funktion zb. mit "/test 1 1337 ihr seit alle so cool" auf schreibt er dies im chat:
    // Du hast folgendes eingegeben: /test 1 1337 ihr seit alle so cool
    // Hoffe du verstehst hier von ein bisschen
    return 1;
    }
    return 0;
    }

    Ich hab keine ahnung von dini aber so wie es aussieht speicherst du die es beim login erneut...



    public login(playerid)
    {
    new name[MAX_PLAYER_NAME];
    new save[40];
    GetPlayerName(playerid,name,sizeof(name));
    format(save,sizeof(save),"/Spieler/%s.ini",name);
    pInfo[playerid][admin] = dini_Int(save,"Adminlevel");
    SetPlayerMoney(playerid, dini_Int(save,"geld"));
    pInfo[playerid][score] = dini_Int(save,"Score");
    BankGeld[playerid] = dini_Int(save,"Bank");
    pInfo[playerid][carlic] = dini_Int(save,"carlic");//Hier so inentwa?
    return 1;
    }


    dini_int(save, ...) ?? müsste da nicht dini_int(load, ...) heißen?

    Versuch mal das hier, sollte dir helfen ;)


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER)
    {
    if(PlayerInfo[playerid][carlic] == 0)
    {
    SendClientMessage(playerid, COLOR_LIGHT_WHITE, " Du besitzt keinen Führerschein!");
    RemovePlayerFromVehicle(playerid);
    }
    }
    return 1;
    }

    Also bei mir Funktioniert es einwandfrei, Read from file geht noch nicht habs leider vergessen kann ja mal passieren ^^...


    ihr müsst drauf achten wenn ihr Autos oder Objecte conventiert das ihr neben den Convert button die Checkbox an der richtigen Position ankreuzt.


    Das ganze ist noch für den alten MTA Editor.

    Servus, Ich habe mich vor ein paar Wochen mal rangesetzte und wollte einen Vehicle/Object converter der Objecte von MTA sofort zu GTA:SA ~ Pawno tauglich macht,
    Ich kann diese Online Seiten Converter einfach nicht leiden, falls kein internet vorhanden ist aus welchem grund auch immer hat man die schlechte karte gezogen und kann es nicht konventieren.
    Mein Tool imgegensatz funktioniert einwandfrei, man brauch kein Internetanschluss. Nun zu den Infos von meinem Tool:


    San Andreas Converter 1.0 Beta:

    • Version: 1.0 Beta Release
    • Benötigt wird: .Net Framework 2.0
    • Vehicle Converter *
    • Object Converter *
    • Kommentar (Vehicle Name) **
    • [align=left]Array Paster ***
    • Object Splitter ****


    * Man kann auswählen ob man das Fahrzeug via CreateVehicle, AddStaticVehicle oder AddStaticVehicleEx hinzufügen will. Parameter der einzelnen funktionen sind ebenfalls vorhanden und man kann die respawn zeit einstellen.


    ** Mit dieser Funktion steht am ende vom code ein Kommentar der wie folgt aussieht: "// vehicle (Pony) (1)" das macht die identifiziert der einzelnen Fahrzeuge ein bisschen leichter.


    ** Array Paster ist eine Funktion wenn man sich jetzt zb. ein Polizei Department zusammen baut und dieser enthält zb. 50 Polizei Autos,
    dann wird vor jedem Code ein Array hinzugefügt. zb: "MeinArrayName[Nummer] CreateVehicle(...)"


    **** Der Object splitter ist dafür da das wenn man im Code nicht nur Objecte hat sondern Fahrzeuge, Objecte etc... hat dann Conventiert er nur (je nach auswahl) die Objecte oder nur die Fahrzeuge.


    Ihr habt bugs gefunden? postet sie.
    Ihr habt verbesserungs vorschläge? postet sie.


    Screens von der Awendung:



    Downloads:
    SOURCE FEHLT

    Man kann aber auch die richtigen umlaute wie ö, ü, ä, ß ... etc benutzen. einfach nur das normale standart pawno starten und dort die umlaute einfügen ;)


    Warum das so ist? nun ja ich benutze einen anderen Pawno Editor dort ist der Character Code für die umlaute anders als wie im Normalen pawno, das führt dazu das man so komiche Zeichen bekommt.



    Den benutze ich und wenn ich halt die umlaute einfügen will muss ich meine FS / GM via dem normalen pawno laden und sie dort einfügen und kompilen ;) wolla er klappt.

    Moin leute, ich habe mal eine frage, Ich habe probleme mit den Umlauten wie "ü", "ö". "ä" wenn ich diese in Create3DTextLabel Anzeigen will... hier ist mein Code:
    for(new h = 0; h < sizeof(BizzInfo); h++)
    {
    AddStaticPickup(1239, 1, BizzInfo[h][bEntranceX], BizzInfo[h][bEntranceY], BizzInfo[h][bEntranceZ]);
    new BizzString[128];
    format(BizzString, sizeof(BizzString), "Shop: %s\nBesitzer: %s\nErpresser: %s\nEintrittspreis: %i$\nProdukte Benötigt: %i\nPreis pro Produkt: %i$", BizzInfo[h][bMessage], BizzInfo[h][bOwner], BizzInfo[h][bExtortion], BizzInfo[h][bEntranceCost], BizzInfo[h][bProducts], BizzInfo[h][bPriceProd]);
    BizzInfo3DLabel[h] = Create3DTextLabel(BizzString, COLOR_3DLABEL, BizzInfo[h][bEntranceX], BizzInfo[h][bEntranceY], BizzInfo[h][bEntranceZ] + 0.7, 10, 0, 0);
    }


    Alles schön und gut aber ingame hab ich jedoch dann diesen fehler hier:


    Wie kann ich das fixen das ich ö ä und ü ausschreiben kann und auf ae ue und oe verzichten kann? weil auf einem anderen server geht es mit den umlauten.



    2 Frage, Wie kann ich checken ob ein Spieler gerade nicht im Spiel ist, sprich ESC-Menu oder Desktop?