Beiträge von Le FlasH

    Ich hoffe, dass das jetzt nicht unter Eigenwerbung fällt, aber du kannst ja mal unter "Meine Angebote" in meiner Signatur schauen ;) 3,50€ kostet eine .de Domain.
    Webspace bekommst du mittlerweile kostenlos hinterher geschmissen, falls du nichts dafür bezahlen willst.

    Wenn in meinem Zimmer eine Spinne ist, wird sie mit einem Papier aufs Fensterbrett gesetzt, wenns nicht funktioniert, oder die sich irgendwo verfängt, dann mach ich das Fenster zu, dann ist es eben aus mit der Spinne.
    Ihr seid ja fast wie Buddhisten, also wer einen Mensch mit einer Spinne gleichsetzt, der naja... Ich denk mir mal meinen Teil.
    Kones' Argumentation gefällt mir übrigens ^^

    Ich glaube du hast einfach eine ältere Version.
    Verwende mal stattdessen diese Version von ocmd und schau ob es damit funktioniert:
    #include <a_samp>
    forward ocmdOnPlayerCommandText(playerid,cmdtext[]);
    #define ocmd:%1(%2) forward ocmd_%1(%2);\
    public ocmd_%1(%2)
    public OnPlayerCommandText(playerid,cmdtext[])
    {
    new ocmdStr[32],i=1;
    for(;i<40;i++)
    {
    if(!cmdtext[i]||cmdtext[i]==' ')break;
    ocmdStr[i-1]=tolower(cmdtext[i]);
    }
    format(ocmdStr,40,"ocmd_%s",ocmdStr);
    if(!strlen(cmdtext[i+1])&&CallLocalFunction(ocmdStr,"ds",playerid," "))return 1;
    if(CallLocalFunction(ocmdStr,"ds",playerid,cmdtext[i+1]))return 1;
    return CallLocalFunction("ocmdOnPlayerCommandText","ds",playerid,cmdtext);
    }
    #define OnPlayerCommandText ocmdOnPlayerCommandText

    Mit Google findest du alles, außer ocmd glaube ich.
    Utils bekommst du z.B. hier: http://code.google.com/p/cwrp/…ads/detail?name=utils.inc
    M_Bot und Morphinc kenne ich nicht, bekommst du aber auch mit Hilfe von Google.


    OCMD hab ich hier: #include <a_samp>
    forward ocmdOnPlayerCommandText(playerid,cmdtext[]);
    #define ocmd:%1(%2) forward ocmd_%1(%2);\
    public ocmd_%1(%2)
    public OnPlayerCommandText(playerid,cmdtext[])
    {
    new ocmdStr[32],i=1;
    for(;i<40;i++)
    {
    if(!cmdtext[i]||cmdtext[i]==' ')break;
    ocmdStr[i-1]=tolower(cmdtext[i]);
    }
    format(ocmdStr,40,"ocmd_%s",ocmdStr);
    if(!strlen(cmdtext[i+1])&&CallLocalFunction(ocmdStr,"ds",playerid," "))return 1;
    if(CallLocalFunction(ocmdStr,"ds",playerid,cmdtext[i+1]))return 1;
    return CallLocalFunction("ocmdOnPlayerCommandText","ds",playerid,cmdtext);
    }
    #define OnPlayerCommandText ocmdOnPlayerCommandText

    Ich kenne mich mit den PVars nicht gut aus, sag ich schonmal vorweg.
    Aber du vermischt hier mehrere Dinge ^^


    Aus SetPVarInt(pID, "sexanfrag", 1); und SexAnfrage[pID] = 1; machst du SetPVarInt(pID,SexAnfrage[playerid],1);
    Das geht natürlich nicht. Entweder normale Arrays oder PVars.

    Was meinst du mit sie gehen komisch auf?
    Vielleicht ein bisschen präziser erklären? Screens? Codeauszug?
    Keiner von uns kann zaubern, man braucht schon ein paar Infos, um helfen zu können.

    Ich kenne mich mit PVars nicht aus, aber ich nehme an, das Problem liegt bei if(GetPVarInt(playerid,"Perso") == 1)Kannst ja mal den Rückgabewert mit printf ausgeben lassen.

    Sorry, man kann fast nicht verstehen, was du willst. Drück dich mal genauer aus ^^
    Aber du speicherst ja immer die Onlineminuten des Spielers mit.
    Die gibst du dann einfach aus, also "format(string, 100, "PayDay: %d/60", PayDayTime[playerid]);"
    Musst du anpassen, je nachdem in welcher Variable du die Minuten gespeichert hast.

    Das ist genau das, was ich oben auch geschrieben habe.
    Du musst dann nur die Koordinaten aus dem File auslesen und in das Array "Houses" einspeichern.
    That's it, dauert eigentlich keine 10 Minuten.


    EDIT: Achso. Probier mal statt "else SendClientMessage..." einfach "else return SendClientMessage..."
    EDIT 2: Nein, Blödsinn. Du wirst zugespammt, weil du ja das SendClientMessage immer in der for-Schleife aufrufst, also du bekommst 299-300 Nachrichten. Du darfst das SendClientMessage nicht in der Schleife machen.

    Na überleg doch mal.
    Du rufst PayDay(playerid) nicht dann auf, wenn ein Spieler 60 Minuten online war, sondern du machst im Timer, der für die Zeit zuständig ist, folgendes: if(minute == 0)
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i)) PayDay(i);
    }
    }

    Sofern du die Hauskoordinaten nicht in einem Array gespeichert hast, kannst du ja einfach eine if-elseif-Kette erstellen.


    if(IsPlayerInRangeOfPoint(playerid, 3.0, 1,2,3)) return SendClientMessage(playerid, COLOR_X, "irgendwas");
    else if(IsPlayerInRangeOfPoint(playerid, 3.0, 4,5,6)) return SendClientMessage(playerid, COLOR_X, "irgendwas");
    else return SendClientMessage(playerid, COLOR_X, "du bist an keinem Haus");


    Bei 300 Häusern wirds aber schwierig.
    Ich würde ein Array à la new Float:Houses[][3] = {
    {X1, X2, X3},
    {X4, X5, X6},
    {X,Y,Z}
    } scripten, dann kannst du eine for-Schleife machen
    Kleiner Tipp: if(IsPlayerInRangeOfPoint(playerid, 3.0, Houses[i][0], Houses[i][1], Houses[i][2])) ...