Beiträge von IPrototypeI


    1. Eher gefühlte 10000x :D bei 50 ms haben wir 20 aufrufe pro sekunden, wenn der spieler afk ist wird nix aufgerufen
    2. Das ganze mit einem Timer zu machen ist ein wenig besser für den Server ^^


    //edit


    Ich glaub er kommt mit dem hooking nicht so klar

    Also Kaliber einen Timer für jeden Spieler zu erstellen für das Anticheat ist doch nicht zwingend nötig ?


    SetTimerEx("@MoneyTimer",999,0,"i",playerid);



    Mach das ganze doch über OnPlayerUpdate oder wenigstens das du alle spieler mit einem aufruf der funktion via for-schleife durchgehst.
    Den Timer kannst du ja beenden wenn kein Spieler auf dem Server ist.

    Dein Problem besteht hier


    mysql_SetInt("accounts", "alevel", SpielerInfo[playerid][pAlevel], "Name", SpielerInfo[playerid][pAlevel]);


    Bei dem letzten Parameter welcher für die Where-clausel ist musst du den namen übergeben.


    mysql_SetInt("accounts", "alevel", SpielerInfo[playerid][pAlevel], "Name", SpielerInfo[playerid][pName]);


    bei LoadPlayer ist der selbe Fehler wird dir das nicht als warning anzeigt oder hast du pAlevel als string angeben in deinem enum

    Das Problem ist beim auslesen bekommt jede Zelle des arrays 1 Buchstaben, somit wird der Zeilenbruch auch nicht erkannt daher musst du die Zeilenbrüche sogesehen ersetzen


    Hier mal ein Beispielcode:


    new str[20];
    str[0] = 'H';
    str[1] = 'a';
    str[2] = 'l';
    str[3] = 'l';
    str[4] = 'o';
    str[5] = '\32;';
    str[6] = 'w';
    str[7] = 'i';
    str[8] = 'e';
    str[9] = '\\';
    str[10] = 'n';
    str[11] = 'g';
    str[12] = 'e';
    str[13] = 'h';
    str[14] = 't';
    str[15] = 's';
    print(str);


    for(new i, j = strlen(str); i != j; ++i)if(str[i] == '\\' && str[i+1] == 'n')str[i] = '\32;',str[i+1] = '\n';
    print(str);


    dann weißt du wie das ganze zustande kommt und umgeändert wird durch die Schleife.

    Ich möchte ja nicht deine Illusion zerstören, jedoch ist pawn nicht threadsafe.
    Das heißt, die variante geht nicht gut.


    Och nee, bitte tu mir ein gefallen und lösche diesen Post.


    Multiple Returns oder Aktionen haben nix mit mehrern Threads zu tun in Pawn generel alles was von Pawn ausgeführt wird hat nix mit mehrern Threads zu tun da Pawn Singelthreaded ist.


    Der einzige Unterschied bei der genutzten variante von ihm , ist das der Opcode break; nicht ausgeführt wird.


    Siehe hier nochmal für mehr Einzelheiten.


    Ressourcenschonend Scripten



    //edit


    Zusätzliche Info:


    http://gta-sa-mp.de/forum/3-sa…n-erkl%C3%A4rungsversuch/

    Die Freudsche Argumentation sollte man sich schnellstmöglichst aus dem Kopf hauen. Denn ein Kind damit zu erziehen, ihm unangenehme Reize zu vermitteln, ist keine moderne Erziehung mehr. Operante Konditionierung ist da eindeutig effektiver - leider auch viel zeit- und aufwandsintensiver - Kinder sollten lernen, das Richtige zu tun, weil sie den Sinn dahinter erkannt haben, nicht etwa, weil sie Angst vor der Konsequenz haben müssen, wenn sie es nicht tun. So müssen Kinder nun mal ihre Erfahrungen machen und zu erwarten, dass ein Forum in der Lage sei, unerwünschtes Verhalten von Kindern gegen zu konditionieren, der hat sich geschnitten. Sicherlich ist das Internet in vielen Bereichen eine Plattform, in denen diese Konditionierung gefördert werden kann - so unter anderem die soziale Kompetenz, wie hier im Forum. Aber zu glauben, dass ein Forum auch nur ansatzweise die Chance hat, der nichtvorhandenen oder mangelnden Erziehung der Eltern entgegen zu wirken, ist mehr als naiv. Wer zu Hause schon nicht gelernt hat, wie man grade sitzt, wird im Internet sicherlich nicht mehr lernen, wie man das Besteck hält.




    Zwar ist es keine moderne Erziehung, jedoch eine Altbewährte .
    Das Internet soll ja nicht als Ersatz der Erziehungsberechtigen fungieren.
    Da wir uns im Cyberspace bewegen und keinen direkten Einfluss haben
    auf die Leute, gibt es keine andere Möglickeit einem
    indiskutablen Verhalten entgegenzuwirken, als durch Sanktionen.
    Ebenso ist es wichtig für Pubertierende zu lernen, dass
    es Regeln gibt, an die man sich halten sollte.
    Regeln dienen dazu, eine Grundlage für ein harmonisches
    Miteinander zu schaffen.


    PS: Zur operanten Konditionierung was wir ja schon betreiben.
    zeigt sich ja keine Wirkung.

    Das liegt daran das du wInfo[weed][WeedTime]
    wInfo[weed][WeedTime] = 1;
    wie im code auf 1 setzt. Wenn dann auf 10 und das ganze mit einem Timer reduzieren der sich jede Minute wiederholt.
    Besser wären jedoch timestamps.


    Dazu gibt es ein codeschnipsel


    stock IsPlayerBehindVehicle(playerid,veh)
    {
    new Float:vcoord[3]; GetVehiclePos(veh,vcoord[0],vcoord[1],vcoord[2]);
    new Float:vangle; GetVehicleZAngle(veh,vangle);
    new Float:vinfo[3]; GetVehicleModelInfo(GetVehicleModel(veh),VEHICLE_MODEL_INFO_SIZE,vinfo[0],vinfo[1],vinfo[2]);
    new Float:lenge = floatdiv(vinfo[1],2.0);
    new Float:radius = floatdiv(vinfo[0],2.0);
    vcoord[0] = floatadd(vcoord[0],(-lenge * floatsin(-vangle,degrees)));
    vcoord[1] = floatadd(vcoord[1],(-lenge * floatcos(-vangle,degrees)));
    if(IsPlayerInRangeOfPoint(playerid,radius,vcoord[0],vcoord[1],vcoord[2]))return 1;
    else return 0;
    }
    Quelle:
    http://forum.sa-mp.de/gta-mult…eschnipsel-36#post1071405

    Bist du des totes.


    MapAndreas_Init(MAP_ANDREAS_MODE_FULL);


    initalisierst du bei OnGameModeInit so werden jedesmal die ganzen Daten der Safull.hmap geladen, was circa 70 MB Arbeitsspeicher ausmachen.
    Ob generel das erneute auslesen vermieden wird kann ich zwar nicht sagen jedoch gehört die funktion da sowas von 0 hin.


    1. Sind die Npcs connectet ?
    2. füg mal ein print hinzu
    public OnRNPCSpawn(npcid)
    {

    new Float:pos[3],bool:i;
    pos[0]=random(4000)-2000,
    pos[1]=random(4000)-2000,
    while(i)
    {
    MapAndreas_FindZ_For2DCoord(pos[0], pos[1], pos[2]);
    if(pos[2] >= 5.0 && pos[2] < 30.0)
    {
    SetRNPCPos(npcid, pos[0], pos[1], pos[2]);
    printf("found Pos for NPC: %d",npcid);
    i = true;
    }
    }
    SetPVarInt(npcid,"FollowPlayer",0);
    }

    The Problem is:


    Ich weiß nichtmal wie man eine PHP Datei erstellt.


    Du nutzt einfach einen editor notepad++ oder was anderes was dir zu sagt und den php tag

    <?php


    ?>
    innerhalb von dem tag kannst du den code reinschreiben



    <?php
    echo("Hallo");
    ?>


    solltest du das local testen so benötigst du apache daher solltest du xampp oder wamp downloaden


    http://www.php-kurs.info/

    Kannst du mal die PHP Datei die ich da draufpacken muss hochladen? Denn ich versteh nur Hauptbahnhof.


    Lass mich kurz überlegen hm "NÖ".


    Hier das solltest du dir durchlesen:


    http://www.php.net/manual/de/language.variables.php


    http://www.php.net/manual/de/reserved.variables.get.php


    http://www.php.net/manual/de/function.fopen.php


    und das was John_Hunter schon gepostet hat


    http://www.php.net/manual/de/function.fwrite.php



    @John_Hunter wenn man bei der HTTP funktion POST nutzt wird noch der inhalt von dem funktionsparameter data mitgegeben :D
    und deine Meinung kann ich nur unterstützen.

    Sorry, danke für deine Hilfe aber ich habe bei PHP keine Ahnung :(


    Dann solltest du dich mal darin einlesen und das ganze mal testen.


    Im zusammenhang mit der HTTP funktion kannst du es so nutzen

    new str[128]
    format(str,128, "http://forum.sa-mp.de/Schreiben.php?code=11111&text=%s",text);
    HTTP(playerid, HTTP_POST, str, "", "MyHttpResponse");


    oder


    new str[128]
    format(str,128, "code=11111&text=%s",text);
    HTTP(playerid, HTTP_POST, "http://forum.sa-mp.de/Schreiben.php?", str, "MyHttpResponse");



    //edit


    wenn der string text den inhalt "Hallo wie gehts" besitzt haben deine globale php Variabeln folgenden inhalt:
    $_GET["code"] = "11111"
    $_GET["text"] = "Hallo wie gehts"


    nur ohne Anführungszeichen.

    Am besten arbeitet du beim aufruf des php files mit globale Variablen dennen du einen wert mitgibst:


    new str[128]
    format(str,128, "http://forum.sa-mp.de/Schreiben.php?code=11111&text=%s",text);


    Code damit machst du eine Sicherheitsabfrage, dass dein php skript nicht ausgenutzt wird und text das ist der text den du schickst mit $_GET kannst du es in dem php file nutzen

    Code
    $_GET["code"]
    $_GET["text"]

    Deine 2 Version sieht deutlich besser aus und für dein erstes Wbb layout ist das auch ziemlich gut da es gebug Werke gibt welche bedeutent nüchterner im vergleich aussehen.