Ehm...kannst du uns mehr Code zeigen...ein paar Zeilen weiter oberhalb wären schon nicht schlecht ![]()
Beiträge von Kaliber
-
-
new name[] = "";
Ich habe ja schon viel gesehen aber das, macht absolut keinen Sinn
Du machst quasi folgendes:
new name[1];
Und jetzt verrate mir doch mal wie da ein Name von bis zu 24 cells reinpassen soll

-
GetPlayerCameraTargetActor
Rly?! Das hättest du mir auch früher sagen können, dass diese Funktion existiert
IsVaildActor, fehlt trotzdem noch
Is nun drinnen
-
Also kriegt der 'Killer-Fahrer' trz. die belohnung?
Ehh ich denke schon
-
d.h. es darf nicht so sein?
Richtig, so darf es nicht sein!Na einfach so:
public OnPlayerDeath(playerid, killerid, reason)
{
if(killerid == INVALID_PLAYER_ID) return 1;
SendClientMessage(killerid, KID_COL_GRUEN, "Du hast 100$ Killbelohnung erhalten!");
GivePlayerMoney(playerid,-100);
GivePlayerMoney(killerid,100);
return 1;
}mfg.

-
nep.. Nirgends definiert..
Du darfst diese Funktion nicht auf eine Globale Ebene schreiben...sprich://Hier darf das nicht stehen!
GivePlayerMoney(...);public xx() {
//Muss lokal sein, z.B. hier:
GivePlayerMoney(...);
}mfg.

-
Kaliber: in dem anderen Thema wurde GetPlayerTargetPlayer, das du auch zitiert hast, erwähnt. Eventuell kannst du das für Actors auch realisieren. Sprich, ein Callback, wenn man auf einen Actor zielt.
Gibt es auch eine Möglichkeit rauszufinden ob man auf den Actor zielt?
So ist nun drinnen
Schöne Include 9/10
Hast du Verbesserungsvorschläge / Wünsche?
Nette, Idee das so zu lösen, aber unsinnig, wenn der Actor nicht existent ist, so kann man auch Rechnenzeit verschwenden
Nun sagen wir es mal so, es ist nicht unsinnig! Wenn er da z.B. 1000 eingibt...dann gibts n Array out of Bounds Fehler...also macht schon Sinn, aber ich habe da mal was ergänzt...Ich würde dir auch raten, nicht die Funktion via CallLocalFunction aufzurufen, sondern via einfachen Funktionsaufruf
Das hat aber den Nachteil, dass der Besitzer von dem Gamemode auf diesen Callback implementiert haben muss, sonst bekommt dieser einen Fehler.
Zudem handelt es sich um Callbacks wo es sagen wir mal auf 50ms nicht so ankommt
oder einfach via #emit.
Da habe ich nicht so gute Erfahrungen mit gemacht...da failt das manchmal oder der Server crasht...massig Zeit
...Wir reden hier über extrem kleine Millisekunden Bereiche...wenn nicht sogar Nanosekunden...Da habe ich lieber ein System, welches stabil ist und keine Fehler kommen, als 10ms gespart dafür aber kritisch bzw mit mehr Auffwand (Callbacks implementieren).
PS: Wenn jemand darauf Wert legt und diese Funktionen drinnen hat, kann er das ja auch umschreiben, ich meine eine Zeile zu ersetzen ist jetzt keine Sache der Unmöglichkeit

mfg.

-
Vielleicht weißt du bescheid.
Werden Objecte (auch gemappte), Fahrzeuge usw. von den Actors beachtet?Er schrieb ja, wenn ein Actor gegen ein Objekt (Autos sind auch Objekte) läuft, stoppt er.
Autos sind zwar keine Objekte, aber du hast im Prinzip recht.Der Actor hat eine Kollision, genauso wie der Spieler

-
Wenn ich jetzt Pro Stadt 500 Actors erstelle, die durch die Stadt laufen, evtl. verschiedene Aktionen tätigen..
Wesentlich besser als wenn es 500 NPCs wären
Allerdings liegt das Limit bei 1000 Actors

Wie schauts mit Fahrzeugen aus?
Actors in Cars undso..
Momentan gar nicht möglich, müssen auf Kalcor warten...aber das kommt bestimmt bald
-
Gibt es auch eine Möglichkeit rauszufinden ob man auf den Actor zielt?
Lies mal einen Beitrag vor dir
-
Kaliber: in dem anderen Thema wurde GetPlayerTargetPlayer, das du auch zitiert hast, erwähnt. Eventuell kannst du das für Actors auch realisieren. Sprich, ein Callback, wenn man auf einen Actor zielt.

Ja klar kann ich machen, aber erst heute Abend bin noch unterwegs
Wenn wer noch weitere Ideen hat, gerne Posten

mfg.

-
Jetzt nurnoch das mit dem zielen und dann währ alles perfekt :b
Kannst es so machen:new target[MAX_PLAYERS];
public OnPlayerUpdate(playerid)
{
new target = GetPlayerTargetPlayer(playerid);
if(target == INVALID_PLAYER_ID && !target[playerid]) return 1;
if(target == INVALID_PLAYER_ID) return target[playerid]=0;
if(!IsPlayerNPC(target)) return 1; //Hier prüfen ob es der richtige NPC ist!
if(!target[playerid]) target[playerid] = gettime()+10;
else {
if(gettime() >= target[playerid]) {
//Hier hat er 10Sekunden auf den Bot gezielt!
}
}
return 1;
}mfg.

-
Kaliber: MAX_ACTORS ist anscheinend schon definiert. Laut Wiki http://wiki.sa-mp.com/wiki/CreateActor
Ahh okay, nun die Wiki Seite habe ich noch nicht gesehen...Ehm ja gut, dann kann man das weglassen oder eben limitieren

-
Wenn ja wie geht das dann genau?
Mach es einfach so://Oben
#define MAX_ACTORS 50
new Actors[MAX_ACTORS];//Dann wo du ihn erstellst:
Actors[0] = CreateActor(...);
Actors[1] = CreateActor(...);
Actors[2] = CreateActor(...);Und in Actors[0] oder Actors[1] oder Actors[2]...ist dann die actionid

mfg.

-
Wie bekommt man den die actorid heraus? Habe dafür keine Funktion gesehen
Die wird returnt, wenn du CreateActor nutzt
-
Braucht man für das Update eigentlich auch nen neuen Client?
Nicht für alle Updates, aber ja du solltest schon den Client aktuell halten für manche Updates
-
und auf einmal geh der server down
Du musst in den scriptfiles einen Ordner Namens "Häuser" erstellen
-
Ich glaube kaum das in einem Godfather mehr als 3000 Dialoge vorhanden sind.
Es geht hier um die Ids 500-507...und die könnten vergeben sein
-
egal wie viele stellen ?für dialog ?
Die höchste dialogid ist: 32767 -
Naja, in deinem GameMode, wie viele Dialoge gibt es da?

Erhöhe mal die DialogIDs oben

mfg.
