Ne das doch auch blöd, alles auf 15 und 10 Minuten wird so selten aufgerufen, dass da ein kleiner lagg nich spürbar ist.
Und den 10 Sek Timer rausnehmen und das alle 10 Sekunden im 1 Sek Timer zu machen erscheint mir auch nicht gerade logisch.
Ne das doch auch blöd, alles auf 15 und 10 Minuten wird so selten aufgerufen, dass da ein kleiner lagg nich spürbar ist.
Und den 10 Sek Timer rausnehmen und das alle 10 Sekunden im 1 Sek Timer zu machen erscheint mir auch nicht gerade logisch.
hm ich muss also iwi die Schleifen da raus bekommen. Das Problem ist aber, dass ich viele Dieser Werte halt auf einer Sekunde brauche. Ist es vllt besser mehrere Timer zu machen , die eine Sekunde laufen ?
Also wenn ich alle 1 Sek und 10 Sek auf 5 Minuten oder so stelle laggt es gar nicht. Also liegt es wohl an den Timern. Schaut euch bitte nochmal meine Publics an (befinden sich ein paar Post höher) und sagt mir, ob ihr da etwas Ressourcen fressendes findet.
lol meine gesehn zu haben, dass es klein geschrieben war. hm
Zeig mal die Codezeilen und in welchem Context die stehen.
Sorry hab ich net ganz zu Ende gedacht:
Das hier hollte funktioneren.
Jetzt überprüft er auch ob der Skill zu dem die in der SChleife gehörenden Werte niedriger ist als der eigene Skill wodurch nur der nächst höhere angesprochen wird.
if(Spieler[i][Dskillpunkte] >= wanndskill[j][1] && Spieler[i][Drogenskill] < wanndskill[j][0])
Sollte so eigentlich funktioneren wenn ich mich nicht irre. Aber ... ja... bin mir sicher, dass es funktioniert.
Du hast ja sicher nen Command bei dem man die zu verkaufende Menge angiebt.
Dann kannste ja einfach in diesem Command die Skillpunkte erhöhen.
new punkte = random(3) +1;
Spieler[playerid][Dskillpunkte] = Spieler[playerid][Dskillpunkte] + punkte;
Er erhält also in diesem Falle einen bis vier Skillpunkte pro Menge. Du kannst natürlich auch die verkaufte Menge in Relation zu den Punkten setzten.
So nun zum neuen Skill
const maxskills = 3;
new wannskill[maxskills][2] =
{
{2,50},
{3,100},
{4,200}
};
Im Command :
for(new i = 0;i<maxskills;i++)
{
if(Spieler[playerid][Dskillpunkte] >= wannskill[i][1])
{
Spieler[palyerid][Drogenskill] = wannskill[i][0];
}
}
Es würde meines erachtens nach auch durchaus reichen wenn man einfach alte Tread closed. Fragestellungen und Antworten kann man so immer noch lesen und keiner cheatet sich mehr post in dem er in 3 Jahre alten Treads Anmerkungen wie "versteh ich nicht" , "ja das ist toll" macht.
Es wird zwar die Methode aufgerufen, doch ist diese nicht im PastCode enthalten. Da ist wohl ein Fehler drin
timebanplayer(gPlayerName[pid],grund,gPlayerIP[pid],gPlayerName[playerid],zeitdauer);
Woha danke
edit: 777 Post
if(PlayerToPoint(2.0,playerid,einsys[i][a_x],einsys[i][a_y],einsys[i][i_z]
ist der z Parameter nicht falsch ?
müsste das nach der logig der anderen nicht
if(PlayerToPoint(2.0,playerid,einsys[i][a_x],einsys[i][a_y],einsys[i][a_z]
sein
Im FS machste aus dem return 1; ein return 0; in OnPlayerCommand, sofern das bei dir so ist.
So ich hab mal alle Textdraws die erstellt werden mit print ausgelsesen und siehe da, es hängt beim ersten Textdrawblock.
Hab anstatt Index 20 index 16 gehabt
Problem solved.
Hier war das Problem
new rankdraws[20][irankdraw] =
{
{"----" ,-1},
{"----" ,0},
{"---" ,50},
{"---" ,100},
{"---" ,150},
{"------" ,250},
{"---------" ,350},
{"---------" ,475},
{"---" ,575},
{"---. ---" ,750},
{"---" ,1000},
{"---" ,1250},
{"---" ,1500},
{"---" ,1750},
{"---" ,2500},
{"---" ,3750},
{"---" ,5000},
{"---" ,7000},
{"---" ,8500},
{"---" ,10000}
};
new Text:rankdraw[20]; // var vorher [16]
Ein EInnahmesysten, aber auch wenn das nicht läuft laggt es.
Ein Antibadwords system, was jede Texteingabe überprüft.
Eigentlich sonst nichts großartiges was oft aufgerufen wird
Alles anzeigenKlammer vergessen und ich würds anders strukturieren
public OnPlayerDeath(playerid, killerid, reason)
{
new pname[20],kname[20],kstring[80];
GetPlayerName(playerid,pname,sizeof(pname));
GetPlayerName(killerid,kname,sizeof(kname));
format(kstring,sizeof(kstring),"Spieler %s hat %s umgebracht",kname,pname);
SendClientMessageToAll(0xCC0000FF,kstring);
if(playerid != killerid)
{
SetPlayerWantedLevel(killerid,GetPlayerWantedLevel(killerid)+2);
SendClientMessage(playerid, 0xFFCC00FF,"Du hast Wanteds! Flüchte vor anderen Usern!");
SetPlayerWantedLevel(playerid,GetPlayerWantedLevel(playerid)-1);
}
return 1;
}
PS /edit: Du hast dadurch jetzt sogar die Namen im String drin und musst nicht stumpf sagen, dass irgentwer getötet wurde.
Dann müsste das doch funktionieren, nur warum tut es das denn nicht. Ich kann jetzt kein Fehler erkennen
Warum du 6 Wanteds hast weiß ich auch nicht, bekommste immer nur zwei drauf und läuft ja auch keine loop durch. Daher keine Ahnung
Das mit dem Selfkill und der fehlende Name ist ganz einfach:
Der Name fehlt weil killerid nicht belegt ist, da du ja playerid bist.
Das ganze könnte man verhindern wenn man auf selbstmord abfragt, was aber anscheinen so nicht funktioniert. Ich hab aber auch keine Ahnung wie man das machen kann.
Klammer vergessen und ich würds anders strukturieren
public OnPlayerDeath(playerid, killerid, reason)
{
new pname[20],kname[20],kstring[80];
GetPlayerName(playerid,pname,sizeof(pname));
GetPlayerName(killerid,kname,sizeof(kname));
format(kstring,sizeof(kstring),"Spieler %s hat %s umgebracht",kname,pname);
SendClientMessageToAll(0xCC0000FF,kstring);
if(playerid != killerid)
{
SetPlayerWantedLevel(killerid,GetPlayerWantedLevel(killerid)+2);
SendClientMessage(playerid, 0xFFCC00FF,"Du hast Wanteds! Flüchte vor anderen Usern!");
SetPlayerWantedLevel(playerid,GetPlayerWantedLevel(playerid)-1);
}
return 1;
}
PS /edit: Du hast dadurch jetzt sogar die Namen im String drin und musst nicht stumpf sagen, dass irgentwer getötet wurde.
ZitatPawn Quellcode bitte immer zwischen posten
Ich weiß jetzt grad nicht ob man so nen selfkill abfragen kann aber ich wüsste auch eig net wie sonst
if(killerid != playerid)
{
SetPlayerWantedLevel(playerid,0);
}
edit: Sorgt dafür, dass deine Wanteds als Opfer weggehen wenn du dich nicht selber umgebracht hast
Musst das machen, sonst bekommste immer wieder auf zwei Wanteds runter
SetPlayerWantedLevel(killerid,GetPlayerWantedLevel(killerid)+2);
edit: Es muss natürlich killerid als Parameter angegeben werden und nicht playerid
Streamer hab ich ausgebaut, da ich nur an die 76 Objekte habe.
Aber es laggt immer noch