Compile nochmal...das sieht aus, als ob das noch der alte Code ist, wo i=1 war...
Beiträge von Kaliber
-
-
Sei doch so gütig und zeige uns, wie der Code dazu aussieht...
-
Also in der Datenbank hat die erste crew die ID 1 ka wieso nicht null.
Ja, da wird ab 1 gezählt.
Aaaaaber trotzdem sind doch in deinem Array alle Einträge bei 0.
Ich würde es definitiv bei 0 starten lassen und bei den Abfragen einfach sowas machen:
-
Magie:
for(new i; i < rows; i++)
Einfach zu:
...aaaber warum auch immer man das wollen würde...
-
-
noch eine frage bezüglich dazu: wie kann ich es umändern sodass das textlabel nur dem spieler angezeigt wird, der schießt (issuerid) Kaliber
Nächstes mal, am Besten direkt in den ersten Thread deine Vorstellung schreiben, wie du dir das System vorstellst hahaha xD
Mit allen Details, sowas ist nur schwer vorherzusehen hahaha xD
Machste so:
C
Alles anzeigenif(issuerid != INVALID_PLAYER_ID) { new string[32],Float:x,Float:y,Float:z,Float:t; GetPlayerLastShotVectors(issuerid,t,t,t,x,y,z); format(string,sizeof(string),"DMG: %.02f",amount); SetTimerEx("@DeleteDmgDraw",1000*10,0,"ii",issuerid,_:CreatePlayer3DTextLabel(issuerid,string, 0xFF0000FF, x,y,z, 20.0, GetPlayerVirtualWorld(playerid), 0)); //1000*10 = 10 Sekunden } //Und dann außerhalb: @DeleteDmgDraw(i,l);@DeleteDmgDraw(i,l) { DeletePlayer3DTextLabel(i,PlayerText3D:l); }
-
Achsoooo, schreib das doch hahahaha xD
Mach es so:
C
Alles anzeigenif(issuerid != INVALID_PLAYER_ID) { new string[32],Float:x,Float:y,Float:z,Float:t; GetPlayerLastShotVectors(issuerid,t,t,t,x,y,z); format(string,sizeof(string),"DMG: %.02f",amount); SetTimerEx("@DeleteDmgDraw",1000*10,0,"i",_:Create3DTextLabel(string, 0xFF0000FF, x,y,z, 20.0, GetPlayerVirtualWorld(playerid), 0)); //1000*10 = 10 Sekunden } //Und dann außerhalb: @DeleteDmgDraw(i);@DeleteDmgDraw(i) { Delete3DTextLabel(Text3D:i); }
-
folgende fehlermeldungen
Dann hast du wohl eine globale Variable die Label heißt, das nicht so juuut, aber auch egal, dann machs einfach so:
Cnew string[32],Float:x,Float:y,Float:z; GetPlayerPos(playerid,x,y,z); format(string,sizeof(string),"DMG: %.02f",amount); SetTimerEx("@DeleteDmgDraw",1000*10,0,"i",_:Create3DTextLabel(string, 0xFF0000FF, x,y,z, 20.0, GetPlayerVirtualWorld(playerid), 0)); //1000*10 = 10 Sekunden //Und dann außerhalb: @DeleteDmgDraw(i);@DeleteDmgDraw(i) { Delete3DTextLabel(Text3D:i); }
-
Das hier erstellt das textlabel dort, wo die kugel den spieler trifft.
Achsooo, ja sag das doch, dass du das willst
Dann lösch das alles..und mach es so:
C
Alles anzeigen//unter OnPlayerTakeDamage new string[32],Float:x,Float:y,Float:z,Text3D:label; GetPlayerPos(playerid,x,y,z); format(string,sizeof(string),"DMG: %.02f",amount); label = Create3DTextLabel(string, 0xFF0000FF, x,y,z, 20.0, GetPlayerVirtualWorld(playerid), 0); SetTimerEx("@DeleteDmgDraw",1000*10,0,"i",_:label); //1000*10 = 10 Sekunden //Und dann außerhalb: @DeleteDmgDraw(i);@DeleteDmgDraw(i) { Delete3DTextLabel(Text3D:i); }
Dann bleibt das Label 10 Sekunden da, wo der Spieler getroffen wurde.
-
bekomme bei dieser zeile:
Ich habe den Code nochmal aktualisiert, schau nochmal rein und nimm den Neusten
-
gibt es keine möglichkeit dies umzusetzen
Doch natürlich, nur dachte so wäre es deutlich leichter, weil diese Funktion genau dafür ist...und kp, inwiefern da ein TextLabel überhaupt den Unterschied macht...
Naja, du könntest folgendes machen:
C
Alles anzeigen//Oben im Skript new Text3D:dmgLabel[MAX_PLAYERS] = {Text3D:-1, ...}; new dmgTimer[MAX_PLAYERS]; //Und dann unter OnPlayerTakeDamage new string[32]; format(string,sizeof(string),"DMG: %.02f",amount); if(dmgLabel[playerid] != Text3D:-1) Update3DTextLabelText(dmgLabel[playerid], 0xFF0000FF, string),KillTimer(dmgTimer[playerid]); else dmgLabel[playerid] = Create3DTextLabel(string, 0xFF0000FF, 0,0,0, 20.0, GetPlayerVirtualWorld(playerid), 0),Attach3DTextLabelToPlayer(dmgLabel[playerid],playerid, 0,0,0.4); dmgTimer[playerid] = SetTimerEx("@DeleteDmgDraw",1000*3,0,"i",playerid); //1000*3 = 3 Sekunden //Und dann außerhalb: @DeleteDmgDraw(i);@DeleteDmgDraw(i) { Delete3DTextLabel(dmgLabel[i]); dmgTimer[i] = -1; dmgLabel[i] = Text3D:-1; }
-
funktioniert alles wie gewollt, will aber dass das textlabel sagt wie viel damage man dem spieler hinzugefügt hat und nach 1ner sekunde wieder verschwindet/zerstört wird. weiß nicht wie weil der callback kein parameter für damage amount hat (wie bei OnPlayerTakeDamage). danke im voraus.
Nutze am Besten: https://wiki.sa-mp.com/wiki/OnPlayerTakeDamage
und dann zum Anzeigen: https://wiki.sa-mp.com/wiki/SetPlayerChatBubble
-
Leider spuckt er mir den strMsg nicht in den Chat aus.
Was spuckt er denn aus?
Printe mal unter dem sscanf einfach die Variablen...was sagt er denn da so
-
von einem bier schon fast betrunken bin
Das liegt an:
Da wird das direkt auf das Maximum gesetzt.
Kannst es ja langsam erhöhen, sowas wie:
Der Wiki Eintrag ist da ganz hilfreich: https://wiki.sa-mp.com/wiki/SetPlayerDrunkLevel
-
Was gibst du denn genau ein?
/drink Bier...oder was?
Und wie ist BizzInfo deklariert?
-
kann mir einer Helfen?
Lade mal crashdetect und schau mal in den server_log
-
Lokale Variable und trotzdem kommt die Warnung :-O
Ist mir schon klar...
Das ist ja auch eine Doppel-Deklaration, natürlich wäre die korrekte Aussage, einfach, wenn man 2 Variablen mit dem selben Namen deklariert, die aufeinander zugreifen können und sich in einem anderen Scope befinden.
Aber, da ich diesen Fehler schon einmal gesehen habe, bin ich mir zu 99% sicher, dass er eine globale Variable verwendet und lokal diese noch einmal deklariert
-
string der fehlt
Nenene, der Fehler sagt aus, dass coordsstring eine globale Variable ist und nochmal lokal deklariert wurde, das verursacht den Fehler die Doppel-Deklaration.
Hier wäre es wirklich einfacher glaube ich, wenn sich jemand privat bei ihm melden würde.
Bis der Haufen an Errors weg ist, das dauert ewig mit den jeweiligen Codeschnipseln.
-
Den TDEditor v.1.17
ZitatButton: New
Left click
This button will create a Normal TextDraw.
Right click <<<<<<<<<<<<
Show dialog with more options (Sprites, preview models, box).
-
Moin, kurze frage ich suche für ein Textdraw ein hacken wen er etwas bestanden hat wie lass ich das setzen?
Welchen TextDraw-Editor nutzt du denn?
Da müsste es doch Sprites geben, dort gibt es einen Haken.