Was hat
CreateObject(2942, 1504.5009765625, -1699.6123046875, 13.714774131775, 0, 359.74731445313, 90.499877929688);//beim LSPD atm
CreateObject(2942, 1192.9504394531, -916.55194091797, 42.814529418945, 0, 0, 5.4959716796875); //burger atm
mit den Automaten bzw mit dem Aufruf von Geldautomat() zu tun? Du müsstest doch irgendwo SetTimer() haben o0.
Beiträge von Goldkiller
-
-
stock ReturnFormat(line)
{
new frm[24];
format(frm, sizeof(frm), "Zeile%d", line);
return frm;
}
Die Funktion gibt doch ganz klar ein String / Array zurück.ZitatTextDrawSetString(ChatControl[playerid][ReturnFormat(dest)], ChatControl[playerid][ReturnFormat(line)]);
Die Fehler hab ich markiert.An dieser Stelle wird von dir durch die Funktion ein String / Array zurückgegeben, aber du musst dort entweder direkt den Variablennamen ( Falls enum ) oder eine Zahl eintragen.TextDrawSetString(ChatControl[playerid][ReturnFormat(dest)], ChatControl[playerid][ReturnFormat(line)]);
Der Erste Parameter muss doch der Textdraw sein,glaube du hast dort auch etwas falsch eingetragen.
Falls du willst das dort bspw sowas steht.ZitatTextDrawSetString(ChatControl[playerid][Zeile14], ChatControl[playerid][Zeile15);
Müsstest du es anders machen,ein einfacher Weg fällt mir gerade auf die schnelle nicht ein.
Trotzdem noch eine kurze zwischenfragen, -
Zeig doch mal wie / wo du Geldautomat() aufrufst.
Die Formatierung brauchst du nicht,solltest lieber den String / Text direkt der Funktion übergeben.//Edit: Hijashy
-
Wollt ihr nicht verstehen,dass die Funktion GetPlayerHealth eine Andere Syntax hat ?
Kein Wunder das ihr immer Warnings bekommt.
// Sets players health to 50 if it was lower than
// 50 before, as soon as he typed /doctor
if(strcmp(cmdtext, "/doctor", true) == 0)
{
new Float:health;
GetPlayerHealth(playerid,health);
if (health < 50.0)
{
SetPlayerHealth(playerid, 50.0);
}
return 1;
}
Das Gleiche gilt auch für GetPlayerAmor(),da wird ebenfalls ein 2 Parameter benötigt.>> GetPlayerHealth
>> GetPlayerArmourCMD:duty(playerid,params[] )
{
if(PlayerInfo[playerid][AdminLevel]>=2)
{
new //
Float:fArmour; //
SetPlayerColor(playerid,0x950000FF);
SendClientMessageToAll(0x800000FF,"__________________________________");
SendClientMessageToAll(0x800000FF," Ein Admin ist nun on Duty!!! ");
SendClientMessageToAll(0x800000FF,"__________________________________");
SetPlayerHealth(playerid,100);
SetPlayerArmour(playerid,100);
GetPlayerArmour(playerid,fArmour); //
if(fArmour < 100) //
{
SetPlayerArmour(playerid,100);
}
}
} -
Zitat
/*----------------------------------------------------------------------------*-
===========================
Y Sever Includes - Bit Core
===========================
Description:
Provides functions for bit manipulation and bit arrays greater than 32bits.
The arrays are usually bigger than required due to cell boundaries but this
shouldn't cause a major problem (bit tests on the 101st bit of a 100 bit
array won't return 0 for out of bounds, but the 129th will).
Legal:
Copyright (C) 2007 Alex "Y_Less" Cole
Mit dem Include aus dem Anhang ist es möglich.
new Bit: Blabla[MAX_PLAYERS][5]; // 5 * 32 Flags können dann theoretisch gesetzt werden.Zitatwas ist denn ~ ?
Ehm, mit double schon versucht?
Bitmanipulation
Hab das schon mal hier im Forum ansatzweise erklärt gehabt --> Klick -
Ich verstehe was du meinst,vor der gleiche Frage stand Ich auch schon mal.
Du arbeitest also auch direkt mit Bits,richtig?
Ich weiss da auch keinen einfachen Weg, wie man es direkt verarbeiten könnte mit mehr als 32 Teams o.Ä. . Das Einzige was mir damals dazu einviel war, ein eine weitere Variable zu erstellen um dort alle Bits zu setzen die über 32 sind bzw FRAKTION_XYZ - 32.
Würde mich aber auch interessieren ob jemand dafür eine einfachere Lösung hat. -
Bist du dir sicher dass du BIGINT überhaupt in deiner Database brauchst?
Wäre vielleicht Hilfreich wenn du den Zweck für dein BIGINT angibst.Zitatja ein normaler int geht nur bis 2,1 mrd
Quatsch.
−2.147.483.648 bis 2.147.483.647
//Edit: Sorry,Hab Millionen gelesen,nicht Milliarden -
Code optimisations - updated 05/11/09
Die Funktion sollte sein was ihr sucht. -
-
Ich hab das Script jetzt nicht ausprobiert, scheint aber Probleme mit der Serverauslastung zu geben.
Ich hab mal das Script überflogen,kein Wunder das die Auslastung hoch sein soll.
Was allein schon alles bei "public GlobalTimer()" abgearbeitet wird ist doch ein riesen haufen.
if (settime[0] < 10)
{
format(outputcl,sizeof(outputcl),"0%d:",settime[0]);
} else {
format(outputcl,sizeof(outputcl),"%d:",settime[0]);
}
Das kann man auch einfacher formatieren.
format(outputcl,sizeof(outputcl),"%02d:",settime[0]);
//public speedcontrol()if (GetVehicleModel(GetPlayerVehicleID(i)) == 509||
GetVehicleModel(GetPlayerVehicleID(i)) == 481||
GetVehicleModel(GetPlayerVehicleID(i)) == 510)
{
Das lässt sich auch Resourcenschonender scripten.
new
vehicleid = GetPlayerVehicleID(i),
modelid = GetVehicleModel(vehicleid);
if(modelid == 509 || modelid == 481 || modelid == 510) { }
Sowas gibt es auch öfters bei dir im Script.
enum waffeninfo
{
wischein,
wimunition,
wipreis,
wipreis2,
wisellatdeal,
wiwaffenname[256]
}
Selbstverständlich wird der Waffenname niemals auch nur annähernt 256Zeichen lang.Das gleiche gilt für carname.
Du hast sehr oft strings erstellt die 256 Zeichen erfassen können,du nutzt die Größe aber nirgendwo auch nur Ansatzweise aus.
SetTimer("speedcontrol",500, true);
Ist es wirklich nötig so häufig die Geschwindigkeit zu überprüfen?Ich würde es eher auf +- 1000ms stellen.Ich könnte noch viele weitere Stellen zeigen, wo du nicht wirklich Ressourcen schonend gescriptet hast, doch Ich
warte erstmal ein Update ab.Das sind jetzt aber nur die kleineren Probleme.Ich empfehle dir ganz stark diesen Thread: http://forum.sa-mp.com/index.php?topic=79810.0
Da steht alles wichtige drin.Es gibt auch irgendwo einen Thread dazu hier im Forum,den find ich aber gerade nicht :p. -
new rand[MAX_PLAYERS]; //new rand steht für random
new rand = random(sizeof(gRandomPlayerCP));
Spätestens hier hättest du mindestens eine Warnung vom Script. -
Schonmal statt
SetTimerEx("autokickplayer", 30000, 0, "us", playerid, "Login fehlgeschlagen"); // statt i ein u
Da verwechselst du wohl etwas.u gibt es nur bei sscanf() ;-).Wenn du das wirklich so im Script hast,müsste der Fehler irgendwo Anderes liegen,nur nicht bei SetTimerEx() ;).
Ich seh jetzt auch nicht wirklich einen Fehler ( ),versuch es trotzdem mal mit Debug Notes.
print("SetTimerEx()");
SetTimerEx("autokickplayer", 30000, 0, "is", playerid, "Login fehlgeschlagen");public autokickplayer(pID, grund[])
{
print("-- Debug #1");
KillTimer(logintimer[pID]);
print("-- Debug #2");
new string[100];
print("-- Debug #3");
new File:ban=fopen(BanLog, io_append);
print("-- Debug #4");
getdate(Jahr, Monat, Tag);
print("-- Debug #5");
gettime(Stunde, Minute, Sekunde);
print("-- Debug #6");
format(string, sizeof(string2), "[%d/%d/%d][%d:%d:%d] [Kick] Name: %s, IP: %s, Admin: Server, Grund: %s\r\n", Tag, Monat, Jahr, Stunde, Minute, Sekunde, gPlayerInfo[pID][PLAYER_NAME], gPlayerInfo[pID][PLAYER_IP], grund[0] ? grund : "<kein Grund>");
print("-- Debug #7");
fwrite(ban, string);
print("-- Debug #8");
fclose(ban);
print("-- Debug #9");
format(string, sizeof(string), "\"%s\" wurde vom Server gekickt. (Grund: %s)", gPlayerInfo[pID][PLAYER_NAME], grund[0] ? grund : "-");
print("-- Debug #10");
SendClientMessageToAll(COLOR_YELLOW, string);
print("-- Debug #11");
Kick(pID);
print("-- Debug #12");
return 1;
} -
Dann zeig doch mal die Funktion ( autokickplayer ).
Einfach sagen "funktion funtioniert einwandfrei" hilft nicht wirklich ;). -
0xCE000000
Die Farbe müsste der Grund sein.
Bei dir ist die Farbe komplett durchsichtig ( RGBA).Benutzt mal das hier:
0xCE0000FF -
Ich frag mich eher wieso es funktioniert,denn
if(strcmp(Firma[f][fBesitzer],PlayerName(playerid), false ) != 0)
ist glaub ich nicht was du willst.Die Abfrage prüft ob der Besitzer nicht der Spielername ist.
if(!strcmp(Firma[f][fBesitzer],PlayerName(playerid), false ))Anstatt dir kannst du auch cmdtext[12] nehmen, das müsste auch funktionieren ( Falls ich mich nicht verzählt habe ).
Dennoch würde ich dir lieber dcmd + sscanf empfehlen, damit hättest du das Problem bestimmt schon längst gelöst ;).Kurze Erklärung zur 12.
/firmenname hat 11 Zeichen + 1 Leerzeichen macht 12.Man nimmt den text der nach "/firmenname " folgt.
if (!strlen(cmdtext[12]))
{
SendClientMessage(playerid, COLOR_WHITE, "Benutze: /firmenname [Name]");
return 1;
}
else
{
strmid(Firma[f][fName], dir, 0, cmdtext[12], 128);
format(str, sizeof(str), "Firmen Name wurde geändert: %s",Firma[f][fName]);
OnFirmaUpdate(f);
SendClientMessage(playerid, COLOR_WHITE, str);
return 1;
} -
-
Unnötiger Beitrag,xivo.
Es scheint tatsächlich Probleme mit CreatePlayer3DTextLabel zu geben.Genau sagen wieso es so ist kann Ich nicht, mir ist nur aufgefallen, dass nach einem GMX mir nix angezeigt wurde.
public OnPlayerConnect(playerid)
{
CreatePlayer3DTextLabel(playerid,"[/Adminsperre(weg)] Für die Adminsperre,\nDamit niemand in die Adminbase einbrechen kann.",0x008080FF,1427.1691,2792.6880,14.8203,50.0);
return 1;
}
Wenn ich den Server starte und dann connecte, zeigt er mir hier aber was an ... Komisch -
http://www.virustotal.com/de/
Lad die *.EXE mal dort hoch und poste den Link der Auswertung hier hin.Was soll man dazu sagen, noch naiver kann man doch nicht sein? Da hast Du einfach nur Pech gehabt, ich lass mir doch keine .exe per ICQ andrehen... vielleicht wenn ich denjengen sehr gut kenne und jeden Tag mit ihm zutun habe.
Genau, dann kommt es erst gar nicht zu solchen Zwischenfällen. -
Wäre nicht richtig.
Ich hab das schon öfters erklärt, aber irgendwie hat es nix gebracht.Zitat
Vielleicht noch etwas weiter ausgeholt,kann man die Funktion mit Create(Player)Object zusammenlegen.
Erstellt jeweil nur für einen bestimmten Spieler das Objekt bzw 3DTextLabel
http://wiki.sa-mp.com/wiki/CreatePlayer3DTextLabel
http://wiki.sa-mp.com/wiki/CreatePlayerObjectErstellt für alle Spieler das Objekt bzw 3DTextLabel
http://wiki.sa-mp.com/wiki/Create3DTextLabel
http://wiki.sa-mp.com/wiki/CreateObjectpublic OnPlayerSpawn(playerid)
{
//if(IsPlayerAdmin(playerid)) {
//if(PlayerInfo[playerid][pAdmin] >= 2) {
if(AdminLevel[playerid] >= 2) {
CreatePlayer3DTextLabel(playerid,"Für das admintor /Admintor",0x008080FF,x,y,z,drawdistance);
}
return 1;
} -
Der wird von Niemanden genutzt,es ist ein Bot. Damit ist das geklärt.
- Closed -