Wie hooke ich in dem Fall denn richtig ?
Hier, schau dir das mal an, das wäre eine Möglichkeit:
Includes richtig erstellen | Hooking ganz einfach
Und in deinem Makro musst du dann in dem do __SendClientMessage verwenden
Wie hooke ich in dem Fall denn richtig ?
Hier, schau dir das mal an, das wäre eine Möglichkeit:
Includes richtig erstellen | Hooking ganz einfach
Und in deinem Makro musst du dann in dem do __SendClientMessage verwenden
Hier, schau dir das mal an, das wäre eine Möglichkeit:
Includes richtig erstellen | Hooking ganz einfach
Und in deinem Makro musst du dann in dem do __SendClientMessage verwenden
native __SendClientMessage(playerid, color, const message[]) = SendClientMessage;
stock _SendClientMessage(playerid, color, const message[], _args[])
{
if(!strlen(_args))return __SendClientMessage(playerid, color, message);
new str[256];
format(str, sizeof(str), string, _args);
return __SendClientMessage(playerid, color, str);
}
#if defined _ALS_SendClientMessage
#undef SendClientMessage
#else
#define _ALS_SendClientMessage
#endif
#define SendClientMessage _SendClientMessage
Ich weiß nicht, ob ich mich gerade blöd anstelle, aber so funktioniert es auch nicht.
Ich weiß nicht, ob ich mich gerade blöd anstelle, aber so funktioniert es auch nicht.
Ja, so geht das auch nicht.
Also wenn du es wirklich über so n schläden Hook machen willst, dann haste da n richtiges gefummel mit den Argumenten.
Gibt aufwändige Möglichkeiten, wie: http://forum.sa-mp.com/showpost.php?p=669874&postcount=3
oder mit YSI etwas eleganter: http://forum.sa-mp.com/showpost.php?p=3366595&postcount=3
da drum herum zu kommen, aber im Endeffekt ist es eigentlich nicht so das was du willst.
Ich verstehe dein Problem mit der Umbenennung nicht?
Wieso nennst du es nicht SCME, ist viel einfacher und schneller getippt und sauberer.
Wieso nennst du es nicht SCME, ist viel einfacher und schneller getippt und sauberer.
Mache es dann wohl einfach so, dachte es geht vielleicht doch irgendwie. Danke dir!
Ich erstelle einen 3DTextLabel , welcher nur für bestimmte Spieler anzeigt wird (Admins)
Klappt auch, doch wenn ich es wieder löschen will wird es nur für eine Person gelöscht, bei den anderen bleibt es sichtbar.
Testumgebung: 2 Spieler, beide Admin (hier Rang 3 und höher) für den einen wird es gelöscht, beim anderen nicht.
Code:
//Erstellung
for(new j = 0; j < MAX_PLAYERS; j++){
if(!IsPlayerConnected(j))continue;
if(!IsPlayerAnAdmin(j, 3))continue;
eventBar[i][barlabel] = CreateDynamic3DTextLabel(str, COLOR_TWHITE, pos[0], pos[1], pos[2], 5.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid), j);
}
//Löschung
for(new i = 0; i < MAX_EVENT_BARRICADE; i++){
if(eventBar[i][baractive] == 1){
eventBar[i][baractive] = 0;
DestroyDynamicObject(eventBar[i][barobject]);
DestroyDynamic3DTextLabel(eventBar[i][barlabel]);
}
}
Klappt auch, doch wenn ich es wieder löschen will wird es nur für eine Person gelöscht, bei den anderen bleibt es sichtbar.
Das Problem ist, dass du es für alle Spieler in die gleiche Variable schreibst, somit wird nur die Label ID des letzten Labels gespeichert.
Du musst die playerid für die das Label erstellt wird, mitgeben, in deinem Fall "j".
eventBar[i][barlabel][j] = CreateDynamic3DTextLabel...
Im enum dann auch:
Text3D:barlabel[MAX_PLAYERS],
Warum wird beim Aufrufen des Befehls, ein "Run time error" ausgelöst?
[debug] Run time error 5: "Invalid memory access"
[debug] AMX backtrace:
[debug] #0 00009960 in public ocmd_inventory (playerid=0, params[]=@00052d84 " ") at ...\sampserver\pawno\include\modules\inventory\invInventory.inc:63
[debug] #1 native CallLocalFunction () from samp-server.exe
[debug] #2 000004c8 in public OnPlayerCommandText (playerid=0, cmdtext[]=@00052d58 "/inventory") at ...\sampserver\pawno\include\includes\ocmd.inc:78
[pwn=60]
ocmd:inventory(playerid, params[]) {
new str[256], frmt[496];
for(new i=0; i < MAX_PLAYER_ITEMS; i++) {
if(Items[i][itemBesitzerID] != PlayerAccount[playerid][playerDBID])continue;
format(frmt, sizeof(frmt), "%s%d. Item: %s (%d) | Amount: %d | Total Weight: %0.2f\n", frmt, i+1, /*Items[i][itemName]*/getItemName(Items[i][itemID]), Items[i][itemID], Items[i][itemAmount], (ItemList[Items[i][itemID]][itemlWeight]*Items[i][itemAmount]));
}
if(!strlen(frmt))return SendClientMessage(playerid, -1, "Es befinden sich keine Items in deinem Inventar.");
return SendClientMessage(playerid, -1, frmt);
}
[/pwn]
Hast du sicher die Neuste Version von OCMD?
Da gab es nämlich mal diesen Fehler
Wenn du die Neuste Version hast, dann evtl mal so schreiben ocmd:inventory(playerid) {
Hast du sicher die Neuste Version von OCMD?
Benutze die 2.1.1, ist also laut diesem Thread die aktuellste Version.
Wenn du die Neuste Version hast, dann evtl mal so schreiben ocmd:inventory(playerid) {
Bereits versucht, gleicher Fehler.
@Jeffry kannst du mir hier eventuell weiterhelfen?
Hast du irgendwelche Warnungen im Compiler stehen, oder eine Meldung bezüglich Stack/Heap Size?
Entferne auch mal das str[256], aus dem Befehl, das ist ungenutzt, eine Warnung müsste daher mindestens da sein.
Hast du irgendwelche Warnungen im Compiler stehen, oder eine Meldung bezüglich Stack/Heap Size
Header size: 4028 bytes
Code size: 71924 bytes
Data size: 339288 bytes
Stack/heap size: 80000 bytes; estimated max. usage: unknown, due to recursion
Total requirements: 495240 bytes
Entferne auch mal das str[256], aus dem Befehl, das ist ungenutzt, eine Warnung müsste daher mindestens da sein.
Gleicher Fehler.
Header size: 4028 bytes
Füge bitte unter den Includes das ein:
#pragma dynamic 100000
Erhöhe die Zahl etwas, falls die Meldung nicht weg geht, so lange, bis die Meldung im Compiler weg geht.
Hey,
Kurze Frage:
Wieviele Objekte dürfen an einen Ort sein?
Habe an einen ort 995 Objekte und es läd total beschissen!
Habe den neuesten Streamer
Wieviele Objekte dürfen an einen Ort sein?
Das kommt darauf an, es sind nur 1000 möglich an einem Ort.
Allerdings, wenn du viel CreateObject nutzt, sind natürlich viel weniger an einem Ort möglich, da diese Slots verbraucht sind.
In diesem Sinne, behalte das im Hinterkopf.
Es kann aber auch gut sein, dass die Draw/Streamdistance einfach bescheiden eingestellt ist
Das kommt darauf an, es sind nur 1000 möglich an einem Ort.
Allerdings, wenn du viel CreateObject nutzt, sind natürlich viel weniger an einem Ort möglich, da diese Slots verbraucht sind.
In diesem Sinne, behalte das im Hinterkopf.
Es kann aber auch gut sein, dass die Draw/Streamdistance einfach bescheiden eingestellt ist
onfoot_rate 40
incar_rate 40
weapon_rate 40
stream_distance 300.0
stream_rate 1000
Das bezieht sich ja nur auf CreateObject und generell kann man das für einzelne Objekte ja umstellen
Egal, wie dem auch sei, drück doch einfach mal F5 wenn du da hin gehst zu deinen Objekten und schau wie viele Slots voll sind, dann weißt du es, woran es liegt
Das bezieht sich ja nur auf CreateObject und generell kann man das für einzelne Objekte ja umstellen
Egal, wie dem auch sei, drück doch einfach mal F5 wenn du da hin gehst zu deinen Objekten und schau wie viele Slots voll sind, dann weißt du es, woran es liegt
Ja, wie du siehst ObjectSlotsUsed ist bei 999.
Sprich du lädst zu viele Objekte
Falls du irgendwo CreateObject nutzt, solltest du überlegen es auf CreateDynamicObject zu ändern, andernfalls ummappen könnte helfen oder die DrawDistance von kleineren Objekten umsetzen (das aber ne ganz schöne fuddel Arbeit)...
wie kann ich das verhindern das wenn man in der luft fällt und man verlässt den server nicht wieder in der luft ist ?
ich lasse so seinen letzten punkt saven
public OnPlayerDisconnect(playerid, reason)
{
GetPlayerPos(playerid, SpielerInfo[playerid][pLastX], SpielerInfo[playerid][pLastY], SpielerInfo[playerid][pLastZ]);
return true;
}
ist da eine veriable hilfreich oder wie kann man es an besten lösen ?
MapAndreas ist da so ziemlich die beste Alternative. Damit lässt sich der Z-Achsen Abschnitt am besten finden (Erdboden).