Ist er denn in einem Interior?
Nope er ist draußen
@MyU
Habe es nun einmal mit OnActorStreamIn probiert funktioniert bis jetzt einwandfrei
Ist er denn in einem Interior?
Nope er ist draußen
@MyU
Habe es nun einmal mit OnActorStreamIn probiert funktioniert bis jetzt einwandfrei
Mein Leude,
ich habe diesmal ein kleines Problem mit meinen Actors sie werden erstellt alles gut aber sie führen die Anumationen nicht aus woran könnte es liegen?
Das Problem ist mir auch aufgefallen, ich habe bei mir z.B eine ganz einfache ActorSync Funktion eingeführt.
Erstell einen Timer und setz jeden Actor die Animation die er hat mit ApplyActorAnimation. Habe das einfach gelöst indem ich jeden Actor in Gruppen u. Untergruppen eingeteilt habe um es dynamischer zu machen.
Tatsächlich ist mir aufgefallen, dass solche Actor Bugs im Interior viel häufiger auffallen, warum auch immer
Tatsächlich ist mir aufgefallen, dass solche Actor Bugs im Interior viel häufiger auffallen, warum auch immer
Weiiil, und das kann für einige vllt ganz interessant sein, die Actors sich im selben Interior befinden, wie der User.
Deshalb sollte man sie auch immer noch in eine virtuelle Welt setzen. Sobald der Spieler nämlich im Interior 0 ist, ist das auch der Actor und da für den Actor quasi kein Interior mehr existiert fällt er durch die Welt Am 0 Punkt stehen dann oft die ganzen Actor für einen, wenn man da mal lang fährt xD
Also immer, wenn ein Actor im Interior ist, in eine Virtuelle Welt setzen lassen, damit das nicht passiert und natürlich neu laden, weil er meist ewig weit weg ist sonst.
Ahoi, ich hoffe einer von euch kann mir helfen.
Und zwar will ich mich am GodFather probieren und bin gerade dabei die Userdaten in eine DB zu speichern.
Allerdings ist mir dabei aufgefallen dass der Spieler sehr viele Variablen hat die man speichern muss.
Ich habe es so gemacht:
public saveone(playerid)
{
new savequery[2048];
format(savequery,sizeof(savequery),"UPDATE user SET pName='%s',pLevel='%i',pAdmin='%i',pDonateRank='%i',gPupgrade='%i',pConnectTime='%i',pReg='%i',pSex='%i',pAge='%i' WHERE db_id='%i'",PlayerInfo[playerid][pName],PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pAdmin],PlayerInfo[playerid][pDonateRank],PlayerInfo[playerid][gPupgrade],PlayerInfo[playerid][pConnectTime],PlayerInfo[playerid][pReg],PlayerInfo[playerid][pSex],PlayerInfo[playerid][pAge],PlayerInfo[playerid][db_id]);
mysql_function_query(dbhandle,savequery,false,"","");
return 1;
}
Aber nach einer Zeit lang sagt der Compiler dass die Zeile zu lang sei.
Und jetzt wollte ich fragen ob jemand weiß wie man das am besten macht.
Du kannst mit „strcat“ 2 String miteinander verbinden (alternativ auch mit format).
Damit kannst du die Zeilenlänge umgehen.
Alles anzeigenAhoi, ich hoffe einer von euch kann mir helfen.
Und zwar will ich mich am GodFather probieren und bin gerade dabei die Userdaten in eine DB zu speichern.
Allerdings ist mir dabei aufgefallen dass der Spieler sehr viele Variablen hat die man speichern muss.
Ich habe es so gemacht:
Codepublic saveone(playerid) { new savequery[2048]; format(savequery,sizeof(savequery),"UPDATE user SET pName='%s',pLevel='%i',pAdmin='%i',pDonateRank='%i',gPupgrade='%i',pConnectTime='%i',pReg='%i',pSex='%i',pAge='%i' WHERE db_id='%i'",PlayerInfo[playerid][pName],PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pAdmin],PlayerInfo[playerid][pDonateRank],PlayerInfo[playerid][gPupgrade],PlayerInfo[playerid][pConnectTime],PlayerInfo[playerid][pReg],PlayerInfo[playerid][pSex],PlayerInfo[playerid][pAge],PlayerInfo[playerid][db_id]); mysql_function_query(dbhandle,savequery,false,"",""); return 1; }
Aber nach einer Zeit lang sagt der Compiler dass die Zeile zu lang sei.
Und jetzt wollte ich fragen ob jemand weiß wie man das am besten macht.
Falls du das System gerade am schreiben bist schau in folgende Beispiele: https://github.com/pBlueG/SA-M…ee/master/example_scripts
Dein aktueller weg ist viel zu fehleranfällig - dazu nicht mehr aktuell, es lohnt sich aufjedenfall das System auf ORM umzuschreiben.
Codepublic saveone(playerid) { new savequery[2048]; format(savequery,sizeof(savequery),"UPDATE user SET pName='%s',pLevel='%i',pAdmin='%i',pDonateRank='%i',gPupgrade='%i',pConnectTime='%i',pReg='%i',pSex='%i',pAge='%i' WHERE db_id='%i'",PlayerInfo[playerid][pName],PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pAdmin],PlayerInfo[playerid][pDonateRank],PlayerInfo[playerid][gPupgrade],PlayerInfo[playerid][pConnectTime],PlayerInfo[playerid][pReg],PlayerInfo[playerid][pSex],PlayerInfo[playerid][pAge],PlayerInfo[playerid][db_id]); mysql_function_query(dbhandle,savequery,false,"",""); return 1; }
Ich vermute du verwendest auch eine veraltete Version von MySQL. Ich empfehle: [jTuT] MySQL R41-4 (Installation, XAMPP, Verwendung, Bedienung & Registrations-System)
Falls du zu viele lines hast, kannste es so machen:
new query[256];
mysql_format(handle, query, sizeof(query), "UPDATE users SET level = '%d', money = '%d', kills = '%d', deaths = '%d' WHERE id = '%d'",
PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pKills], PlayerInfo[playerid][pDeaths], PlayerInfo[playerid][p_id]);
mysql_pquery(handle, query);
// neue Reihe
mysql_format(handle, query, sizeof(query), "UPDATE users SET admin WHERE id = '%d'",
PlayerInfo[playerid][pAdmin], PlayerInfo[playerid][p_id]);
mysql_pquery(handle, query);
myu Dein Beitrag ist an der Stelle auch leider nicht sehr hilfreich. Einem Anfänger zuzutrauen sich durch irgendein Script ohne Zeilenangabe zu wuseln, und erwarten, dass er weiß was ORM ist, geschweige denn wie man es in PAWN umsetzt.
MyU Dein Beitrag ist an der Stelle auch leider nicht sehr hilfreich. Einem Anfänger zuzutrauen sich durch irgendein Script ohne Zeilenangabe zu wuseln, und erwarten, dass er weiß was ORM ist, geschweige denn wie man es in PAWN umsetzt.
Ich sehe jetzt kein Problem dabei einen Vorschlag zu äußern wenn eine mögliche Antwort bereits über mir geäußert wurde.
Faktisch wird er sich früher oder später darüber Ärgern wenn er nun so weiterführend sein Gamemode im jetzigen Zeitalter aufbaut, womal die alte Version offiziell nicht mehr Unterstützt wird.
Dazu ist es als "unerfahrener" Benutzer weitaus schlimmer mal einen String bei einer Benutzer Interaktion nicht zu escapen (was übrigens sehr oft passierte) als sich ein paar Stunden oder Minuten hinzusetzen.
Daher finde ich es schon hilfreich das erwähnt zu haben und auch dafür zu Argumentieren.
Moin ich habe 2 Fragen.
1. Hat jemand ein einfaches anti money cheat mit link vielleicht finde nicht so wirklich das was ich suche 😂
2. Kann ich eine MySQL Update nicht mit mehren formats aneinander hängen?
Mfg
Alles anzeigenMoin ich habe 2 Fragen.
1. Hat jemand ein einfaches anti money cheat mit link vielleicht finde nicht so wirklich das was ich suche 😂
2. Kann ich eine MySQL Update nicht mit mehren formats aneinander hängen?
Mfg
1. Das Geld in einer persönlichen Variable Speichern lassen, wenn GetPlayerMoney>SpielerMoney=evtl. Cheat
2. Doch klar geht das
Anstatt dort "return 1" zu printen, lieber den Frakwert..
Probier das mal aus
Anstatt dort "return 1" zu printen, lieber den Frakwert..
Probier das mal aus
Jo hatte ich auch drüber schon geprintet war korrekt und so funktioniert es wie gewollt danke dir bester mann
Abend , hätte mal eine kleine Frage und zwar wollte ich ein Equipment System erstellen mit einen 3DTextLabel für Fraktionen jedoch wird mir in jeder Fraktion das gleiche angezeigt jemand eine Idee ?
sprich LCN hat 100 Armour Pakete dann bleibe ich in der Fraktion LCN gehe in die GS base die haben auch 100 dann
Code:
Unter Gamemodeinit
for(new i=0;i<sizeof(Fraktionsbase);i++)
{
FraktionsArmour3DText[i][0] = CreateDynamic3DTextLabel("LOAD",WEISS,Fraktionsbase[i][fbaseArmourX],Fraktionsbase[i][fbaseArmourY],Fraktionsbase[i][fbaseArmourZ]+0.3,15,INVALID_PLAYER
CreateDynamicPickup(1242,1,Fraktionsbase[i][fbaseArmourX],Fraktionsbase[i][fbaseArmourY],Fraktionsbase[i][fbaseArmourZ],Fraktionsbase[i][fbasevirtualworld]);
UpdateHealundArmourLabel(i);
}
und dann ein stock um zu updaten
stock UpdateHealundArmourLabel(playerid)
{
new string[128];
for(new fvr=0;fvr<sizeof(Fraktionsbase);fvr++)
{
format(string,sizeof(string),""#GELB_HEX"Equipment Lager"WEISS_HEX"\n %i von %i \n zum benutzen Taste 'Z'", fInfo[Spieler[playerid][Fraktion]][fArmour],MAX_ARMOURPAKETE);
UpdateDynamic3DTextLabelText(FraktionsArmour3DText[fvr][0],WEISS,string);
}
return 1;
}
// Ich vermute das es mit fInfo[Spieler[playerid][Fraktion]][fArmour] zutun haben könnte habe aber schon einige Varianten durch getestet funktioniert weder noch
Alles anzeigen
vielen dank schonmal im voraus
liebe grüße
if(sInfo[pID][fraktion] == 1 2 3)
Der Fehler hier ist die Abfrage, so geht das nicht.
So kannst du das z.B. machen:
new frak = sInfo[pID][fraktion];
if(frak == 1 || frak == 2 || frak == 3)
//Oder alternativ auch einfach:
if(frak <= 3)
jedoch wird mir in jeder Fraktion das gleiche angezeigt jemand eine Idee ?
Das ist etwas zu unspezifisch, wie du es beschreibst.
UpdateHealundArmourLabel(i);
Das ist Zeile 7 in deinem Code. Da übergibst du ja keine playerid, sondern eine FraktionsBaseID.
So verwirrst du dich glaube selbst beim Skripten.
Wieso du in der Funktion selbst auch nochmal durch alle FraktionsBases loopst ist mir ein Rätsel.
Theoretisch brauchst du ja nur die übergebene FraktionsBase aktualisieren.
Quasi so schreiben:
stock UpdateHealundArmourLabel(fvr)
{
new string[128];
format(string,sizeof(string),""#GELB_HEX"Equipment Lager"WEISS_HEX"\n %i von %i \n zum benutzen Taste 'Z'", fInfo[fvr][fArmour],MAX_ARMOURPAKETE);
UpdateDynamic3DTextLabelText(FraktionsArmour3DText[fvr][0],WEISS,string);
return 1;
}
Wenn du das speziell für einen Spieler aufrufen magst, dementsprechend dann einfach nur:
nutzen.
Alles anzeigenDer Fehler hier ist die Abfrage, so geht das nicht.
So kannst du das z.B. machen:
Cnew frak = sInfo[pID][fraktion]; if(frak == 1 || frak == 2 || frak == 3) //Oder alternativ auch einfach: if(frak <= 3)
Das ist etwas zu unspezifisch, wie du es beschreibst.
Das ist Zeile 7 in deinem Code. Da übergibst du ja keine playerid, sondern eine FraktionsBaseID.
So verwirrst du dich glaube selbst beim Skripten.
Wieso du in der Funktion selbst auch nochmal durch alle FraktionsBases loopst ist mir ein Rätsel.
Theoretisch brauchst du ja nur die übergebene FraktionsBase aktualisieren.
Quasi so schreiben:
Cstock UpdateHealundArmourLabel(fvr) { new string[128]; format(string,sizeof(string),""#GELB_HEX"Equipment Lager"WEISS_HEX"\n %i von %i \n zum benutzen Taste 'Z'", fInfo[fvr][fArmour],MAX_ARMOURPAKETE); UpdateDynamic3DTextLabelText(FraktionsArmour3DText[fvr][0],WEISS,string); return 1; }
Wenn du das speziell für einen Spieler aufrufen magst, dementsprechend dann einfach nur:
nutzen.
Hey danke erstmal für deine Hilfe also ich habe es so vor
jede Fraktion hat ein Armour/Equipment Punkt wo man sich ausrüsten kann MAX_ARMOURPAKETE sind die Maximale Anzahl die man besitzen kann.
je nach verbrauch geht es um einen Runter sprich
zum Beispiel
LCN hat noch 112 von MAX_ARMOURPAKETE
dann GS z.B 5 von MAX_ARMOURPAKETE
jedoch habe ich das Problem das wenn man in einer Fraktion ist wie z.B LCN das es dann in jeder Base egal ob ich in der LCN oder in der GS bin immer das gleiche angezeigt wird. Und ich möchte es halt so machen das jeder es sieht und bei jeder Fraktion der richtige Wert angezeigt wird.
Ja, dann sollte das so gehen, wie ich es dir abgeändert habe.
Musst es halt immer als letztes zum Aktualisieren aufrufen, also erst fArmour ändern und dann für diese fvr aktualisieren
Ja, dann sollte das so gehen, wie ich es dir abgeändert habe.
Musst es halt immer als letztes zum Aktualisieren aufrufen, also erst fArmour ändern und dann für diese fvr aktualisieren
leider wenn ich das so schreibe wird steht der Wert immer auf 0